\tan^{-1} \left(N + 1\right) - \tan^{-1} N\tan^{-1}_* \frac{1}{1 + \left(\sqrt[3]{N + 1} \cdot \left(\sqrt[3]{N} \cdot \sqrt[3]{\left(N + 1\right) \cdot N}\right)\right) \cdot \sqrt[3]{\left(N + 1\right) \cdot N}}double f(double N) {
double r129507 = N;
double r129508 = 1.0;
double r129509 = r129507 + r129508;
double r129510 = atan(r129509);
double r129511 = atan(r129507);
double r129512 = r129510 - r129511;
return r129512;
}
double f(double N) {
double r129513 = 1.0;
double r129514 = 1.0;
double r129515 = N;
double r129516 = r129515 + r129513;
double r129517 = cbrt(r129516);
double r129518 = cbrt(r129515);
double r129519 = r129516 * r129515;
double r129520 = cbrt(r129519);
double r129521 = r129518 * r129520;
double r129522 = r129517 * r129521;
double r129523 = r129522 * r129520;
double r129524 = r129514 + r129523;
double r129525 = atan2(r129513, r129524);
return r129525;
}




Bits error versus N
Results
| Original | 14.9 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 14.9
rmApplied diff-atan13.9
Simplified0.4
rmApplied add-cube-cbrt0.6
rmApplied cbrt-prod0.6
Applied associate-*l*0.6
Final simplification0.6
herbie shell --seed 2020001
(FPCore (N)
:name "2atan (example 3.5)"
:precision binary64
:herbie-target
(atan (/ 1 (+ 1 (* N (+ N 1)))))
(- (atan (+ N 1)) (atan N)))