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
SourceForge.net logo