
(FPCore (alpha beta i) :precision binary64 (let* ((t_0 (+ (+ alpha beta) (* 2.0 i)))) (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) t_0) (+ t_0 2.0)) 1.0) 2.0)))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: t_0
t_0 = (alpha + beta) + (2.0d0 * i)
code = (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0d0)) + 1.0d0) / 2.0d0
end function
public static double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0;
}
def code(alpha, beta, i): t_0 = (alpha + beta) + (2.0 * i) return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) return Float64(Float64(Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_0) / Float64(t_0 + 2.0)) + 1.0) / 2.0) end
function tmp = code(alpha, beta, i) t_0 = (alpha + beta) + (2.0 * i); tmp = (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0; end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\
\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_0}}{t\_0 + 2} + 1}{2}
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 12 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (alpha beta i) :precision binary64 (let* ((t_0 (+ (+ alpha beta) (* 2.0 i)))) (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) t_0) (+ t_0 2.0)) 1.0) 2.0)))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: t_0
t_0 = (alpha + beta) + (2.0d0 * i)
code = (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0d0)) + 1.0d0) / 2.0d0
end function
public static double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0;
}
def code(alpha, beta, i): t_0 = (alpha + beta) + (2.0 * i) return (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) return Float64(Float64(Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_0) / Float64(t_0 + 2.0)) + 1.0) / 2.0) end
function tmp = code(alpha, beta, i) t_0 = (alpha + beta) + (2.0 * i); tmp = (((((alpha + beta) * (beta - alpha)) / t_0) / (t_0 + 2.0)) + 1.0) / 2.0; end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(t$95$0 + 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\
\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_0}}{t\_0 + 2} + 1}{2}
\end{array}
\end{array}
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ beta (* 2.0 i)))
(t_1 (fma 2.0 beta (* i 4.0)))
(t_2 (* (+ alpha beta) (/ (- beta alpha) (+ beta (fma 2.0 i alpha)))))
(t_3 (+ (+ alpha beta) (* 2.0 i)))
(t_4 (+ 2.0 t_1)))
(if (<= (/ (/ (* (+ alpha beta) (- beta alpha)) t_3) (+ 2.0 t_3)) -0.9995)
(/
(/
(-
(+ (* beta 0.0) (/ (pow beta 2.0) alpha))
(fma
-1.0
t_4
(fma
-1.0
(* (+ 2.0 t_0) (/ t_0 alpha))
(* t_4 (/ (+ (* beta 0.0) (- t_1 -2.0)) alpha)))))
alpha)
2.0)
(/
(fma
(cbrt (pow (/ t_2 (+ beta (+ alpha (fma 2.0 i 2.0)))) 2.0))
(/ (cbrt t_2) (cbrt (+ (+ alpha beta) (fma 2.0 i 2.0))))
1.0)
2.0))))
double code(double alpha, double beta, double i) {
double t_0 = beta + (2.0 * i);
double t_1 = fma(2.0, beta, (i * 4.0));
double t_2 = (alpha + beta) * ((beta - alpha) / (beta + fma(2.0, i, alpha)));
double t_3 = (alpha + beta) + (2.0 * i);
double t_4 = 2.0 + t_1;
double tmp;
if (((((alpha + beta) * (beta - alpha)) / t_3) / (2.0 + t_3)) <= -0.9995) {
tmp = ((((beta * 0.0) + (pow(beta, 2.0) / alpha)) - fma(-1.0, t_4, fma(-1.0, ((2.0 + t_0) * (t_0 / alpha)), (t_4 * (((beta * 0.0) + (t_1 - -2.0)) / alpha))))) / alpha) / 2.0;
} else {
tmp = fma(cbrt(pow((t_2 / (beta + (alpha + fma(2.0, i, 2.0)))), 2.0)), (cbrt(t_2) / cbrt(((alpha + beta) + fma(2.0, i, 2.0)))), 1.0) / 2.0;
}
return tmp;
}
function code(alpha, beta, i) t_0 = Float64(beta + Float64(2.0 * i)) t_1 = fma(2.0, beta, Float64(i * 4.0)) t_2 = Float64(Float64(alpha + beta) * Float64(Float64(beta - alpha) / Float64(beta + fma(2.0, i, alpha)))) t_3 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) t_4 = Float64(2.0 + t_1) tmp = 0.0 if (Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_3) / Float64(2.0 + t_3)) <= -0.9995) tmp = Float64(Float64(Float64(Float64(Float64(beta * 0.0) + Float64((beta ^ 2.0) / alpha)) - fma(-1.0, t_4, fma(-1.0, Float64(Float64(2.0 + t_0) * Float64(t_0 / alpha)), Float64(t_4 * Float64(Float64(Float64(beta * 0.0) + Float64(t_1 - -2.0)) / alpha))))) / alpha) / 2.0); else tmp = Float64(fma(cbrt((Float64(t_2 / Float64(beta + Float64(alpha + fma(2.0, i, 2.0)))) ^ 2.0)), Float64(cbrt(t_2) / cbrt(Float64(Float64(alpha + beta) + fma(2.0, i, 2.0)))), 1.0) / 2.0); end return tmp end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(beta + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 * beta + N[(i * 4.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(alpha + beta), $MachinePrecision] * N[(N[(beta - alpha), $MachinePrecision] / N[(beta + N[(2.0 * i + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(2.0 + t$95$1), $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision] / N[(2.0 + t$95$3), $MachinePrecision]), $MachinePrecision], -0.9995], N[(N[(N[(N[(N[(beta * 0.0), $MachinePrecision] + N[(N[Power[beta, 2.0], $MachinePrecision] / alpha), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * t$95$4 + N[(-1.0 * N[(N[(2.0 + t$95$0), $MachinePrecision] * N[(t$95$0 / alpha), $MachinePrecision]), $MachinePrecision] + N[(t$95$4 * N[(N[(N[(beta * 0.0), $MachinePrecision] + N[(t$95$1 - -2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(N[Power[N[Power[N[(t$95$2 / N[(beta + N[(alpha + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision], 1/3], $MachinePrecision] * N[(N[Power[t$95$2, 1/3], $MachinePrecision] / N[Power[N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision], 1/3], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \beta + 2 \cdot i\\
t_1 := \mathsf{fma}\left(2, \beta, i \cdot 4\right)\\
t_2 := \left(\alpha + \beta\right) \cdot \frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}\\
t_3 := \left(\alpha + \beta\right) + 2 \cdot i\\
t_4 := 2 + t\_1\\
\mathbf{if}\;\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_3}}{2 + t\_3} \leq -0.9995:\\
\;\;\;\;\frac{\frac{\left(\beta \cdot 0 + \frac{{\beta}^{2}}{\alpha}\right) - \mathsf{fma}\left(-1, t\_4, \mathsf{fma}\left(-1, \left(2 + t\_0\right) \cdot \frac{t\_0}{\alpha}, t\_4 \cdot \frac{\beta \cdot 0 + \left(t\_1 - -2\right)}{\alpha}\right)\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{{\left(\frac{t\_2}{\beta + \left(\alpha + \mathsf{fma}\left(2, i, 2\right)\right)}\right)}^{2}}, \frac{\sqrt[3]{t\_2}}{\sqrt[3]{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, i, 2\right)}}, 1\right)}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99950000000000006Initial program 3.8%
Simplified18.1%
Applied egg-rr17.8%
Simplified17.8%
Taylor expanded in alpha around inf 76.9%
Simplified89.6%
if -0.99950000000000006 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 80.9%
Simplified99.9%
Applied egg-rr99.9%
Simplified99.9%
cbrt-div99.9%
fma-undefine99.9%
+-commutative99.9%
+-commutative99.9%
+-commutative99.9%
fma-undefine99.9%
associate-+r+99.9%
+-commutative99.9%
Applied egg-rr99.9%
Final simplification97.9%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ beta (* 2.0 i)))
(t_1 (fma 2.0 beta (* i 4.0)))
(t_2 (+ (+ alpha beta) (* 2.0 i)))
(t_3 (+ 2.0 t_1)))
(if (<= (/ (/ (* (+ alpha beta) (- beta alpha)) t_2) (+ 2.0 t_2)) -0.9995)
(/
(/
(-
(+ (* beta 0.0) (/ (pow beta 2.0) alpha))
(fma
-1.0
t_3
(fma
-1.0
(* (+ 2.0 t_0) (/ t_0 alpha))
(* t_3 (/ (+ (* beta 0.0) (- t_1 -2.0)) alpha)))))
alpha)
2.0)
(/
(cbrt
(pow
(cbrt
(pow
(+
1.0
(*
(+ alpha beta)
(/
(/ (- beta alpha) (+ beta (fma 2.0 i alpha)))
(+ (+ alpha beta) (fma 2.0 i 2.0)))))
3.0))
3.0))
2.0))))
double code(double alpha, double beta, double i) {
double t_0 = beta + (2.0 * i);
double t_1 = fma(2.0, beta, (i * 4.0));
double t_2 = (alpha + beta) + (2.0 * i);
double t_3 = 2.0 + t_1;
double tmp;
if (((((alpha + beta) * (beta - alpha)) / t_2) / (2.0 + t_2)) <= -0.9995) {
tmp = ((((beta * 0.0) + (pow(beta, 2.0) / alpha)) - fma(-1.0, t_3, fma(-1.0, ((2.0 + t_0) * (t_0 / alpha)), (t_3 * (((beta * 0.0) + (t_1 - -2.0)) / alpha))))) / alpha) / 2.0;
} else {
tmp = cbrt(pow(cbrt(pow((1.0 + ((alpha + beta) * (((beta - alpha) / (beta + fma(2.0, i, alpha))) / ((alpha + beta) + fma(2.0, i, 2.0))))), 3.0)), 3.0)) / 2.0;
}
return tmp;
}
function code(alpha, beta, i) t_0 = Float64(beta + Float64(2.0 * i)) t_1 = fma(2.0, beta, Float64(i * 4.0)) t_2 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) t_3 = Float64(2.0 + t_1) tmp = 0.0 if (Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_2) / Float64(2.0 + t_2)) <= -0.9995) tmp = Float64(Float64(Float64(Float64(Float64(beta * 0.0) + Float64((beta ^ 2.0) / alpha)) - fma(-1.0, t_3, fma(-1.0, Float64(Float64(2.0 + t_0) * Float64(t_0 / alpha)), Float64(t_3 * Float64(Float64(Float64(beta * 0.0) + Float64(t_1 - -2.0)) / alpha))))) / alpha) / 2.0); else tmp = Float64(cbrt((cbrt((Float64(1.0 + Float64(Float64(alpha + beta) * Float64(Float64(Float64(beta - alpha) / Float64(beta + fma(2.0, i, alpha))) / Float64(Float64(alpha + beta) + fma(2.0, i, 2.0))))) ^ 3.0)) ^ 3.0)) / 2.0); end return tmp end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(beta + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 * beta + N[(i * 4.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(2.0 + t$95$1), $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision] / N[(2.0 + t$95$2), $MachinePrecision]), $MachinePrecision], -0.9995], N[(N[(N[(N[(N[(beta * 0.0), $MachinePrecision] + N[(N[Power[beta, 2.0], $MachinePrecision] / alpha), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * t$95$3 + N[(-1.0 * N[(N[(2.0 + t$95$0), $MachinePrecision] * N[(t$95$0 / alpha), $MachinePrecision]), $MachinePrecision] + N[(t$95$3 * N[(N[(N[(beta * 0.0), $MachinePrecision] + N[(t$95$1 - -2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[Power[N[Power[N[Power[N[Power[N[(1.0 + N[(N[(alpha + beta), $MachinePrecision] * N[(N[(N[(beta - alpha), $MachinePrecision] / N[(beta + N[(2.0 * i + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision] / 2.0), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \beta + 2 \cdot i\\
t_1 := \mathsf{fma}\left(2, \beta, i \cdot 4\right)\\
t_2 := \left(\alpha + \beta\right) + 2 \cdot i\\
t_3 := 2 + t\_1\\
\mathbf{if}\;\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_2}}{2 + t\_2} \leq -0.9995:\\
\;\;\;\;\frac{\frac{\left(\beta \cdot 0 + \frac{{\beta}^{2}}{\alpha}\right) - \mathsf{fma}\left(-1, t\_3, \mathsf{fma}\left(-1, \left(2 + t\_0\right) \cdot \frac{t\_0}{\alpha}, t\_3 \cdot \frac{\beta \cdot 0 + \left(t\_1 - -2\right)}{\alpha}\right)\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{{\left(\sqrt[3]{{\left(1 + \left(\alpha + \beta\right) \cdot \frac{\frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, i, 2\right)}\right)}^{3}}\right)}^{3}}}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99950000000000006Initial program 3.8%
Simplified18.1%
Applied egg-rr17.8%
Simplified17.8%
Taylor expanded in alpha around inf 76.9%
Simplified89.6%
if -0.99950000000000006 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 80.9%
Simplified99.9%
Applied egg-rr99.9%
Simplified99.9%
add-cbrt-cube99.9%
pow399.9%
Applied egg-rr99.9%
rem-cbrt-cube99.9%
pow1/399.9%
pow-to-exp99.9%
Applied egg-rr99.9%
exp-prod99.9%
unpow1/399.9%
*-commutative99.9%
log1p-undefine99.9%
exp-to-pow99.9%
Simplified99.9%
Final simplification97.8%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ (+ alpha beta) (* 2.0 i))))
(if (<=
(/ (/ (* (+ alpha beta) (- beta alpha)) t_0) (+ 2.0 t_0))
-0.99999999)
(/ (/ (+ (- beta beta) (+ 2.0 (+ (* i 4.0) (* beta 2.0)))) alpha) 2.0)
(/
(cbrt
(pow
(+
1.0
(*
(+ alpha beta)
(/
(/ (- beta alpha) (+ beta (fma 2.0 i alpha)))
(+ (+ alpha beta) (fma 2.0 i 2.0)))))
3.0))
2.0))))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
double tmp;
if (((((alpha + beta) * (beta - alpha)) / t_0) / (2.0 + t_0)) <= -0.99999999) {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
} else {
tmp = cbrt(pow((1.0 + ((alpha + beta) * (((beta - alpha) / (beta + fma(2.0, i, alpha))) / ((alpha + beta) + fma(2.0, i, 2.0))))), 3.0)) / 2.0;
}
return tmp;
}
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) tmp = 0.0 if (Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_0) / Float64(2.0 + t_0)) <= -0.99999999) tmp = Float64(Float64(Float64(Float64(beta - beta) + Float64(2.0 + Float64(Float64(i * 4.0) + Float64(beta * 2.0)))) / alpha) / 2.0); else tmp = Float64(cbrt((Float64(1.0 + Float64(Float64(alpha + beta) * Float64(Float64(Float64(beta - alpha) / Float64(beta + fma(2.0, i, alpha))) / Float64(Float64(alpha + beta) + fma(2.0, i, 2.0))))) ^ 3.0)) / 2.0); end return tmp end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(2.0 + t$95$0), $MachinePrecision]), $MachinePrecision], -0.99999999], N[(N[(N[(N[(beta - beta), $MachinePrecision] + N[(2.0 + N[(N[(i * 4.0), $MachinePrecision] + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[Power[N[Power[N[(1.0 + N[(N[(alpha + beta), $MachinePrecision] * N[(N[(N[(beta - alpha), $MachinePrecision] / N[(beta + N[(2.0 * i + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\
\mathbf{if}\;\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_0}}{2 + t\_0} \leq -0.99999999:\\
\;\;\;\;\frac{\frac{\left(\beta - \beta\right) + \left(2 + \left(i \cdot 4 + \beta \cdot 2\right)\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{{\left(1 + \left(\alpha + \beta\right) \cdot \frac{\frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, i, 2\right)}\right)}^{3}}}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99999998999999995Initial program 2.7%
Simplified17.3%
Taylor expanded in alpha around inf 88.9%
if -0.99999998999999995 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 80.8%
Simplified99.7%
Applied egg-rr99.7%
Simplified99.7%
add-cbrt-cube99.7%
pow399.7%
Applied egg-rr99.7%
Final simplification97.6%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ (+ alpha beta) (* 2.0 i))))
(if (<= (/ (/ (* (+ alpha beta) (- beta alpha)) t_0) (+ 2.0 t_0)) -0.9995)
(/ (/ (+ (- beta beta) (+ 2.0 (+ (* i 4.0) (* beta 2.0)))) alpha) 2.0)
(/
(+
1.0
(/
(* (- beta alpha) (/ (+ alpha beta) (fma 2.0 i (+ alpha beta))))
(+ alpha (+ beta (fma 2.0 i 2.0)))))
2.0))))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
double tmp;
if (((((alpha + beta) * (beta - alpha)) / t_0) / (2.0 + t_0)) <= -0.9995) {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
} else {
tmp = (1.0 + (((beta - alpha) * ((alpha + beta) / fma(2.0, i, (alpha + beta)))) / (alpha + (beta + fma(2.0, i, 2.0))))) / 2.0;
}
return tmp;
}
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) tmp = 0.0 if (Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_0) / Float64(2.0 + t_0)) <= -0.9995) tmp = Float64(Float64(Float64(Float64(beta - beta) + Float64(2.0 + Float64(Float64(i * 4.0) + Float64(beta * 2.0)))) / alpha) / 2.0); else tmp = Float64(Float64(1.0 + Float64(Float64(Float64(beta - alpha) * Float64(Float64(alpha + beta) / fma(2.0, i, Float64(alpha + beta)))) / Float64(alpha + Float64(beta + fma(2.0, i, 2.0))))) / 2.0); end return tmp end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(2.0 + t$95$0), $MachinePrecision]), $MachinePrecision], -0.9995], N[(N[(N[(N[(beta - beta), $MachinePrecision] + N[(2.0 + N[(N[(i * 4.0), $MachinePrecision] + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(1.0 + N[(N[(N[(beta - alpha), $MachinePrecision] * N[(N[(alpha + beta), $MachinePrecision] / N[(2.0 * i + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(alpha + N[(beta + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\
\mathbf{if}\;\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_0}}{2 + t\_0} \leq -0.9995:\\
\;\;\;\;\frac{\frac{\left(\beta - \beta\right) + \left(2 + \left(i \cdot 4 + \beta \cdot 2\right)\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 + \frac{\left(\beta - \alpha\right) \cdot \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{\alpha + \left(\beta + \mathsf{fma}\left(2, i, 2\right)\right)}}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99950000000000006Initial program 3.8%
Simplified18.1%
Taylor expanded in alpha around inf 88.3%
if -0.99950000000000006 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 80.9%
Simplified99.9%
Final simplification97.6%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (+ (+ alpha beta) (* 2.0 i))))
(if (<= (/ (/ (* (+ alpha beta) (- beta alpha)) t_0) (+ 2.0 t_0)) -0.9995)
(/ (/ (+ (- beta beta) (+ 2.0 (+ (* i 4.0) (* beta 2.0)))) alpha) 2.0)
(/
(+
1.0
(/
(* (- beta alpha) (/ beta (+ beta (* 2.0 i))))
(+ alpha (+ beta (fma 2.0 i 2.0)))))
2.0))))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) + (2.0 * i);
double tmp;
if (((((alpha + beta) * (beta - alpha)) / t_0) / (2.0 + t_0)) <= -0.9995) {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
} else {
tmp = (1.0 + (((beta - alpha) * (beta / (beta + (2.0 * i)))) / (alpha + (beta + fma(2.0, i, 2.0))))) / 2.0;
}
return tmp;
}
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) tmp = 0.0 if (Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / t_0) / Float64(2.0 + t_0)) <= -0.9995) tmp = Float64(Float64(Float64(Float64(beta - beta) + Float64(2.0 + Float64(Float64(i * 4.0) + Float64(beta * 2.0)))) / alpha) / 2.0); else tmp = Float64(Float64(1.0 + Float64(Float64(Float64(beta - alpha) * Float64(beta / Float64(beta + Float64(2.0 * i)))) / Float64(alpha + Float64(beta + fma(2.0, i, 2.0))))) / 2.0); end return tmp end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(2.0 + t$95$0), $MachinePrecision]), $MachinePrecision], -0.9995], N[(N[(N[(N[(beta - beta), $MachinePrecision] + N[(2.0 + N[(N[(i * 4.0), $MachinePrecision] + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(1.0 + N[(N[(N[(beta - alpha), $MachinePrecision] * N[(beta / N[(beta + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(alpha + N[(beta + N[(2.0 * i + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\
\mathbf{if}\;\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t\_0}}{2 + t\_0} \leq -0.9995:\\
\;\;\;\;\frac{\frac{\left(\beta - \beta\right) + \left(2 + \left(i \cdot 4 + \beta \cdot 2\right)\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 + \frac{\left(\beta - \alpha\right) \cdot \frac{\beta}{\beta + 2 \cdot i}}{\alpha + \left(\beta + \mathsf{fma}\left(2, i, 2\right)\right)}}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99950000000000006Initial program 3.8%
Simplified18.1%
Taylor expanded in alpha around inf 88.3%
if -0.99950000000000006 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 80.9%
Simplified99.9%
Taylor expanded in alpha around 0 99.7%
Final simplification97.4%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (* (+ alpha beta) (- beta alpha)))
(t_1 (+ (+ alpha beta) (* 2.0 i)))
(t_2 (/ (/ t_0 t_1) (+ 2.0 t_1))))
(if (<= t_2 -0.99999999)
(/ (/ (+ (- beta beta) (+ 2.0 (+ (* i 4.0) (* beta 2.0)))) alpha) 2.0)
(if (<= t_2 0.2)
(/
(+
1.0
(/
t_0
(*
(+ (+ alpha beta) (+ 2.0 (* 2.0 i)))
(+ beta (+ alpha (* 2.0 i))))))
2.0)
(/ (- 2.0 (/ 2.0 beta)) 2.0)))))
double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) * (beta - alpha);
double t_1 = (alpha + beta) + (2.0 * i);
double t_2 = (t_0 / t_1) / (2.0 + t_1);
double tmp;
if (t_2 <= -0.99999999) {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
} else if (t_2 <= 0.2) {
tmp = (1.0 + (t_0 / (((alpha + beta) + (2.0 + (2.0 * i))) * (beta + (alpha + (2.0 * i)))))) / 2.0;
} else {
tmp = (2.0 - (2.0 / beta)) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (alpha + beta) * (beta - alpha)
t_1 = (alpha + beta) + (2.0d0 * i)
t_2 = (t_0 / t_1) / (2.0d0 + t_1)
if (t_2 <= (-0.99999999d0)) then
tmp = (((beta - beta) + (2.0d0 + ((i * 4.0d0) + (beta * 2.0d0)))) / alpha) / 2.0d0
else if (t_2 <= 0.2d0) then
tmp = (1.0d0 + (t_0 / (((alpha + beta) + (2.0d0 + (2.0d0 * i))) * (beta + (alpha + (2.0d0 * i)))))) / 2.0d0
else
tmp = (2.0d0 - (2.0d0 / beta)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double t_0 = (alpha + beta) * (beta - alpha);
double t_1 = (alpha + beta) + (2.0 * i);
double t_2 = (t_0 / t_1) / (2.0 + t_1);
double tmp;
if (t_2 <= -0.99999999) {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
} else if (t_2 <= 0.2) {
tmp = (1.0 + (t_0 / (((alpha + beta) + (2.0 + (2.0 * i))) * (beta + (alpha + (2.0 * i)))))) / 2.0;
} else {
tmp = (2.0 - (2.0 / beta)) / 2.0;
}
return tmp;
}
def code(alpha, beta, i): t_0 = (alpha + beta) * (beta - alpha) t_1 = (alpha + beta) + (2.0 * i) t_2 = (t_0 / t_1) / (2.0 + t_1) tmp = 0 if t_2 <= -0.99999999: tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0 elif t_2 <= 0.2: tmp = (1.0 + (t_0 / (((alpha + beta) + (2.0 + (2.0 * i))) * (beta + (alpha + (2.0 * i)))))) / 2.0 else: tmp = (2.0 - (2.0 / beta)) / 2.0 return tmp
function code(alpha, beta, i) t_0 = Float64(Float64(alpha + beta) * Float64(beta - alpha)) t_1 = Float64(Float64(alpha + beta) + Float64(2.0 * i)) t_2 = Float64(Float64(t_0 / t_1) / Float64(2.0 + t_1)) tmp = 0.0 if (t_2 <= -0.99999999) tmp = Float64(Float64(Float64(Float64(beta - beta) + Float64(2.0 + Float64(Float64(i * 4.0) + Float64(beta * 2.0)))) / alpha) / 2.0); elseif (t_2 <= 0.2) tmp = Float64(Float64(1.0 + Float64(t_0 / Float64(Float64(Float64(alpha + beta) + Float64(2.0 + Float64(2.0 * i))) * Float64(beta + Float64(alpha + Float64(2.0 * i)))))) / 2.0); else tmp = Float64(Float64(2.0 - Float64(2.0 / beta)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta, i) t_0 = (alpha + beta) * (beta - alpha); t_1 = (alpha + beta) + (2.0 * i); t_2 = (t_0 / t_1) / (2.0 + t_1); tmp = 0.0; if (t_2 <= -0.99999999) tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0; elseif (t_2 <= 0.2) tmp = (1.0 + (t_0 / (((alpha + beta) + (2.0 + (2.0 * i))) * (beta + (alpha + (2.0 * i)))))) / 2.0; else tmp = (2.0 - (2.0 / beta)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(t$95$0 / t$95$1), $MachinePrecision] / N[(2.0 + t$95$1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -0.99999999], N[(N[(N[(N[(beta - beta), $MachinePrecision] + N[(2.0 + N[(N[(i * 4.0), $MachinePrecision] + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[t$95$2, 0.2], N[(N[(1.0 + N[(t$95$0 / N[(N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(beta + N[(alpha + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(2.0 - N[(2.0 / beta), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)\\
t_1 := \left(\alpha + \beta\right) + 2 \cdot i\\
t_2 := \frac{\frac{t\_0}{t\_1}}{2 + t\_1}\\
\mathbf{if}\;t\_2 \leq -0.99999999:\\
\;\;\;\;\frac{\frac{\left(\beta - \beta\right) + \left(2 + \left(i \cdot 4 + \beta \cdot 2\right)\right)}{\alpha}}{2}\\
\mathbf{elif}\;t\_2 \leq 0.2:\\
\;\;\;\;\frac{1 + \frac{t\_0}{\left(\left(\alpha + \beta\right) + \left(2 + 2 \cdot i\right)\right) \cdot \left(\beta + \left(\alpha + 2 \cdot i\right)\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 - \frac{2}{\beta}}{2}\\
\end{array}
\end{array}
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < -0.99999998999999995Initial program 2.7%
Simplified17.3%
Taylor expanded in alpha around inf 88.9%
if -0.99999998999999995 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) < 0.20000000000000001Initial program 99.6%
associate-/l/99.6%
associate-+l+99.6%
+-commutative99.6%
associate-+l+99.6%
Simplified99.6%
if 0.20000000000000001 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 #s(literal 2 binary64) i)) #s(literal 2 binary64))) Initial program 40.4%
Simplified99.9%
Taylor expanded in i around 0 95.3%
associate-+r+95.3%
+-commutative95.3%
Simplified95.3%
Taylor expanded in beta around inf 95.3%
mul-1-neg95.3%
Simplified95.3%
Taylor expanded in alpha around 0 95.3%
Final simplification96.4%
(FPCore (alpha beta i)
:precision binary64
(let* ((t_0 (/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0)))
(if (<= alpha 1.1e+19)
t_0
(if (<= alpha 6e+46)
(/ (/ (+ 2.0 (* i 4.0)) alpha) 2.0)
(if (<= alpha 3.7e+123)
t_0
(/
(/ (+ (- beta beta) (+ 2.0 (+ (* i 4.0) (* beta 2.0)))) alpha)
2.0))))))
double code(double alpha, double beta, double i) {
double t_0 = (1.0 + (beta / (beta + 2.0))) / 2.0;
double tmp;
if (alpha <= 1.1e+19) {
tmp = t_0;
} else if (alpha <= 6e+46) {
tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0;
} else if (alpha <= 3.7e+123) {
tmp = t_0;
} else {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: t_0
real(8) :: tmp
t_0 = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
if (alpha <= 1.1d+19) then
tmp = t_0
else if (alpha <= 6d+46) then
tmp = ((2.0d0 + (i * 4.0d0)) / alpha) / 2.0d0
else if (alpha <= 3.7d+123) then
tmp = t_0
else
tmp = (((beta - beta) + (2.0d0 + ((i * 4.0d0) + (beta * 2.0d0)))) / alpha) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double t_0 = (1.0 + (beta / (beta + 2.0))) / 2.0;
double tmp;
if (alpha <= 1.1e+19) {
tmp = t_0;
} else if (alpha <= 6e+46) {
tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0;
} else if (alpha <= 3.7e+123) {
tmp = t_0;
} else {
tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0;
}
return tmp;
}
def code(alpha, beta, i): t_0 = (1.0 + (beta / (beta + 2.0))) / 2.0 tmp = 0 if alpha <= 1.1e+19: tmp = t_0 elif alpha <= 6e+46: tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0 elif alpha <= 3.7e+123: tmp = t_0 else: tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0 return tmp
function code(alpha, beta, i) t_0 = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0) tmp = 0.0 if (alpha <= 1.1e+19) tmp = t_0; elseif (alpha <= 6e+46) tmp = Float64(Float64(Float64(2.0 + Float64(i * 4.0)) / alpha) / 2.0); elseif (alpha <= 3.7e+123) tmp = t_0; else tmp = Float64(Float64(Float64(Float64(beta - beta) + Float64(2.0 + Float64(Float64(i * 4.0) + Float64(beta * 2.0)))) / alpha) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta, i) t_0 = (1.0 + (beta / (beta + 2.0))) / 2.0; tmp = 0.0; if (alpha <= 1.1e+19) tmp = t_0; elseif (alpha <= 6e+46) tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0; elseif (alpha <= 3.7e+123) tmp = t_0; else tmp = (((beta - beta) + (2.0 + ((i * 4.0) + (beta * 2.0)))) / alpha) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := Block[{t$95$0 = N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]}, If[LessEqual[alpha, 1.1e+19], t$95$0, If[LessEqual[alpha, 6e+46], N[(N[(N[(2.0 + N[(i * 4.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[alpha, 3.7e+123], t$95$0, N[(N[(N[(N[(beta - beta), $MachinePrecision] + N[(2.0 + N[(N[(i * 4.0), $MachinePrecision] + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{if}\;\alpha \leq 1.1 \cdot 10^{+19}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;\alpha \leq 6 \cdot 10^{+46}:\\
\;\;\;\;\frac{\frac{2 + i \cdot 4}{\alpha}}{2}\\
\mathbf{elif}\;\alpha \leq 3.7 \cdot 10^{+123}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(\beta - \beta\right) + \left(2 + \left(i \cdot 4 + \beta \cdot 2\right)\right)}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 1.1e19 or 6.00000000000000047e46 < alpha < 3.69999999999999996e123Initial program 81.5%
Simplified97.6%
Taylor expanded in i around 0 86.6%
associate-+r+86.6%
+-commutative86.6%
Simplified86.6%
Taylor expanded in alpha around 0 90.7%
+-commutative90.7%
Simplified90.7%
if 1.1e19 < alpha < 6.00000000000000047e46Initial program 3.3%
Simplified24.8%
Taylor expanded in alpha around inf 78.8%
Taylor expanded in beta around 0 79.2%
if 3.69999999999999996e123 < alpha Initial program 1.5%
Simplified27.8%
Taylor expanded in alpha around inf 78.6%
Final simplification88.3%
(FPCore (alpha beta i)
:precision binary64
(if (or (<= alpha 4.3e+18)
(and (not (<= alpha 2.05e+46)) (<= alpha 3.4e+117)))
(/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0)
(/ (/ (+ 2.0 (* i 4.0)) alpha) 2.0)))
double code(double alpha, double beta, double i) {
double tmp;
if ((alpha <= 4.3e+18) || (!(alpha <= 2.05e+46) && (alpha <= 3.4e+117))) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: tmp
if ((alpha <= 4.3d+18) .or. (.not. (alpha <= 2.05d+46)) .and. (alpha <= 3.4d+117)) then
tmp = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
else
tmp = ((2.0d0 + (i * 4.0d0)) / alpha) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double tmp;
if ((alpha <= 4.3e+18) || (!(alpha <= 2.05e+46) && (alpha <= 3.4e+117))) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0;
}
return tmp;
}
def code(alpha, beta, i): tmp = 0 if (alpha <= 4.3e+18) or (not (alpha <= 2.05e+46) and (alpha <= 3.4e+117)): tmp = (1.0 + (beta / (beta + 2.0))) / 2.0 else: tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0 return tmp
function code(alpha, beta, i) tmp = 0.0 if ((alpha <= 4.3e+18) || (!(alpha <= 2.05e+46) && (alpha <= 3.4e+117))) tmp = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0); else tmp = Float64(Float64(Float64(2.0 + Float64(i * 4.0)) / alpha) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta, i) tmp = 0.0; if ((alpha <= 4.3e+18) || (~((alpha <= 2.05e+46)) && (alpha <= 3.4e+117))) tmp = (1.0 + (beta / (beta + 2.0))) / 2.0; else tmp = ((2.0 + (i * 4.0)) / alpha) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := If[Or[LessEqual[alpha, 4.3e+18], And[N[Not[LessEqual[alpha, 2.05e+46]], $MachinePrecision], LessEqual[alpha, 3.4e+117]]], N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(N[(2.0 + N[(i * 4.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 4.3 \cdot 10^{+18} \lor \neg \left(\alpha \leq 2.05 \cdot 10^{+46}\right) \land \alpha \leq 3.4 \cdot 10^{+117}:\\
\;\;\;\;\frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2 + i \cdot 4}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 4.3e18 or 2.05e46 < alpha < 3.4000000000000001e117Initial program 81.5%
Simplified97.6%
Taylor expanded in i around 0 86.6%
associate-+r+86.6%
+-commutative86.6%
Simplified86.6%
Taylor expanded in alpha around 0 90.7%
+-commutative90.7%
Simplified90.7%
if 4.3e18 < alpha < 2.05e46 or 3.4000000000000001e117 < alpha Initial program 1.8%
Simplified27.2%
Taylor expanded in alpha around inf 78.6%
Taylor expanded in beta around 0 68.1%
Final simplification86.2%
(FPCore (alpha beta i)
:precision binary64
(if (<= alpha 1.06e+122)
(/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0)
(if (<= alpha 2.6e+253)
(/ (/ (+ 2.0 (* beta 2.0)) alpha) 2.0)
(/ (* 4.0 (/ i alpha)) 2.0))))
double code(double alpha, double beta, double i) {
double tmp;
if (alpha <= 1.06e+122) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else if (alpha <= 2.6e+253) {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
} else {
tmp = (4.0 * (i / alpha)) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: tmp
if (alpha <= 1.06d+122) then
tmp = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
else if (alpha <= 2.6d+253) then
tmp = ((2.0d0 + (beta * 2.0d0)) / alpha) / 2.0d0
else
tmp = (4.0d0 * (i / alpha)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double tmp;
if (alpha <= 1.06e+122) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else if (alpha <= 2.6e+253) {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
} else {
tmp = (4.0 * (i / alpha)) / 2.0;
}
return tmp;
}
def code(alpha, beta, i): tmp = 0 if alpha <= 1.06e+122: tmp = (1.0 + (beta / (beta + 2.0))) / 2.0 elif alpha <= 2.6e+253: tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0 else: tmp = (4.0 * (i / alpha)) / 2.0 return tmp
function code(alpha, beta, i) tmp = 0.0 if (alpha <= 1.06e+122) tmp = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0); elseif (alpha <= 2.6e+253) tmp = Float64(Float64(Float64(2.0 + Float64(beta * 2.0)) / alpha) / 2.0); else tmp = Float64(Float64(4.0 * Float64(i / alpha)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta, i) tmp = 0.0; if (alpha <= 1.06e+122) tmp = (1.0 + (beta / (beta + 2.0))) / 2.0; elseif (alpha <= 2.6e+253) tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0; else tmp = (4.0 * (i / alpha)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := If[LessEqual[alpha, 1.06e+122], N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[alpha, 2.6e+253], N[(N[(N[(2.0 + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(4.0 * N[(i / alpha), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 1.06 \cdot 10^{+122}:\\
\;\;\;\;\frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{elif}\;\alpha \leq 2.6 \cdot 10^{+253}:\\
\;\;\;\;\frac{\frac{2 + \beta \cdot 2}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{4 \cdot \frac{i}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 1.06000000000000002e122Initial program 78.2%
Simplified94.5%
Taylor expanded in i around 0 83.6%
associate-+r+83.6%
+-commutative83.6%
Simplified83.6%
Taylor expanded in alpha around 0 87.7%
+-commutative87.7%
Simplified87.7%
if 1.06000000000000002e122 < alpha < 2.6e253Initial program 1.6%
Simplified34.8%
Taylor expanded in i around 0 11.8%
associate-+r+11.8%
+-commutative11.8%
Simplified11.8%
Taylor expanded in alpha around inf 49.6%
if 2.6e253 < alpha Initial program 1.2%
Simplified14.7%
Taylor expanded in alpha around inf 92.1%
Taylor expanded in i around inf 73.1%
Final simplification82.7%
(FPCore (alpha beta i) :precision binary64 (if (<= alpha 1.92e+199) (/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0) (/ (* 4.0 (/ i alpha)) 2.0)))
double code(double alpha, double beta, double i) {
double tmp;
if (alpha <= 1.92e+199) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = (4.0 * (i / alpha)) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: tmp
if (alpha <= 1.92d+199) then
tmp = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
else
tmp = (4.0d0 * (i / alpha)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double tmp;
if (alpha <= 1.92e+199) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = (4.0 * (i / alpha)) / 2.0;
}
return tmp;
}
def code(alpha, beta, i): tmp = 0 if alpha <= 1.92e+199: tmp = (1.0 + (beta / (beta + 2.0))) / 2.0 else: tmp = (4.0 * (i / alpha)) / 2.0 return tmp
function code(alpha, beta, i) tmp = 0.0 if (alpha <= 1.92e+199) tmp = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0); else tmp = Float64(Float64(4.0 * Float64(i / alpha)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta, i) tmp = 0.0; if (alpha <= 1.92e+199) tmp = (1.0 + (beta / (beta + 2.0))) / 2.0; else tmp = (4.0 * (i / alpha)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := If[LessEqual[alpha, 1.92e+199], N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(4.0 * N[(i / alpha), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 1.92 \cdot 10^{+199}:\\
\;\;\;\;\frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{4 \cdot \frac{i}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 1.9200000000000001e199Initial program 72.8%
Simplified91.1%
Taylor expanded in i around 0 78.9%
associate-+r+78.9%
+-commutative78.9%
Simplified78.9%
Taylor expanded in alpha around 0 83.5%
+-commutative83.5%
Simplified83.5%
if 1.9200000000000001e199 < alpha Initial program 1.2%
Simplified17.5%
Taylor expanded in alpha around inf 88.8%
Taylor expanded in i around inf 53.9%
Final simplification80.3%
(FPCore (alpha beta i) :precision binary64 (if (<= beta 7e+16) 0.5 1.0))
double code(double alpha, double beta, double i) {
double tmp;
if (beta <= 7e+16) {
tmp = 0.5;
} else {
tmp = 1.0;
}
return tmp;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
real(8) :: tmp
if (beta <= 7d+16) then
tmp = 0.5d0
else
tmp = 1.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta, double i) {
double tmp;
if (beta <= 7e+16) {
tmp = 0.5;
} else {
tmp = 1.0;
}
return tmp;
}
def code(alpha, beta, i): tmp = 0 if beta <= 7e+16: tmp = 0.5 else: tmp = 1.0 return tmp
function code(alpha, beta, i) tmp = 0.0 if (beta <= 7e+16) tmp = 0.5; else tmp = 1.0; end return tmp end
function tmp_2 = code(alpha, beta, i) tmp = 0.0; if (beta <= 7e+16) tmp = 0.5; else tmp = 1.0; end tmp_2 = tmp; end
code[alpha_, beta_, i_] := If[LessEqual[beta, 7e+16], 0.5, 1.0]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 7 \cdot 10^{+16}:\\
\;\;\;\;0.5\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
\end{array}
if beta < 7e16Initial program 75.7%
Simplified78.7%
Taylor expanded in i around inf 75.5%
if 7e16 < beta Initial program 43.1%
Simplified93.0%
Taylor expanded in beta around inf 77.5%
Final simplification76.1%
(FPCore (alpha beta i) :precision binary64 0.5)
double code(double alpha, double beta, double i) {
return 0.5;
}
real(8) function code(alpha, beta, i)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8), intent (in) :: i
code = 0.5d0
end function
public static double code(double alpha, double beta, double i) {
return 0.5;
}
def code(alpha, beta, i): return 0.5
function code(alpha, beta, i) return 0.5 end
function tmp = code(alpha, beta, i) tmp = 0.5; end
code[alpha_, beta_, i_] := 0.5
\begin{array}{l}
\\
0.5
\end{array}
Initial program 65.3%
Simplified83.3%
Taylor expanded in i around inf 61.6%
Final simplification61.6%
herbie shell --seed 2024087
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:precision binary64
:pre (and (and (> alpha -1.0) (> beta -1.0)) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) 1.0) 2.0))