# Pass -ffp-contract=off, or 386-specific options, when building the
# math package. MATH_FLAG is defined in configure.ac.
math_lo_GOCFLAGS = $(MATH_FLAG)
+math_check_GOCFLAGS = $(MATH_FLAG)
# Add the generated file runtime_sysinfo.go to the runtime package.
extra_go_files_runtime = runtime_sysinfo.go sigtab.go
# Pass -ffp-contract=off, or 386-specific options, when building the
# math package. MATH_FLAG is defined in configure.ac.
math_lo_GOCFLAGS = $(MATH_FLAG)
+math_check_GOCFLAGS = $(MATH_FLAG)
# Add the generated file runtime_sysinfo.go to the runtime package.
extra_go_files_runtime = runtime_sysinfo.go sigtab.go
$as_echo "$libgo_cv_c_fancymath" >&6; }
MATH_FLAG=
if test "$libgo_cv_c_fancymath" = yes; then
- MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations -fno-math-errno"
-else
- MATH_FLAG="-ffp-contract=off"
+ MATH_FLAG="-mfancy-math-387"
fi
+MATH_FLAG="${MATH_FLAG} -ffp-contract=off -fno-math-errno -fno-trapping-math"
CFLAGS_hold=$CFLAGS
AC_SUBST(STRINGOPS_FLAG)
dnl For x86 we want to compile the math library with -mfancy-math-387
-dnl -funsafe-math-optimizations so that we can use the builtin
-dnl instructions directly.
+dnl so that we can use the builtin instructions directly.
AC_CACHE_CHECK([whether compiler supports -mfancy-math-387],
[libgo_cv_c_fancymath],
[CFLAGS_hold=$CFLAGS
CFLAGS=$CFLAGS_hold])
MATH_FLAG=
if test "$libgo_cv_c_fancymath" = yes; then
- MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations -fno-math-errno"
-else
- MATH_FLAG="-ffp-contract=off"
+ MATH_FLAG="-mfancy-math-387"
fi
+MATH_FLAG="${MATH_FLAG} -ffp-contract=off -fno-math-errno -fno-trapping-math"
AC_SUBST(MATH_FLAG)
CFLAGS_hold=$CFLAGS
var ceil = []float64{
5.0000000000000000e+00,
8.0000000000000000e+00,
- 0.0000000000000000e+00,
+ Copysign(0, -1),
-5.0000000000000000e+00,
1.0000000000000000e+01,
3.0000000000000000e+00,
var trunc = []float64{
4.0000000000000000e+00,
7.0000000000000000e+00,
- -0.0000000000000000e+00,
+ Copysign(0, -1),
-5.0000000000000000e+00,
9.0000000000000000e+00,
2.0000000000000000e+00,
func TestCeil(t *testing.T) {
for i := 0; i < len(vf); i++ {
- if f := Ceil(vf[i]); ceil[i] != f {
+ if f := Ceil(vf[i]); !alike(ceil[i], f) {
t.Errorf("Ceil(%g) = %g, want %g", vf[i], f, ceil[i])
}
}
func TestFloor(t *testing.T) {
for i := 0; i < len(vf); i++ {
- if f := Floor(vf[i]); floor[i] != f {
+ if f := Floor(vf[i]); !alike(floor[i], f) {
t.Errorf("Floor(%g) = %g, want %g", vf[i], f, floor[i])
}
}
func TestTrunc(t *testing.T) {
for i := 0; i < len(vf); i++ {
- if f := Trunc(vf[i]); trunc[i] != f {
+ if f := Trunc(vf[i]); !alike(trunc[i], f) {
t.Errorf("Trunc(%g) = %g, want %g", vf[i], f, trunc[i])
}
}