Average Error: 7.5 → 1.4
Time: 3.1s
Precision: binary64
\[\frac{x + y}{1 - \frac{y}{z}}\]
\[\frac{1}{\frac{1}{y + x} + \frac{y}{y + x} \cdot \frac{-1}{z}}\]
\frac{x + y}{1 - \frac{y}{z}}
\frac{1}{\frac{1}{y + x} + \frac{y}{y + x} \cdot \frac{-1}{z}}
(FPCore (x y z) :precision binary64 (/ (+ x y) (- 1.0 (/ y z))))
(FPCore (x y z)
 :precision binary64
 (/ 1.0 (+ (/ 1.0 (+ y x)) (* (/ y (+ y x)) (/ -1.0 z)))))
double code(double x, double y, double z) {
	return (((double) (x + y)) / ((double) (1.0 - (y / z))));
}
double code(double x, double y, double z) {
	return (1.0 / ((double) ((1.0 / ((double) (y + x))) + ((double) ((y / ((double) (y + x))) * (-1.0 / z))))));
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.5
Target4.0
Herbie1.4
\[\begin{array}{l} \mathbf{if}\;y < -3.7429310762689856 \cdot 10^{+171}:\\ \;\;\;\;\frac{y + x}{-y} \cdot z\\ \mathbf{elif}\;y < 3.5534662456086734 \cdot 10^{+168}:\\ \;\;\;\;\frac{x + y}{1 - \frac{y}{z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{y + x}{-y} \cdot z\\ \end{array}\]

Derivation

  1. Initial program Error: 7.5 bits

    \[\frac{x + y}{1 - \frac{y}{z}}\]
  2. Using strategy rm
  3. Applied clear-numError: 7.7 bits

    \[\leadsto \color{blue}{\frac{1}{\frac{1 - \frac{y}{z}}{x + y}}}\]
  4. Using strategy rm
  5. Applied div-subError: 7.7 bits

    \[\leadsto \frac{1}{\color{blue}{\frac{1}{x + y} - \frac{\frac{y}{z}}{x + y}}}\]
  6. SimplifiedError: 7.7 bits

    \[\leadsto \frac{1}{\color{blue}{\frac{1}{y + x}} - \frac{\frac{y}{z}}{x + y}}\]
  7. SimplifiedError: 7.1 bits

    \[\leadsto \frac{1}{\frac{1}{y + x} - \color{blue}{\frac{y}{z \cdot \left(y + x\right)}}}\]
  8. Using strategy rm
  9. Applied *-un-lft-identityError: 7.1 bits

    \[\leadsto \frac{1}{\frac{1}{y + x} - \frac{\color{blue}{1 \cdot y}}{z \cdot \left(y + x\right)}}\]
  10. Applied times-fracError: 1.4 bits

    \[\leadsto \frac{1}{\frac{1}{y + x} - \color{blue}{\frac{1}{z} \cdot \frac{y}{y + x}}}\]
  11. Final simplificationError: 1.4 bits

    \[\leadsto \frac{1}{\frac{1}{y + x} + \frac{y}{y + x} \cdot \frac{-1}{z}}\]

Reproduce

herbie shell --seed 2020203 
(FPCore (x y z)
  :name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, A"
  :precision binary64

  :herbie-target
  (if (< y -3.7429310762689856e+171) (* (/ (+ y x) (- y)) z) (if (< y 3.5534662456086734e+168) (/ (+ x y) (- 1.0 (/ y z))) (* (/ (+ y x) (- y)) z)))

  (/ (+ x y) (- 1.0 (/ y z))))