
(FPCore (alpha beta) :precision binary64 (let* ((t_0 (+ (+ alpha beta) (* 2.0 1.0)))) (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) t_0) t_0) (+ t_0 1.0))))
double code(double alpha, double beta) {
double t_0 = (alpha + beta) + (2.0 * 1.0);
return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0);
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
t_0 = (alpha + beta) + (2.0d0 * 1.0d0)
code = (((((alpha + beta) + (beta * alpha)) + 1.0d0) / t_0) / t_0) / (t_0 + 1.0d0)
end function
public static double code(double alpha, double beta) {
double t_0 = (alpha + beta) + (2.0 * 1.0);
return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0);
}
def code(alpha, beta): t_0 = (alpha + beta) + (2.0 * 1.0) return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0)
function code(alpha, beta) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * 1.0)) return Float64(Float64(Float64(Float64(Float64(Float64(alpha + beta) + Float64(beta * alpha)) + 1.0) / t_0) / t_0) / Float64(t_0 + 1.0)) end
function tmp = code(alpha, beta) t_0 = (alpha + beta) + (2.0 * 1.0); tmp = (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0); end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * 1.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(N[(N[(alpha + beta), $MachinePrecision] + N[(beta * alpha), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / t$95$0), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot 1\\
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{t\_0}}{t\_0}}{t\_0 + 1}
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 16 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (alpha beta) :precision binary64 (let* ((t_0 (+ (+ alpha beta) (* 2.0 1.0)))) (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) t_0) t_0) (+ t_0 1.0))))
double code(double alpha, double beta) {
double t_0 = (alpha + beta) + (2.0 * 1.0);
return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0);
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
t_0 = (alpha + beta) + (2.0d0 * 1.0d0)
code = (((((alpha + beta) + (beta * alpha)) + 1.0d0) / t_0) / t_0) / (t_0 + 1.0d0)
end function
public static double code(double alpha, double beta) {
double t_0 = (alpha + beta) + (2.0 * 1.0);
return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0);
}
def code(alpha, beta): t_0 = (alpha + beta) + (2.0 * 1.0) return (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0)
function code(alpha, beta) t_0 = Float64(Float64(alpha + beta) + Float64(2.0 * 1.0)) return Float64(Float64(Float64(Float64(Float64(Float64(alpha + beta) + Float64(beta * alpha)) + 1.0) / t_0) / t_0) / Float64(t_0 + 1.0)) end
function tmp = code(alpha, beta) t_0 = (alpha + beta) + (2.0 * 1.0); tmp = (((((alpha + beta) + (beta * alpha)) + 1.0) / t_0) / t_0) / (t_0 + 1.0); end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * 1.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(N[(N[(alpha + beta), $MachinePrecision] + N[(beta * alpha), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / t$95$0), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\alpha + \beta\right) + 2 \cdot 1\\
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{t\_0}}{t\_0}}{t\_0 + 1}
\end{array}
\end{array}
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (let* ((t_0 (- -2.0 (+ alpha beta)))) (* (/ (/ (+ alpha 1.0) t_0) (+ 3.0 (+ alpha beta))) (/ (+ beta 1.0) t_0))))
assert(alpha < beta);
double code(double alpha, double beta) {
double t_0 = -2.0 - (alpha + beta);
return (((alpha + 1.0) / t_0) / (3.0 + (alpha + beta))) * ((beta + 1.0) / t_0);
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
t_0 = (-2.0d0) - (alpha + beta)
code = (((alpha + 1.0d0) / t_0) / (3.0d0 + (alpha + beta))) * ((beta + 1.0d0) / t_0)
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double t_0 = -2.0 - (alpha + beta);
return (((alpha + 1.0) / t_0) / (3.0 + (alpha + beta))) * ((beta + 1.0) / t_0);
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): t_0 = -2.0 - (alpha + beta) return (((alpha + 1.0) / t_0) / (3.0 + (alpha + beta))) * ((beta + 1.0) / t_0)
alpha, beta = sort([alpha, beta]) function code(alpha, beta) t_0 = Float64(-2.0 - Float64(alpha + beta)) return Float64(Float64(Float64(Float64(alpha + 1.0) / t_0) / Float64(3.0 + Float64(alpha + beta))) * Float64(Float64(beta + 1.0) / t_0)) end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp = code(alpha, beta)
t_0 = -2.0 - (alpha + beta);
tmp = (((alpha + 1.0) / t_0) / (3.0 + (alpha + beta))) * ((beta + 1.0) / t_0);
end
NOTE: alpha and beta should be sorted in increasing order before calling this function.
code[alpha_, beta_] := Block[{t$95$0 = N[(-2.0 - N[(alpha + beta), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(alpha + 1.0), $MachinePrecision] / t$95$0), $MachinePrecision] / N[(3.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(beta + 1.0), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
t_0 := -2 - \left(\alpha + \beta\right)\\
\frac{\frac{\alpha + 1}{t\_0}}{3 + \left(\alpha + \beta\right)} \cdot \frac{\beta + 1}{t\_0}
\end{array}
\end{array}
Initial program 93.7%
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
associate-+r+N/A
lower-+.f64N/A
lower-+.f6493.7
lift-+.f64N/A
+-commutativeN/A
lower-+.f6493.7
lift-*.f64N/A
metadata-eval93.7
Applied rewrites93.7%
Applied rewrites92.9%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
lift-*.f64N/A
lift-+.f64N/A
metadata-evalN/A
associate-+r+N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-/.f64N/A
Applied rewrites99.8%
Final simplification99.8%
NOTE: alpha and beta should be sorted in increasing order before calling this function.
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (- -2.0 (+ alpha beta))))
(if (<= beta 1e+79)
(/ (* (+ alpha 1.0) (/ (+ beta 1.0) t_0)) (* (+ 3.0 (+ alpha beta)) t_0))
(/ (/ (+ alpha 1.0) (+ (+ 3.0 alpha) beta)) (+ (+ 2.0 beta) alpha)))))assert(alpha < beta);
double code(double alpha, double beta) {
double t_0 = -2.0 - (alpha + beta);
double tmp;
if (beta <= 1e+79) {
tmp = ((alpha + 1.0) * ((beta + 1.0) / t_0)) / ((3.0 + (alpha + beta)) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: tmp
t_0 = (-2.0d0) - (alpha + beta)
if (beta <= 1d+79) then
tmp = ((alpha + 1.0d0) * ((beta + 1.0d0) / t_0)) / ((3.0d0 + (alpha + beta)) * t_0)
else
tmp = ((alpha + 1.0d0) / ((3.0d0 + alpha) + beta)) / ((2.0d0 + beta) + alpha)
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double t_0 = -2.0 - (alpha + beta);
double tmp;
if (beta <= 1e+79) {
tmp = ((alpha + 1.0) * ((beta + 1.0) / t_0)) / ((3.0 + (alpha + beta)) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): t_0 = -2.0 - (alpha + beta) tmp = 0 if beta <= 1e+79: tmp = ((alpha + 1.0) * ((beta + 1.0) / t_0)) / ((3.0 + (alpha + beta)) * t_0) else: tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha) return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) t_0 = Float64(-2.0 - Float64(alpha + beta)) tmp = 0.0 if (beta <= 1e+79) tmp = Float64(Float64(Float64(alpha + 1.0) * Float64(Float64(beta + 1.0) / t_0)) / Float64(Float64(3.0 + Float64(alpha + beta)) * t_0)); else tmp = Float64(Float64(Float64(alpha + 1.0) / Float64(Float64(3.0 + alpha) + beta)) / Float64(Float64(2.0 + beta) + alpha)); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
t_0 = -2.0 - (alpha + beta);
tmp = 0.0;
if (beta <= 1e+79)
tmp = ((alpha + 1.0) * ((beta + 1.0) / t_0)) / ((3.0 + (alpha + beta)) * t_0);
else
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function.
code[alpha_, beta_] := Block[{t$95$0 = N[(-2.0 - N[(alpha + beta), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[beta, 1e+79], N[(N[(N[(alpha + 1.0), $MachinePrecision] * N[(N[(beta + 1.0), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] / N[(N[(3.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision] / N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
t_0 := -2 - \left(\alpha + \beta\right)\\
\mathbf{if}\;\beta \leq 10^{+79}:\\
\;\;\;\;\frac{\left(\alpha + 1\right) \cdot \frac{\beta + 1}{t\_0}}{\left(3 + \left(\alpha + \beta\right)\right) \cdot t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\left(3 + \alpha\right) + \beta}}{\left(2 + \beta\right) + \alpha}\\
\end{array}
\end{array}
if beta < 9.99999999999999967e78Initial program 98.8%
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
associate-+r+N/A
lower-+.f64N/A
lower-+.f6498.8
lift-+.f64N/A
+-commutativeN/A
lower-+.f6498.8
lift-*.f64N/A
metadata-eval98.8
Applied rewrites98.8%
Applied rewrites98.8%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6499.8
Applied rewrites99.8%
if 9.99999999999999967e78 < beta Initial program 79.3%
Taylor expanded in beta around inf
lower-+.f6489.9
Applied rewrites89.9%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites89.9%
Final simplification97.2%
NOTE: alpha and beta should be sorted in increasing order before calling this function.
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ 2.0 beta) alpha)))
(if (<= beta 2e+20)
(/ (* (+ alpha 1.0) (+ beta 1.0)) (* (* t_0 (+ 3.0 (+ alpha beta))) t_0))
(/ (/ (+ alpha 1.0) (+ (+ 3.0 alpha) beta)) t_0))))assert(alpha < beta);
double code(double alpha, double beta) {
double t_0 = (2.0 + beta) + alpha;
double tmp;
if (beta <= 2e+20) {
tmp = ((alpha + 1.0) * (beta + 1.0)) / ((t_0 * (3.0 + (alpha + beta))) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: tmp
t_0 = (2.0d0 + beta) + alpha
if (beta <= 2d+20) then
tmp = ((alpha + 1.0d0) * (beta + 1.0d0)) / ((t_0 * (3.0d0 + (alpha + beta))) * t_0)
else
tmp = ((alpha + 1.0d0) / ((3.0d0 + alpha) + beta)) / t_0
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double t_0 = (2.0 + beta) + alpha;
double tmp;
if (beta <= 2e+20) {
tmp = ((alpha + 1.0) * (beta + 1.0)) / ((t_0 * (3.0 + (alpha + beta))) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): t_0 = (2.0 + beta) + alpha tmp = 0 if beta <= 2e+20: tmp = ((alpha + 1.0) * (beta + 1.0)) / ((t_0 * (3.0 + (alpha + beta))) * t_0) else: tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0 return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) t_0 = Float64(Float64(2.0 + beta) + alpha) tmp = 0.0 if (beta <= 2e+20) tmp = Float64(Float64(Float64(alpha + 1.0) * Float64(beta + 1.0)) / Float64(Float64(t_0 * Float64(3.0 + Float64(alpha + beta))) * t_0)); else tmp = Float64(Float64(Float64(alpha + 1.0) / Float64(Float64(3.0 + alpha) + beta)) / t_0); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
t_0 = (2.0 + beta) + alpha;
tmp = 0.0;
if (beta <= 2e+20)
tmp = ((alpha + 1.0) * (beta + 1.0)) / ((t_0 * (3.0 + (alpha + beta))) * t_0);
else
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function.
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision]}, If[LessEqual[beta, 2e+20], N[(N[(N[(alpha + 1.0), $MachinePrecision] * N[(beta + 1.0), $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$0 * N[(3.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
t_0 := \left(2 + \beta\right) + \alpha\\
\mathbf{if}\;\beta \leq 2 \cdot 10^{+20}:\\
\;\;\;\;\frac{\left(\alpha + 1\right) \cdot \left(\beta + 1\right)}{\left(t\_0 \cdot \left(3 + \left(\alpha + \beta\right)\right)\right) \cdot t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\left(3 + \alpha\right) + \beta}}{t\_0}\\
\end{array}
\end{array}
if beta < 2e20Initial program 99.9%
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
associate-+r+N/A
lower-+.f64N/A
lower-+.f6499.9
lift-+.f64N/A
+-commutativeN/A
lower-+.f6499.9
lift-*.f64N/A
metadata-eval99.9
Applied rewrites99.9%
Applied rewrites97.1%
if 2e20 < beta Initial program 81.5%
Taylor expanded in beta around inf
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites85.6%
Final simplification93.2%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 4.8e+15) (/ (/ (+ beta 1.0) (+ 2.0 beta)) (* (+ 3.0 beta) (+ 2.0 beta))) (/ (/ (+ alpha 1.0) (+ (+ 3.0 alpha) beta)) (+ (+ 2.0 beta) alpha))))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 4.8e+15) {
tmp = ((beta + 1.0) / (2.0 + beta)) / ((3.0 + beta) * (2.0 + beta));
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 4.8d+15) then
tmp = ((beta + 1.0d0) / (2.0d0 + beta)) / ((3.0d0 + beta) * (2.0d0 + beta))
else
tmp = ((alpha + 1.0d0) / ((3.0d0 + alpha) + beta)) / ((2.0d0 + beta) + alpha)
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 4.8e+15) {
tmp = ((beta + 1.0) / (2.0 + beta)) / ((3.0 + beta) * (2.0 + beta));
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if beta <= 4.8e+15: tmp = ((beta + 1.0) / (2.0 + beta)) / ((3.0 + beta) * (2.0 + beta)) else: tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha) return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 4.8e+15) tmp = Float64(Float64(Float64(beta + 1.0) / Float64(2.0 + beta)) / Float64(Float64(3.0 + beta) * Float64(2.0 + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / Float64(Float64(3.0 + alpha) + beta)) / Float64(Float64(2.0 + beta) + alpha)); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (beta <= 4.8e+15)
tmp = ((beta + 1.0) / (2.0 + beta)) / ((3.0 + beta) * (2.0 + beta));
else
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / ((2.0 + beta) + alpha);
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 4.8e+15], N[(N[(N[(beta + 1.0), $MachinePrecision] / N[(2.0 + beta), $MachinePrecision]), $MachinePrecision] / N[(N[(3.0 + beta), $MachinePrecision] * N[(2.0 + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision] / N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 4.8 \cdot 10^{+15}:\\
\;\;\;\;\frac{\frac{\beta + 1}{2 + \beta}}{\left(3 + \beta\right) \cdot \left(2 + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\left(3 + \alpha\right) + \beta}}{\left(2 + \beta\right) + \alpha}\\
\end{array}
\end{array}
if beta < 4.8e15Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6415.1
Applied rewrites15.1%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites32.1%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6482.7
Applied rewrites82.7%
Taylor expanded in alpha around 0
*-commutativeN/A
lower-*.f64N/A
lower-+.f64N/A
lower-+.f6462.4
Applied rewrites62.4%
if 4.8e15 < beta Initial program 81.7%
Taylor expanded in beta around inf
lower-+.f6484.7
Applied rewrites84.7%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites84.7%
Final simplification69.9%
NOTE: alpha and beta should be sorted in increasing order before calling this function.
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ 2.0 beta) alpha)))
(if (<= beta 5e+16)
(/ (+ beta 1.0) (* (* (+ 3.0 beta) t_0) t_0))
(/ (/ (+ alpha 1.0) (+ (+ 3.0 alpha) beta)) t_0))))assert(alpha < beta);
double code(double alpha, double beta) {
double t_0 = (2.0 + beta) + alpha;
double tmp;
if (beta <= 5e+16) {
tmp = (beta + 1.0) / (((3.0 + beta) * t_0) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: tmp
t_0 = (2.0d0 + beta) + alpha
if (beta <= 5d+16) then
tmp = (beta + 1.0d0) / (((3.0d0 + beta) * t_0) * t_0)
else
tmp = ((alpha + 1.0d0) / ((3.0d0 + alpha) + beta)) / t_0
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double t_0 = (2.0 + beta) + alpha;
double tmp;
if (beta <= 5e+16) {
tmp = (beta + 1.0) / (((3.0 + beta) * t_0) * t_0);
} else {
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): t_0 = (2.0 + beta) + alpha tmp = 0 if beta <= 5e+16: tmp = (beta + 1.0) / (((3.0 + beta) * t_0) * t_0) else: tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0 return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) t_0 = Float64(Float64(2.0 + beta) + alpha) tmp = 0.0 if (beta <= 5e+16) tmp = Float64(Float64(beta + 1.0) / Float64(Float64(Float64(3.0 + beta) * t_0) * t_0)); else tmp = Float64(Float64(Float64(alpha + 1.0) / Float64(Float64(3.0 + alpha) + beta)) / t_0); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
t_0 = (2.0 + beta) + alpha;
tmp = 0.0;
if (beta <= 5e+16)
tmp = (beta + 1.0) / (((3.0 + beta) * t_0) * t_0);
else
tmp = ((alpha + 1.0) / ((3.0 + alpha) + beta)) / t_0;
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function.
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision]}, If[LessEqual[beta, 5e+16], N[(N[(beta + 1.0), $MachinePrecision] / N[(N[(N[(3.0 + beta), $MachinePrecision] * t$95$0), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
t_0 := \left(2 + \beta\right) + \alpha\\
\mathbf{if}\;\beta \leq 5 \cdot 10^{+16}:\\
\;\;\;\;\frac{\beta + 1}{\left(\left(3 + \beta\right) \cdot t\_0\right) \cdot t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\left(3 + \alpha\right) + \beta}}{t\_0}\\
\end{array}
\end{array}
if beta < 5e16Initial program 99.9%
Taylor expanded in alpha around 0
lower-+.f6463.4
Applied rewrites63.4%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-/.f64N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites80.4%
Taylor expanded in alpha around 0
lower-+.f6482.5
Applied rewrites82.5%
if 5e16 < beta Initial program 81.7%
Taylor expanded in beta around inf
lower-+.f6484.7
Applied rewrites84.7%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites84.7%
Final simplification83.2%
NOTE: alpha and beta should be sorted in increasing order before calling this function.
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ 2.0 beta) alpha)) (t_1 (+ (+ 3.0 alpha) beta)))
(if (<= beta 24.0)
(/ (fma 0.25 beta 0.5) (* t_0 t_1))
(/ (/ (+ alpha 1.0) t_1) t_0))))assert(alpha < beta);
double code(double alpha, double beta) {
double t_0 = (2.0 + beta) + alpha;
double t_1 = (3.0 + alpha) + beta;
double tmp;
if (beta <= 24.0) {
tmp = fma(0.25, beta, 0.5) / (t_0 * t_1);
} else {
tmp = ((alpha + 1.0) / t_1) / t_0;
}
return tmp;
}
alpha, beta = sort([alpha, beta]) function code(alpha, beta) t_0 = Float64(Float64(2.0 + beta) + alpha) t_1 = Float64(Float64(3.0 + alpha) + beta) tmp = 0.0 if (beta <= 24.0) tmp = Float64(fma(0.25, beta, 0.5) / Float64(t_0 * t_1)); else tmp = Float64(Float64(Float64(alpha + 1.0) / t_1) / t_0); end return tmp end
NOTE: alpha and beta should be sorted in increasing order before calling this function.
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision]}, Block[{t$95$1 = N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]}, If[LessEqual[beta, 24.0], N[(N[(0.25 * beta + 0.5), $MachinePrecision] / N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / t$95$1), $MachinePrecision] / t$95$0), $MachinePrecision]]]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
t_0 := \left(2 + \beta\right) + \alpha\\
t_1 := \left(3 + \alpha\right) + \beta\\
\mathbf{if}\;\beta \leq 24:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \beta, 0.5\right)}{t\_0 \cdot t\_1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{t\_1}}{t\_0}\\
\end{array}
\end{array}
if beta < 24Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6414.2
Applied rewrites14.2%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites31.4%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6483.0
Applied rewrites83.0%
Taylor expanded in beta around 0
Applied rewrites82.2%
if 24 < beta Initial program 83.0%
Taylor expanded in beta around inf
lower-+.f6481.1
Applied rewrites81.1%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites81.1%
Final simplification81.8%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 40.0) (/ (fma 0.25 beta 0.5) (* (+ (+ 2.0 beta) alpha) (+ (+ 3.0 alpha) beta))) (/ (/ (+ alpha 1.0) beta) (+ (+ (+ alpha beta) 1.0) 2.0))))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 40.0) {
tmp = fma(0.25, beta, 0.5) / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / (((alpha + beta) + 1.0) + 2.0);
}
return tmp;
}
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 40.0) tmp = Float64(fma(0.25, beta, 0.5) / Float64(Float64(Float64(2.0 + beta) + alpha) * Float64(Float64(3.0 + alpha) + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / beta) / Float64(Float64(Float64(alpha + beta) + 1.0) + 2.0)); end return tmp end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 40.0], N[(N[(0.25 * beta + 0.5), $MachinePrecision] / N[(N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision] * N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / N[(N[(N[(alpha + beta), $MachinePrecision] + 1.0), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 40:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \beta, 0.5\right)}{\left(\left(2 + \beta\right) + \alpha\right) \cdot \left(\left(3 + \alpha\right) + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\beta}}{\left(\left(\alpha + \beta\right) + 1\right) + 2}\\
\end{array}
\end{array}
if beta < 40Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6414.2
Applied rewrites14.2%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites31.4%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6483.0
Applied rewrites83.0%
Taylor expanded in beta around 0
Applied rewrites82.2%
if 40 < beta Initial program 83.0%
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
associate-+r+N/A
lower-+.f64N/A
lower-+.f6483.0
lift-+.f64N/A
+-commutativeN/A
lower-+.f6483.0
lift-*.f64N/A
metadata-eval83.0
Applied rewrites83.0%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f6480.5
Applied rewrites80.5%
Final simplification81.6%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 40.0) (/ (fma 0.25 beta 0.5) (* (+ (+ 2.0 beta) alpha) (+ (+ 3.0 alpha) beta))) (/ (/ (+ alpha 1.0) beta) (+ 3.0 beta))))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 40.0) {
tmp = fma(0.25, beta, 0.5) / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / (3.0 + beta);
}
return tmp;
}
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 40.0) tmp = Float64(fma(0.25, beta, 0.5) / Float64(Float64(Float64(2.0 + beta) + alpha) * Float64(Float64(3.0 + alpha) + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / beta) / Float64(3.0 + beta)); end return tmp end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 40.0], N[(N[(0.25 * beta + 0.5), $MachinePrecision] / N[(N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision] * N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / N[(3.0 + beta), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 40:\\
\;\;\;\;\frac{\mathsf{fma}\left(0.25, \beta, 0.5\right)}{\left(\left(2 + \beta\right) + \alpha\right) \cdot \left(\left(3 + \alpha\right) + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\beta}}{3 + \beta}\\
\end{array}
\end{array}
if beta < 40Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6414.2
Applied rewrites14.2%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites31.4%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6483.0
Applied rewrites83.0%
Taylor expanded in beta around 0
Applied rewrites82.2%
if 40 < beta Initial program 83.0%
Taylor expanded in alpha around 0
lower-+.f6473.3
Applied rewrites73.3%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f6480.3
Applied rewrites80.3%
Final simplification81.5%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 48.0) (/ 0.5 (* (+ (+ 2.0 beta) alpha) (+ (+ 3.0 alpha) beta))) (/ (/ (+ alpha 1.0) beta) (+ 3.0 beta))))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 48.0) {
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / (3.0 + beta);
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 48.0d0) then
tmp = 0.5d0 / (((2.0d0 + beta) + alpha) * ((3.0d0 + alpha) + beta))
else
tmp = ((alpha + 1.0d0) / beta) / (3.0d0 + beta)
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 48.0) {
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / (3.0 + beta);
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if beta <= 48.0: tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta)) else: tmp = ((alpha + 1.0) / beta) / (3.0 + beta) return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 48.0) tmp = Float64(0.5 / Float64(Float64(Float64(2.0 + beta) + alpha) * Float64(Float64(3.0 + alpha) + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / beta) / Float64(3.0 + beta)); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (beta <= 48.0)
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
else
tmp = ((alpha + 1.0) / beta) / (3.0 + beta);
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 48.0], N[(0.5 / N[(N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision] * N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / N[(3.0 + beta), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 48:\\
\;\;\;\;\frac{0.5}{\left(\left(2 + \beta\right) + \alpha\right) \cdot \left(\left(3 + \alpha\right) + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\beta}}{3 + \beta}\\
\end{array}
\end{array}
if beta < 48Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6414.2
Applied rewrites14.2%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites31.4%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6483.0
Applied rewrites83.0%
Taylor expanded in beta around 0
Applied rewrites81.7%
if 48 < beta Initial program 83.0%
Taylor expanded in alpha around 0
lower-+.f6473.3
Applied rewrites73.3%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f6480.3
Applied rewrites80.3%
Final simplification81.2%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 48.0) (/ 0.5 (* (+ (+ 2.0 beta) alpha) (+ (+ 3.0 alpha) beta))) (/ (/ (+ alpha 1.0) beta) beta)))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 48.0) {
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / beta;
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 48.0d0) then
tmp = 0.5d0 / (((2.0d0 + beta) + alpha) * ((3.0d0 + alpha) + beta))
else
tmp = ((alpha + 1.0d0) / beta) / beta
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 48.0) {
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
} else {
tmp = ((alpha + 1.0) / beta) / beta;
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if beta <= 48.0: tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta)) else: tmp = ((alpha + 1.0) / beta) / beta return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 48.0) tmp = Float64(0.5 / Float64(Float64(Float64(2.0 + beta) + alpha) * Float64(Float64(3.0 + alpha) + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / beta) / beta); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (beta <= 48.0)
tmp = 0.5 / (((2.0 + beta) + alpha) * ((3.0 + alpha) + beta));
else
tmp = ((alpha + 1.0) / beta) / beta;
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 48.0], N[(0.5 / N[(N[(N[(2.0 + beta), $MachinePrecision] + alpha), $MachinePrecision] * N[(N[(3.0 + alpha), $MachinePrecision] + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / beta), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 48:\\
\;\;\;\;\frac{0.5}{\left(\left(2 + \beta\right) + \alpha\right) \cdot \left(\left(3 + \alpha\right) + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\beta}}{\beta}\\
\end{array}
\end{array}
if beta < 48Initial program 99.9%
Taylor expanded in beta around inf
lower-+.f6414.2
Applied rewrites14.2%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites31.4%
Taylor expanded in alpha around 0
lower-/.f64N/A
lower-+.f64N/A
lower-+.f6483.0
Applied rewrites83.0%
Taylor expanded in beta around 0
Applied rewrites81.7%
if 48 < beta Initial program 83.0%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6477.8
Applied rewrites77.8%
Applied rewrites80.3%
Final simplification81.2%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 5e+77) (/ (+ alpha 1.0) (* (+ 3.0 beta) (+ 2.0 beta))) (/ (/ (+ alpha 1.0) beta) beta)))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 5e+77) {
tmp = (alpha + 1.0) / ((3.0 + beta) * (2.0 + beta));
} else {
tmp = ((alpha + 1.0) / beta) / beta;
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 5d+77) then
tmp = (alpha + 1.0d0) / ((3.0d0 + beta) * (2.0d0 + beta))
else
tmp = ((alpha + 1.0d0) / beta) / beta
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 5e+77) {
tmp = (alpha + 1.0) / ((3.0 + beta) * (2.0 + beta));
} else {
tmp = ((alpha + 1.0) / beta) / beta;
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if beta <= 5e+77: tmp = (alpha + 1.0) / ((3.0 + beta) * (2.0 + beta)) else: tmp = ((alpha + 1.0) / beta) / beta return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 5e+77) tmp = Float64(Float64(alpha + 1.0) / Float64(Float64(3.0 + beta) * Float64(2.0 + beta))); else tmp = Float64(Float64(Float64(alpha + 1.0) / beta) / beta); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (beta <= 5e+77)
tmp = (alpha + 1.0) / ((3.0 + beta) * (2.0 + beta));
else
tmp = ((alpha + 1.0) / beta) / beta;
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 5e+77], N[(N[(alpha + 1.0), $MachinePrecision] / N[(N[(3.0 + beta), $MachinePrecision] * N[(2.0 + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / beta), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 5 \cdot 10^{+77}:\\
\;\;\;\;\frac{\alpha + 1}{\left(3 + \beta\right) \cdot \left(2 + \beta\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha + 1}{\beta}}{\beta}\\
\end{array}
\end{array}
if beta < 5.00000000000000004e77Initial program 98.8%
Taylor expanded in beta around inf
lower-+.f6420.6
Applied rewrites20.6%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
Applied rewrites38.3%
Taylor expanded in alpha around 0
*-commutativeN/A
lower-*.f64N/A
lower-+.f64N/A
lower-+.f6419.2
Applied rewrites19.2%
if 5.00000000000000004e77 < beta Initial program 79.3%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6486.1
Applied rewrites86.1%
Applied rewrites89.6%
Final simplification37.6%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= beta 1.9e+151) (/ (+ alpha 1.0) (* beta beta)) (/ (/ alpha beta) beta)))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (beta <= 1.9e+151) {
tmp = (alpha + 1.0) / (beta * beta);
} else {
tmp = (alpha / beta) / beta;
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 1.9d+151) then
tmp = (alpha + 1.0d0) / (beta * beta)
else
tmp = (alpha / beta) / beta
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 1.9e+151) {
tmp = (alpha + 1.0) / (beta * beta);
} else {
tmp = (alpha / beta) / beta;
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if beta <= 1.9e+151: tmp = (alpha + 1.0) / (beta * beta) else: tmp = (alpha / beta) / beta return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (beta <= 1.9e+151) tmp = Float64(Float64(alpha + 1.0) / Float64(beta * beta)); else tmp = Float64(Float64(alpha / beta) / beta); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (beta <= 1.9e+151)
tmp = (alpha + 1.0) / (beta * beta);
else
tmp = (alpha / beta) / beta;
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[beta, 1.9e+151], N[(N[(alpha + 1.0), $MachinePrecision] / N[(beta * beta), $MachinePrecision]), $MachinePrecision], N[(N[(alpha / beta), $MachinePrecision] / beta), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 1.9 \cdot 10^{+151}:\\
\;\;\;\;\frac{\alpha + 1}{\beta \cdot \beta}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\alpha}{\beta}}{\beta}\\
\end{array}
\end{array}
if beta < 1.9e151Initial program 97.9%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6418.2
Applied rewrites18.2%
if 1.9e151 < beta Initial program 74.3%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6488.4
Applied rewrites88.4%
Taylor expanded in alpha around inf
Applied rewrites88.4%
Applied rewrites91.5%
Final simplification31.4%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (/ (/ (+ alpha 1.0) beta) beta))
assert(alpha < beta);
double code(double alpha, double beta) {
return ((alpha + 1.0) / beta) / beta;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = ((alpha + 1.0d0) / beta) / beta
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
return ((alpha + 1.0) / beta) / beta;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): return ((alpha + 1.0) / beta) / beta
alpha, beta = sort([alpha, beta]) function code(alpha, beta) return Float64(Float64(Float64(alpha + 1.0) / beta) / beta) end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp = code(alpha, beta)
tmp = ((alpha + 1.0) / beta) / beta;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := N[(N[(N[(alpha + 1.0), $MachinePrecision] / beta), $MachinePrecision] / beta), $MachinePrecision]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\frac{\frac{\alpha + 1}{\beta}}{\beta}
\end{array}
Initial program 93.7%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6430.8
Applied rewrites30.8%
Applied rewrites31.7%
Final simplification31.7%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (if (<= alpha 5e-11) (/ 1.0 (* beta beta)) (/ alpha (* beta beta))))
assert(alpha < beta);
double code(double alpha, double beta) {
double tmp;
if (alpha <= 5e-11) {
tmp = 1.0 / (beta * beta);
} else {
tmp = alpha / (beta * beta);
}
return tmp;
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (alpha <= 5d-11) then
tmp = 1.0d0 / (beta * beta)
else
tmp = alpha / (beta * beta)
end if
code = tmp
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
double tmp;
if (alpha <= 5e-11) {
tmp = 1.0 / (beta * beta);
} else {
tmp = alpha / (beta * beta);
}
return tmp;
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): tmp = 0 if alpha <= 5e-11: tmp = 1.0 / (beta * beta) else: tmp = alpha / (beta * beta) return tmp
alpha, beta = sort([alpha, beta]) function code(alpha, beta) tmp = 0.0 if (alpha <= 5e-11) tmp = Float64(1.0 / Float64(beta * beta)); else tmp = Float64(alpha / Float64(beta * beta)); end return tmp end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp_2 = code(alpha, beta)
tmp = 0.0;
if (alpha <= 5e-11)
tmp = 1.0 / (beta * beta);
else
tmp = alpha / (beta * beta);
end
tmp_2 = tmp;
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := If[LessEqual[alpha, 5e-11], N[(1.0 / N[(beta * beta), $MachinePrecision]), $MachinePrecision], N[(alpha / N[(beta * beta), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 5 \cdot 10^{-11}:\\
\;\;\;\;\frac{1}{\beta \cdot \beta}\\
\mathbf{else}:\\
\;\;\;\;\frac{\alpha}{\beta \cdot \beta}\\
\end{array}
\end{array}
if alpha < 5.00000000000000018e-11Initial program 99.9%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6439.2
Applied rewrites39.2%
Taylor expanded in alpha around 0
Applied rewrites39.0%
if 5.00000000000000018e-11 < alpha Initial program 83.4%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6416.7
Applied rewrites16.7%
Taylor expanded in alpha around inf
Applied rewrites16.7%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (/ (+ alpha 1.0) (* beta beta)))
assert(alpha < beta);
double code(double alpha, double beta) {
return (alpha + 1.0) / (beta * beta);
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = (alpha + 1.0d0) / (beta * beta)
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
return (alpha + 1.0) / (beta * beta);
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): return (alpha + 1.0) / (beta * beta)
alpha, beta = sort([alpha, beta]) function code(alpha, beta) return Float64(Float64(alpha + 1.0) / Float64(beta * beta)) end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp = code(alpha, beta)
tmp = (alpha + 1.0) / (beta * beta);
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := N[(N[(alpha + 1.0), $MachinePrecision] / N[(beta * beta), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\frac{\alpha + 1}{\beta \cdot \beta}
\end{array}
Initial program 93.7%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6430.8
Applied rewrites30.8%
Final simplification30.8%
NOTE: alpha and beta should be sorted in increasing order before calling this function. (FPCore (alpha beta) :precision binary64 (/ alpha (* beta beta)))
assert(alpha < beta);
double code(double alpha, double beta) {
return alpha / (beta * beta);
}
NOTE: alpha and beta should be sorted in increasing order before calling this function.
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = alpha / (beta * beta)
end function
assert alpha < beta;
public static double code(double alpha, double beta) {
return alpha / (beta * beta);
}
[alpha, beta] = sort([alpha, beta]) def code(alpha, beta): return alpha / (beta * beta)
alpha, beta = sort([alpha, beta]) function code(alpha, beta) return Float64(alpha / Float64(beta * beta)) end
alpha, beta = num2cell(sort([alpha, beta])){:}
function tmp = code(alpha, beta)
tmp = alpha / (beta * beta);
end
NOTE: alpha and beta should be sorted in increasing order before calling this function. code[alpha_, beta_] := N[(alpha / N[(beta * beta), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
[alpha, beta] = \mathsf{sort}([alpha, beta])\\
\\
\frac{\alpha}{\beta \cdot \beta}
\end{array}
Initial program 93.7%
Taylor expanded in beta around inf
lower-/.f64N/A
lower-+.f64N/A
unpow2N/A
lower-*.f6430.8
Applied rewrites30.8%
Taylor expanded in alpha around inf
Applied rewrites19.8%
herbie shell --seed 2024276
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/3"
:precision binary64
:pre (and (> alpha -1.0) (> beta -1.0))
(/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0)))