\tan^{-1} \left(N + 1\right) - \tan^{-1} N\tan^{-1}_* \frac{1}{1 + N \cdot \left(1 + N\right)}(FPCore (N) :precision binary64 (- (atan (+ N 1.0)) (atan N)))
(FPCore (N) :precision binary64 (atan2 1.0 (+ 1.0 (* N (+ 1.0 N)))))
double code(double N) {
return atan(N + 1.0) - atan(N);
}
double code(double N) {
return atan2(1.0, (1.0 + (N * (1.0 + N))));
}





















Bits error versus N
Results
| Original | 15.0 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
| Alternative 1 | |
|---|---|
| Error | 16.4 |
| Cost | 46464 |
| Alternative 2 | |
|---|---|
| Error | 1.6 |
| Cost | 40064 |
| Alternative 3 | |
|---|---|
| Error | 0.6 |
| Cost | 26880 |
| Alternative 4 | |
|---|---|
| Error | 0.9 |
| Cost | 26688 |
| Alternative 5 | |
|---|---|
| Error | 0.6 |
| Cost | 26624 |
| Alternative 6 | |
|---|---|
| Error | 0.6 |
| Cost | 26368 |
| Alternative 7 | |
|---|---|
| Error | 0.6 |
| Cost | 26304 |
| Alternative 8 | |
|---|---|
| Error | 0.5 |
| Cost | 19968 |
| Alternative 9 | |
|---|---|
| Error | 10.3 |
| Cost | 19776 |
| Alternative 10 | |
|---|---|
| Error | 23.9 |
| Cost | 13760 |
| Alternative 11 | |
|---|---|
| Error | 5.4 |
| Cost | 13504 |
| Alternative 12 | |
|---|---|
| Error | 15.0 |
| Cost | 13120 |
| Alternative 13 | |
|---|---|
| Error | 1.6 |
| Cost | 6784 |
| Alternative 14 | |
|---|---|
| Error | 30.8 |
| Cost | 6656 |
| Alternative 15 | |
|---|---|
| Error | 56.1 |
| Cost | 64 |
| Alternative 16 | |
|---|---|
| Error | 46.1 |
| Cost | 64 |
| Alternative 17 | |
|---|---|
| Error | 62.6 |
| Cost | 64 |

Initial program 15.0
rmApplied diff-atan_binary64_122713.8
Simplified0.3
Simplified0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2021042
(FPCore (N)
:name "2atan (example 3.5)"
:precision binary64
:herbie-target
(atan (/ 1.0 (+ 1.0 (* N (+ N 1.0)))))
(- (atan (+ N 1.0)) (atan N)))