Average Error: 0.0 → 0.0
Time: 8.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r601194 = d1;
        double r601195 = d2;
        double r601196 = r601194 * r601195;
        double r601197 = d3;
        double r601198 = r601194 * r601197;
        double r601199 = r601196 - r601198;
        double r601200 = d4;
        double r601201 = r601200 * r601194;
        double r601202 = r601199 + r601201;
        double r601203 = r601194 * r601194;
        double r601204 = r601202 - r601203;
        return r601204;
}

double f(double d1, double d2, double d3, double d4) {
        double r601205 = d1;
        double r601206 = d4;
        double r601207 = d2;
        double r601208 = d3;
        double r601209 = r601207 - r601208;
        double r601210 = r601206 + r601209;
        double r601211 = r601210 - r601205;
        double r601212 = r601205 * r601211;
        return r601212;
}

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 + \left(d2 - d3\right)\right) - d1\right)}\]
  3. Final simplification0.0

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

Reproduce

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