Average Error: 27.4 → 0.1
Time: 17.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 r29664786 = x;
        double r29664787 = r29664786 * r29664786;
        double r29664788 = y;
        double r29664789 = r29664788 * r29664788;
        double r29664790 = r29664787 + r29664789;
        double r29664791 = z;
        double r29664792 = r29664791 * r29664791;
        double r29664793 = r29664790 - r29664792;
        double r29664794 = 2.0;
        double r29664795 = r29664788 * r29664794;
        double r29664796 = r29664793 / r29664795;
        return r29664796;
}

double f(double x, double y, double z) {
        double r29664797 = y;
        double r29664798 = x;
        double r29664799 = z;
        double r29664800 = r29664798 - r29664799;
        double r29664801 = r29664798 + r29664799;
        double r29664802 = r29664797 / r29664801;
        double r29664803 = r29664800 / r29664802;
        double r29664804 = r29664797 + r29664803;
        double r29664805 = 2.0;
        double r29664806 = r29664804 / r29664805;
        return r29664806;
}

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)))