Average Error: 0.0 → 0.0
Time: 13.6s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(\left(d1 \cdot d2 - d3 \cdot d1\right) + d1 \cdot d4\right) - d1 \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r7928252 = d1;
        double r7928253 = d2;
        double r7928254 = r7928252 * r7928253;
        double r7928255 = d3;
        double r7928256 = r7928252 * r7928255;
        double r7928257 = r7928254 - r7928256;
        double r7928258 = d4;
        double r7928259 = r7928258 * r7928252;
        double r7928260 = r7928257 + r7928259;
        double r7928261 = r7928252 * r7928252;
        double r7928262 = r7928260 - r7928261;
        return r7928262;
}

double f(double d1, double d2, double d3, double d4) {
        double r7928263 = d1;
        double r7928264 = d2;
        double r7928265 = r7928263 * r7928264;
        double r7928266 = d3;
        double r7928267 = r7928266 * r7928263;
        double r7928268 = r7928265 - r7928267;
        double r7928269 = d4;
        double r7928270 = r7928263 * r7928269;
        double r7928271 = r7928268 + r7928270;
        double r7928272 = r7928263 * r7928263;
        double r7928273 = r7928271 - r7928272;
        return r7928273;
}

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

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

Reproduce

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

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

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