ffa_ch14_barrett.kv 1
ffa_ch14_barrett.kv 2
ffa_ch14_barrett.kv 3
ffa_ch14_barrett.kv 4
ffa_ch14_barrett.kv 5
ffa_ch14_barrett.kv 6
ffa_ch14_barrett.kv 7
ffa_ch14_barrett.kv 8
ffa_ch14_barrett.kv 9
ffa_ch14_barrett.kv 10
ffa_ch14_barrett.kv 11
ffa_ch14_barrett.kv 12
ffa_ch14_barrett.kv 13
ffa_ch14_barrett.kv 14
ffa_ch14_barrett.kv 15
ffa_ch14_barrett.kv 16
ffa_ch14_barrett.kv 17
ffa_ch14_barrett.kv 18
ffa_ch14_barrett.kv 19
ffa_ch14_barrett.kv 20 with Words; use Words;
ffa_ch14_barrett.kv 21 with FZ_Type; use FZ_Type;
ffa_ch14_barrett.kv 22
ffa_ch14_barrett.kv 23
ffa_ch14_barrett.kv 24 package FZ_Barr is
ffa_ch14_barrett.kv 25
ffa_ch14_barrett.kv 26 pragma Pure;
ffa_ch14_barrett.kv 27
ffa_ch14_barrett.kv 28
ffa_ch14_barrett.kv 29 type Barretoid(ZXMLength : Indices;
ffa_ch14_barrett.kv 30 BarretoidLength : Indices) is
ffa_ch14_barrett.kv 31 record
ffa_ch14_barrett.kv 32 ZXM : FZ(1 .. ZXMLength);
ffa_ch14_barrett.kv 33 J : FZBit_Index;
ffa_ch14_barrett.kv 34 B : FZ(1 .. BarretoidLength);
ffa_ch14_barrett.kv 35 ZSlide : FZBit_Index;
ffa_ch14_barrett.kv 36 Degenerate : WBool;
ffa_ch14_barrett.kv 37 end record;
ffa_ch14_barrett.kv 38
ffa_ch14_barrett.kv 39
ffa_ch14_barrett.kv 40
ffa_ch14_barrett.kv 41 procedure FZ_Make_Barrettoid(Modulus : in FZ;
ffa_ch14_barrett.kv 42 Result : out Barretoid)
ffa_ch14_barrett.kv 43 with Pre => Result.B'Length = 2 * Modulus'Length and
ffa_ch14_barrett.kv 44 Result.ZXM'Length = Modulus'Length + 1;
ffa_ch14_barrett.kv 45
ffa_ch14_barrett.kv 46
ffa_ch14_barrett.kv 47
ffa_ch14_barrett.kv 48 procedure FZ_Barrett_Reduce(X : in FZ;
ffa_ch14_barrett.kv 49 Bar : in Barretoid;
ffa_ch14_barrett.kv 50 XReduced : in out FZ);
ffa_ch14_barrett.kv 51 pragma Inline_Always(FZ_Barrett_Reduce);
ffa_ch14_barrett.kv 52
ffa_ch14_barrett.kv 53 end FZ_Barr;