re PR go/52358 (math FAILs on Solaris 8 and 9)
PR go/52358 math: Work around bug in Solaris 9 implementation of ldexp. The bug is that ldexp(-1, -1075) should return -0, but the Solaris 9 implementation returns +0. From-SVN: r186913
This commit is contained in:
parent
f07bb470ae
commit
6c88c77ec7
1 changed files with 12 additions and 1 deletions
|
@ -16,7 +16,18 @@ package math
|
|||
func libc_ldexp(float64, int) float64
|
||||
|
||||
func Ldexp(frac float64, exp int) float64 {
|
||||
return libc_ldexp(frac, exp)
|
||||
r := libc_ldexp(frac, exp)
|
||||
|
||||
// Work around a bug in the implementation of ldexp on Solaris
|
||||
// 9. If multiplying a negative number by 2 raised to a
|
||||
// negative exponent underflows, we want to return negative
|
||||
// zero, but the Solaris 9 implementation returns positive
|
||||
// zero. This workaround can be removed when and if we no
|
||||
// longer care about Solaris 9.
|
||||
if r == 0 && frac < 0 && exp < 0 {
|
||||
r = Copysign(0, frac)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func ldexp(frac float64, exp int) float64 {
|
||||
|
|
Loading…
Add table
Reference in a new issue