File : fouriers_init.ads
with Reps;
use Reps;
package Fouriers_Init is
pragma Pure;
subtype Parity is Integer range 0 .. 1;
type IntVec is array(Integer range <>) of Integer;
subtype DegType is Integer range -1 .. Integer'Last;
type Degrees is array(Integer range <>, Integer range <>) of DegType;
type Weights is
record
Q: Radius := Zero;
P: Radius := Zero;
end record;
function NumErrs(L,W: Positive) return Integer; -- number of error terms H.E
function Nmin(M: Integer; J: Parity := 0) return Integer; -- smallest allowed N, given M
function Join(M,N,K: Integer) return Integer; -- (M,N,K) -> ((100+M)*100+N)*100+K
procedure UnJoin(MNK: in Integer; M,N,K: out Integer); -- Reverse of Join, if ...
function Min(R1,R2: Weights) return Weights; -- component-wise minimum
pragma Inline_Always (Nmin,Join,UnJoin);
end Fouriers_Init;