1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package bfloat16
- import (
- "crypto/rand"
- "reflect"
- "testing"
- )
- func randomBytes(n int) []byte {
- out := make([]byte, n)
- if _, err := rand.Read(out); err != nil {
- panic(err)
- }
- return out
- }
- func TestEncodeDecode(t *testing.T) {
- b := randomBytes(1024)
- bf16 := Decode(b)
- out := Encode(bf16)
- if !reflect.DeepEqual(b, out) {
- t.Fatalf("%+v != %+v", b, out)
- }
- }
- func TestEncodeDecodeFloat32(t *testing.T) {
- b := randomBytes(1024)
- bf16 := DecodeFloat32(b)
- out := EncodeFloat32(bf16)
- if !reflect.DeepEqual(b, out) {
- t.Fatalf("%+v != %+v", b, out)
- }
- }
- func TestBasicFloat32(t *testing.T) {
- var in float32 = 1.0
- out := ToFloat32(FromFloat32(in))
- if !reflect.DeepEqual(in, out) {
- t.Fatalf("%+v != %+v", in, out)
- }
- }
- func TestComplexFloat32(t *testing.T) {
- var in float32 = 123456789123456789.123456789
- var want float32 = 123286039799267328.0
- out := ToFloat32(FromFloat32(in))
- if in == out {
- t.Fatalf("no loss of precision")
- }
- if out != want {
- t.Fatalf("%.16f != %.16f", want, out)
- }
- }
|