Average Error: 14.8 → 14.8
Time: 712.0ms
Precision: binary64
\[\frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5\]
\[\frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5\]
\frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5
\frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5
double code(double x) {
	return ((double) (((double) (((double) (0.5 * x)) / ((double) (1.0 + ((double) fabs(x)))))) + 0.5));
}
double code(double x) {
	return ((double) (((double) (((double) (0.5 * x)) / ((double) (1.0 + ((double) fabs(x)))))) + 0.5));
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 14.8

    \[\frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5\]
  2. Final simplification14.8

    \[\leadsto \frac{0.5 \cdot x}{1 + \left|x\right|} + 0.5\]

Reproduce

herbie shell --seed 2020153 
(FPCore (x)
  :name "(+ (/ (* 0.5 x) (+ 1 (fabs x))) 0.5)"
  :precision binary64
  (+ (/ (* 0.5 x) (+ 1.0 (fabs x))) 0.5))