Posted to tcl by kbk at Sat Jun 15 16:27:17 GMT 2019view pretty

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.