Average Error: 0.0 → 0.0
Time: 8.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot d2 - \left(\left(d3 + d1\right) \cdot d1 - d1 \cdot d4\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d2 - \left(\left(d3 + d1\right) \cdot d1 - d1 \cdot d4\right)
double f(double d1, double d2, double d3, double d4) {
        double r11375629 = d1;
        double r11375630 = d2;
        double r11375631 = r11375629 * r11375630;
        double r11375632 = d3;
        double r11375633 = r11375629 * r11375632;
        double r11375634 = r11375631 - r11375633;
        double r11375635 = d4;
        double r11375636 = r11375635 * r11375629;
        double r11375637 = r11375634 + r11375636;
        double r11375638 = r11375629 * r11375629;
        double r11375639 = r11375637 - r11375638;
        return r11375639;
}

double f(double d1, double d2, double d3, double d4) {
        double r11375640 = d1;
        double r11375641 = d2;
        double r11375642 = r11375640 * r11375641;
        double r11375643 = d3;
        double r11375644 = r11375643 + r11375640;
        double r11375645 = r11375644 * r11375640;
        double r11375646 = d4;
        double r11375647 = r11375640 * r11375646;
        double r11375648 = r11375645 - r11375647;
        double r11375649 = r11375642 - r11375648;
        return r11375649;
}

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

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

Reproduce

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

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

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