Average Error: 0.0 → 0.0
Time: 11.1s
Precision: 64
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[d1 \cdot d4 + \left(\left(d2 - d3\right) - d1\right) \cdot d1\]
\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
d1 \cdot d4 + \left(\left(d2 - d3\right) - d1\right) \cdot d1
double f(double d1, double d2, double d3, double d4) {
        double r264219 = d1;
        double r264220 = d2;
        double r264221 = r264219 * r264220;
        double r264222 = d3;
        double r264223 = r264219 * r264222;
        double r264224 = r264221 - r264223;
        double r264225 = d4;
        double r264226 = r264225 * r264219;
        double r264227 = r264224 + r264226;
        double r264228 = r264219 * r264219;
        double r264229 = r264227 - r264228;
        return r264229;
}

double f(double d1, double d2, double d3, double d4) {
        double r264230 = d1;
        double r264231 = d4;
        double r264232 = r264230 * r264231;
        double r264233 = d2;
        double r264234 = d3;
        double r264235 = r264233 - r264234;
        double r264236 = r264235 - r264230;
        double r264237 = r264236 * r264230;
        double r264238 = r264232 + r264237;
        return r264238;
}

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 add-sqr-sqrt32.5

    \[\leadsto \color{blue}{\left(\sqrt{d1} \cdot \sqrt{d1}\right)} \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)\]
  5. Applied associate-*l*32.5

    \[\leadsto \color{blue}{\sqrt{d1} \cdot \left(\sqrt{d1} \cdot \left(\left(d4 + \left(d2 - d3\right)\right) - d1\right)\right)}\]
  6. Using strategy rm
  7. Applied associate--l+32.5

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

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

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

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

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

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

Reproduce

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