-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
I could not find a way to read floating point numbers in the package out of the box, sure we can do something like this:
extension Double {
init(parsingLittleEndian input: inout ParserSpan) throws {
let tmp = try UInt64(parsingLittleEndian: &input)
self = withUnsafePointer(to: tmp) { ptr in
let rawPtr = UnsafeRawPointer(ptr)
return rawPtr.load(as: Double.self)
}
}
}
The above is obviously limited to IEEE types, but as other formats like MIL-STD-1750A exist, some kind of extensible floating point encoding mechanism would be useful.
I could think of these formats being somewhat useful / common where obviously, at least IEEE float32 and float64 are very prevalent:
- IEEE float16
- IEEE float32
- IEEE float64
- IEEE float128
- IEEE float256
- Extended x86 format (80 bits)
- bfloat16
- Nvidia tensor float
- AMD fp24
- PXR24
- MIL-STD-1750 formats
Metadata
Metadata
Assignees
Labels
No labels