Average Error: 0.0 → 0.0
Time: 20.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(\left(d4 + d2\right) - d1\right) + \left(-d3\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(\left(d4 + d2\right) - d1\right) + \left(-d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r172340 = d1;
        double r172341 = d2;
        double r172342 = r172340 * r172341;
        double r172343 = d3;
        double r172344 = r172340 * r172343;
        double r172345 = r172342 - r172344;
        double r172346 = d4;
        double r172347 = r172346 * r172340;
        double r172348 = r172345 + r172347;
        double r172349 = r172340 * r172340;
        double r172350 = r172348 - r172349;
        return r172350;
}

double f(double d1, double d2, double d3, double d4) {
        double r172351 = d1;
        double r172352 = d4;
        double r172353 = d2;
        double r172354 = r172352 + r172353;
        double r172355 = r172354 - r172351;
        double r172356 = d3;
        double r172357 = -r172356;
        double r172358 = r172355 + r172357;
        double r172359 = r172351 * r172358;
        return r172359;
}

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}{d1 \cdot \left(\left(d4 - d1\right) + \left(d2 - d3\right)\right)}\]
  3. Using strategy rm
  4. Applied sub-neg0.0

    \[\leadsto d1 \cdot \left(\left(d4 - d1\right) + \color{blue}{\left(d2 + \left(-d3\right)\right)}\right)\]
  5. Applied associate-+r+0.0

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

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

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

Reproduce

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

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

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