Average Error: 0.0 → 0.0
Time: 11.9s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot d4 + d1 \cdot \left(\left(d2 - d3\right) - d1\right)\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d4 + d1 \cdot \left(\left(d2 - d3\right) - d1\right)
double f(double d1, double d2, double d3, double d4) {
        double r222097 = d1;
        double r222098 = d2;
        double r222099 = r222097 * r222098;
        double r222100 = d3;
        double r222101 = r222097 * r222100;
        double r222102 = r222099 - r222101;
        double r222103 = d4;
        double r222104 = r222103 * r222097;
        double r222105 = r222102 + r222104;
        double r222106 = r222097 * r222097;
        double r222107 = r222105 - r222106;
        return r222107;
}

double f(double d1, double d2, double d3, double d4) {
        double r222108 = d1;
        double r222109 = d4;
        double r222110 = r222108 * r222109;
        double r222111 = d2;
        double r222112 = d3;
        double r222113 = r222111 - r222112;
        double r222114 = r222113 - r222108;
        double r222115 = r222108 * r222114;
        double r222116 = r222110 + r222115;
        return r222116;
}

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 + \left(d2 - d3\right)\right) - d1\right)}\]
  3. Using strategy rm
  4. Applied associate--l+0.0

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

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

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

Reproduce

herbie shell --seed 2020046 
(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)))