[Flashforth-devel] FF50 (dspic33) Floating Point Beta working
Brought to you by:
oh2aun
From: pito <pi...@vo...> - 2014-07-13 12:26:39
|
This is with the Beta modified Leon's FP for FF50 (dspic33). Seems to be _much_ faster than on amforth. Still som issues to fix. Input is done via double or single integer with conversions to float (see below). Precision set to 6 digits (fp single precision only). Will continue when Mike is back from holidays.. :) marker _tstflt_ ok<#,ram> ok<#,ram> 314159265. d>f 100000000. d>f f/ fconstant _pi ok<#,ram> ok<#,ram> cr _pi fdup fdup f. fs. fe. 3.14159 3.14159E0 3.14159E0 ok<#,ram> ok<#,ram> -314159265. d>f 100000000. d>f f/ fconstant _-pi ok<#,ram> ok<#,ram> cr _-pi fdup fdup f. fs. fe. -3.14159 -3.14159E0 -3.14159E0 ok<#,ram> ok<#,ram> 1000000. d>f fconstant _1e6 ok<#,ram> ok<#,ram> cr _1e6 fdup fdup f. fs. fe. 1000000. 1.00000E6 1.00000E6 ok<#,ram> ok<#,ram> 100 s>f fconstant _100 ok<#,ram> ok<#,ram> cr _100 fdup fdup f. fs. fe. 100.000 1.00000E2 100.000E0 ok<#,ram> ok<#,ram> \ : prntpi _1e6 _100 f* f* f>d d. ; ok<#,ram> ok<#,ram> \ +pi f* f/ ok<#,ram> ok<#,ram> : test1 _1e6 fdup fdup fdup fdup f* f* f* f* _pi fswap f/ _1e6 fdup fdup fdup fdup f* f* f* f* f* fdup fdup f. fs. fe. ( the result shall be 3.14159265 ) ; ok<#,ram> ok<#,ram> : test2 _pi _1e6 f/ _1e6 f/ _1e6 f/ _1e6 f/ _1e6 f/ _1e6 fdup fdup fdup fdup f* f* f* f* f* fdup fdup f. fs. fe. ( the result shall be 3.14159265 ) ; ok<#,ram> ok<#,ram> \ -pi f* f/ ok<#,ram> ok<#,ram> : test3 _1e6 fdup fdup fdup fdup f* f* f* f* _-pi fswap f/ _1e6 fdup fdup fdup fdup f* f* f* f* f* fdup fdup f. fs. fe. ( the result shall be -3.14159265 ) ; ok<#,ram> ok<#,ram> : test4 _-pi _1e6 f/ _1e6 f/ _1e6 f/ _1e6 f/ _1e6 f/ _1e6 fdup fdup fdup fdup f* f* f* f* f* fdup fdup f. fs. fe. ( the result shall be -3.14159265 ) ; ok<#,ram> ok<#,ram> test1 3.14159 3.14159E0 3.14159E0 ok<#,ram> test2 3.14159 3.14159E0 3.14159E0 ok<#,ram> test3 -3.14159 -3.14159E0 -3.14159E0 ok<#,ram> test4 -3.14159 -3.14159E0 -3.14159E0 ok<#,ram> ok<#,ram> ok<#,ram> 1000000. d>f 7 s>f f/ fdup fdup f. fs. fe. 142857. 1.42857E5 142.857E3 ok<#,ram> -1000000. d>f 7 s>f f/ fdup fdup f. fs. fe. -142857. -1.42857E5 -142.857E3 ok<#,ram> 300000. d>f 555555. d>f f+ fdup fdup f. fs. fe. 855555. 8.55555E5 855.555E3 ok<#,ram> -300000. d>f 555555. d>f f+ fdup fdup f. fs. fe. 255555. 2.55555E5 255.555E3 ok<#,ram> -300000. d>f -555555. d>f f+ fdup fdup f. fs. fe. -855555. -8.55555E5 -855.555E3 ok<#,ram> -300000. d>f -555555. d>f f- fdup fdup f. fs. fe. 255555. 2.55555E5 255.555E3 ok<#,ram> \ Earth's volume and mass \ E. radius in m (Wiki: equatorial radius) 6378100. d>f fconstant earthradius ok<#,ram> \ E. volume in m3 (Wiki: 1.08321×10^12 km3) earthradius fdup fdup f* f* _pi f* 4 s>f f* 3 s>f f/ earthvolume f! earthvolume f@ fdup fdup cr f. fs. fe. 1086830000000000000000. 1.08683E21 1.08683E21 ok<#,ram> \ E. density 5.515 g/cm3 (Wiki) 5515 s>f 1000 s>f f/ 100 s>f fdup fdup f* f* f* earthvolume f@ f* ok<#,ram> 61481 28058 \ E. mass in g fdup fs. 5.99388E27 ok<#,ram> 61481 28058 \ E. mass in kg 1000 s>f f/ ok<#,ram> 43033 26782 fs. 5.99388E24 ok<#,ram> \ Earth mass in kg, Wiki: 5.97219×10^24 kg 5.99388E24 |