Copyright (C) 1994, Digital Equipment Corp.
INTERFACE Poly;
This module provides polynomials of degree [0..63] with
coefficients in the field Z(2).
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.