github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/test/truncconst_test.go (about) 1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package test 6 7 import "testing" 8 9 var f52want float64 = 1.0 / (1 << 52) 10 var f53want float64 = 1.0 / (1 << 53) 11 12 func TestTruncFlt(t *testing.T) { 13 const f52 = 1 + 1.0/(1<<52) 14 const f53 = 1 + 1.0/(1<<53) 15 16 if got := f52 - 1; got != f52want { 17 t.Errorf("f52-1 = %g, want %g", got, f52want) 18 } 19 if got := float64(f52) - 1; got != f52want { 20 t.Errorf("float64(f52)-1 = %g, want %g", got, f52want) 21 } 22 if got := f53 - 1; got != f53want { 23 t.Errorf("f53-1 = %g, want %g", got, f53want) 24 } 25 if got := float64(f53) - 1; got != 0 { 26 t.Errorf("float64(f53)-1 = %g, want 0", got) 27 } 28 } 29 30 func TestTruncCmplx(t *testing.T) { 31 const r52 = complex(1+1.0/(1<<52), 0) 32 const r53 = complex(1+1.0/(1<<53), 0) 33 34 if got := real(r52 - 1); got != f52want { 35 t.Errorf("real(r52-1) = %g, want %g", got, f52want) 36 } 37 if got := real(complex128(r52) - 1); got != f52want { 38 t.Errorf("real(complex128(r52)-1) = %g, want %g", got, f52want) 39 } 40 if got := real(r53 - 1); got != f53want { 41 t.Errorf("real(r53-1) = %g, want %g", got, f53want) 42 } 43 if got := real(complex128(r53) - 1); got != 0 { 44 t.Errorf("real(complex128(r53)-1) = %g, want 0", got) 45 } 46 47 const i52 = complex(0, 1+1.0/(1<<52)) 48 const i53 = complex(0, 1+1.0/(1<<53)) 49 50 if got := imag(i52 - 1i); got != f52want { 51 t.Errorf("imag(i52-1i) = %g, want %g", got, f52want) 52 } 53 if got := imag(complex128(i52) - 1i); got != f52want { 54 t.Errorf("imag(complex128(i52)-1i) = %g, want %g", got, f52want) 55 } 56 if got := imag(i53 - 1i); got != f53want { 57 t.Errorf("imag(i53-1i) = %g, want %g", got, f53want) 58 } 59 if got := imag(complex128(i53) - 1i); got != 0 { 60 t.Errorf("imag(complex128(i53)-1i) = %g, want 0", got) 61 } 62 63 }