Skip to content

Проверка многочленов на неприводимость и примитивность над заданным полем Галуа

License

Notifications You must be signed in to change notification settings

irreducible-polynoms/irrpoly-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Разработка приостановлена

В данный момент реализация приостановлена, поскольку на сегодняшний день в Rust отсутствует возможность контроля значения после присваивания. В C++ для этой цели можно перегрузить operator=, в Rust на данный момент сущесвует Pre-RFC на введение trait IndexAssing, который бы позволил контролировать присваиваемое значение. В данном проекте это является необходимостью, поскольку многочлен над некоторым конечным полем должен состоять из чисел только этого поля. В данный момент при реализации IndexMut была бы возможность присвоить многочлену над полем Gf::new(5) например число из поля Gf::new(3), если реализовывать многочлен как Vec<GfNum>. Если же реализовывать многочлен как Vec<usize> с операциями над заданным полем, то при присвоении нового значения по индексу будет возможность присвоить ненормированное значение, что может при последующем выполнении операций приводить к переполнению, к тому же такая реализация была бы очень трудоёмкой. Единственным выходом во втором случае было бы нормирование чисел в векторе перед выполнением любых операций, но это значительно повысило бы время выполнения программы, по сравнению с возможностью проверки значений в момент присвоения, а значит не дало бы выигрыша в производительности по сравнению с кодом на C++.

About

Проверка многочленов на неприводимость и примитивность над заданным полем Галуа

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages