1
2
3
4
5 package strconv
6
7 import "unsafe"
8
9
10
11
12
13 func float64frombits(b uint64) float64 { return *(*float64)(unsafe.Pointer(&b)) }
14 func float32frombits(b uint32) float32 { return *(*float32)(unsafe.Pointer(&b)) }
15 func float64bits(f float64) uint64 { return *(*uint64)(unsafe.Pointer(&f)) }
16 func float32bits(f float32) uint32 { return *(*uint32)(unsafe.Pointer(&f)) }
17
18 func inf(sign int) float64 {
19 var v uint64
20 if sign >= 0 {
21 v = 0x7FF0000000000000
22 } else {
23 v = 0xFFF0000000000000
24 }
25 return float64frombits(v)
26 }
27
28 func isNaN(f float64) (is bool) { return f != f }
29
30 func nan() float64 { return float64frombits(0x7FF8000000000001) }
31
View as plain text