Average Error: 0.0 → 0.0
Time: 13.9s
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 r6060244 = d1;
        double r6060245 = d2;
        double r6060246 = r6060244 * r6060245;
        double r6060247 = d3;
        double r6060248 = r6060244 * r6060247;
        double r6060249 = r6060246 - r6060248;
        double r6060250 = d4;
        double r6060251 = r6060250 * r6060244;
        double r6060252 = r6060249 + r6060251;
        double r6060253 = r6060244 * r6060244;
        double r6060254 = r6060252 - r6060253;
        return r6060254;
}

double f(double d1, double d2, double d3, double d4) {
        double r6060255 = d1;
        double r6060256 = d2;
        double r6060257 = r6060255 * r6060256;
        double r6060258 = d3;
        double r6060259 = r6060258 * r6060255;
        double r6060260 = r6060257 - r6060259;
        double r6060261 = d4;
        double r6060262 = r6060255 * r6060261;
        double r6060263 = r6060260 + r6060262;
        double r6060264 = r6060255 * r6060255;
        double r6060265 = r6060263 - r6060264;
        return r6060265;
}

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 2019151 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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