Average Error: 0.0 → 0.0
Time: 20.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d4 - d3\right) + \left(d2 - d1\right)\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r12496327 = d1;
        double r12496328 = d2;
        double r12496329 = r12496327 * r12496328;
        double r12496330 = d3;
        double r12496331 = r12496327 * r12496330;
        double r12496332 = r12496329 - r12496331;
        double r12496333 = d4;
        double r12496334 = r12496333 * r12496327;
        double r12496335 = r12496332 + r12496334;
        double r12496336 = r12496327 * r12496327;
        double r12496337 = r12496335 - r12496336;
        return r12496337;
}

double f(double d1, double d2, double d3, double d4) {
        double r12496338 = d4;
        double r12496339 = d3;
        double r12496340 = r12496338 - r12496339;
        double r12496341 = d2;
        double r12496342 = d1;
        double r12496343 = r12496341 - r12496342;
        double r12496344 = r12496340 + r12496343;
        double r12496345 = r12496344 * r12496342;
        return r12496345;
}

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. Simplified0.0

    \[\leadsto \color{blue}{\left(\left(d2 - d1\right) + \left(d4 - d3\right)\right) \cdot d1}\]
  3. Final simplification0.0

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

Reproduce

herbie shell --seed 2019170 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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