Average Error: 0.0 → 0.0
Time: 12.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(d4 + \left(d2 - d3\right)\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(d4 + \left(d2 - d3\right)\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r364409 = d1;
        double r364410 = d2;
        double r364411 = r364409 * r364410;
        double r364412 = d3;
        double r364413 = r364409 * r364412;
        double r364414 = r364411 - r364413;
        double r364415 = d4;
        double r364416 = r364415 * r364409;
        double r364417 = r364414 + r364416;
        double r364418 = r364409 * r364409;
        double r364419 = r364417 - r364418;
        return r364419;
}

double f(double d1, double d2, double d3, double d4) {
        double r364420 = d1;
        double r364421 = d4;
        double r364422 = d2;
        double r364423 = d3;
        double r364424 = r364422 - r364423;
        double r364425 = r364421 + r364424;
        double r364426 = r364420 * r364425;
        double r364427 = r364420 * r364420;
        double r364428 = r364426 - r364427;
        return r364428;
}

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. Taylor expanded around inf 0.0

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

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

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

Reproduce

herbie shell --seed 2020045 
(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)))