\ 4tH library - FSIN FCOS ZEN - Copyright 2009 J.L. Bezemer \ You can redistribute this file and/or modify it under \ the terms of the GNU General Public License [UNDEFINED] fsin [IF] [UNDEFINED] +taylor [IF] include lib/zentaylr.4th [THEN] [UNDEFINED] floor [IF] include lib/zenfloor.4th [THEN] \ this word courtesy : >range \ Albert van der Horst 314159265 -8 2dup f+ ( x pi2) 2over 2over f/ ( x pi2 x/pi2) floor 2over f* ( x pi2 mod) 2rot 2swap f- ( pi2 mod) 314159265 -8 2over ( pi2 mod pi mod) f< if 2swap f- else 2swap 2drop then ; : fsin >range 2dup >taylor ( x x2 x) 6 -taylor ( x-3 x2 x3) 120 +taylor ( x+5 x2 x5) 5040 -taylor ( x-7 x2 x7) 362880 +taylor ( x+9 x2 x9) 39916800 -taylor ( x-11 x2 x11) 2drop 2drop ( x-11) ; : fcos 1 s>f 2swap >range >taylor ( 1 x2 1) 2 -taylor ( 1-2 x2 x2) 24 +taylor ( 1+4 x2 x4) 720 -taylor ( 1-6 x2 x6) 40320 +taylor ( 1+8 x2 x8) 3628800 -taylor ( 1-10 x2 x10) 479001600 +taylor ( 1+12 x2 x12) 2drop 2drop ( 1+12) ; : fsincos 2dup fsin 2swap fcos ; : ftan fsincos f/ ; \ ftan = fsin / fcos [DEFINED] 4TH# [IF] hide >range [THEN] [THEN]