| // Copyright 2025 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package strconv |
| |
| import "unsafe" |
| |
| // Implementations to avoid importing other dependencies. |
| |
| // package math |
| |
| func float64frombits(b uint64) float64 { return *(*float64)(unsafe.Pointer(&b)) } |
| func float32frombits(b uint32) float32 { return *(*float32)(unsafe.Pointer(&b)) } |
| func float64bits(f float64) uint64 { return *(*uint64)(unsafe.Pointer(&f)) } |
| func float32bits(f float32) uint32 { return *(*uint32)(unsafe.Pointer(&f)) } |
| |
| func inf(sign int) float64 { |
| var v uint64 |
| if sign >= 0 { |
| v = 0x7FF0000000000000 |
| } else { |
| v = 0xFFF0000000000000 |
| } |
| return float64frombits(v) |
| } |
| |
| func isNaN(f float64) (is bool) { return f != f } |
| |
| func nan() float64 { return float64frombits(0x7FF8000000000001) } |