Average Error: 0.0 → 0.0
Time: 14.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(d4 + \left(\left(d2 - d3\right) - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(d4 + \left(\left(d2 - d3\right) - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r10579242 = d1;
        double r10579243 = d2;
        double r10579244 = r10579242 * r10579243;
        double r10579245 = d3;
        double r10579246 = r10579242 * r10579245;
        double r10579247 = r10579244 - r10579246;
        double r10579248 = d4;
        double r10579249 = r10579248 * r10579242;
        double r10579250 = r10579247 + r10579249;
        double r10579251 = r10579242 * r10579242;
        double r10579252 = r10579250 - r10579251;
        return r10579252;
}

double f(double d1, double d2, double d3, double d4) {
        double r10579253 = d1;
        double r10579254 = d4;
        double r10579255 = d2;
        double r10579256 = d3;
        double r10579257 = r10579255 - r10579256;
        double r10579258 = r10579257 - r10579253;
        double r10579259 = r10579254 + r10579258;
        double r10579260 = r10579253 * r10579259;
        return r10579260;
}

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

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

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

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