|
|
1.1 ! root 1: ////////// ! 2: / libm 8087 ! 3: / acos(d) ! 4: ////////// ! 5: ! 6: #include "larges.h" ! 7: #include "ifno8087.h" ! 8: ! 9: .globl acos_ ! 10: .globl asin ! 11: .globl cfcc87 ! 12: .globl edomain ! 13: ! 14: ////////// ! 15: / double ! 16: / acos(d) ! 17: / double d; ! 18: ////////// ! 19: ! 20: d = RASIZE / arg offset ! 21: ! 22: acos_: ! 23: ifno8087(_acos_) ! 24: mov bx, sp ! 25: fdld Pss d(bx) / Load argument d. ! 26: ! 27: fld st / d, d ! 28: fabs / abs(d), d ! 29: fld1 / 1, abs(d), d ! 30: fcompp / Compare 1 to abs(d) and pop twice. ! 31: Gcall cfcc87 ! 32: jae 0f ! 33: Gjmp edomain / d < -1 or 1 < d, issue EDOM error. ! 34: 0: ! 35: Gcall asin / asin(d) ! 36: fild cs:minus1 / -1, asin(d) ! 37: fldpi / pi, -1, asin(d) ! 38: fscale / pi/2, -1, asin(d) ! 39: fstp st1 / pi/2, asin(d) ! 40: fsubr / acos(d) = pi/2 - asin(d) ! 41: Gret ! 42: ! 43: / Data. ! 44: minus1: .word -1 ! 45: ! 46: / end of acos87.m
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.