Average Error: 0.0 → 0.0
Time: 13.3s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d2 - d1 \cdot \left(d3 - \left(d4 - d1\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r137870 = d1;
        double r137871 = d2;
        double r137872 = r137870 * r137871;
        double r137873 = d3;
        double r137874 = r137870 * r137873;
        double r137875 = r137872 - r137874;
        double r137876 = d4;
        double r137877 = r137876 * r137870;
        double r137878 = r137875 + r137877;
        double r137879 = r137870 * r137870;
        double r137880 = r137878 - r137879;
        return r137880;
}

double f(double d1, double d2, double d3, double d4) {
        double r137881 = d1;
        double r137882 = d2;
        double r137883 = r137881 * r137882;
        double r137884 = d3;
        double r137885 = d4;
        double r137886 = r137885 - r137881;
        double r137887 = r137884 - r137886;
        double r137888 = r137881 * r137887;
        double r137889 = r137883 - r137888;
        return r137889;
}

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. Using strategy rm
  3. Applied associate-+l-0.0

    \[\leadsto \color{blue}{\left(d1 \cdot d2 - \left(d1 \cdot d3 - d4 \cdot d1\right)\right)} - d1 \cdot d1\]
  4. Applied associate--l-0.0

    \[\leadsto \color{blue}{d1 \cdot d2 - \left(\left(d1 \cdot d3 - d4 \cdot d1\right) + d1 \cdot d1\right)}\]
  5. Simplified0.0

    \[\leadsto d1 \cdot d2 - \color{blue}{d1 \cdot \left(d3 - \left(d4 - d1\right)\right)}\]
  6. Final simplification0.0

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

Reproduce

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

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

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