Average Error: 0.0 → 0.0
Time: 17.4s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d4 - d1\right) + \left(d2 - d3\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d4 - d1\right) + \left(d2 - d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r231257 = d1;
        double r231258 = d2;
        double r231259 = r231257 * r231258;
        double r231260 = d3;
        double r231261 = r231257 * r231260;
        double r231262 = r231259 - r231261;
        double r231263 = d4;
        double r231264 = r231263 * r231257;
        double r231265 = r231262 + r231264;
        double r231266 = r231257 * r231257;
        double r231267 = r231265 - r231266;
        return r231267;
}

double f(double d1, double d2, double d3, double d4) {
        double r231268 = d1;
        double r231269 = d4;
        double r231270 = r231269 - r231268;
        double r231271 = d2;
        double r231272 = d3;
        double r231273 = r231271 - r231272;
        double r231274 = r231270 + r231273;
        double r231275 = r231268 * r231274;
        return r231275;
}

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. Final simplification0.0

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

Reproduce

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