karatsubaTest.frink

Download or view karatsubaTest.frink in plain text format


use karatsuba.frink

digits = 100
s = karatsubaFloat[2,digits]
println[s]
setPrecision[digits]
println[s^2]


digits = 100
start = now[]
s = karatsubaFloat[640320, digits]
end = now[]
println["Time is " + (end-start)]
setPrecision[digits]
println[s^2]

digits = 100
start = now[]
s = karatsubaFloat[10^1000 + 1, digits]
end = now[]
println["Time is " + (end-start)]
setPrecision[digits]
println[s^2]

digits = 1000
start = now[]
s = karatsubaFloat[640320, digits]
end = now[]
println["Time is " + (end-start)]
setPrecision[digits]
//println[s^2]

for bits = 2 to million
{
   // Test around 2^n bits
   for add = -3 to 3
      testNum[2^bits + add]

   // Test random bits of this length
   for n = 1 to 10
      testNum[randomBits[bits]]

   if bits mod 1000 == 0
      print["$bits "]
   }

   println["done"]

   // Modified to only print on failures
   testNum[n] :=
   {
      [s, r] = sqrtRem[n]
      if (s^2 + r) != n  or  r < 0
      {
         t = bitLength[n] % 4
         if t == 2 or t == 1
            k = "yep"
         else
            k = base2[n]
         println["$n: bad $k"]
      }
   }


Download or view karatsubaTest.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 19346 days, 22 hours, 24 minutes ago.