\ 4tH library - FSIN FCOS - Copyright 2008,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] pi [IF] include lib/fpconst.4th [THEN] [UNDEFINED] +taylor [IF] include lib/taylor.4th [THEN] \ this word courtesy : >range \ Albert van der Horst pi fdup f+ ( x pi2) fover fover f/ ( x pi2 x/pi2) floor fover f* ( x pi2 mod) frot fswap f- ( pi2 mod) pi fover ( pi2 mod pi mod) f< if fswap f- else fnip then ; : fsin >range fdup >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) fdrop fdrop ( x-11) ; : fcos 1 s>f fswap >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) fdrop fdrop ( 1+12) ; : fsincos fdup fsin fswap fcos ; : ftan fsincos f/ ; \ ftan = fsin / fcos [DEFINED] 4TH# [IF] hide >range [THEN] [THEN]