3 \cdot \left(\left(\left(x \cdot 3\right) \cdot x - x \cdot 4\right) + 1\right)
\mathsf{fma}\left(x, 9 \cdot x - 12, 3\right)double f(double x) {
double r760438 = 3.0;
double r760439 = x;
double r760440 = r760439 * r760438;
double r760441 = r760440 * r760439;
double r760442 = 4.0;
double r760443 = r760439 * r760442;
double r760444 = r760441 - r760443;
double r760445 = 1.0;
double r760446 = r760444 + r760445;
double r760447 = r760438 * r760446;
return r760447;
}
double f(double x) {
double r760448 = x;
double r760449 = 9.0;
double r760450 = r760449 * r760448;
double r760451 = 12.0;
double r760452 = r760450 - r760451;
double r760453 = 3.0;
double r760454 = fma(r760448, r760452, r760453);
return r760454;
}




Bits error versus x
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.2
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x)
:name "Diagrams.Tangent:$catParam from diagrams-lib-1.3.0.3, D"
:precision binary64
:herbie-target
(+ 3 (- (* (* 9 x) x) (* 12 x)))
(* 3 (+ (- (* (* x 3) x) (* x 4)) 1)))