Posted to tcl by kbk at Sat Jun 15 16:27:17 GMT 2019view raw
- proc facs {N} {
- set lnfac 0.
- for {set n 2} {$n <= $N} {incr n} {
- puts "n = $n"
- # accumulate log(n!)
- set lnfac [expr {$lnfac + log($n)}]
- puts [format {ln(n!) = %e n! = %g} $lnfac [expr {exp($lnfac)}]]
- # calculate log(b), and b itself
- set lnb [expr {$lnfac / $n}]
- set b [expr {entier(ceil(exp($lnb)))}]
- puts [format {ln(b) = %e b = %g} $lnb $b]
- # format n! in floating point - with excess precision, but who cares
- set lognfac [expr {$lnfac/log(10.)}]
- set charnfac [expr {int($lognfac)}]
- set signfac [expr {10.**($lognfac - $charnfac)}]
- puts "$n! = ${signfac}E${charnfac}"
- # format b**n in floating point, again with excess precision
- set logbton [expr {$n * log($b) / log(10.)}]
- set charbton [expr {int($logbton)}]
- set sigbton [expr {10.**($logbton - $charbton)}]
- puts "$b**$n = ${sigbton}E${charbton}"
- }
- return
- }
- facs 10000
Comments
Posted by CecilWesterhof at Sun Jun 16 11:21:55 GMT 2019 [text] [code]
I implemented the old fashioned way what I mend: http://paste.tclers.tk/5173. Later I hope to implement your idea. By the way it was already at oeis: http://oeis.org/A065027. They have the list up-to 10.000. I am a 'little' further, so I will offer them my data.