Average Error: 1.9 → 0.3
Time: 21.1s
Precision: 64
\[x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}\]
\[\mathsf{fma}\left(\frac{1}{\frac{\left(1 + t\right) - z}{z - y}}, a, x\right)\]
x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}
\mathsf{fma}\left(\frac{1}{\frac{\left(1 + t\right) - z}{z - y}}, a, x\right)
double f(double x, double y, double z, double t, double a) {
        double r29876020 = x;
        double r29876021 = y;
        double r29876022 = z;
        double r29876023 = r29876021 - r29876022;
        double r29876024 = t;
        double r29876025 = r29876024 - r29876022;
        double r29876026 = 1.0;
        double r29876027 = r29876025 + r29876026;
        double r29876028 = a;
        double r29876029 = r29876027 / r29876028;
        double r29876030 = r29876023 / r29876029;
        double r29876031 = r29876020 - r29876030;
        return r29876031;
}

double f(double x, double y, double z, double t, double a) {
        double r29876032 = 1.0;
        double r29876033 = 1.0;
        double r29876034 = t;
        double r29876035 = r29876033 + r29876034;
        double r29876036 = z;
        double r29876037 = r29876035 - r29876036;
        double r29876038 = y;
        double r29876039 = r29876036 - r29876038;
        double r29876040 = r29876037 / r29876039;
        double r29876041 = r29876032 / r29876040;
        double r29876042 = a;
        double r29876043 = x;
        double r29876044 = fma(r29876041, r29876042, r29876043);
        return r29876044;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original1.9
Target0.3
Herbie0.3
\[x - \frac{y - z}{\left(t - z\right) + 1} \cdot a\]

Derivation

  1. Initial program 1.9

    \[x - \frac{y - z}{\frac{\left(t - z\right) + 1}{a}}\]
  2. Simplified0.3

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z - y}{\left(1 + t\right) - z}, a, x\right)}\]
  3. Using strategy rm
  4. Applied clear-num0.3

    \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{\frac{\left(1 + t\right) - z}{z - y}}}, a, x\right)\]
  5. Final simplification0.3

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{\left(1 + t\right) - z}{z - y}}, a, x\right)\]

Reproduce

herbie shell --seed 2019170 +o rules:numerics
(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))))