Average Error: 0.0 → 0.0
Time: 12.3s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 + d4\right) - \left(d1 + d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r4841149 = d1;
        double r4841150 = d2;
        double r4841151 = r4841149 * r4841150;
        double r4841152 = d3;
        double r4841153 = r4841149 * r4841152;
        double r4841154 = r4841151 - r4841153;
        double r4841155 = d4;
        double r4841156 = r4841155 * r4841149;
        double r4841157 = r4841154 + r4841156;
        double r4841158 = r4841149 * r4841149;
        double r4841159 = r4841157 - r4841158;
        return r4841159;
}

double f(double d1, double d2, double d3, double d4) {
        double r4841160 = d1;
        double r4841161 = d2;
        double r4841162 = d4;
        double r4841163 = r4841161 + r4841162;
        double r4841164 = d3;
        double r4841165 = r4841160 + r4841164;
        double r4841166 = r4841163 - r4841165;
        double r4841167 = r4841160 * r4841166;
        return r4841167;
}

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

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

Reproduce

herbie shell --seed 2019142 +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)))