DEFINT A-W
DEFLNG X-Z
REM $INCLUDE: 'polymodp.bi'
DIM f(pmx) AS Poly, g(pmx) AS Poly, h AS Poly
DIM d(pmx) AS Poly, v(pmx) AS Poly
CRTfile -1
CLS : Tim# = TIMER
INPUT "max.index"; nx
FOR n = 1 TO nx
RESTORE
FOR i = 0 TO pmx
READ Modulus ' prime moduli in polymodp.bi
CRTchar Modulus
IF n = 1 THEN
Letc f(i), 0: Letc g(i), 1 ' initialize Fibonacci recurrence
END IF
h = g(i): Shlp h, 1
Addp f(i), h: SWAP f(i), g(i) ' f(x)_n = x*f(x)_n-1 + f(x)_n-2
t = Disc(f(i)): Letc d(i), t
u = Eval(f(i), 1): Letc v(i), u
IF i = 0 THEN ' sample output for class nr. zero
nr$ = "F" + LTRIM$(STR$(n))
Prntp f(i), nr$ + ": "
PRINT " Mod"; STR$(Modulus)
PRINT " D ="; t; " f(1) ="; u
END IF
NEXT i
CRTprnt f(), nr$ ' write poly for CRT-transform,
CRTprnt d(), "Disc" ' discriminant,
CRTprnt v(), "f(1) =" ' value f(1)
NEXT n
Eind:
PRINT : PRINT "Timer:"; CSNG(TIMER - Tim#); "s"
CRTfile 0
SYSTEM