\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3
1 \cdot \left(d1 \cdot d3 + d1 \cdot d2\right) + 3 \cdot d1
double f(double d1, double d2, double d3) {
double r173806 = d1;
double r173807 = 3.0;
double r173808 = r173806 * r173807;
double r173809 = d2;
double r173810 = r173806 * r173809;
double r173811 = r173808 + r173810;
double r173812 = d3;
double r173813 = r173806 * r173812;
double r173814 = r173811 + r173813;
return r173814;
}
double f(double d1, double d2, double d3) {
double r173815 = 1.0;
double r173816 = d1;
double r173817 = d3;
double r173818 = r173816 * r173817;
double r173819 = d2;
double r173820 = r173816 * r173819;
double r173821 = r173818 + r173820;
double r173822 = r173815 * r173821;
double r173823 = 3.0;
double r173824 = r173823 * r173816;
double r173825 = r173822 + r173824;
return r173825;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
rmApplied flip-+21.5
Applied associate-*r/25.0
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020100
(FPCore (d1 d2 d3)
:name "FastMath test3"
:precision binary64
:herbie-target
(* d1 (+ (+ 3 d2) d3))
(+ (+ (* d1 3) (* d1 d2)) (* d1 d3)))