REM $LANG: "qb" REM $INCLUDE: 'polymodp.bi' CONST Cpr = 21 ' number of CRT primes DIM f(Cpr) AS Poly, g(Cpr) AS Poly, h AS Poly DIM d(Cpr) AS Poly, v(Cpr) AS Poly IF NOT CRTfile(Cpr) THEN SYSTEM CrLf$ = CHR$(13) + CHR$(10) CLS : Tim# = TIMER cm$ = "Fibonacci polynomials with discriminants and values f(1)" + CrLf$ INPUT "max.index"; nx FOR n = 1 TO nx RESTORE FOR i = 0 TO Cpr READ Modulus ' prime moduli in polymodp.bi CRTchar Modulus IF n = 1 THEN Letc f(i), 0: Letc g(i), 1 ' initialize 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(), 0, cm$ + CrLf$ + nr$ ' write poly for CRT-transform, CRTprnt d(), 0, "Disc " ' discriminant, CRTprnt v(), 0, "f(1)=": cm$ = "" ' value f(1) NEXT n Eind: PRINT : PRINT "Timer:"; CSNG(TIMER - Tim#); "s" i = CRTfile(0) SYSTEM