Average Error: 0.0 → 0.0
Time: 25.6s
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 - d1\right) - d3\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 - d1\right) - d3\right)\right)
double f(double d1, double d2, double d3, double d4) {
        double r14383654 = d1;
        double r14383655 = d2;
        double r14383656 = r14383654 * r14383655;
        double r14383657 = d3;
        double r14383658 = r14383654 * r14383657;
        double r14383659 = r14383656 - r14383658;
        double r14383660 = d4;
        double r14383661 = r14383660 * r14383654;
        double r14383662 = r14383659 + r14383661;
        double r14383663 = r14383654 * r14383654;
        double r14383664 = r14383662 - r14383663;
        return r14383664;
}

double f(double d1, double d2, double d3, double d4) {
        double r14383665 = d1;
        double r14383666 = d4;
        double r14383667 = d2;
        double r14383668 = r14383667 - r14383665;
        double r14383669 = d3;
        double r14383670 = r14383668 - r14383669;
        double r14383671 = r14383666 + r14383670;
        double r14383672 = r14383665 * r14383671;
        return r14383672;
}

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

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

Reproduce

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

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

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