math: fix i386 atan2.s to raise underflow for subnormal results
This commit is contained in:
parent
6d85096f49
commit
411efb3bc6
2 changed files with 24 additions and 2 deletions
|
|
@ -4,4 +4,14 @@ atan2:
|
||||||
fldl 4(%esp)
|
fldl 4(%esp)
|
||||||
fldl 12(%esp)
|
fldl 12(%esp)
|
||||||
fpatan
|
fpatan
|
||||||
ret
|
fstl 4(%esp)
|
||||||
|
mov 8(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
cmp $0x00200000,%eax
|
||||||
|
jae 1f
|
||||||
|
# subnormal x, return x with underflow
|
||||||
|
fnstsw %ax
|
||||||
|
and $16,%ax
|
||||||
|
jnz 1f
|
||||||
|
fsts 4(%esp)
|
||||||
|
1: ret
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,16 @@ atan2f:
|
||||||
flds 4(%esp)
|
flds 4(%esp)
|
||||||
flds 8(%esp)
|
flds 8(%esp)
|
||||||
fpatan
|
fpatan
|
||||||
ret
|
fsts 4(%esp)
|
||||||
|
mov 4(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
cmp $0x01000000,%eax
|
||||||
|
jae 1f
|
||||||
|
# subnormal x, return x with underflow
|
||||||
|
fnstsw %ax
|
||||||
|
and $16,%ax
|
||||||
|
jnz 1f
|
||||||
|
fld %st(0)
|
||||||
|
fmul %st(1)
|
||||||
|
fstps 4(%esp)
|
||||||
|
1: ret
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue