
(FPCore (alpha beta) :precision binary64 (/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))
double code(double alpha, double beta) {
return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = (((beta - alpha) / ((alpha + beta) + 2.0d0)) + 1.0d0) / 2.0d0
end function
public static double code(double alpha, double beta) {
return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0;
}
def code(alpha, beta): return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0
function code(alpha, beta) return Float64(Float64(Float64(Float64(beta - alpha) / Float64(Float64(alpha + beta) + 2.0)) + 1.0) / 2.0) end
function tmp = code(alpha, beta) tmp = (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0; end
code[alpha_, beta_] := N[(N[(N[(N[(beta - alpha), $MachinePrecision] / N[(N[(alpha + beta), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]
\begin{array}{l}
\\
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (alpha beta) :precision binary64 (/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))
double code(double alpha, double beta) {
return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = (((beta - alpha) / ((alpha + beta) + 2.0d0)) + 1.0d0) / 2.0d0
end function
public static double code(double alpha, double beta) {
return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0;
}
def code(alpha, beta): return (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0
function code(alpha, beta) return Float64(Float64(Float64(Float64(beta - alpha) / Float64(Float64(alpha + beta) + 2.0)) + 1.0) / 2.0) end
function tmp = code(alpha, beta) tmp = (((beta - alpha) / ((alpha + beta) + 2.0)) + 1.0) / 2.0; end
code[alpha_, beta_] := N[(N[(N[(N[(beta - alpha), $MachinePrecision] / N[(N[(alpha + beta), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]
\begin{array}{l}
\\
\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2} + 1}{2}
\end{array}
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ beta alpha) 2.0)))
(if (<= (/ (- beta alpha) t_0) -0.9999)
(/
(/
(+
(* (/ (- -2.0 (+ beta beta)) alpha) (+ beta 2.0))
(- (+ beta beta) -2.0))
alpha)
2.0)
(/ (- 1.0 (/ (- alpha beta) t_0)) 2.0))))
double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = (((((-2.0 - (beta + beta)) / alpha) * (beta + 2.0)) + ((beta + beta) - -2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
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 = (beta + alpha) + 2.0d0
if (((beta - alpha) / t_0) <= (-0.9999d0)) then
tmp = ((((((-2.0d0) - (beta + beta)) / alpha) * (beta + 2.0d0)) + ((beta + beta) - (-2.0d0))) / alpha) / 2.0d0
else
tmp = (1.0d0 - ((alpha - beta) / t_0)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = (((((-2.0 - (beta + beta)) / alpha) * (beta + 2.0)) + ((beta + beta) - -2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (beta + alpha) + 2.0 tmp = 0 if ((beta - alpha) / t_0) <= -0.9999: tmp = (((((-2.0 - (beta + beta)) / alpha) * (beta + 2.0)) + ((beta + beta) - -2.0)) / alpha) / 2.0 else: tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(beta + alpha) + 2.0) tmp = 0.0 if (Float64(Float64(beta - alpha) / t_0) <= -0.9999) tmp = Float64(Float64(Float64(Float64(Float64(Float64(-2.0 - Float64(beta + beta)) / alpha) * Float64(beta + 2.0)) + Float64(Float64(beta + beta) - -2.0)) / alpha) / 2.0); else tmp = Float64(Float64(1.0 - Float64(Float64(alpha - beta) / t_0)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (beta + alpha) + 2.0; tmp = 0.0; if (((beta - alpha) / t_0) <= -0.9999) tmp = (((((-2.0 - (beta + beta)) / alpha) * (beta + 2.0)) + ((beta + beta) - -2.0)) / alpha) / 2.0; else tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(beta + alpha), $MachinePrecision] + 2.0), $MachinePrecision]}, If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / t$95$0), $MachinePrecision], -0.9999], N[(N[(N[(N[(N[(N[(-2.0 - N[(beta + beta), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] * N[(beta + 2.0), $MachinePrecision]), $MachinePrecision] + N[(N[(beta + beta), $MachinePrecision] - -2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(1.0 - N[(N[(alpha - beta), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\beta + \alpha\right) + 2\\
\mathbf{if}\;\frac{\beta - \alpha}{t_0} \leq -0.9999:\\
\;\;\;\;\frac{\frac{\frac{-2 - \left(\beta + \beta\right)}{\alpha} \cdot \left(\beta + 2\right) + \left(\left(\beta + \beta\right) - -2\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \frac{\alpha - \beta}{t_0}}{2}\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) < -0.99990000000000001Initial program 7.6%
+-commutative7.6%
Simplified7.6%
Taylor expanded in alpha around -inf 99.9%
Simplified100.0%
associate-*r/100.0%
sub-div100.0%
associate--l-100.0%
+-commutative100.0%
associate--l-100.0%
Applied egg-rr100.0%
if -0.99990000000000001 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) Initial program 99.9%
Final simplification99.9%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ beta alpha) 2.0)))
(if (<= (/ (- beta alpha) t_0) -0.9999)
(/
(/ (+ (/ (* -2.0 (* beta beta)) alpha) (- (+ beta beta) -2.0)) alpha)
2.0)
(/ (- 1.0 (/ (- alpha beta) t_0)) 2.0))))
double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = ((((-2.0 * (beta * beta)) / alpha) + ((beta + beta) - -2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
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 = (beta + alpha) + 2.0d0
if (((beta - alpha) / t_0) <= (-0.9999d0)) then
tmp = (((((-2.0d0) * (beta * beta)) / alpha) + ((beta + beta) - (-2.0d0))) / alpha) / 2.0d0
else
tmp = (1.0d0 - ((alpha - beta) / t_0)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = ((((-2.0 * (beta * beta)) / alpha) + ((beta + beta) - -2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (beta + alpha) + 2.0 tmp = 0 if ((beta - alpha) / t_0) <= -0.9999: tmp = ((((-2.0 * (beta * beta)) / alpha) + ((beta + beta) - -2.0)) / alpha) / 2.0 else: tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(beta + alpha) + 2.0) tmp = 0.0 if (Float64(Float64(beta - alpha) / t_0) <= -0.9999) tmp = Float64(Float64(Float64(Float64(Float64(-2.0 * Float64(beta * beta)) / alpha) + Float64(Float64(beta + beta) - -2.0)) / alpha) / 2.0); else tmp = Float64(Float64(1.0 - Float64(Float64(alpha - beta) / t_0)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (beta + alpha) + 2.0; tmp = 0.0; if (((beta - alpha) / t_0) <= -0.9999) tmp = ((((-2.0 * (beta * beta)) / alpha) + ((beta + beta) - -2.0)) / alpha) / 2.0; else tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(beta + alpha), $MachinePrecision] + 2.0), $MachinePrecision]}, If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / t$95$0), $MachinePrecision], -0.9999], N[(N[(N[(N[(N[(-2.0 * N[(beta * beta), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] + N[(N[(beta + beta), $MachinePrecision] - -2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(1.0 - N[(N[(alpha - beta), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\beta + \alpha\right) + 2\\
\mathbf{if}\;\frac{\beta - \alpha}{t_0} \leq -0.9999:\\
\;\;\;\;\frac{\frac{\frac{-2 \cdot \left(\beta \cdot \beta\right)}{\alpha} + \left(\left(\beta + \beta\right) - -2\right)}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \frac{\alpha - \beta}{t_0}}{2}\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) < -0.99990000000000001Initial program 7.6%
+-commutative7.6%
Simplified7.6%
Taylor expanded in alpha around -inf 99.9%
Simplified100.0%
associate-*r/100.0%
sub-div100.0%
associate--l-100.0%
+-commutative100.0%
associate--l-100.0%
Applied egg-rr100.0%
Taylor expanded in beta around inf 99.3%
associate-*r/99.3%
unpow299.3%
Simplified99.3%
if -0.99990000000000001 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) Initial program 99.9%
Final simplification99.7%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ (+ beta alpha) 2.0)))
(if (<= (/ (- beta alpha) t_0) -0.9999)
(/ (/ (+ 2.0 (* beta 2.0)) alpha) 2.0)
(/ (- 1.0 (/ (- alpha beta) t_0)) 2.0))))
double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
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 = (beta + alpha) + 2.0d0
if (((beta - alpha) / t_0) <= (-0.9999d0)) then
tmp = ((2.0d0 + (beta * 2.0d0)) / alpha) / 2.0d0
else
tmp = (1.0d0 - ((alpha - beta) / t_0)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (beta + alpha) + 2.0;
double tmp;
if (((beta - alpha) / t_0) <= -0.9999) {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (beta + alpha) + 2.0 tmp = 0 if ((beta - alpha) / t_0) <= -0.9999: tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0 else: tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(beta + alpha) + 2.0) tmp = 0.0 if (Float64(Float64(beta - alpha) / t_0) <= -0.9999) tmp = Float64(Float64(Float64(2.0 + Float64(beta * 2.0)) / alpha) / 2.0); else tmp = Float64(Float64(1.0 - Float64(Float64(alpha - beta) / t_0)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (beta + alpha) + 2.0; tmp = 0.0; if (((beta - alpha) / t_0) <= -0.9999) tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0; else tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(beta + alpha), $MachinePrecision] + 2.0), $MachinePrecision]}, If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / t$95$0), $MachinePrecision], -0.9999], N[(N[(N[(2.0 + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(1.0 - N[(N[(alpha - beta), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\beta + \alpha\right) + 2\\
\mathbf{if}\;\frac{\beta - \alpha}{t_0} \leq -0.9999:\\
\;\;\;\;\frac{\frac{2 + \beta \cdot 2}{\alpha}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \frac{\alpha - \beta}{t_0}}{2}\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) < -0.99990000000000001Initial program 7.6%
+-commutative7.6%
Simplified7.6%
Taylor expanded in alpha around inf 98.9%
if -0.99990000000000001 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) 2)) Initial program 99.9%
Final simplification99.6%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (/ (+ 1.0 (* beta 0.5)) 2.0)) (t_1 (/ (/ 2.0 alpha) 2.0)))
(if (<= beta -3.4e-174)
t_0
(if (<= beta -1.5e-207)
t_1
(if (<= beta -5.5e-303)
0.5
(if (<= beta 2.05e-293)
t_1
(if (<= beta 7e-174)
0.5
(if (<= beta 2.7e-127) t_1 (if (<= beta 2.0) t_0 1.0)))))))))
double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -1.5e-207) {
tmp = t_1;
} else if (beta <= -5.5e-303) {
tmp = 0.5;
} else if (beta <= 2.05e-293) {
tmp = t_1;
} else if (beta <= 7e-174) {
tmp = 0.5;
} else if (beta <= 2.7e-127) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = 1.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (1.0d0 + (beta * 0.5d0)) / 2.0d0
t_1 = (2.0d0 / alpha) / 2.0d0
if (beta <= (-3.4d-174)) then
tmp = t_0
else if (beta <= (-1.5d-207)) then
tmp = t_1
else if (beta <= (-5.5d-303)) then
tmp = 0.5d0
else if (beta <= 2.05d-293) then
tmp = t_1
else if (beta <= 7d-174) then
tmp = 0.5d0
else if (beta <= 2.7d-127) then
tmp = t_1
else if (beta <= 2.0d0) then
tmp = t_0
else
tmp = 1.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -1.5e-207) {
tmp = t_1;
} else if (beta <= -5.5e-303) {
tmp = 0.5;
} else if (beta <= 2.05e-293) {
tmp = t_1;
} else if (beta <= 7e-174) {
tmp = 0.5;
} else if (beta <= 2.7e-127) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = 1.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (1.0 + (beta * 0.5)) / 2.0 t_1 = (2.0 / alpha) / 2.0 tmp = 0 if beta <= -3.4e-174: tmp = t_0 elif beta <= -1.5e-207: tmp = t_1 elif beta <= -5.5e-303: tmp = 0.5 elif beta <= 2.05e-293: tmp = t_1 elif beta <= 7e-174: tmp = 0.5 elif beta <= 2.7e-127: tmp = t_1 elif beta <= 2.0: tmp = t_0 else: tmp = 1.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(1.0 + Float64(beta * 0.5)) / 2.0) t_1 = Float64(Float64(2.0 / alpha) / 2.0) tmp = 0.0 if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -1.5e-207) tmp = t_1; elseif (beta <= -5.5e-303) tmp = 0.5; elseif (beta <= 2.05e-293) tmp = t_1; elseif (beta <= 7e-174) tmp = 0.5; elseif (beta <= 2.7e-127) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = 1.0; end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (1.0 + (beta * 0.5)) / 2.0; t_1 = (2.0 / alpha) / 2.0; tmp = 0.0; if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -1.5e-207) tmp = t_1; elseif (beta <= -5.5e-303) tmp = 0.5; elseif (beta <= 2.05e-293) tmp = t_1; elseif (beta <= 7e-174) tmp = 0.5; elseif (beta <= 2.7e-127) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = 1.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(1.0 + N[(beta * 0.5), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(2.0 / alpha), $MachinePrecision] / 2.0), $MachinePrecision]}, If[LessEqual[beta, -3.4e-174], t$95$0, If[LessEqual[beta, -1.5e-207], t$95$1, If[LessEqual[beta, -5.5e-303], 0.5, If[LessEqual[beta, 2.05e-293], t$95$1, If[LessEqual[beta, 7e-174], 0.5, If[LessEqual[beta, 2.7e-127], t$95$1, If[LessEqual[beta, 2.0], t$95$0, 1.0]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1 + \beta \cdot 0.5}{2}\\
t_1 := \frac{\frac{2}{\alpha}}{2}\\
\mathbf{if}\;\beta \leq -3.4 \cdot 10^{-174}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\beta \leq -1.5 \cdot 10^{-207}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq -5.5 \cdot 10^{-303}:\\
\;\;\;\;0.5\\
\mathbf{elif}\;\beta \leq 2.05 \cdot 10^{-293}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 7 \cdot 10^{-174}:\\
\;\;\;\;0.5\\
\mathbf{elif}\;\beta \leq 2.7 \cdot 10^{-127}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 2:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
\end{array}
if beta < -3.4000000000000002e-174 or 2.7e-127 < beta < 2Initial program 67.0%
+-commutative67.0%
Simplified67.0%
Taylor expanded in alpha around 0 66.6%
Taylor expanded in beta around 0 63.9%
*-commutative63.9%
Simplified63.9%
if -3.4000000000000002e-174 < beta < -1.5e-207 or -5.50000000000000018e-303 < beta < 2.04999999999999994e-293 or 6.99999999999999975e-174 < beta < 2.7e-127Initial program 29.2%
+-commutative29.2%
Simplified29.2%
Taylor expanded in alpha around inf 77.6%
Taylor expanded in beta around 0 77.6%
if -1.5e-207 < beta < -5.50000000000000018e-303 or 2.04999999999999994e-293 < beta < 6.99999999999999975e-174Initial program 84.0%
+-commutative84.0%
Simplified84.0%
Taylor expanded in alpha around 0 81.9%
div-inv81.9%
fma-def81.9%
+-commutative81.9%
Applied egg-rr81.9%
Taylor expanded in beta around 0 81.9%
if 2 < beta Initial program 89.7%
+-commutative89.7%
Simplified89.7%
Taylor expanded in beta around inf 87.4%
Final simplification77.3%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (/ (+ 1.0 (* beta 0.5)) 2.0)) (t_1 (/ (/ 2.0 alpha) 2.0)))
(if (<= beta -3.4e-174)
t_0
(if (<= beta -1.5e-207)
t_1
(if (<= beta -5.7e-303)
(/ (- 1.0 (* alpha 0.5)) 2.0)
(if (<= beta 3.8e-289)
t_1
(if (<= beta 4.2e-174)
0.5
(if (<= beta 2.1e-128) t_1 (if (<= beta 2.0) t_0 1.0)))))))))
double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -1.5e-207) {
tmp = t_1;
} else if (beta <= -5.7e-303) {
tmp = (1.0 - (alpha * 0.5)) / 2.0;
} else if (beta <= 3.8e-289) {
tmp = t_1;
} else if (beta <= 4.2e-174) {
tmp = 0.5;
} else if (beta <= 2.1e-128) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = 1.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (1.0d0 + (beta * 0.5d0)) / 2.0d0
t_1 = (2.0d0 / alpha) / 2.0d0
if (beta <= (-3.4d-174)) then
tmp = t_0
else if (beta <= (-1.5d-207)) then
tmp = t_1
else if (beta <= (-5.7d-303)) then
tmp = (1.0d0 - (alpha * 0.5d0)) / 2.0d0
else if (beta <= 3.8d-289) then
tmp = t_1
else if (beta <= 4.2d-174) then
tmp = 0.5d0
else if (beta <= 2.1d-128) then
tmp = t_1
else if (beta <= 2.0d0) then
tmp = t_0
else
tmp = 1.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -1.5e-207) {
tmp = t_1;
} else if (beta <= -5.7e-303) {
tmp = (1.0 - (alpha * 0.5)) / 2.0;
} else if (beta <= 3.8e-289) {
tmp = t_1;
} else if (beta <= 4.2e-174) {
tmp = 0.5;
} else if (beta <= 2.1e-128) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = 1.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (1.0 + (beta * 0.5)) / 2.0 t_1 = (2.0 / alpha) / 2.0 tmp = 0 if beta <= -3.4e-174: tmp = t_0 elif beta <= -1.5e-207: tmp = t_1 elif beta <= -5.7e-303: tmp = (1.0 - (alpha * 0.5)) / 2.0 elif beta <= 3.8e-289: tmp = t_1 elif beta <= 4.2e-174: tmp = 0.5 elif beta <= 2.1e-128: tmp = t_1 elif beta <= 2.0: tmp = t_0 else: tmp = 1.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(1.0 + Float64(beta * 0.5)) / 2.0) t_1 = Float64(Float64(2.0 / alpha) / 2.0) tmp = 0.0 if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -1.5e-207) tmp = t_1; elseif (beta <= -5.7e-303) tmp = Float64(Float64(1.0 - Float64(alpha * 0.5)) / 2.0); elseif (beta <= 3.8e-289) tmp = t_1; elseif (beta <= 4.2e-174) tmp = 0.5; elseif (beta <= 2.1e-128) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = 1.0; end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (1.0 + (beta * 0.5)) / 2.0; t_1 = (2.0 / alpha) / 2.0; tmp = 0.0; if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -1.5e-207) tmp = t_1; elseif (beta <= -5.7e-303) tmp = (1.0 - (alpha * 0.5)) / 2.0; elseif (beta <= 3.8e-289) tmp = t_1; elseif (beta <= 4.2e-174) tmp = 0.5; elseif (beta <= 2.1e-128) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = 1.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(1.0 + N[(beta * 0.5), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(2.0 / alpha), $MachinePrecision] / 2.0), $MachinePrecision]}, If[LessEqual[beta, -3.4e-174], t$95$0, If[LessEqual[beta, -1.5e-207], t$95$1, If[LessEqual[beta, -5.7e-303], N[(N[(1.0 - N[(alpha * 0.5), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[beta, 3.8e-289], t$95$1, If[LessEqual[beta, 4.2e-174], 0.5, If[LessEqual[beta, 2.1e-128], t$95$1, If[LessEqual[beta, 2.0], t$95$0, 1.0]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1 + \beta \cdot 0.5}{2}\\
t_1 := \frac{\frac{2}{\alpha}}{2}\\
\mathbf{if}\;\beta \leq -3.4 \cdot 10^{-174}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\beta \leq -1.5 \cdot 10^{-207}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq -5.7 \cdot 10^{-303}:\\
\;\;\;\;\frac{1 - \alpha \cdot 0.5}{2}\\
\mathbf{elif}\;\beta \leq 3.8 \cdot 10^{-289}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 4.2 \cdot 10^{-174}:\\
\;\;\;\;0.5\\
\mathbf{elif}\;\beta \leq 2.1 \cdot 10^{-128}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 2:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
\end{array}
if beta < -3.4000000000000002e-174 or 2.1000000000000001e-128 < beta < 2Initial program 67.0%
+-commutative67.0%
Simplified67.0%
Taylor expanded in alpha around 0 66.6%
Taylor expanded in beta around 0 63.9%
*-commutative63.9%
Simplified63.9%
if -3.4000000000000002e-174 < beta < -1.5e-207 or -5.69999999999999981e-303 < beta < 3.80000000000000009e-289 or 4.20000000000000021e-174 < beta < 2.1000000000000001e-128Initial program 29.2%
+-commutative29.2%
Simplified29.2%
Taylor expanded in alpha around inf 77.6%
Taylor expanded in beta around 0 77.6%
if -1.5e-207 < beta < -5.69999999999999981e-303Initial program 88.2%
+-commutative88.2%
Simplified88.2%
Taylor expanded in beta around 0 88.2%
+-commutative88.2%
Simplified88.2%
Taylor expanded in alpha around 0 84.3%
if 3.80000000000000009e-289 < beta < 4.20000000000000021e-174Initial program 79.8%
+-commutative79.8%
Simplified79.8%
Taylor expanded in alpha around 0 79.6%
div-inv79.6%
fma-def79.6%
+-commutative79.6%
Applied egg-rr79.6%
Taylor expanded in beta around 0 79.6%
if 2 < beta Initial program 89.7%
+-commutative89.7%
Simplified89.7%
Taylor expanded in beta around inf 87.4%
Final simplification77.3%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (/ (+ 1.0 (* beta 0.5)) 2.0)) (t_1 (/ (/ 2.0 alpha) 2.0)))
(if (<= beta -3.4e-174)
t_0
(if (<= beta -6.8e-208)
t_1
(if (<= beta -5.5e-303)
(/ (- 1.0 (* alpha 0.5)) 2.0)
(if (<= beta 2.3e-292)
t_1
(if (<= beta 6e-175)
0.5
(if (<= beta 2.1e-128)
t_1
(if (<= beta 2.0) t_0 (/ (- 2.0 (/ 2.0 beta)) 2.0))))))))))
double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -6.8e-208) {
tmp = t_1;
} else if (beta <= -5.5e-303) {
tmp = (1.0 - (alpha * 0.5)) / 2.0;
} else if (beta <= 2.3e-292) {
tmp = t_1;
} else if (beta <= 6e-175) {
tmp = 0.5;
} else if (beta <= 2.1e-128) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = (2.0 - (2.0 / beta)) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (1.0d0 + (beta * 0.5d0)) / 2.0d0
t_1 = (2.0d0 / alpha) / 2.0d0
if (beta <= (-3.4d-174)) then
tmp = t_0
else if (beta <= (-6.8d-208)) then
tmp = t_1
else if (beta <= (-5.5d-303)) then
tmp = (1.0d0 - (alpha * 0.5d0)) / 2.0d0
else if (beta <= 2.3d-292) then
tmp = t_1
else if (beta <= 6d-175) then
tmp = 0.5d0
else if (beta <= 2.1d-128) then
tmp = t_1
else if (beta <= 2.0d0) then
tmp = t_0
else
tmp = (2.0d0 - (2.0d0 / beta)) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double t_0 = (1.0 + (beta * 0.5)) / 2.0;
double t_1 = (2.0 / alpha) / 2.0;
double tmp;
if (beta <= -3.4e-174) {
tmp = t_0;
} else if (beta <= -6.8e-208) {
tmp = t_1;
} else if (beta <= -5.5e-303) {
tmp = (1.0 - (alpha * 0.5)) / 2.0;
} else if (beta <= 2.3e-292) {
tmp = t_1;
} else if (beta <= 6e-175) {
tmp = 0.5;
} else if (beta <= 2.1e-128) {
tmp = t_1;
} else if (beta <= 2.0) {
tmp = t_0;
} else {
tmp = (2.0 - (2.0 / beta)) / 2.0;
}
return tmp;
}
def code(alpha, beta): t_0 = (1.0 + (beta * 0.5)) / 2.0 t_1 = (2.0 / alpha) / 2.0 tmp = 0 if beta <= -3.4e-174: tmp = t_0 elif beta <= -6.8e-208: tmp = t_1 elif beta <= -5.5e-303: tmp = (1.0 - (alpha * 0.5)) / 2.0 elif beta <= 2.3e-292: tmp = t_1 elif beta <= 6e-175: tmp = 0.5 elif beta <= 2.1e-128: tmp = t_1 elif beta <= 2.0: tmp = t_0 else: tmp = (2.0 - (2.0 / beta)) / 2.0 return tmp
function code(alpha, beta) t_0 = Float64(Float64(1.0 + Float64(beta * 0.5)) / 2.0) t_1 = Float64(Float64(2.0 / alpha) / 2.0) tmp = 0.0 if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -6.8e-208) tmp = t_1; elseif (beta <= -5.5e-303) tmp = Float64(Float64(1.0 - Float64(alpha * 0.5)) / 2.0); elseif (beta <= 2.3e-292) tmp = t_1; elseif (beta <= 6e-175) tmp = 0.5; elseif (beta <= 2.1e-128) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = Float64(Float64(2.0 - Float64(2.0 / beta)) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) t_0 = (1.0 + (beta * 0.5)) / 2.0; t_1 = (2.0 / alpha) / 2.0; tmp = 0.0; if (beta <= -3.4e-174) tmp = t_0; elseif (beta <= -6.8e-208) tmp = t_1; elseif (beta <= -5.5e-303) tmp = (1.0 - (alpha * 0.5)) / 2.0; elseif (beta <= 2.3e-292) tmp = t_1; elseif (beta <= 6e-175) tmp = 0.5; elseif (beta <= 2.1e-128) tmp = t_1; elseif (beta <= 2.0) tmp = t_0; else tmp = (2.0 - (2.0 / beta)) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := Block[{t$95$0 = N[(N[(1.0 + N[(beta * 0.5), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(2.0 / alpha), $MachinePrecision] / 2.0), $MachinePrecision]}, If[LessEqual[beta, -3.4e-174], t$95$0, If[LessEqual[beta, -6.8e-208], t$95$1, If[LessEqual[beta, -5.5e-303], N[(N[(1.0 - N[(alpha * 0.5), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[beta, 2.3e-292], t$95$1, If[LessEqual[beta, 6e-175], 0.5, If[LessEqual[beta, 2.1e-128], t$95$1, If[LessEqual[beta, 2.0], t$95$0, N[(N[(2.0 - N[(2.0 / beta), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1 + \beta \cdot 0.5}{2}\\
t_1 := \frac{\frac{2}{\alpha}}{2}\\
\mathbf{if}\;\beta \leq -3.4 \cdot 10^{-174}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;\beta \leq -6.8 \cdot 10^{-208}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq -5.5 \cdot 10^{-303}:\\
\;\;\;\;\frac{1 - \alpha \cdot 0.5}{2}\\
\mathbf{elif}\;\beta \leq 2.3 \cdot 10^{-292}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 6 \cdot 10^{-175}:\\
\;\;\;\;0.5\\
\mathbf{elif}\;\beta \leq 2.1 \cdot 10^{-128}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\beta \leq 2:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{2 - \frac{2}{\beta}}{2}\\
\end{array}
\end{array}
if beta < -3.4000000000000002e-174 or 2.1000000000000001e-128 < beta < 2Initial program 67.0%
+-commutative67.0%
Simplified67.0%
Taylor expanded in alpha around 0 66.6%
Taylor expanded in beta around 0 63.9%
*-commutative63.9%
Simplified63.9%
if -3.4000000000000002e-174 < beta < -6.8e-208 or -5.50000000000000018e-303 < beta < 2.2999999999999999e-292 or 6e-175 < beta < 2.1000000000000001e-128Initial program 29.2%
+-commutative29.2%
Simplified29.2%
Taylor expanded in alpha around inf 77.6%
Taylor expanded in beta around 0 77.6%
if -6.8e-208 < beta < -5.50000000000000018e-303Initial program 88.2%
+-commutative88.2%
Simplified88.2%
Taylor expanded in beta around 0 88.2%
+-commutative88.2%
Simplified88.2%
Taylor expanded in alpha around 0 84.3%
if 2.2999999999999999e-292 < beta < 6e-175Initial program 79.8%
+-commutative79.8%
Simplified79.8%
Taylor expanded in alpha around 0 79.6%
div-inv79.6%
fma-def79.6%
+-commutative79.6%
Applied egg-rr79.6%
Taylor expanded in beta around 0 79.6%
if 2 < beta Initial program 89.7%
+-commutative89.7%
Simplified89.7%
Taylor expanded in alpha around 0 89.3%
Taylor expanded in beta around inf 88.8%
associate-*r/88.8%
metadata-eval88.8%
Simplified88.8%
Final simplification77.8%
(FPCore (alpha beta)
:precision binary64
(if (<= alpha -6.2e-33)
1.0
(if (<= alpha -2.15e-253)
0.5
(if (<= alpha -1.55e-264)
1.0
(if (<= alpha 0.92) 0.5 (/ (/ 2.0 alpha) 2.0))))))
double code(double alpha, double beta) {
double tmp;
if (alpha <= -6.2e-33) {
tmp = 1.0;
} else if (alpha <= -2.15e-253) {
tmp = 0.5;
} else if (alpha <= -1.55e-264) {
tmp = 1.0;
} else if (alpha <= 0.92) {
tmp = 0.5;
} else {
tmp = (2.0 / alpha) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (alpha <= (-6.2d-33)) then
tmp = 1.0d0
else if (alpha <= (-2.15d-253)) then
tmp = 0.5d0
else if (alpha <= (-1.55d-264)) then
tmp = 1.0d0
else if (alpha <= 0.92d0) then
tmp = 0.5d0
else
tmp = (2.0d0 / alpha) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double tmp;
if (alpha <= -6.2e-33) {
tmp = 1.0;
} else if (alpha <= -2.15e-253) {
tmp = 0.5;
} else if (alpha <= -1.55e-264) {
tmp = 1.0;
} else if (alpha <= 0.92) {
tmp = 0.5;
} else {
tmp = (2.0 / alpha) / 2.0;
}
return tmp;
}
def code(alpha, beta): tmp = 0 if alpha <= -6.2e-33: tmp = 1.0 elif alpha <= -2.15e-253: tmp = 0.5 elif alpha <= -1.55e-264: tmp = 1.0 elif alpha <= 0.92: tmp = 0.5 else: tmp = (2.0 / alpha) / 2.0 return tmp
function code(alpha, beta) tmp = 0.0 if (alpha <= -6.2e-33) tmp = 1.0; elseif (alpha <= -2.15e-253) tmp = 0.5; elseif (alpha <= -1.55e-264) tmp = 1.0; elseif (alpha <= 0.92) tmp = 0.5; else tmp = Float64(Float64(2.0 / alpha) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) tmp = 0.0; if (alpha <= -6.2e-33) tmp = 1.0; elseif (alpha <= -2.15e-253) tmp = 0.5; elseif (alpha <= -1.55e-264) tmp = 1.0; elseif (alpha <= 0.92) tmp = 0.5; else tmp = (2.0 / alpha) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := If[LessEqual[alpha, -6.2e-33], 1.0, If[LessEqual[alpha, -2.15e-253], 0.5, If[LessEqual[alpha, -1.55e-264], 1.0, If[LessEqual[alpha, 0.92], 0.5, N[(N[(2.0 / alpha), $MachinePrecision] / 2.0), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq -6.2 \cdot 10^{-33}:\\
\;\;\;\;1\\
\mathbf{elif}\;\alpha \leq -2.15 \cdot 10^{-253}:\\
\;\;\;\;0.5\\
\mathbf{elif}\;\alpha \leq -1.55 \cdot 10^{-264}:\\
\;\;\;\;1\\
\mathbf{elif}\;\alpha \leq 0.92:\\
\;\;\;\;0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < -6.19999999999999994e-33 or -2.1500000000000001e-253 < alpha < -1.5500000000000001e-264Initial program 99.9%
+-commutative99.9%
Simplified99.9%
Taylor expanded in beta around inf 86.3%
if -6.19999999999999994e-33 < alpha < -2.1500000000000001e-253 or -1.5500000000000001e-264 < alpha < 0.92000000000000004Initial program 100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in alpha around 0 99.4%
div-inv99.4%
fma-def99.4%
+-commutative99.4%
Applied egg-rr99.4%
Taylor expanded in beta around 0 69.9%
if 0.92000000000000004 < alpha Initial program 20.7%
+-commutative20.7%
Simplified20.7%
Taylor expanded in alpha around inf 85.9%
Taylor expanded in beta around 0 73.8%
Final simplification72.2%
(FPCore (alpha beta) :precision binary64 (if (<= alpha 8800.0) (/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0) (/ (/ 2.0 alpha) 2.0)))
double code(double alpha, double beta) {
double tmp;
if (alpha <= 8800.0) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = (2.0 / alpha) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (alpha <= 8800.0d0) then
tmp = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
else
tmp = (2.0d0 / alpha) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double tmp;
if (alpha <= 8800.0) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = (2.0 / alpha) / 2.0;
}
return tmp;
}
def code(alpha, beta): tmp = 0 if alpha <= 8800.0: tmp = (1.0 + (beta / (beta + 2.0))) / 2.0 else: tmp = (2.0 / alpha) / 2.0 return tmp
function code(alpha, beta) tmp = 0.0 if (alpha <= 8800.0) tmp = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0); else tmp = Float64(Float64(2.0 / alpha) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) tmp = 0.0; if (alpha <= 8800.0) tmp = (1.0 + (beta / (beta + 2.0))) / 2.0; else tmp = (2.0 / alpha) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := If[LessEqual[alpha, 8800.0], N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(2.0 / alpha), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 8800:\\
\;\;\;\;\frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 8800Initial program 100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in alpha around 0 99.1%
if 8800 < alpha Initial program 20.7%
+-commutative20.7%
Simplified20.7%
Taylor expanded in alpha around inf 85.9%
Taylor expanded in beta around 0 73.8%
Final simplification90.9%
(FPCore (alpha beta) :precision binary64 (if (<= alpha 10500.0) (/ (+ 1.0 (/ beta (+ beta 2.0))) 2.0) (/ (/ (+ 2.0 (* beta 2.0)) alpha) 2.0)))
double code(double alpha, double beta) {
double tmp;
if (alpha <= 10500.0) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (alpha <= 10500.0d0) then
tmp = (1.0d0 + (beta / (beta + 2.0d0))) / 2.0d0
else
tmp = ((2.0d0 + (beta * 2.0d0)) / alpha) / 2.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double tmp;
if (alpha <= 10500.0) {
tmp = (1.0 + (beta / (beta + 2.0))) / 2.0;
} else {
tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0;
}
return tmp;
}
def code(alpha, beta): tmp = 0 if alpha <= 10500.0: tmp = (1.0 + (beta / (beta + 2.0))) / 2.0 else: tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0 return tmp
function code(alpha, beta) tmp = 0.0 if (alpha <= 10500.0) tmp = Float64(Float64(1.0 + Float64(beta / Float64(beta + 2.0))) / 2.0); else tmp = Float64(Float64(Float64(2.0 + Float64(beta * 2.0)) / alpha) / 2.0); end return tmp end
function tmp_2 = code(alpha, beta) tmp = 0.0; if (alpha <= 10500.0) tmp = (1.0 + (beta / (beta + 2.0))) / 2.0; else tmp = ((2.0 + (beta * 2.0)) / alpha) / 2.0; end tmp_2 = tmp; end
code[alpha_, beta_] := If[LessEqual[alpha, 10500.0], N[(N[(1.0 + N[(beta / N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(N[(N[(2.0 + N[(beta * 2.0), $MachinePrecision]), $MachinePrecision] / alpha), $MachinePrecision] / 2.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\alpha \leq 10500:\\
\;\;\;\;\frac{1 + \frac{\beta}{\beta + 2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2 + \beta \cdot 2}{\alpha}}{2}\\
\end{array}
\end{array}
if alpha < 10500Initial program 100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in alpha around 0 99.1%
if 10500 < alpha Initial program 20.7%
+-commutative20.7%
Simplified20.7%
Taylor expanded in alpha around inf 85.9%
Final simplification94.8%
(FPCore (alpha beta) :precision binary64 (if (<= beta 2.0) 0.5 1.0))
double code(double alpha, double beta) {
double tmp;
if (beta <= 2.0) {
tmp = 0.5;
} else {
tmp = 1.0;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (beta <= 2.0d0) then
tmp = 0.5d0
else
tmp = 1.0d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double tmp;
if (beta <= 2.0) {
tmp = 0.5;
} else {
tmp = 1.0;
}
return tmp;
}
def code(alpha, beta): tmp = 0 if beta <= 2.0: tmp = 0.5 else: tmp = 1.0 return tmp
function code(alpha, beta) tmp = 0.0 if (beta <= 2.0) tmp = 0.5; else tmp = 1.0; end return tmp end
function tmp_2 = code(alpha, beta) tmp = 0.0; if (beta <= 2.0) tmp = 0.5; else tmp = 1.0; end tmp_2 = tmp; end
code[alpha_, beta_] := If[LessEqual[beta, 2.0], 0.5, 1.0]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 2:\\
\;\;\;\;0.5\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
\end{array}
if beta < 2Initial program 66.4%
+-commutative66.4%
Simplified66.4%
Taylor expanded in alpha around 0 64.4%
div-inv64.4%
fma-def64.4%
+-commutative64.4%
Applied egg-rr64.4%
Taylor expanded in beta around 0 62.0%
if 2 < beta Initial program 89.7%
+-commutative89.7%
Simplified89.7%
Taylor expanded in beta around inf 87.4%
Final simplification70.6%
(FPCore (alpha beta) :precision binary64 0.5)
double code(double alpha, double beta) {
return 0.5;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
code = 0.5d0
end function
public static double code(double alpha, double beta) {
return 0.5;
}
def code(alpha, beta): return 0.5
function code(alpha, beta) return 0.5 end
function tmp = code(alpha, beta) tmp = 0.5; end
code[alpha_, beta_] := 0.5
\begin{array}{l}
\\
0.5
\end{array}
Initial program 74.3%
+-commutative74.3%
Simplified74.3%
Taylor expanded in alpha around 0 72.9%
div-inv72.9%
fma-def72.9%
+-commutative72.9%
Applied egg-rr72.9%
Taylor expanded in beta around 0 46.8%
Final simplification46.8%
herbie shell --seed 2023271
(FPCore (alpha beta)
:name "Octave 3.8, jcobi/1"
:precision binary64
:pre (and (> alpha -1.0) (> beta -1.0))
(/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))