math

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2026 License: MIT Imports: 2 Imported by: 0

README

go-math

A Go library for converting floating-point values between IEEE 754 and legacy binary formats used by IBM mainframes, VAX, and Cray supercomputers.

Formats

Format Variable Float32 Float64
IEEE 754 IEEE standard standard
IBM Hexadecimal IBMHex single-precision double-precision
VAX Vax F format G format
Cray NDR Cray IEEE big-endian Cray native

Install

go get github.com/oiweiwei/go-math

Usage

Each format implements the FloatFormat interface:

type FloatFormat interface {
    Float32bits(float32) uint32
    Float32frombits(uint32) float32
    Float64bits(float64) uint64
    Float64frombits(uint64) float64
}
Convert a float32 to IBM Hexadecimal bits
import math "github.com/oiweiwei/go-math"

bits := math.IBMHex.Float32bits(123.45)       // float32 -> IBM hex uint32
val  := math.IBMHex.Float32frombits(bits)     // IBM hex uint32 -> float32
Convert a float64 to VAX G format
bits := math.Vax.Float64bits(3.141592653589793)   // float64 -> VAX G uint64
val  := math.Vax.Float64frombits(bits)            // VAX G uint64 -> float64
Low-level functions

Individual conversion functions are also exported:

// IBM Hexadecimal
math.IBMHexfloat32bits(v float32) uint32
math.IBMHexfloat32frombits(b uint32) float32
math.IBMHexfloat64bits(v float64) uint64
math.IBMHexfloat64frombits(b uint64) float64

// VAX F (single) and G (double)
math.VaxFfloat32bits(v float32) uint32
math.VaxFfloat32frombits(b uint32) float32
math.VaxGfloat64bits(v float64) uint64
math.VaxGfloat64frombits(b uint64) float64

// Cray NDR
math.CrayFloat32bits(v float32) uint32
math.CrayFloat32frombits(b uint32) float32
math.CrayFloat64bits(v float64) uint64
math.CrayFloat64frombits(b uint64) float64

License

MIT

Documentation

Index

Constants

View Source
const (
	IEEE32Excess = 127
	IEEE64Excess = 1023

	IEEE32Mantissa = 0x007fffff
	IEEE64Mantissa = 0x000fffffffffffff

	IEEE32Sign = 0x80000000
	IEEE64Sign = 0x8000000000000000

	IEEE32SignPos = 31
	IEEE64SignPos = 63
)

Variables

View Source
var (
	Float32bits     = math.Float32bits
	Float32frombits = math.Float32frombits
	Float64bits     = math.Float64bits
	Float64frombits = math.Float64frombits
)
View Source
var Cray = floatFormat{
	// contains filtered or unexported fields
}
View Source
var IBMHex = floatFormat{
	// contains filtered or unexported fields
}
View Source
var IEEE = floatFormat{
	// contains filtered or unexported fields
}
View Source
var Vax = floatFormat{
	// contains filtered or unexported fields
}

Functions

func CrayFloat32bits

func CrayFloat32bits(v float32) uint32

CrayFloat32bits ...

func CrayFloat32frombits

func CrayFloat32frombits(b uint32) float32

CrayFloat32frombits ...

func CrayFloat64bits

func CrayFloat64bits(v float64) uint64

func CrayFloat64frombits

func CrayFloat64frombits(b uint64) float64

func IBMHexfloat32bits

func IBMHexfloat32bits(v float32) uint32

IBMHexfloat32bits ...

func IBMHexfloat32frombits

func IBMHexfloat32frombits(b uint32) float32

IBMHexfloat32frombits ...

func IBMHexfloat64bits

func IBMHexfloat64bits(v float64) uint64

IBMHexfloat64bits ...

func IBMHexfloat64frombits

func IBMHexfloat64frombits(b uint64) float64

IBMHexfloat64frombits ...

func IEEE32Exponent

func IEEE32Exponent(u uint32) int

func IEEE64Exponent

func IEEE64Exponent(u uint64) int

func ToIEEE32Exponent

func ToIEEE32Exponent(e int) uint32

func ToIEEE64Exponent

func ToIEEE64Exponent(e int) uint64

func VaxFfloat32bits

func VaxFfloat32bits(v float32) uint32

VaxFfloat32bits ...

func VaxFfloat32frombits

func VaxFfloat32frombits(b uint32) float32

VaxFfloat32frombits ...

func VaxGfloat64bits

func VaxGfloat64bits(v float64) uint64

VaxGfloat64bits ...

func VaxGfloat64frombits

func VaxGfloat64frombits(b uint64) float64

VaxGfloat64frombits ...

Types

type FloatFormat

type FloatFormat interface {
	Float32bits(float32) uint32
	Float32frombits(uint32) float32
	Float64bits(float64) uint64
	Float64frombits(uint64) float64
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL