Copyright (C) 1994, Digital Equipment Corp.
INTERFACEThis module provides polynomials of degree [0..63] with coefficients in the field Z(2).Poly ;
TYPE T = ARRAY [0..1] OF Int32; Int32 = [-16_7fffffff-1 .. 16_7fffffff]; Card32 = [0 .. LAST (Int32)]; Byte = BITS 8 FOR [0..255]; Bytes = ARRAY [0..7] OF Byte; CONST ZERO = T{ 0, 0 }; ONE = T{ 0, FIRST (Int32) }; X = T{ 0, 16_40000000 }; PROCEDURE Sum (READONLY p, q: T): T; (* returns (p+q) *) PROCEDURE Product (READONLY p, q: T): T; (* returns (p * q MOD PolyBasis.P) *) PROCEDURE TimesX (READONLY p : T) : T; (* returns (p * X^1) *) PROCEDURE Power (d: Card32) : T; (* returns (x^d MOD PolyBasis.P) *) PROCEDURE ComputeMod (READONLY init: T; addr: ADDRESS; len: INTEGER): T;
This procedure assumes that the 'len' bytes beginning at address 'addr' define a polynomial, A(x), of degree '(8*len)'. The procedure returns '(init*x^(8*len) + A(x)) MOD PolyBasis.P'
PROCEDURE ToBytes (READONLY t: T; VAR b: Bytes); PROCEDURE FromBytes (READONLY b: Bytes; VAR t: T); END Poly.