|
Basic trigonometry functions |
|
Written by Eoin O'Callaghan
|
;Summary: Basic trigonometry functions not directly supported on the FPU
; (ArcCos, ArcSin, HSin, HCos and HTan).
;Compatibility: Floating-Point Unit.
;Notes: None.
.data
hPi dt 3FFFC90FDAA22168C235h ; tbyte
iL2e dt 3FFEB17217F7D1CF79ACh ; tbyte
half dd 0.5
ArcCos MACRO ;Inverse Cosine, st(0) = arccos(st(0))
fld1
fld st(1)
fmul st,st
fsub
fsqrt
fpatan
fchs
fld hPi
fadd
EndM
ArcSin Macro ;Inverse Sine, st(0) = arcsin(st(0))
fld1
fld st(1)
fmul st,st
fsub
fsqrt
fpatan
EndM
HSin Macro ;Hyperbolic Sin, st(0) = hsin(st(0)
fldl2e
fmul
fld st
frndint
fsub st(1),st
fld1
fscale
fxch
fstp st
fxch
f2xm1
fld1
fadd
fmul
fld st
fld1
fdivr
fsub
fmul half
EndM
HCos Macro ;Hyperbolic Cos, st(0) = hcos(st(0)
fldl2e
fmul
fld st
frndint
fsub st(1),st
fld1
fscale
fxch
fstp st
fxch
f2xm1
fld1
fadd
fmul
fld st
fld1
fdivr
fadd
fmul half
EndM
HTan Macro ;Hyperbolic Tan, st(0) = htan(st(0)
fldl2e
fmul
fld st
frndint
fsub st(1),st
fld1
fscale
fxch
fstp st
fxch
f2xm1
fld1
fadd
fmul
fmul st,st
fld st
fld1
fadd
fxch
fld1
fsub
fdivr
EndM
|