43 lines
839 B
Plaintext
43 lines
839 B
Plaintext
include ..\Utilitys.pmt
|
|
|
|
20 var MAX
|
|
100000 var ITER
|
|
|
|
def factorial 1 swap for * endfor enddef
|
|
|
|
def expected /# n -- n #/
|
|
>ps
|
|
0
|
|
tps for var i
|
|
tps factorial tps i power / tps i - factorial / +
|
|
endfor
|
|
ps> drop
|
|
enddef
|
|
|
|
def condition over over bitand not enddef
|
|
|
|
def test /# n -- n #/
|
|
0 >ps
|
|
ITER for var i
|
|
0 1
|
|
condition while
|
|
ps> 1 + >ps
|
|
bitor
|
|
over rand * 1 + int 1 - 2 swap power
|
|
condition endwhile
|
|
drop drop
|
|
endfor
|
|
drop ps> ITER /
|
|
enddef
|
|
|
|
def printAll len for get print 9 tochar print endfor enddef
|
|
|
|
( "n" "avg." "exp." "(error%)" ) printAll drop nl
|
|
( "==" "======" "======" "========" ) printAll drop nl
|
|
|
|
MAX for var n
|
|
n test
|
|
n expected
|
|
n rot rot over over / 1 swap - abs 100 * 4 tolist printAll drop nl
|
|
endfor
|