Average Error: 0.0 → 0.0
Time: 39.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d4 - d3\right) + \left(d2 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d4 - d3\right) + \left(d2 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r6476840 = d1;
        double r6476841 = d2;
        double r6476842 = r6476840 * r6476841;
        double r6476843 = d3;
        double r6476844 = r6476840 * r6476843;
        double r6476845 = r6476842 - r6476844;
        double r6476846 = d4;
        double r6476847 = r6476846 * r6476840;
        double r6476848 = r6476845 + r6476847;
        double r6476849 = r6476840 * r6476840;
        double r6476850 = r6476848 - r6476849;
        return r6476850;
}

double f(double d1, double d2, double d3, double d4) {
        double r6476851 = d1;
        double r6476852 = d4;
        double r6476853 = d3;
        double r6476854 = r6476852 - r6476853;
        double r6476855 = d2;
        double r6476856 = r6476855 - r6476851;
        double r6476857 = r6476854 + r6476856;
        double r6476858 = r6476851 * r6476857;
        return r6476858;
}

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

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

Reproduce

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