Average Error: 0.0 → 0.0
Time: 6.7s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot \left(\left(d2 - \left(d1 + d3\right)\right) + d4\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot \left(\left(d2 - \left(d1 + d3\right)\right) + d4\right)
double f(double d1, double d2, double d3, double d4) {
        double r5813592 = d1;
        double r5813593 = d2;
        double r5813594 = r5813592 * r5813593;
        double r5813595 = d3;
        double r5813596 = r5813592 * r5813595;
        double r5813597 = r5813594 - r5813596;
        double r5813598 = d4;
        double r5813599 = r5813598 * r5813592;
        double r5813600 = r5813597 + r5813599;
        double r5813601 = r5813592 * r5813592;
        double r5813602 = r5813600 - r5813601;
        return r5813602;
}

double f(double d1, double d2, double d3, double d4) {
        double r5813603 = d1;
        double r5813604 = d2;
        double r5813605 = d3;
        double r5813606 = r5813603 + r5813605;
        double r5813607 = r5813604 - r5813606;
        double r5813608 = d4;
        double r5813609 = r5813607 + r5813608;
        double r5813610 = r5813603 * r5813609;
        return r5813610;
}

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

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

Reproduce

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

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

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