
(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 10 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 (+ 2.0 (+ alpha beta))))
(if (<= (/ (- beta alpha) t_0) -0.99999)
(/
(/
(fma (- -2.0 beta) (/ (fma 2.0 beta 2.0) alpha) (fma 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 = 2.0 + (alpha + beta);
double tmp;
if (((beta - alpha) / t_0) <= -0.99999) {
tmp = (fma((-2.0 - beta), (fma(2.0, beta, 2.0) / alpha), fma(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(2.0 + Float64(alpha + beta)) tmp = 0.0 if (Float64(Float64(beta - alpha) / t_0) <= -0.99999) tmp = Float64(Float64(fma(Float64(-2.0 - beta), Float64(fma(2.0, beta, 2.0) / alpha), fma(2.0, beta, 2.0)) / alpha) / 2.0); else tmp = Float64(Float64(1.0 - Float64(Float64(alpha - beta) / t_0)) / 2.0); end return tmp end
code[alpha_, beta_] := Block[{t$95$0 = N[(2.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / t$95$0), $MachinePrecision], -0.99999], N[(N[(N[(N[(-2.0 - beta), $MachinePrecision] * N[(N[(2.0 * beta + 2.0), $MachinePrecision] / alpha), $MachinePrecision] + N[(2.0 * 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 := 2 + \left(\alpha + \beta\right)\\
\mathbf{if}\;\frac{\beta - \alpha}{t\_0} \leq -0.99999:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(-2 - \beta, \frac{\mathsf{fma}\left(2, \beta, 2\right)}{\alpha}, \mathsf{fma}\left(2, \beta, 2\right)\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) #s(literal 2 binary64))) < -0.999990000000000046Initial program 7.2%
Taylor expanded in alpha around -inf
Applied rewrites100.0%
if -0.999990000000000046 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) Initial program 99.7%
Final simplification99.8%
(FPCore (alpha beta)
:precision binary64
(let* ((t_0 (+ 2.0 (+ alpha beta))))
(if (<= (/ (- beta alpha) t_0) -0.999999995)
(* 0.5 (/ (fma 2.0 beta 2.0) alpha))
(/ (- 1.0 (/ (- alpha beta) t_0)) 2.0))))
double code(double alpha, double beta) {
double t_0 = 2.0 + (alpha + beta);
double tmp;
if (((beta - alpha) / t_0) <= -0.999999995) {
tmp = 0.5 * (fma(2.0, beta, 2.0) / alpha);
} else {
tmp = (1.0 - ((alpha - beta) / t_0)) / 2.0;
}
return tmp;
}
function code(alpha, beta) t_0 = Float64(2.0 + Float64(alpha + beta)) tmp = 0.0 if (Float64(Float64(beta - alpha) / t_0) <= -0.999999995) tmp = Float64(0.5 * Float64(fma(2.0, beta, 2.0) / alpha)); else tmp = Float64(Float64(1.0 - Float64(Float64(alpha - beta) / t_0)) / 2.0); end return tmp end
code[alpha_, beta_] := Block[{t$95$0 = N[(2.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / t$95$0), $MachinePrecision], -0.999999995], N[(0.5 * N[(N[(2.0 * beta + 2.0), $MachinePrecision] / alpha), $MachinePrecision]), $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 := 2 + \left(\alpha + \beta\right)\\
\mathbf{if}\;\frac{\beta - \alpha}{t\_0} \leq -0.999999995:\\
\;\;\;\;0.5 \cdot \frac{\mathsf{fma}\left(2, \beta, 2\right)}{\alpha}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 - \frac{\alpha - \beta}{t\_0}}{2}\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) < -0.99999999500000003Initial program 6.4%
Taylor expanded in beta around inf
Applied rewrites5.4%
Taylor expanded in alpha around inf
*-commutativeN/A
div-addN/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
div-addN/A
lower-/.f64N/A
+-commutativeN/A
lower-fma.f6499.5
Applied rewrites99.5%
if -0.99999999500000003 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) Initial program 99.6%
Final simplification99.5%
(FPCore (alpha beta) :precision binary64 (if (<= (/ (- beta alpha) (+ 2.0 (+ alpha beta))) -0.5) (* 0.5 (/ (fma 2.0 beta 2.0) alpha)) (fma beta (/ 0.5 (+ 2.0 beta)) 0.5)))
double code(double alpha, double beta) {
double tmp;
if (((beta - alpha) / (2.0 + (alpha + beta))) <= -0.5) {
tmp = 0.5 * (fma(2.0, beta, 2.0) / alpha);
} else {
tmp = fma(beta, (0.5 / (2.0 + beta)), 0.5);
}
return tmp;
}
function code(alpha, beta) tmp = 0.0 if (Float64(Float64(beta - alpha) / Float64(2.0 + Float64(alpha + beta))) <= -0.5) tmp = Float64(0.5 * Float64(fma(2.0, beta, 2.0) / alpha)); else tmp = fma(beta, Float64(0.5 / Float64(2.0 + beta)), 0.5); end return tmp end
code[alpha_, beta_] := If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / N[(2.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -0.5], N[(0.5 * N[(N[(2.0 * beta + 2.0), $MachinePrecision] / alpha), $MachinePrecision]), $MachinePrecision], N[(beta * N[(0.5 / N[(2.0 + beta), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{\beta - \alpha}{2 + \left(\alpha + \beta\right)} \leq -0.5:\\
\;\;\;\;0.5 \cdot \frac{\mathsf{fma}\left(2, \beta, 2\right)}{\alpha}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\beta, \frac{0.5}{2 + \beta}, 0.5\right)\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) < -0.5Initial program 10.4%
Taylor expanded in beta around inf
Applied rewrites5.8%
Taylor expanded in alpha around inf
*-commutativeN/A
div-addN/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
div-addN/A
lower-/.f64N/A
+-commutativeN/A
lower-fma.f6496.4
Applied rewrites96.4%
if -0.5 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) Initial program 100.0%
Taylor expanded in beta around inf
Applied rewrites50.7%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6498.6
Applied rewrites98.6%
Applied rewrites98.6%
Applied rewrites98.6%
Final simplification98.0%
(FPCore (alpha beta) :precision binary64 (if (<= (/ (- beta alpha) (+ 2.0 (+ alpha beta))) 0.5) 0.5 (* 2.0 0.5)))
double code(double alpha, double beta) {
double tmp;
if (((beta - alpha) / (2.0 + (alpha + beta))) <= 0.5) {
tmp = 0.5;
} else {
tmp = 2.0 * 0.5;
}
return tmp;
}
real(8) function code(alpha, beta)
real(8), intent (in) :: alpha
real(8), intent (in) :: beta
real(8) :: tmp
if (((beta - alpha) / (2.0d0 + (alpha + beta))) <= 0.5d0) then
tmp = 0.5d0
else
tmp = 2.0d0 * 0.5d0
end if
code = tmp
end function
public static double code(double alpha, double beta) {
double tmp;
if (((beta - alpha) / (2.0 + (alpha + beta))) <= 0.5) {
tmp = 0.5;
} else {
tmp = 2.0 * 0.5;
}
return tmp;
}
def code(alpha, beta): tmp = 0 if ((beta - alpha) / (2.0 + (alpha + beta))) <= 0.5: tmp = 0.5 else: tmp = 2.0 * 0.5 return tmp
function code(alpha, beta) tmp = 0.0 if (Float64(Float64(beta - alpha) / Float64(2.0 + Float64(alpha + beta))) <= 0.5) tmp = 0.5; else tmp = Float64(2.0 * 0.5); end return tmp end
function tmp_2 = code(alpha, beta) tmp = 0.0; if (((beta - alpha) / (2.0 + (alpha + beta))) <= 0.5) tmp = 0.5; else tmp = 2.0 * 0.5; end tmp_2 = tmp; end
code[alpha_, beta_] := If[LessEqual[N[(N[(beta - alpha), $MachinePrecision] / N[(2.0 + N[(alpha + beta), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.5], 0.5, N[(2.0 * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{\beta - \alpha}{2 + \left(\alpha + \beta\right)} \leq 0.5:\\
\;\;\;\;0.5\\
\mathbf{else}:\\
\;\;\;\;2 \cdot 0.5\\
\end{array}
\end{array}
if (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) < 0.5Initial program 63.7%
Taylor expanded in beta around inf
Applied rewrites13.5%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6460.6
Applied rewrites60.6%
Taylor expanded in beta around 0
Applied rewrites60.2%
if 0.5 < (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) #s(literal 2 binary64))) Initial program 100.0%
Taylor expanded in beta around inf
Applied rewrites95.7%
lift-/.f64N/A
div-invN/A
lower-*.f64N/A
metadata-eval95.7
Applied rewrites95.7%
Final simplification70.7%
(FPCore (alpha beta) :precision binary64 (if (<= beta 7.2e-74) (* (- 1.0 (/ alpha (+ 2.0 alpha))) 0.5) (fma beta (/ 0.5 (+ 2.0 beta)) 0.5)))
double code(double alpha, double beta) {
double tmp;
if (beta <= 7.2e-74) {
tmp = (1.0 - (alpha / (2.0 + alpha))) * 0.5;
} else {
tmp = fma(beta, (0.5 / (2.0 + beta)), 0.5);
}
return tmp;
}
function code(alpha, beta) tmp = 0.0 if (beta <= 7.2e-74) tmp = Float64(Float64(1.0 - Float64(alpha / Float64(2.0 + alpha))) * 0.5); else tmp = fma(beta, Float64(0.5 / Float64(2.0 + beta)), 0.5); end return tmp end
code[alpha_, beta_] := If[LessEqual[beta, 7.2e-74], N[(N[(1.0 - N[(alpha / N[(2.0 + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision], N[(beta * N[(0.5 / N[(2.0 + beta), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 7.2 \cdot 10^{-74}:\\
\;\;\;\;\left(1 - \frac{\alpha}{2 + \alpha}\right) \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\beta, \frac{0.5}{2 + \beta}, 0.5\right)\\
\end{array}
\end{array}
if beta < 7.2000000000000005e-74Initial program 70.2%
Taylor expanded in beta around inf
Applied rewrites14.3%
Taylor expanded in beta around 0
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower-+.f6469.7
Applied rewrites69.7%
if 7.2000000000000005e-74 < beta Initial program 80.4%
Taylor expanded in beta around inf
Applied rewrites70.7%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6479.4
Applied rewrites79.4%
Applied rewrites79.4%
Applied rewrites79.4%
(FPCore (alpha beta) :precision binary64 (if (<= beta 2.0) (fma (fma -0.125 beta 0.25) beta 0.5) (- 1.0 (/ 1.0 beta))))
double code(double alpha, double beta) {
double tmp;
if (beta <= 2.0) {
tmp = fma(fma(-0.125, beta, 0.25), beta, 0.5);
} else {
tmp = 1.0 - (1.0 / beta);
}
return tmp;
}
function code(alpha, beta) tmp = 0.0 if (beta <= 2.0) tmp = fma(fma(-0.125, beta, 0.25), beta, 0.5); else tmp = Float64(1.0 - Float64(1.0 / beta)); end return tmp end
code[alpha_, beta_] := If[LessEqual[beta, 2.0], N[(N[(-0.125 * beta + 0.25), $MachinePrecision] * beta + 0.5), $MachinePrecision], N[(1.0 - N[(1.0 / beta), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 2:\\
\;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(-0.125, \beta, 0.25\right), \beta, 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \frac{1}{\beta}\\
\end{array}
\end{array}
if beta < 2Initial program 68.8%
Taylor expanded in beta around inf
Applied rewrites14.1%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6465.9
Applied rewrites65.9%
Taylor expanded in beta around 0
Applied rewrites65.9%
if 2 < beta Initial program 84.4%
Taylor expanded in beta around inf
Applied rewrites80.2%
Taylor expanded in beta around inf
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-fma.f6480.2
Applied rewrites80.2%
Taylor expanded in alpha around 0
Applied rewrites80.7%
(FPCore (alpha beta) :precision binary64 (fma beta (/ 0.5 (+ 2.0 beta)) 0.5))
double code(double alpha, double beta) {
return fma(beta, (0.5 / (2.0 + beta)), 0.5);
}
function code(alpha, beta) return fma(beta, Float64(0.5 / Float64(2.0 + beta)), 0.5) end
code[alpha_, beta_] := N[(beta * N[(0.5 / N[(2.0 + beta), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(\beta, \frac{0.5}{2 + \beta}, 0.5\right)
\end{array}
Initial program 74.4%
Taylor expanded in beta around inf
Applied rewrites37.9%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6472.1
Applied rewrites72.1%
Applied rewrites72.1%
Applied rewrites72.1%
(FPCore (alpha beta) :precision binary64 (if (<= beta 2.0) (fma (fma -0.125 beta 0.25) beta 0.5) (* 2.0 0.5)))
double code(double alpha, double beta) {
double tmp;
if (beta <= 2.0) {
tmp = fma(fma(-0.125, beta, 0.25), beta, 0.5);
} else {
tmp = 2.0 * 0.5;
}
return tmp;
}
function code(alpha, beta) tmp = 0.0 if (beta <= 2.0) tmp = fma(fma(-0.125, beta, 0.25), beta, 0.5); else tmp = Float64(2.0 * 0.5); end return tmp end
code[alpha_, beta_] := If[LessEqual[beta, 2.0], N[(N[(-0.125 * beta + 0.25), $MachinePrecision] * beta + 0.5), $MachinePrecision], N[(2.0 * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 2:\\
\;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(-0.125, \beta, 0.25\right), \beta, 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;2 \cdot 0.5\\
\end{array}
\end{array}
if beta < 2Initial program 68.8%
Taylor expanded in beta around inf
Applied rewrites14.1%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6465.9
Applied rewrites65.9%
Taylor expanded in beta around 0
Applied rewrites65.9%
if 2 < beta Initial program 84.4%
Taylor expanded in beta around inf
Applied rewrites80.2%
lift-/.f64N/A
div-invN/A
lower-*.f64N/A
metadata-eval80.2
Applied rewrites80.2%
(FPCore (alpha beta) :precision binary64 (if (<= beta 2.0) (fma 0.25 beta 0.5) (* 2.0 0.5)))
double code(double alpha, double beta) {
double tmp;
if (beta <= 2.0) {
tmp = fma(0.25, beta, 0.5);
} else {
tmp = 2.0 * 0.5;
}
return tmp;
}
function code(alpha, beta) tmp = 0.0 if (beta <= 2.0) tmp = fma(0.25, beta, 0.5); else tmp = Float64(2.0 * 0.5); end return tmp end
code[alpha_, beta_] := If[LessEqual[beta, 2.0], N[(0.25 * beta + 0.5), $MachinePrecision], N[(2.0 * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\beta \leq 2:\\
\;\;\;\;\mathsf{fma}\left(0.25, \beta, 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;2 \cdot 0.5\\
\end{array}
\end{array}
if beta < 2Initial program 68.8%
Taylor expanded in beta around inf
Applied rewrites14.1%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6465.9
Applied rewrites65.9%
Taylor expanded in beta around 0
Applied rewrites65.9%
if 2 < beta Initial program 84.4%
Taylor expanded in beta around inf
Applied rewrites80.2%
lift-/.f64N/A
div-invN/A
lower-*.f64N/A
metadata-eval80.2
Applied rewrites80.2%
(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.4%
Taylor expanded in beta around inf
Applied rewrites37.9%
Taylor expanded in alpha around 0
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
lower-+.f6472.1
Applied rewrites72.1%
Taylor expanded in beta around 0
Applied rewrites47.9%
herbie shell --seed 2024312
(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))