Average Error: 10.9 → 1.2
Time: 4.5s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{a - t}\]
\[x + \frac{1}{\frac{\frac{a - t}{z - t}}{y}}\]
x + \frac{y \cdot \left(z - t\right)}{a - t}
x + \frac{1}{\frac{\frac{a - t}{z - t}}{y}}
double f(double x, double y, double z, double t, double a) {
        double r644818 = x;
        double r644819 = y;
        double r644820 = z;
        double r644821 = t;
        double r644822 = r644820 - r644821;
        double r644823 = r644819 * r644822;
        double r644824 = a;
        double r644825 = r644824 - r644821;
        double r644826 = r644823 / r644825;
        double r644827 = r644818 + r644826;
        return r644827;
}

double f(double x, double y, double z, double t, double a) {
        double r644828 = x;
        double r644829 = 1.0;
        double r644830 = a;
        double r644831 = t;
        double r644832 = r644830 - r644831;
        double r644833 = z;
        double r644834 = r644833 - r644831;
        double r644835 = r644832 / r644834;
        double r644836 = y;
        double r644837 = r644835 / r644836;
        double r644838 = r644829 / r644837;
        double r644839 = r644828 + r644838;
        return r644839;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original10.9
Target1.1
Herbie1.2
\[x + \frac{y}{\frac{a - t}{z - t}}\]

Derivation

  1. Initial program 10.9

    \[x + \frac{y \cdot \left(z - t\right)}{a - t}\]
  2. Using strategy rm
  3. Applied associate-/l*1.1

    \[\leadsto x + \color{blue}{\frac{y}{\frac{a - t}{z - t}}}\]
  4. Using strategy rm
  5. Applied clear-num1.2

    \[\leadsto x + \color{blue}{\frac{1}{\frac{\frac{a - t}{z - t}}{y}}}\]
  6. Final simplification1.2

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

Reproduce

herbie shell --seed 2020001 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
  :precision binary64

  :herbie-target
  (+ x (/ y (/ (- a t) (- z t))))

  (+ x (/ (* y (- z t)) (- a t))))