1 ------------------------------------------------------------------------------ 2 ------------------------------------------------------------------------------ 3 -- This file is part of 'Finite Field Arithmetic', aka 'FFA'. -- 4 -- -- 5 -- (C) 2019 Stanislav Datskovskiy ( www.loper-os.org ) -- 6 -- http://wot.deedbot.org/17215D118B7239507FAFED98B98228A001ABFFC7.html -- 7 -- -- 8 -- You do not have, nor can you ever acquire the right to use, copy or -- 9 -- distribute this software ; Should you use this software for any purpose, -- 10 -- or copy and distribute it to anyone or in any manner, you are breaking -- 11 -- the laws of whatever soi-disant jurisdiction, and you promise to -- 12 -- continue doing so for the indefinite future. In any case, please -- 13 -- always : read and understand any software ; verify any PGP signatures -- 14 -- that you use - for any purpose. -- 15 -- -- 16 -- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- 17 ------------------------------------------------------------------------------ 18 ------------------------------------------------------------------------------ 19 20 -- FZ -- the fundamental FZ type: an unsigned integer of fixed width, 21 -- i.e. a contiguous array of machine words. There is no 'meta'-anything: 22 -- in particular, there is no normalization nor will there ever be any 23 -- normalization, nor any provisions for resizing, nor any such thing. 24 -- Note that endianness is irrelevant, here and elsewhere in FFA. 25 26 with Words; use Words; 27 28 package FZ_Type is 29 30 pragma Pure; 31 32 -- Indices of all indexable items: 33 type Indices is new Natural; 34 35 -- Index of a particular Word in an FZ: 36 subtype Word_Index is Indices; 37 38 -- The FZ, in person! I.e. a bignum of permanently fixed bitness. 39 type FZ is array(Word_Index range <>) of Word; 40 41 -- A count of Words in an FZ (cannot be 0): 42 subtype Word_Count is Indices range 1 .. Indices'Last; 43 44 -- A count of Bits, anywhere (cannot be 0): 45 subtype Bit_Count is Positive; 46 47 -- An index of a particular ~bit~ in an FZ: 48 subtype FZBit_Index is Indices; 49 50 end FZ_Type;