| Alternative 1 | |
|---|---|
| Error | 0.3 |
| Cost | 7552 |
\[\frac{\frac{\pi \cdot 0.5}{b + a} \cdot \left(\frac{1}{a} + \frac{-1}{b}\right)}{b - a}
\]
(FPCore (a b) :precision binary64 (* (* (/ PI 2.0) (/ 1.0 (- (* b b) (* a a)))) (- (/ 1.0 a) (/ 1.0 b))))
(FPCore (a b)
:precision binary64
(let* ((t_0 (/ (/ (* 0.5 (/ PI a)) b) a)))
(if (<= a -2.2134972907283006e+131)
t_0
(if (<= a 4.8211285527296116e+85)
(/ (/ (* PI 0.5) (* a (+ b a))) b)
t_0))))double code(double a, double b) {
return ((((double) M_PI) / 2.0) * (1.0 / ((b * b) - (a * a)))) * ((1.0 / a) - (1.0 / b));
}
double code(double a, double b) {
double t_0 = ((0.5 * (((double) M_PI) / a)) / b) / a;
double tmp;
if (a <= -2.2134972907283006e+131) {
tmp = t_0;
} else if (a <= 4.8211285527296116e+85) {
tmp = ((((double) M_PI) * 0.5) / (a * (b + a))) / b;
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double a, double b) {
return ((Math.PI / 2.0) * (1.0 / ((b * b) - (a * a)))) * ((1.0 / a) - (1.0 / b));
}
public static double code(double a, double b) {
double t_0 = ((0.5 * (Math.PI / a)) / b) / a;
double tmp;
if (a <= -2.2134972907283006e+131) {
tmp = t_0;
} else if (a <= 4.8211285527296116e+85) {
tmp = ((Math.PI * 0.5) / (a * (b + a))) / b;
} else {
tmp = t_0;
}
return tmp;
}
def code(a, b): return ((math.pi / 2.0) * (1.0 / ((b * b) - (a * a)))) * ((1.0 / a) - (1.0 / b))
def code(a, b): t_0 = ((0.5 * (math.pi / a)) / b) / a tmp = 0 if a <= -2.2134972907283006e+131: tmp = t_0 elif a <= 4.8211285527296116e+85: tmp = ((math.pi * 0.5) / (a * (b + a))) / b else: tmp = t_0 return tmp
function code(a, b) return Float64(Float64(Float64(pi / 2.0) * Float64(1.0 / Float64(Float64(b * b) - Float64(a * a)))) * Float64(Float64(1.0 / a) - Float64(1.0 / b))) end
function code(a, b) t_0 = Float64(Float64(Float64(0.5 * Float64(pi / a)) / b) / a) tmp = 0.0 if (a <= -2.2134972907283006e+131) tmp = t_0; elseif (a <= 4.8211285527296116e+85) tmp = Float64(Float64(Float64(pi * 0.5) / Float64(a * Float64(b + a))) / b); else tmp = t_0; end return tmp end
function tmp = code(a, b) tmp = ((pi / 2.0) * (1.0 / ((b * b) - (a * a)))) * ((1.0 / a) - (1.0 / b)); end
function tmp_2 = code(a, b) t_0 = ((0.5 * (pi / a)) / b) / a; tmp = 0.0; if (a <= -2.2134972907283006e+131) tmp = t_0; elseif (a <= 4.8211285527296116e+85) tmp = ((pi * 0.5) / (a * (b + a))) / b; else tmp = t_0; end tmp_2 = tmp; end
code[a_, b_] := N[(N[(N[(Pi / 2.0), $MachinePrecision] * N[(1.0 / N[(N[(b * b), $MachinePrecision] - N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 / a), $MachinePrecision] - N[(1.0 / b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[a_, b_] := Block[{t$95$0 = N[(N[(N[(0.5 * N[(Pi / a), $MachinePrecision]), $MachinePrecision] / b), $MachinePrecision] / a), $MachinePrecision]}, If[LessEqual[a, -2.2134972907283006e+131], t$95$0, If[LessEqual[a, 4.8211285527296116e+85], N[(N[(N[(Pi * 0.5), $MachinePrecision] / N[(a * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / b), $MachinePrecision], t$95$0]]]
\left(\frac{\pi}{2} \cdot \frac{1}{b \cdot b - a \cdot a}\right) \cdot \left(\frac{1}{a} - \frac{1}{b}\right)
\begin{array}{l}
t_0 := \frac{\frac{0.5 \cdot \frac{\pi}{a}}{b}}{a}\\
\mathbf{if}\;a \leq -2.2134972907283006 \cdot 10^{+131}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;a \leq 4.8211285527296116 \cdot 10^{+85}:\\
\;\;\;\;\frac{\frac{\pi \cdot 0.5}{a \cdot \left(b + a\right)}}{b}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
Results
if a < -2.2134972907283006e131 or 4.8211285527296116e85 < a Initial program 24.6
Applied egg-rr29.5
Taylor expanded in a around inf 12.4
Simplified12.3
Taylor expanded in b around 0 12.4
Simplified0.3
Applied egg-rr0.3
if -2.2134972907283006e131 < a < 4.8211285527296116e85Initial program 7.7
Applied egg-rr31.3
Applied egg-rr0.8
Applied egg-rr0.3
Final simplification0.3
| Alternative 1 | |
|---|---|
| Error | 0.3 |
| Cost | 7552 |
| Alternative 2 | |
|---|---|
| Error | 4.8 |
| Cost | 7304 |
| Alternative 3 | |
|---|---|
| Error | 1.3 |
| Cost | 7304 |
| Alternative 4 | |
|---|---|
| Error | 7.0 |
| Cost | 7176 |
| Alternative 5 | |
|---|---|
| Error | 7.0 |
| Cost | 7176 |
| Alternative 6 | |
|---|---|
| Error | 7.0 |
| Cost | 7176 |
| Alternative 7 | |
|---|---|
| Error | 0.7 |
| Cost | 7040 |
| Alternative 8 | |
|---|---|
| Error | 0.2 |
| Cost | 7040 |
| Alternative 9 | |
|---|---|
| Error | 25.7 |
| Cost | 6912 |

herbie shell --seed 2022300
(FPCore (a b)
:name "NMSE Section 6.1 mentioned, B"
:precision binary64
(* (* (/ PI 2.0) (/ 1.0 (- (* b b) (* a a)))) (- (/ 1.0 a) (/ 1.0 b))))