Average Error: 27.4 → 0.1
Time: 18.1s
Precision: 64
\[\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}\]
\[\frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}\]
\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}
\frac{y + \frac{x - z}{\frac{y}{x + z}}}{2.0}
double f(double x, double y, double z) {
        double r35455577 = x;
        double r35455578 = r35455577 * r35455577;
        double r35455579 = y;
        double r35455580 = r35455579 * r35455579;
        double r35455581 = r35455578 + r35455580;
        double r35455582 = z;
        double r35455583 = r35455582 * r35455582;
        double r35455584 = r35455581 - r35455583;
        double r35455585 = 2.0;
        double r35455586 = r35455579 * r35455585;
        double r35455587 = r35455584 / r35455586;
        return r35455587;
}

double f(double x, double y, double z) {
        double r35455588 = y;
        double r35455589 = x;
        double r35455590 = z;
        double r35455591 = r35455589 - r35455590;
        double r35455592 = r35455589 + r35455590;
        double r35455593 = r35455588 / r35455592;
        double r35455594 = r35455591 / r35455593;
        double r35455595 = r35455588 + r35455594;
        double r35455596 = 2.0;
        double r35455597 = r35455595 / r35455596;
        return r35455597;
}

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

Original27.4
Target0.2
Herbie0.1
\[y \cdot 0.5 - \left(\frac{0.5}{y} \cdot \left(z + x\right)\right) \cdot \left(z - x\right)\]

Derivation

  1. Initial program 27.4

    \[\frac{\left(x \cdot x + y \cdot y\right) - z \cdot z}{y \cdot 2.0}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\frac{\frac{x - z}{\frac{y}{z + x}} + y}{2.0}}\]
  3. Using strategy rm
  4. Applied +-commutative0.1

    \[\leadsto \frac{\color{blue}{y + \frac{x - z}{\frac{y}{z + x}}}}{2.0}\]
  5. Final simplification0.1

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

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
  :name "Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A"

  :herbie-target
  (- (* y 0.5) (* (* (/ 0.5 y) (+ z x)) (- z x)))

  (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2.0)))