В данный момент реализация приостановлена, поскольку на сегодняшний день в Rust
отсутствует возможность контроля значения после присваивания. В C++ для этой
цели можно перегрузить operator=
, в Rust на данный момент сущесвует
Pre-RFC на введение trait IndexAssing, который бы позволил контролировать
присваиваемое значение. В данном проекте это является необходимостью, поскольку
многочлен над некоторым конечным полем должен состоять из чисел только этого поля.
В данный момент при реализации IndexMut была бы возможность присвоить
многочлену над полем Gf::new(5)
например число из поля Gf::new(3)
, если
реализовывать многочлен как Vec<GfNum>
. Если же реализовывать многочлен как
Vec<usize>
с операциями над заданным полем, то при присвоении нового значения
по индексу будет возможность присвоить ненормированное значение, что может при
последующем выполнении операций приводить к переполнению, к тому же такая реализация
была бы очень трудоёмкой. Единственным выходом во втором случае было бы нормирование
чисел в векторе перед выполнением любых операций, но это значительно повысило бы
время выполнения программы, по сравнению с возможностью проверки значений в момент
присвоения, а значит не дало бы выигрыша в производительности по сравнению с
кодом на C++.
-
Notifications
You must be signed in to change notification settings - Fork 0
Проверка многочленов на неприводимость и примитивность над заданным полем Галуа
License
irreducible-polynoms/irrpoly-rust
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
Проверка многочленов на неприводимость и примитивность над заданным полем Галуа
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published