\ 4tH library - FLN FLOG ZEN - Copyright 2008 J.L. Bezemer \ You can redistribute this file and/or modify it under \ the terms of the GNU General Public License \ Ported to ZEN float by David Johnson, 2009 [UNDEFINED] fln [IF] [UNDEFINED] f+ [IF] [ABORT] [THEN] [UNDEFINED] 2@ [IF] include lib/anscore.4th [THEN] 2 array epsilon 2 array lbase : integer >r begin 2dup 1 s>f f< while lbase 2@ f* r> 1- >r repeat begin 2dup lbase 2@ f< 0= while lbase 2@ f/ r> 1+ >r repeat r> ; : fraction >r 0 s>f 5 -1 2rot 2dup f* begin 2over epsilon 2@ 2swap f< while 2dup lbase 2@ f< 0= if 2swap 2rot 2over f+ 2swap 2rot lbase 2@ f/ then 2swap 2 s>f f/ 2swap 2dup f* repeat 2drop 2drop r> ; : (log) lbase 2! 1 -12 epsilon 2! 2dup f0< abort" Negative float" 0 integer fraction s>f f+ ; : fln 271828183 -8 (log) ; : flog 10 s>f (log) ; [DEFINED] 4TH# [IF] hide integer hide epsilon hide lbase hide fraction [THEN] [THEN]