37 lines
522 B
Forth
37 lines
522 B
Forth
( Sine and cosine JCB 18:29 11/18/10)
|
|
|
|
create sintab
|
|
|
|
meta
|
|
|
|
: mksin
|
|
65 0 do
|
|
i s>d d>f 128e0 f/ pi f* fsin
|
|
32767e0 f* f>d drop
|
|
t,
|
|
loop
|
|
;
|
|
mksin
|
|
|
|
target
|
|
|
|
: sin ( th -- v )
|
|
dup d# 128 and >r
|
|
d# 127 and
|
|
dup d# 63 > if
|
|
invert d# 129 + \ 64->64, 65->63
|
|
then
|
|
cells sintab + @
|
|
r> if
|
|
negate
|
|
then
|
|
;
|
|
|
|
: cos d# 64 + sin ;
|
|
|
|
: sin* ( s th -- sinth * s )
|
|
sin swap 2* m* nip ;
|
|
|
|
: cos* ( s th -- costh * s )
|
|
cos swap 2* m* nip ;
|