(FPCore (alpha beta i) :precision binary64 (/ (/ (* (* i (+ (+ alpha beta) i)) (+ (* beta alpha) (* i (+ (+ alpha beta) i)))) (* (+ (+ alpha beta) (* 2.0 i)) (+ (+ alpha beta) (* 2.0 i)))) (- (* (+ (+ alpha beta) (* 2.0 i)) (+ (+ alpha beta) (* 2.0 i))) 1.0)))
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ beta (+ i alpha)))
(t_1 (+ alpha (fma i 2.0 beta)))
(t_2 (/ (/ (* t_0 0.25) t_1) (/ t_1 i)))
(t_3 (* (/ i t_1) (+ i (+ beta alpha))))
(t_4 (* t_3 (* (/ 1.0 t_1) (/ (+ i alpha) beta)))))
(if (<= beta 7.234486167206169e+72)
(-
(+ 0.0625 (* 0.015625 (/ 1.0 (* i i))))
(fma
0.03125
(/ (* beta beta) (* i i))
(* 0.03125 (/ (* alpha alpha) (* i i)))))
(if (<= beta 2.2489104551141814e+89)
(*
t_3
(pow
(sqrt (/ (/ (fma i t_0 (* beta alpha)) t_1) (+ (pow t_1 2.0) -1.0)))
2.0))
(if (<= beta 4.1268322475984935e+116)
t_2
(if (<= beta 1.6033367610360856e+168)
t_4
(if (<= beta 3.435789572452624e+190)
t_2
(if (<= beta 8.377992451191864e+229)
t_4
(if (<= beta 4.960988974597858e+261) t_2 t_4)))))))))double code(double alpha, double beta, double i) {
return (((i * ((alpha + beta) + i)) * ((beta * alpha) + (i * ((alpha + beta) + i)))) / (((alpha + beta) + (2.0 * i)) * ((alpha + beta) + (2.0 * i)))) / ((((alpha + beta) + (2.0 * i)) * ((alpha + beta) + (2.0 * i))) - 1.0);
}
double code(double alpha, double beta, double i) {
double t_0 = beta + (i + alpha);
double t_1 = alpha + fma(i, 2.0, beta);
double t_2 = ((t_0 * 0.25) / t_1) / (t_1 / i);
double t_3 = (i / t_1) * (i + (beta + alpha));
double t_4 = t_3 * ((1.0 / t_1) * ((i + alpha) / beta));
double tmp;
if (beta <= 7.234486167206169e+72) {
tmp = (0.0625 + (0.015625 * (1.0 / (i * i)))) - fma(0.03125, ((beta * beta) / (i * i)), (0.03125 * ((alpha * alpha) / (i * i))));
} else if (beta <= 2.2489104551141814e+89) {
tmp = t_3 * pow(sqrt(((fma(i, t_0, (beta * alpha)) / t_1) / (pow(t_1, 2.0) + -1.0))), 2.0);
} else if (beta <= 4.1268322475984935e+116) {
tmp = t_2;
} else if (beta <= 1.6033367610360856e+168) {
tmp = t_4;
} else if (beta <= 3.435789572452624e+190) {
tmp = t_2;
} else if (beta <= 8.377992451191864e+229) {
tmp = t_4;
} else if (beta <= 4.960988974597858e+261) {
tmp = t_2;
} else {
tmp = t_4;
}
return tmp;
}
function code(alpha, beta, i) return Float64(Float64(Float64(Float64(i * Float64(Float64(alpha + beta) + i)) * Float64(Float64(beta * alpha) + Float64(i * Float64(Float64(alpha + beta) + i)))) / Float64(Float64(Float64(alpha + beta) + Float64(2.0 * i)) * Float64(Float64(alpha + beta) + Float64(2.0 * i)))) / Float64(Float64(Float64(Float64(alpha + beta) + Float64(2.0 * i)) * Float64(Float64(alpha + beta) + Float64(2.0 * i))) - 1.0)) end
function code(alpha, beta, i) t_0 = Float64(beta + Float64(i + alpha)) t_1 = Float64(alpha + fma(i, 2.0, beta)) t_2 = Float64(Float64(Float64(t_0 * 0.25) / t_1) / Float64(t_1 / i)) t_3 = Float64(Float64(i / t_1) * Float64(i + Float64(beta + alpha))) t_4 = Float64(t_3 * Float64(Float64(1.0 / t_1) * Float64(Float64(i + alpha) / beta))) tmp = 0.0 if (beta <= 7.234486167206169e+72) tmp = Float64(Float64(0.0625 + Float64(0.015625 * Float64(1.0 / Float64(i * i)))) - fma(0.03125, Float64(Float64(beta * beta) / Float64(i * i)), Float64(0.03125 * Float64(Float64(alpha * alpha) / Float64(i * i))))); elseif (beta <= 2.2489104551141814e+89) tmp = Float64(t_3 * (sqrt(Float64(Float64(fma(i, t_0, Float64(beta * alpha)) / t_1) / Float64((t_1 ^ 2.0) + -1.0))) ^ 2.0)); elseif (beta <= 4.1268322475984935e+116) tmp = t_2; elseif (beta <= 1.6033367610360856e+168) tmp = t_4; elseif (beta <= 3.435789572452624e+190) tmp = t_2; elseif (beta <= 8.377992451191864e+229) tmp = t_4; elseif (beta <= 4.960988974597858e+261) tmp = t_2; else tmp = t_4; end return tmp end
code[alpha_, beta_, i_] := N[(N[(N[(N[(i * N[(N[(alpha + beta), $MachinePrecision] + i), $MachinePrecision]), $MachinePrecision] * N[(N[(beta * alpha), $MachinePrecision] + N[(i * N[(N[(alpha + beta), $MachinePrecision] + i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision] * N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision] * N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(beta + N[(i + alpha), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(alpha + N[(i * 2.0 + beta), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 * 0.25), $MachinePrecision] / t$95$1), $MachinePrecision] / N[(t$95$1 / i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(i / t$95$1), $MachinePrecision] * N[(i + N[(beta + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 * N[(N[(1.0 / t$95$1), $MachinePrecision] * N[(N[(i + alpha), $MachinePrecision] / beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[beta, 7.234486167206169e+72], N[(N[(0.0625 + N[(0.015625 * N[(1.0 / N[(i * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(0.03125 * N[(N[(beta * beta), $MachinePrecision] / N[(i * i), $MachinePrecision]), $MachinePrecision] + N[(0.03125 * N[(N[(alpha * alpha), $MachinePrecision] / N[(i * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[beta, 2.2489104551141814e+89], N[(t$95$3 * N[Power[N[Sqrt[N[(N[(N[(i * t$95$0 + N[(beta * alpha), $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision] / N[(N[Power[t$95$1, 2.0], $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision], If[LessEqual[beta, 4.1268322475984935e+116], t$95$2, If[LessEqual[beta, 1.6033367610360856e+168], t$95$4, If[LessEqual[beta, 3.435789572452624e+190], t$95$2, If[LessEqual[beta, 8.377992451191864e+229], t$95$4, If[LessEqual[beta, 4.960988974597858e+261], t$95$2, t$95$4]]]]]]]]]]]]
\frac{\frac{\left(i \cdot \left(\left(\alpha + \beta\right) + i\right)\right) \cdot \left(\beta \cdot \alpha + i \cdot \left(\left(\alpha + \beta\right) + i\right)\right)}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) \cdot \left(\left(\alpha + \beta\right) + 2 \cdot i\right)}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) \cdot \left(\left(\alpha + \beta\right) + 2 \cdot i\right) - 1}
\begin{array}{l}
t_0 := \beta + \left(i + \alpha\right)\\
t_1 := \alpha + \mathsf{fma}\left(i, 2, \beta\right)\\
t_2 := \frac{\frac{t_0 \cdot 0.25}{t_1}}{\frac{t_1}{i}}\\
t_3 := \frac{i}{t_1} \cdot \left(i + \left(\beta + \alpha\right)\right)\\
t_4 := t_3 \cdot \left(\frac{1}{t_1} \cdot \frac{i + \alpha}{\beta}\right)\\
\mathbf{if}\;\beta \leq 7.234486167206169 \cdot 10^{+72}:\\
\;\;\;\;\left(0.0625 + 0.015625 \cdot \frac{1}{i \cdot i}\right) - \mathsf{fma}\left(0.03125, \frac{\beta \cdot \beta}{i \cdot i}, 0.03125 \cdot \frac{\alpha \cdot \alpha}{i \cdot i}\right)\\
\mathbf{elif}\;\beta \leq 2.2489104551141814 \cdot 10^{+89}:\\
\;\;\;\;t_3 \cdot {\left(\sqrt{\frac{\frac{\mathsf{fma}\left(i, t_0, \beta \cdot \alpha\right)}{t_1}}{{t_1}^{2} + -1}}\right)}^{2}\\
\mathbf{elif}\;\beta \leq 4.1268322475984935 \cdot 10^{+116}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;\beta \leq 1.6033367610360856 \cdot 10^{+168}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;\beta \leq 3.435789572452624 \cdot 10^{+190}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;\beta \leq 8.377992451191864 \cdot 10^{+229}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;\beta \leq 4.960988974597858 \cdot 10^{+261}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}



Bits error versus alpha



Bits error versus beta



Bits error versus i
if beta < 7.2344861672061687e72Initial program 47.7
Simplified42.4
Applied egg-rr32.5
Taylor expanded in i around inf 1.6
Simplified1.6
if 7.2344861672061687e72 < beta < 2.2489104551141814e89Initial program 48.7
Simplified40.8
Applied egg-rr29.0
if 2.2489104551141814e89 < beta < 4.1268322475984935e116 or 1.603336761036086e168 < beta < 3.43578957245262408e190 or 8.37799245119186437e229 < beta < 4.96098897459785793e261Initial program 61.2
Simplified55.2
Applied egg-rr49.3
Taylor expanded in i around inf 35.1
Applied egg-rr35.0
if 4.1268322475984935e116 < beta < 1.603336761036086e168 or 3.43578957245262408e190 < beta < 8.37799245119186437e229 or 4.96098897459785793e261 < beta Initial program 63.2
Simplified59.1
Applied egg-rr51.4
Taylor expanded in beta around inf 32.5
Final simplification15.3
herbie shell --seed 2022159
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/4"
:precision binary64
:pre (and (and (> alpha -1.0) (> beta -1.0)) (> i 1.0))
(/ (/ (* (* i (+ (+ alpha beta) i)) (+ (* beta alpha) (* i (+ (+ alpha beta) i)))) (* (+ (+ alpha beta) (* 2.0 i)) (+ (+ alpha beta) (* 2.0 i)))) (- (* (+ (+ alpha beta) (* 2.0 i)) (+ (+ alpha beta) (* 2.0 i))) 1.0)))