Average Error: 0.0 → 0.0
Time: 10.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r9685042 = d1;
        double r9685043 = d2;
        double r9685044 = r9685042 * r9685043;
        double r9685045 = d3;
        double r9685046 = r9685042 * r9685045;
        double r9685047 = r9685044 - r9685046;
        double r9685048 = d4;
        double r9685049 = r9685048 * r9685042;
        double r9685050 = r9685047 + r9685049;
        double r9685051 = r9685042 * r9685042;
        double r9685052 = r9685050 - r9685051;
        return r9685052;
}

double f(double d1, double d2, double d3, double d4) {
        double r9685053 = d1;
        double r9685054 = d2;
        double r9685055 = r9685053 * r9685054;
        double r9685056 = d3;
        double r9685057 = r9685056 * r9685053;
        double r9685058 = r9685055 - r9685057;
        double r9685059 = d4;
        double r9685060 = r9685053 * r9685059;
        double r9685061 = r9685058 + r9685060;
        double r9685062 = r9685053 * r9685053;
        double r9685063 = r9685061 - r9685062;
        return r9685063;
}

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Bits error versus d4

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie0.0
\[d1 \cdot \left(\left(\left(d2 - d3\right) + d4\right) - d1\right)\]

Derivation

  1. Initial program 0.0

    \[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
  2. Final simplification0.0

    \[\leadsto \left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

  :herbie-target
  (* d1 (- (+ (- d2 d3) d4) d1))

  (- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))