
(FPCore (x) :precision binary64 (/ 2.0 (+ (exp x) (exp (- x)))))
double code(double x) {
return 2.0 / (exp(x) + exp(-x));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (exp(x) + exp(-x))
end function
public static double code(double x) {
return 2.0 / (Math.exp(x) + Math.exp(-x));
}
def code(x): return 2.0 / (math.exp(x) + math.exp(-x))
function code(x) return Float64(2.0 / Float64(exp(x) + exp(Float64(-x)))) end
function tmp = code(x) tmp = 2.0 / (exp(x) + exp(-x)); end
code[x_] := N[(2.0 / N[(N[Exp[x], $MachinePrecision] + N[Exp[(-x)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{e^{x} + e^{-x}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x) :precision binary64 (/ 2.0 (+ (exp x) (exp (- x)))))
double code(double x) {
return 2.0 / (exp(x) + exp(-x));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (exp(x) + exp(-x))
end function
public static double code(double x) {
return 2.0 / (Math.exp(x) + Math.exp(-x));
}
def code(x): return 2.0 / (math.exp(x) + math.exp(-x))
function code(x) return Float64(2.0 / Float64(exp(x) + exp(Float64(-x)))) end
function tmp = code(x) tmp = 2.0 / (exp(x) + exp(-x)); end
code[x_] := N[(2.0 / N[(N[Exp[x], $MachinePrecision] + N[Exp[(-x)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{e^{x} + e^{-x}}
\end{array}
(FPCore (x) :precision binary64 (/ 1.0 (cosh x)))
double code(double x) {
return 1.0 / cosh(x);
}
real(8) function code(x)
real(8), intent (in) :: x
code = 1.0d0 / cosh(x)
end function
public static double code(double x) {
return 1.0 / Math.cosh(x);
}
def code(x): return 1.0 / math.cosh(x)
function code(x) return Float64(1.0 / cosh(x)) end
function tmp = code(x) tmp = 1.0 / cosh(x); end
code[x_] := N[(1.0 / N[Cosh[x], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{1}{\cosh x}
\end{array}
Initial program 100.0%
rec-expN/A
clear-numN/A
/-lowering-/.f64N/A
rec-expN/A
cosh-defN/A
cosh-lowering-cosh.f64100.0%
Applied egg-rr100.0%
(FPCore (x)
:precision binary64
(let* ((t_0
(* (* x x) (+ 0.08333333333333333 (* x (* x 0.002777777777777778)))))
(t_1 (* (* x x) (- -1.0 t_0))))
(if (<= x 6.5e+51)
(* (/ 2.0 (+ 4.0 (* x (* (* x (+ 1.0 t_0)) t_1)))) (+ 2.0 t_1))
(/ (/ -288.0 (* x x)) (* x (* x (* x x)))))))
double code(double x) {
double t_0 = (x * x) * (0.08333333333333333 + (x * (x * 0.002777777777777778)));
double t_1 = (x * x) * (-1.0 - t_0);
double tmp;
if (x <= 6.5e+51) {
tmp = (2.0 / (4.0 + (x * ((x * (1.0 + t_0)) * t_1)))) * (2.0 + t_1);
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (x * x) * (0.08333333333333333d0 + (x * (x * 0.002777777777777778d0)))
t_1 = (x * x) * ((-1.0d0) - t_0)
if (x <= 6.5d+51) then
tmp = (2.0d0 / (4.0d0 + (x * ((x * (1.0d0 + t_0)) * t_1)))) * (2.0d0 + t_1)
else
tmp = ((-288.0d0) / (x * x)) / (x * (x * (x * x)))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = (x * x) * (0.08333333333333333 + (x * (x * 0.002777777777777778)));
double t_1 = (x * x) * (-1.0 - t_0);
double tmp;
if (x <= 6.5e+51) {
tmp = (2.0 / (4.0 + (x * ((x * (1.0 + t_0)) * t_1)))) * (2.0 + t_1);
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
def code(x): t_0 = (x * x) * (0.08333333333333333 + (x * (x * 0.002777777777777778))) t_1 = (x * x) * (-1.0 - t_0) tmp = 0 if x <= 6.5e+51: tmp = (2.0 / (4.0 + (x * ((x * (1.0 + t_0)) * t_1)))) * (2.0 + t_1) else: tmp = (-288.0 / (x * x)) / (x * (x * (x * x))) return tmp
function code(x) t_0 = Float64(Float64(x * x) * Float64(0.08333333333333333 + Float64(x * Float64(x * 0.002777777777777778)))) t_1 = Float64(Float64(x * x) * Float64(-1.0 - t_0)) tmp = 0.0 if (x <= 6.5e+51) tmp = Float64(Float64(2.0 / Float64(4.0 + Float64(x * Float64(Float64(x * Float64(1.0 + t_0)) * t_1)))) * Float64(2.0 + t_1)); else tmp = Float64(Float64(-288.0 / Float64(x * x)) / Float64(x * Float64(x * Float64(x * x)))); end return tmp end
function tmp_2 = code(x) t_0 = (x * x) * (0.08333333333333333 + (x * (x * 0.002777777777777778))); t_1 = (x * x) * (-1.0 - t_0); tmp = 0.0; if (x <= 6.5e+51) tmp = (2.0 / (4.0 + (x * ((x * (1.0 + t_0)) * t_1)))) * (2.0 + t_1); else tmp = (-288.0 / (x * x)) / (x * (x * (x * x))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(N[(x * x), $MachinePrecision] * N[(0.08333333333333333 + N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x * x), $MachinePrecision] * N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 6.5e+51], N[(N[(2.0 / N[(4.0 + N[(x * N[(N[(x * N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(2.0 + t$95$1), $MachinePrecision]), $MachinePrecision], N[(N[(-288.0 / N[(x * x), $MachinePrecision]), $MachinePrecision] / N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x \cdot x\right) \cdot \left(0.08333333333333333 + x \cdot \left(x \cdot 0.002777777777777778\right)\right)\\
t_1 := \left(x \cdot x\right) \cdot \left(-1 - t\_0\right)\\
\mathbf{if}\;x \leq 6.5 \cdot 10^{+51}:\\
\;\;\;\;\frac{2}{4 + x \cdot \left(\left(x \cdot \left(1 + t\_0\right)\right) \cdot t\_1\right)} \cdot \left(2 + t\_1\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-288}{x \cdot x}}{x \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\end{array}
\end{array}
if x < 6.5e51Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6490.6%
Simplified90.6%
flip-+N/A
associate-/r/N/A
*-lowering-*.f64N/A
Applied egg-rr71.0%
if 6.5e51 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6496.4%
Simplified96.4%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6496.4%
Simplified96.4%
Taylor expanded in x around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
Final simplification76.6%
(FPCore (x)
:precision binary64
(let* ((t_0 (* x (* x x))) (t_1 (* x t_0)))
(if (<= x 5.2)
(/
2.0
(+
2.0
(*
x
(*
x
(+
1.0
(*
x
(/
(* x 0.006944444444444444)
(- 0.08333333333333333 (* x (* x 0.002777777777777778))))))))))
(if (<= x 6.5e+51)
(*
(/ 2.0 (- 4.0 (* (* t_1 t_1) (* x (* t_0 7.71604938271605e-6)))))
(- 2.0 (* t_0 (* x (* (* x x) 0.002777777777777778)))))
(/ (/ -288.0 (* x x)) t_1)))))
double code(double x) {
double t_0 = x * (x * x);
double t_1 = x * t_0;
double tmp;
if (x <= 5.2) {
tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * ((x * 0.006944444444444444) / (0.08333333333333333 - (x * (x * 0.002777777777777778)))))))));
} else if (x <= 6.5e+51) {
tmp = (2.0 / (4.0 - ((t_1 * t_1) * (x * (t_0 * 7.71604938271605e-6))))) * (2.0 - (t_0 * (x * ((x * x) * 0.002777777777777778))));
} else {
tmp = (-288.0 / (x * x)) / t_1;
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = x * (x * x)
t_1 = x * t_0
if (x <= 5.2d0) then
tmp = 2.0d0 / (2.0d0 + (x * (x * (1.0d0 + (x * ((x * 0.006944444444444444d0) / (0.08333333333333333d0 - (x * (x * 0.002777777777777778d0)))))))))
else if (x <= 6.5d+51) then
tmp = (2.0d0 / (4.0d0 - ((t_1 * t_1) * (x * (t_0 * 7.71604938271605d-6))))) * (2.0d0 - (t_0 * (x * ((x * x) * 0.002777777777777778d0))))
else
tmp = ((-288.0d0) / (x * x)) / t_1
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (x * x);
double t_1 = x * t_0;
double tmp;
if (x <= 5.2) {
tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * ((x * 0.006944444444444444) / (0.08333333333333333 - (x * (x * 0.002777777777777778)))))))));
} else if (x <= 6.5e+51) {
tmp = (2.0 / (4.0 - ((t_1 * t_1) * (x * (t_0 * 7.71604938271605e-6))))) * (2.0 - (t_0 * (x * ((x * x) * 0.002777777777777778))));
} else {
tmp = (-288.0 / (x * x)) / t_1;
}
return tmp;
}
def code(x): t_0 = x * (x * x) t_1 = x * t_0 tmp = 0 if x <= 5.2: tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * ((x * 0.006944444444444444) / (0.08333333333333333 - (x * (x * 0.002777777777777778))))))))) elif x <= 6.5e+51: tmp = (2.0 / (4.0 - ((t_1 * t_1) * (x * (t_0 * 7.71604938271605e-6))))) * (2.0 - (t_0 * (x * ((x * x) * 0.002777777777777778)))) else: tmp = (-288.0 / (x * x)) / t_1 return tmp
function code(x) t_0 = Float64(x * Float64(x * x)) t_1 = Float64(x * t_0) tmp = 0.0 if (x <= 5.2) tmp = Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(1.0 + Float64(x * Float64(Float64(x * 0.006944444444444444) / Float64(0.08333333333333333 - Float64(x * Float64(x * 0.002777777777777778)))))))))); elseif (x <= 6.5e+51) tmp = Float64(Float64(2.0 / Float64(4.0 - Float64(Float64(t_1 * t_1) * Float64(x * Float64(t_0 * 7.71604938271605e-6))))) * Float64(2.0 - Float64(t_0 * Float64(x * Float64(Float64(x * x) * 0.002777777777777778))))); else tmp = Float64(Float64(-288.0 / Float64(x * x)) / t_1); end return tmp end
function tmp_2 = code(x) t_0 = x * (x * x); t_1 = x * t_0; tmp = 0.0; if (x <= 5.2) tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * ((x * 0.006944444444444444) / (0.08333333333333333 - (x * (x * 0.002777777777777778))))))))); elseif (x <= 6.5e+51) tmp = (2.0 / (4.0 - ((t_1 * t_1) * (x * (t_0 * 7.71604938271605e-6))))) * (2.0 - (t_0 * (x * ((x * x) * 0.002777777777777778)))); else tmp = (-288.0 / (x * x)) / t_1; end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x * t$95$0), $MachinePrecision]}, If[LessEqual[x, 5.2], N[(2.0 / N[(2.0 + N[(x * N[(x * N[(1.0 + N[(x * N[(N[(x * 0.006944444444444444), $MachinePrecision] / N[(0.08333333333333333 - N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 6.5e+51], N[(N[(2.0 / N[(4.0 - N[(N[(t$95$1 * t$95$1), $MachinePrecision] * N[(x * N[(t$95$0 * 7.71604938271605e-6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(2.0 - N[(t$95$0 * N[(x * N[(N[(x * x), $MachinePrecision] * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(-288.0 / N[(x * x), $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(x \cdot x\right)\\
t_1 := x \cdot t\_0\\
\mathbf{if}\;x \leq 5.2:\\
\;\;\;\;\frac{2}{2 + x \cdot \left(x \cdot \left(1 + x \cdot \frac{x \cdot 0.006944444444444444}{0.08333333333333333 - x \cdot \left(x \cdot 0.002777777777777778\right)}\right)\right)}\\
\mathbf{elif}\;x \leq 6.5 \cdot 10^{+51}:\\
\;\;\;\;\frac{2}{4 - \left(t\_1 \cdot t\_1\right) \cdot \left(x \cdot \left(t\_0 \cdot 7.71604938271605 \cdot 10^{-6}\right)\right)} \cdot \left(2 - t\_0 \cdot \left(x \cdot \left(\left(x \cdot x\right) \cdot 0.002777777777777778\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-288}{x \cdot x}}{t\_1}\\
\end{array}
\end{array}
if x < 5.20000000000000018Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6494.5%
Simplified94.5%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr79.9%
Taylor expanded in x around 0
*-commutativeN/A
*-lowering-*.f6484.9%
Simplified84.9%
if 5.20000000000000018 < x < 6.5e51Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f644.3%
Simplified4.3%
Taylor expanded in x around inf
metadata-evalN/A
pow-plusN/A
metadata-evalN/A
pow-sqrN/A
associate-*l*N/A
associate-*l*N/A
*-commutativeN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
unpow2N/A
unpow3N/A
*-lowering-*.f64N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f644.3%
Simplified4.3%
Applied egg-rr25.3%
if 6.5e51 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6496.4%
Simplified96.4%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6496.4%
Simplified96.4%
Taylor expanded in x around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
(FPCore (x)
:precision binary64
(let* ((t_0 (* x (* x x)))
(t_1 (+ 0.08333333333333333 (* x (* x 0.002777777777777778)))))
(if (<= x 1e+77)
(/
2.0
(+
2.0
(/
(* (* x x) (- 1.0 (* (* x t_1) (* t_1 t_0))))
(- 1.0 (* (* x x) t_1)))))
(/ 24.0 (* x t_0)))))
double code(double x) {
double t_0 = x * (x * x);
double t_1 = 0.08333333333333333 + (x * (x * 0.002777777777777778));
double tmp;
if (x <= 1e+77) {
tmp = 2.0 / (2.0 + (((x * x) * (1.0 - ((x * t_1) * (t_1 * t_0)))) / (1.0 - ((x * x) * t_1))));
} else {
tmp = 24.0 / (x * t_0);
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = x * (x * x)
t_1 = 0.08333333333333333d0 + (x * (x * 0.002777777777777778d0))
if (x <= 1d+77) then
tmp = 2.0d0 / (2.0d0 + (((x * x) * (1.0d0 - ((x * t_1) * (t_1 * t_0)))) / (1.0d0 - ((x * x) * t_1))))
else
tmp = 24.0d0 / (x * t_0)
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (x * x);
double t_1 = 0.08333333333333333 + (x * (x * 0.002777777777777778));
double tmp;
if (x <= 1e+77) {
tmp = 2.0 / (2.0 + (((x * x) * (1.0 - ((x * t_1) * (t_1 * t_0)))) / (1.0 - ((x * x) * t_1))));
} else {
tmp = 24.0 / (x * t_0);
}
return tmp;
}
def code(x): t_0 = x * (x * x) t_1 = 0.08333333333333333 + (x * (x * 0.002777777777777778)) tmp = 0 if x <= 1e+77: tmp = 2.0 / (2.0 + (((x * x) * (1.0 - ((x * t_1) * (t_1 * t_0)))) / (1.0 - ((x * x) * t_1)))) else: tmp = 24.0 / (x * t_0) return tmp
function code(x) t_0 = Float64(x * Float64(x * x)) t_1 = Float64(0.08333333333333333 + Float64(x * Float64(x * 0.002777777777777778))) tmp = 0.0 if (x <= 1e+77) tmp = Float64(2.0 / Float64(2.0 + Float64(Float64(Float64(x * x) * Float64(1.0 - Float64(Float64(x * t_1) * Float64(t_1 * t_0)))) / Float64(1.0 - Float64(Float64(x * x) * t_1))))); else tmp = Float64(24.0 / Float64(x * t_0)); end return tmp end
function tmp_2 = code(x) t_0 = x * (x * x); t_1 = 0.08333333333333333 + (x * (x * 0.002777777777777778)); tmp = 0.0; if (x <= 1e+77) tmp = 2.0 / (2.0 + (((x * x) * (1.0 - ((x * t_1) * (t_1 * t_0)))) / (1.0 - ((x * x) * t_1)))); else tmp = 24.0 / (x * t_0); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(0.08333333333333333 + N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 1e+77], N[(2.0 / N[(2.0 + N[(N[(N[(x * x), $MachinePrecision] * N[(1.0 - N[(N[(x * t$95$1), $MachinePrecision] * N[(t$95$1 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[(N[(x * x), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(24.0 / N[(x * t$95$0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(x \cdot x\right)\\
t_1 := 0.08333333333333333 + x \cdot \left(x \cdot 0.002777777777777778\right)\\
\mathbf{if}\;x \leq 10^{+77}:\\
\;\;\;\;\frac{2}{2 + \frac{\left(x \cdot x\right) \cdot \left(1 - \left(x \cdot t\_1\right) \cdot \left(t\_1 \cdot t\_0\right)\right)}{1 - \left(x \cdot x\right) \cdot t\_1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{24}{x \cdot t\_0}\\
\end{array}
\end{array}
if x < 9.99999999999999983e76Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6490.7%
Simplified90.7%
associate-*r*N/A
flip-+N/A
associate-*r/N/A
/-lowering-/.f64N/A
Applied egg-rr71.9%
if 9.99999999999999983e76 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
Final simplification77.0%
(FPCore (x)
:precision binary64
(/
2.0
(+
2.0
(*
x
(+
x
(*
(+ 0.08333333333333333 (* x (* x 0.002777777777777778)))
(* x (* x x))))))))
double code(double x) {
return 2.0 / (2.0 + (x * (x + ((0.08333333333333333 + (x * (x * 0.002777777777777778))) * (x * (x * x))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * (x + ((0.08333333333333333d0 + (x * (x * 0.002777777777777778d0))) * (x * (x * x))))))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * (x + ((0.08333333333333333 + (x * (x * 0.002777777777777778))) * (x * (x * x))))));
}
def code(x): return 2.0 / (2.0 + (x * (x + ((0.08333333333333333 + (x * (x * 0.002777777777777778))) * (x * (x * x))))))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * Float64(x + Float64(Float64(0.08333333333333333 + Float64(x * Float64(x * 0.002777777777777778))) * Float64(x * Float64(x * x))))))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * (x + ((0.08333333333333333 + (x * (x * 0.002777777777777778))) * (x * (x * x)))))); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * N[(x + N[(N[(0.08333333333333333 + N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot \left(x + \left(0.08333333333333333 + x \cdot \left(x \cdot 0.002777777777777778\right)\right) \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6492.4%
Simplified92.4%
+-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
cube-unmultN/A
*-lowering-*.f64N/A
cube-unmultN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6492.4%
Applied egg-rr92.4%
Final simplification92.4%
(FPCore (x)
:precision binary64
(/
2.0
(+
2.0
(*
x
(*
x
(+
1.0
(*
x
(* x (+ 0.08333333333333333 (* x (* x 0.002777777777777778)))))))))))
double code(double x) {
return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * (0.08333333333333333 + (x * (x * 0.002777777777777778)))))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * (x * (1.0d0 + (x * (x * (0.08333333333333333d0 + (x * (x * 0.002777777777777778d0)))))))))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * (0.08333333333333333 + (x * (x * 0.002777777777777778)))))))));
}
def code(x): return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * (0.08333333333333333 + (x * (x * 0.002777777777777778)))))))))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(1.0 + Float64(x * Float64(x * Float64(0.08333333333333333 + Float64(x * Float64(x * 0.002777777777777778)))))))))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * (0.08333333333333333 + (x * (x * 0.002777777777777778))))))))); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * N[(x * N[(1.0 + N[(x * N[(x * N[(0.08333333333333333 + N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot \left(x \cdot \left(1 + x \cdot \left(x \cdot \left(0.08333333333333333 + x \cdot \left(x \cdot 0.002777777777777778\right)\right)\right)\right)\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6492.4%
Simplified92.4%
(FPCore (x) :precision binary64 (if (<= x 700.0) (/ 2.0 (+ 2.0 (* x (* x (+ 1.0 (* (* x x) 0.08333333333333333)))))) (/ (/ -288.0 (* x x)) (* x (* x (* x x))))))
double code(double x) {
double tmp;
if (x <= 700.0) {
tmp = 2.0 / (2.0 + (x * (x * (1.0 + ((x * x) * 0.08333333333333333)))));
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 700.0d0) then
tmp = 2.0d0 / (2.0d0 + (x * (x * (1.0d0 + ((x * x) * 0.08333333333333333d0)))))
else
tmp = ((-288.0d0) / (x * x)) / (x * (x * (x * x)))
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 700.0) {
tmp = 2.0 / (2.0 + (x * (x * (1.0 + ((x * x) * 0.08333333333333333)))));
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
def code(x): tmp = 0 if x <= 700.0: tmp = 2.0 / (2.0 + (x * (x * (1.0 + ((x * x) * 0.08333333333333333))))) else: tmp = (-288.0 / (x * x)) / (x * (x * (x * x))) return tmp
function code(x) tmp = 0.0 if (x <= 700.0) tmp = Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(1.0 + Float64(Float64(x * x) * 0.08333333333333333)))))); else tmp = Float64(Float64(-288.0 / Float64(x * x)) / Float64(x * Float64(x * Float64(x * x)))); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 700.0) tmp = 2.0 / (2.0 + (x * (x * (1.0 + ((x * x) * 0.08333333333333333))))); else tmp = (-288.0 / (x * x)) / (x * (x * (x * x))); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 700.0], N[(2.0 / N[(2.0 + N[(x * N[(x * N[(1.0 + N[(N[(x * x), $MachinePrecision] * 0.08333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(-288.0 / N[(x * x), $MachinePrecision]), $MachinePrecision] / N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 700:\\
\;\;\;\;\frac{2}{2 + x \cdot \left(x \cdot \left(1 + \left(x \cdot x\right) \cdot 0.08333333333333333\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-288}{x \cdot x}}{x \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\end{array}
\end{array}
if x < 700Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6492.3%
Simplified92.3%
if 700 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6485.2%
Simplified85.2%
(FPCore (x) :precision binary64 (/ 2.0 (+ 2.0 (* x (* x (+ 1.0 (* x (* x (* (* x x) 0.002777777777777778)))))))))
double code(double x) {
return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * ((x * x) * 0.002777777777777778)))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * (x * (1.0d0 + (x * (x * ((x * x) * 0.002777777777777778d0)))))))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * ((x * x) * 0.002777777777777778)))))));
}
def code(x): return 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * ((x * x) * 0.002777777777777778)))))))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(1.0 + Float64(x * Float64(x * Float64(Float64(x * x) * 0.002777777777777778)))))))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * (x * (1.0 + (x * (x * ((x * x) * 0.002777777777777778))))))); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * N[(x * N[(1.0 + N[(x * N[(x * N[(N[(x * x), $MachinePrecision] * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot \left(x \cdot \left(1 + x \cdot \left(x \cdot \left(\left(x \cdot x\right) \cdot 0.002777777777777778\right)\right)\right)\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6492.4%
Simplified92.4%
Taylor expanded in x around inf
unpow3N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.6%
Simplified91.6%
(FPCore (x)
:precision binary64
(/
2.0
(+
2.0
(*
x
(*
x
(* x (* x (+ 0.08333333333333333 (* (* x x) 0.002777777777777778)))))))))
double code(double x) {
return 2.0 / (2.0 + (x * (x * (x * (x * (0.08333333333333333 + ((x * x) * 0.002777777777777778)))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * (x * (x * (x * (0.08333333333333333d0 + ((x * x) * 0.002777777777777778d0)))))))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * (x * (x * (x * (0.08333333333333333 + ((x * x) * 0.002777777777777778)))))));
}
def code(x): return 2.0 / (2.0 + (x * (x * (x * (x * (0.08333333333333333 + ((x * x) * 0.002777777777777778)))))))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(x * Float64(x * Float64(0.08333333333333333 + Float64(Float64(x * x) * 0.002777777777777778)))))))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * (x * (x * (x * (0.08333333333333333 + ((x * x) * 0.002777777777777778))))))); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * N[(x * N[(x * N[(x * N[(0.08333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(0.08333333333333333 + \left(x \cdot x\right) \cdot 0.002777777777777778\right)\right)\right)\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6492.4%
Simplified92.4%
+-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
cube-unmultN/A
*-lowering-*.f64N/A
cube-unmultN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6492.4%
Applied egg-rr92.4%
Taylor expanded in x around inf
Simplified90.8%
(FPCore (x) :precision binary64 (if (<= x 680.0) (+ 1.0 (* (* x x) (+ -0.5 (* (* x x) 0.20833333333333334)))) (/ (/ -288.0 (* x x)) (* x (* x (* x x))))))
double code(double x) {
double tmp;
if (x <= 680.0) {
tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334)));
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 680.0d0) then
tmp = 1.0d0 + ((x * x) * ((-0.5d0) + ((x * x) * 0.20833333333333334d0)))
else
tmp = ((-288.0d0) / (x * x)) / (x * (x * (x * x)))
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 680.0) {
tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334)));
} else {
tmp = (-288.0 / (x * x)) / (x * (x * (x * x)));
}
return tmp;
}
def code(x): tmp = 0 if x <= 680.0: tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334))) else: tmp = (-288.0 / (x * x)) / (x * (x * (x * x))) return tmp
function code(x) tmp = 0.0 if (x <= 680.0) tmp = Float64(1.0 + Float64(Float64(x * x) * Float64(-0.5 + Float64(Float64(x * x) * 0.20833333333333334)))); else tmp = Float64(Float64(-288.0 / Float64(x * x)) / Float64(x * Float64(x * Float64(x * x)))); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 680.0) tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334))); else tmp = (-288.0 / (x * x)) / (x * (x * (x * x))); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 680.0], N[(1.0 + N[(N[(x * x), $MachinePrecision] * N[(-0.5 + N[(N[(x * x), $MachinePrecision] * 0.20833333333333334), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(-288.0 / N[(x * x), $MachinePrecision]), $MachinePrecision] / N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 680:\\
\;\;\;\;1 + \left(x \cdot x\right) \cdot \left(-0.5 + \left(x \cdot x\right) \cdot 0.20833333333333334\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-288}{x \cdot x}}{x \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\end{array}
\end{array}
if x < 680Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.4%
Simplified69.4%
if 680 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6485.2%
Simplified85.2%
(FPCore (x) :precision binary64 (if (<= x 1.9) (+ 1.0 (* (* x x) (+ -0.5 (* (* x x) 0.20833333333333334)))) (/ 24.0 (* x (* x (* x x))))))
double code(double x) {
double tmp;
if (x <= 1.9) {
tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334)));
} else {
tmp = 24.0 / (x * (x * (x * x)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 1.9d0) then
tmp = 1.0d0 + ((x * x) * ((-0.5d0) + ((x * x) * 0.20833333333333334d0)))
else
tmp = 24.0d0 / (x * (x * (x * x)))
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 1.9) {
tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334)));
} else {
tmp = 24.0 / (x * (x * (x * x)));
}
return tmp;
}
def code(x): tmp = 0 if x <= 1.9: tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334))) else: tmp = 24.0 / (x * (x * (x * x))) return tmp
function code(x) tmp = 0.0 if (x <= 1.9) tmp = Float64(1.0 + Float64(Float64(x * x) * Float64(-0.5 + Float64(Float64(x * x) * 0.20833333333333334)))); else tmp = Float64(24.0 / Float64(x * Float64(x * Float64(x * x)))); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 1.9) tmp = 1.0 + ((x * x) * (-0.5 + ((x * x) * 0.20833333333333334))); else tmp = 24.0 / (x * (x * (x * x))); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 1.9], N[(1.0 + N[(N[(x * x), $MachinePrecision] * N[(-0.5 + N[(N[(x * x), $MachinePrecision] * 0.20833333333333334), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(24.0 / N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1.9:\\
\;\;\;\;1 + \left(x \cdot x\right) \cdot \left(-0.5 + \left(x \cdot x\right) \cdot 0.20833333333333334\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{24}{x \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\end{array}
\end{array}
if x < 1.8999999999999999Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.4%
Simplified69.4%
if 1.8999999999999999 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
(FPCore (x) :precision binary64 (/ 2.0 (+ 2.0 (* x (* x (* x (* x (* x (* x 0.002777777777777778)))))))))
double code(double x) {
return 2.0 / (2.0 + (x * (x * (x * (x * (x * (x * 0.002777777777777778)))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * (x * (x * (x * (x * (x * 0.002777777777777778d0)))))))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * (x * (x * (x * (x * (x * 0.002777777777777778)))))));
}
def code(x): return 2.0 / (2.0 + (x * (x * (x * (x * (x * (x * 0.002777777777777778)))))))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * Float64(x * Float64(x * Float64(x * Float64(x * Float64(x * 0.002777777777777778)))))))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * (x * (x * (x * (x * (x * 0.002777777777777778))))))); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * N[(x * N[(x * N[(x * N[(x * N[(x * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot 0.002777777777777778\right)\right)\right)\right)\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6492.4%
Simplified92.4%
Taylor expanded in x around inf
metadata-evalN/A
pow-plusN/A
metadata-evalN/A
pow-sqrN/A
associate-*l*N/A
associate-*l*N/A
*-commutativeN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
unpow2N/A
unpow3N/A
*-lowering-*.f64N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6490.8%
Simplified90.8%
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6490.8%
Applied egg-rr90.8%
Final simplification90.8%
(FPCore (x) :precision binary64 (if (<= x 3.7) (/ 2.0 (+ 2.0 (* x x))) (/ 24.0 (* x (* x (* x x))))))
double code(double x) {
double tmp;
if (x <= 3.7) {
tmp = 2.0 / (2.0 + (x * x));
} else {
tmp = 24.0 / (x * (x * (x * x)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 3.7d0) then
tmp = 2.0d0 / (2.0d0 + (x * x))
else
tmp = 24.0d0 / (x * (x * (x * x)))
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 3.7) {
tmp = 2.0 / (2.0 + (x * x));
} else {
tmp = 24.0 / (x * (x * (x * x)));
}
return tmp;
}
def code(x): tmp = 0 if x <= 3.7: tmp = 2.0 / (2.0 + (x * x)) else: tmp = 24.0 / (x * (x * (x * x))) return tmp
function code(x) tmp = 0.0 if (x <= 3.7) tmp = Float64(2.0 / Float64(2.0 + Float64(x * x))); else tmp = Float64(24.0 / Float64(x * Float64(x * Float64(x * x)))); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 3.7) tmp = 2.0 / (2.0 + (x * x)); else tmp = 24.0 / (x * (x * (x * x))); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 3.7], N[(2.0 / N[(2.0 + N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(24.0 / N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 3.7:\\
\;\;\;\;\frac{2}{2 + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;\frac{24}{x \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\end{array}
\end{array}
if x < 3.7000000000000002Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f6483.9%
Simplified83.9%
if 3.7000000000000002 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.1%
Simplified82.1%
(FPCore (x) :precision binary64 (/ 2.0 (+ 2.0 (* (* x x) (* (* x x) 0.08333333333333333)))))
double code(double x) {
return 2.0 / (2.0 + ((x * x) * ((x * x) * 0.08333333333333333)));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + ((x * x) * ((x * x) * 0.08333333333333333d0)))
end function
public static double code(double x) {
return 2.0 / (2.0 + ((x * x) * ((x * x) * 0.08333333333333333)));
}
def code(x): return 2.0 / (2.0 + ((x * x) * ((x * x) * 0.08333333333333333)))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(Float64(x * x) * Float64(Float64(x * x) * 0.08333333333333333)))) end
function tmp = code(x) tmp = 2.0 / (2.0 + ((x * x) * ((x * x) * 0.08333333333333333))); end
code[x_] := N[(2.0 / N[(2.0 + N[(N[(x * x), $MachinePrecision] * N[(N[(x * x), $MachinePrecision] * 0.08333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + \left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot 0.08333333333333333\right)}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6490.0%
Simplified90.0%
Taylor expanded in x around inf
metadata-evalN/A
pow-sqrN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6488.7%
Simplified88.7%
(FPCore (x) :precision binary64 (if (<= x 1.25) (+ 1.0 (* (* x x) -0.5)) (/ 2.0 (* x x))))
double code(double x) {
double tmp;
if (x <= 1.25) {
tmp = 1.0 + ((x * x) * -0.5);
} else {
tmp = 2.0 / (x * x);
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 1.25d0) then
tmp = 1.0d0 + ((x * x) * (-0.5d0))
else
tmp = 2.0d0 / (x * x)
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 1.25) {
tmp = 1.0 + ((x * x) * -0.5);
} else {
tmp = 2.0 / (x * x);
}
return tmp;
}
def code(x): tmp = 0 if x <= 1.25: tmp = 1.0 + ((x * x) * -0.5) else: tmp = 2.0 / (x * x) return tmp
function code(x) tmp = 0.0 if (x <= 1.25) tmp = Float64(1.0 + Float64(Float64(x * x) * -0.5)); else tmp = Float64(2.0 / Float64(x * x)); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 1.25) tmp = 1.0 + ((x * x) * -0.5); else tmp = 2.0 / (x * x); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 1.25], N[(1.0 + N[(N[(x * x), $MachinePrecision] * -0.5), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(x * x), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1.25:\\
\;\;\;\;1 + \left(x \cdot x\right) \cdot -0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{x \cdot x}\\
\end{array}
\end{array}
if x < 1.25Initial program 99.9%
Taylor expanded in x around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6468.9%
Simplified68.9%
if 1.25 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f6460.8%
Simplified60.8%
Taylor expanded in x around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6460.8%
Simplified60.8%
Final simplification67.1%
(FPCore (x) :precision binary64 (if (<= x 1.45) 1.0 (/ 2.0 (* x x))))
double code(double x) {
double tmp;
if (x <= 1.45) {
tmp = 1.0;
} else {
tmp = 2.0 / (x * x);
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 1.45d0) then
tmp = 1.0d0
else
tmp = 2.0d0 / (x * x)
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 1.45) {
tmp = 1.0;
} else {
tmp = 2.0 / (x * x);
}
return tmp;
}
def code(x): tmp = 0 if x <= 1.45: tmp = 1.0 else: tmp = 2.0 / (x * x) return tmp
function code(x) tmp = 0.0 if (x <= 1.45) tmp = 1.0; else tmp = Float64(2.0 / Float64(x * x)); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 1.45) tmp = 1.0; else tmp = 2.0 / (x * x); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 1.45], 1.0, N[(2.0 / N[(x * x), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1.45:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{x \cdot x}\\
\end{array}
\end{array}
if x < 1.44999999999999996Initial program 99.9%
Taylor expanded in x around 0
Simplified68.4%
if 1.44999999999999996 < x Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f6460.8%
Simplified60.8%
Taylor expanded in x around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6460.8%
Simplified60.8%
(FPCore (x) :precision binary64 (/ 2.0 (+ 2.0 (* x x))))
double code(double x) {
return 2.0 / (2.0 + (x * x));
}
real(8) function code(x)
real(8), intent (in) :: x
code = 2.0d0 / (2.0d0 + (x * x))
end function
public static double code(double x) {
return 2.0 / (2.0 + (x * x));
}
def code(x): return 2.0 / (2.0 + (x * x))
function code(x) return Float64(2.0 / Float64(2.0 + Float64(x * x))) end
function tmp = code(x) tmp = 2.0 / (2.0 + (x * x)); end
code[x_] := N[(2.0 / N[(2.0 + N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{2 + x \cdot x}
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f6478.7%
Simplified78.7%
(FPCore (x) :precision binary64 1.0)
double code(double x) {
return 1.0;
}
real(8) function code(x)
real(8), intent (in) :: x
code = 1.0d0
end function
public static double code(double x) {
return 1.0;
}
def code(x): return 1.0
function code(x) return 1.0 end
function tmp = code(x) tmp = 1.0; end
code[x_] := 1.0
\begin{array}{l}
\\
1
\end{array}
Initial program 100.0%
Taylor expanded in x around 0
Simplified53.6%
herbie shell --seed 2024150
(FPCore (x)
:name "Hyperbolic secant"
:precision binary64
(/ 2.0 (+ (exp x) (exp (- x)))))