mirror of
https://github.com/golang/go
synced 2024-11-24 17:20:12 -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)},
|
||||||
{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), -1e19},
|
||||||
|
{Copysign(0, -1), 1<<53 - 1},
|
||||||
|
{Copysign(0, -1), -(1<<53 - 1)},
|
||||||
}
|
}
|
||||||
var powSC = []float64{
|
var powSC = []float64{
|
||||||
0, // pow(-Inf, -Pi)
|
0, // pow(-Inf, -Pi)
|
||||||
@ -1766,8 +1769,11 @@ var powSC = []float64{
|
|||||||
0, // pow(Nextafter(-1, 2), float64(1 << 63))
|
0, // pow(Nextafter(-1, 2), float64(1 << 63))
|
||||||
Inf(1), // 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
|
// Issue #57465
|
||||||
0,
|
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{
|
var vfpow10SC = []int{
|
||||||
|
@ -6,6 +6,11 @@ package math
|
|||||||
|
|
||||||
func isOddInt(x float64) bool {
|
func isOddInt(x float64) bool {
|
||||||
if Abs(x) >= (1 << 53) {
|
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
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user