mirror of
https://github.com/golang/go
synced 2024-11-24 15:20:03 -07:00
Added a comment and some more tests
This commit is contained in:
parent
9a6d4584a8
commit
3bfbd85c4c
@ -1688,8 +1688,11 @@ var vfpowSC = [][2]float64{
|
||||
{Nextafter(-1, 2), float64(1 << 63)},
|
||||
{Nextafter(-1, -2), float64(1 << 63)},
|
||||
|
||||
// Issue #57465, exponent is an even number that overflows int64
|
||||
// Issue #57465
|
||||
{Copysign(0, -1), 1e19},
|
||||
{Copysign(0, -1), -1e19},
|
||||
{Copysign(0, -1), 1<<53 - 1},
|
||||
{Copysign(0, -1), -(1<<53 - 1)},
|
||||
}
|
||||
var powSC = []float64{
|
||||
0, // pow(-Inf, -Pi)
|
||||
@ -1766,8 +1769,11 @@ var powSC = []float64{
|
||||
0, // pow(Nextafter(-1, 2), float64(1 << 63))
|
||||
Inf(1), // pow(Nextafter(-1, -2), float64(1 << 63))
|
||||
|
||||
// Issue #57465, exponent is an even number that overflows int64
|
||||
0,
|
||||
// Issue #57465
|
||||
0, // pow(-0, 1e19)
|
||||
Inf(1), // pow(-0, -1e19)
|
||||
Copysign(0, -1), // pow(-0, 1<<53 -1)
|
||||
Inf(-1), // pow(-0, -(1<<53 -1))
|
||||
}
|
||||
|
||||
var vfpow10SC = []int{
|
||||
|
@ -6,6 +6,11 @@ package math
|
||||
|
||||
func isOddInt(x float64) bool {
|
||||
if Abs(x) >= (1 << 53) {
|
||||
// 1 << 53 is the largest exact integer in the float64 format.
|
||||
// Any number outside this range will be truncated before the decimal point and therefore will always be
|
||||
// an even integer.
|
||||
// Without this check and if x overflows int64 the int64(xi) conversion below may produce incorrect results
|
||||
// on some architectures (and does so on arm64). See issue #57465.
|
||||
return false
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user