aUCBLogo Demos and Tests / longinttest


to longinttest
   
local [i t1 t2 n fn]
   
ct longint; LoadLib "LongInt
   
nodribble dribble "longinttest.txt   
   
forever
   
[   erase [i t1 t2 n fn]
      
make "fn getSingleChoiceIndex 
         
[Choose function][get Single Choice]
         
[[LongDiv][LongMod][LongPower][Factorial][Stop]]
      
if (:fn==-1or2 (:fn==4) [pr "Stopped. stop]
      
for [1 3 1] 
      
[   make "n chain :i pr :i pr :n
         
make "t1 timemilli
         
make "result func :n :fn
         
if :result==-[pr "Broken. break]
         
make "t2 timemilli
         
show :result
         
(pr count :result "digits "in (:t2-:t1)/1000 "s)
         
pr "
      
]
   
]
   
nodribble 
   
pr "Finished.
end

to func :n :fn
   
case :fn
   
[   [op LongDiv :n 3]
      
[op LongMod :n 3]
      
[if continue? ==[op LongPower :n]]
      
[if continue? ==[op factorial :n]]
   
op -break
end

to factorial :n
   
if equalp :n [output 1]
   
output LongProd :n factorial LongSub :n 1
end

to chain :ding :times
   
local [aa=repeat :times [make "a word :ding :aop :a
end

to continue?
   
op (MessageBox [Continue with next step?][MessageBox] 
      
wxYes_No+wxCancel [400 200])
end