Average Error: 2.0 → 0.3
Time: 16.3s
Precision: 64
\[x - \frac{y - z}{\frac{\left(t - z\right) + 1.0}{a}}\]
\[x - \left(\left(y - z\right) \cdot \frac{1}{1.0 + \left(t - z\right)}\right) \cdot a\]
x - \frac{y - z}{\frac{\left(t - z\right) + 1.0}{a}}
x - \left(\left(y - z\right) \cdot \frac{1}{1.0 + \left(t - z\right)}\right) \cdot a
double f(double x, double y, double z, double t, double a) {
        double r33517813 = x;
        double r33517814 = y;
        double r33517815 = z;
        double r33517816 = r33517814 - r33517815;
        double r33517817 = t;
        double r33517818 = r33517817 - r33517815;
        double r33517819 = 1.0;
        double r33517820 = r33517818 + r33517819;
        double r33517821 = a;
        double r33517822 = r33517820 / r33517821;
        double r33517823 = r33517816 / r33517822;
        double r33517824 = r33517813 - r33517823;
        return r33517824;
}

double f(double x, double y, double z, double t, double a) {
        double r33517825 = x;
        double r33517826 = y;
        double r33517827 = z;
        double r33517828 = r33517826 - r33517827;
        double r33517829 = 1.0;
        double r33517830 = 1.0;
        double r33517831 = t;
        double r33517832 = r33517831 - r33517827;
        double r33517833 = r33517830 + r33517832;
        double r33517834 = r33517829 / r33517833;
        double r33517835 = r33517828 * r33517834;
        double r33517836 = a;
        double r33517837 = r33517835 * r33517836;
        double r33517838 = r33517825 - r33517837;
        return r33517838;
}

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

Original2.0
Target0.2
Herbie0.3
\[x - \frac{y - z}{\left(t - z\right) + 1.0} \cdot a\]

Derivation

  1. Initial program 2.0

    \[x - \frac{y - z}{\frac{\left(t - z\right) + 1.0}{a}}\]
  2. Using strategy rm
  3. Applied associate-/r/0.2

    \[\leadsto x - \color{blue}{\frac{y - z}{\left(t - z\right) + 1.0} \cdot a}\]
  4. Using strategy rm
  5. Applied div-inv0.3

    \[\leadsto x - \color{blue}{\left(\left(y - z\right) \cdot \frac{1}{\left(t - z\right) + 1.0}\right)} \cdot a\]
  6. Final simplification0.3

    \[\leadsto x - \left(\left(y - z\right) \cdot \frac{1}{1.0 + \left(t - z\right)}\right) \cdot a\]

Reproduce

herbie shell --seed 2019158 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Chart.SparkLine:renderSparkLine from Chart-1.5.3"

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

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