
(FPCore (x) :precision binary64 (/ (- (exp x) (exp (- x))) 2.0))
double code(double x) {
return (exp(x) - exp(-x)) / 2.0;
}
real(8) function code(x)
real(8), intent (in) :: x
code = (exp(x) - exp(-x)) / 2.0d0
end function
public static double code(double x) {
return (Math.exp(x) - Math.exp(-x)) / 2.0;
}
def code(x): return (math.exp(x) - math.exp(-x)) / 2.0
function code(x) return Float64(Float64(exp(x) - exp(Float64(-x))) / 2.0) end
function tmp = code(x) tmp = (exp(x) - exp(-x)) / 2.0; end
code[x_] := N[(N[(N[Exp[x], $MachinePrecision] - N[Exp[(-x)], $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]
\begin{array}{l}
\\
\frac{e^{x} - e^{-x}}{2}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 15 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x) :precision binary64 (/ (- (exp x) (exp (- x))) 2.0))
double code(double x) {
return (exp(x) - exp(-x)) / 2.0;
}
real(8) function code(x)
real(8), intent (in) :: x
code = (exp(x) - exp(-x)) / 2.0d0
end function
public static double code(double x) {
return (Math.exp(x) - Math.exp(-x)) / 2.0;
}
def code(x): return (math.exp(x) - math.exp(-x)) / 2.0
function code(x) return Float64(Float64(exp(x) - exp(Float64(-x))) / 2.0) end
function tmp = code(x) tmp = (exp(x) - exp(-x)) / 2.0; end
code[x_] := N[(N[(N[Exp[x], $MachinePrecision] - N[Exp[(-x)], $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]
\begin{array}{l}
\\
\frac{e^{x} - e^{-x}}{2}
\end{array}
(FPCore (x) :precision binary64 (sinh x))
double code(double x) {
return sinh(x);
}
real(8) function code(x)
real(8), intent (in) :: x
code = sinh(x)
end function
public static double code(double x) {
return Math.sinh(x);
}
def code(x): return math.sinh(x)
function code(x) return sinh(x) end
function tmp = code(x) tmp = sinh(x); end
code[x_] := N[Sinh[x], $MachinePrecision]
\begin{array}{l}
\\
\sinh x
\end{array}
Initial program 48.2%
sinh-defN/A
sinh-lowering-sinh.f64100.0%
Applied egg-rr100.0%
(FPCore (x)
:precision binary64
(let* ((t_0
(+
0.3333333333333333
(*
(* x x)
(+ 0.016666666666666666 (* x (* x 0.0003968253968253968))))))
(t_1 (* x t_0))
(t_2 (* (* x x) (* t_1 t_1)))
(t_3 (* (* x x) t_0)))
(if (<= x 1.8e+26)
(/ (* x (/ (+ 8.0 (* t_3 t_2)) (+ 4.0 (* t_3 (+ t_3 -2.0))))) 2.0)
(if (<= x 5e+60)
(/
(*
x
(/
(- 4.0 t_2)
(-
2.0
(*
(* x x)
(+ 0.3333333333333333 (* (* x x) 0.016666666666666666))))))
2.0)
(* 0.008333333333333333 (* x (* x (* x (* x x)))))))))
double code(double x) {
double t_0 = 0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))));
double t_1 = x * t_0;
double t_2 = (x * x) * (t_1 * t_1);
double t_3 = (x * x) * t_0;
double tmp;
if (x <= 1.8e+26) {
tmp = (x * ((8.0 + (t_3 * t_2)) / (4.0 + (t_3 * (t_3 + -2.0))))) / 2.0;
} else if (x <= 5e+60) {
tmp = (x * ((4.0 - t_2) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (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) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 0.3333333333333333d0 + ((x * x) * (0.016666666666666666d0 + (x * (x * 0.0003968253968253968d0))))
t_1 = x * t_0
t_2 = (x * x) * (t_1 * t_1)
t_3 = (x * x) * t_0
if (x <= 1.8d+26) then
tmp = (x * ((8.0d0 + (t_3 * t_2)) / (4.0d0 + (t_3 * (t_3 + (-2.0d0)))))) / 2.0d0
else if (x <= 5d+60) then
tmp = (x * ((4.0d0 - t_2) / (2.0d0 - ((x * x) * (0.3333333333333333d0 + ((x * x) * 0.016666666666666666d0)))))) / 2.0d0
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = 0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))));
double t_1 = x * t_0;
double t_2 = (x * x) * (t_1 * t_1);
double t_3 = (x * x) * t_0;
double tmp;
if (x <= 1.8e+26) {
tmp = (x * ((8.0 + (t_3 * t_2)) / (4.0 + (t_3 * (t_3 + -2.0))))) / 2.0;
} else if (x <= 5e+60) {
tmp = (x * ((4.0 - t_2) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): t_0 = 0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))) t_1 = x * t_0 t_2 = (x * x) * (t_1 * t_1) t_3 = (x * x) * t_0 tmp = 0 if x <= 1.8e+26: tmp = (x * ((8.0 + (t_3 * t_2)) / (4.0 + (t_3 * (t_3 + -2.0))))) / 2.0 elif x <= 5e+60: tmp = (x * ((4.0 - t_2) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0 else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) t_0 = Float64(0.3333333333333333 + Float64(Float64(x * x) * Float64(0.016666666666666666 + Float64(x * Float64(x * 0.0003968253968253968))))) t_1 = Float64(x * t_0) t_2 = Float64(Float64(x * x) * Float64(t_1 * t_1)) t_3 = Float64(Float64(x * x) * t_0) tmp = 0.0 if (x <= 1.8e+26) tmp = Float64(Float64(x * Float64(Float64(8.0 + Float64(t_3 * t_2)) / Float64(4.0 + Float64(t_3 * Float64(t_3 + -2.0))))) / 2.0); elseif (x <= 5e+60) tmp = Float64(Float64(x * Float64(Float64(4.0 - t_2) / Float64(2.0 - Float64(Float64(x * x) * Float64(0.3333333333333333 + Float64(Float64(x * x) * 0.016666666666666666)))))) / 2.0); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) t_0 = 0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))); t_1 = x * t_0; t_2 = (x * x) * (t_1 * t_1); t_3 = (x * x) * t_0; tmp = 0.0; if (x <= 1.8e+26) tmp = (x * ((8.0 + (t_3 * t_2)) / (4.0 + (t_3 * (t_3 + -2.0))))) / 2.0; elseif (x <= 5e+60) tmp = (x * ((4.0 - t_2) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0; else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * N[(0.016666666666666666 + N[(x * N[(x * 0.0003968253968253968), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x * t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x * x), $MachinePrecision] * N[(t$95$1 * t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(x * x), $MachinePrecision] * t$95$0), $MachinePrecision]}, If[LessEqual[x, 1.8e+26], N[(N[(x * N[(N[(8.0 + N[(t$95$3 * t$95$2), $MachinePrecision]), $MachinePrecision] / N[(4.0 + N[(t$95$3 * N[(t$95$3 + -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], If[LessEqual[x, 5e+60], N[(N[(x * N[(N[(4.0 - t$95$2), $MachinePrecision] / N[(2.0 - N[(N[(x * x), $MachinePrecision] * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.016666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.3333333333333333 + \left(x \cdot x\right) \cdot \left(0.016666666666666666 + x \cdot \left(x \cdot 0.0003968253968253968\right)\right)\\
t_1 := x \cdot t\_0\\
t_2 := \left(x \cdot x\right) \cdot \left(t\_1 \cdot t\_1\right)\\
t_3 := \left(x \cdot x\right) \cdot t\_0\\
\mathbf{if}\;x \leq 1.8 \cdot 10^{+26}:\\
\;\;\;\;\frac{x \cdot \frac{8 + t\_3 \cdot t\_2}{4 + t\_3 \cdot \left(t\_3 + -2\right)}}{2}\\
\mathbf{elif}\;x \leq 5 \cdot 10^{+60}:\\
\;\;\;\;\frac{x \cdot \frac{4 - t\_2}{2 - \left(x \cdot x\right) \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot 0.016666666666666666\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 1.80000000000000012e26Initial program 35.3%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.2%
Simplified91.2%
flip3-+N/A
/-lowering-/.f64N/A
Applied egg-rr74.3%
if 1.80000000000000012e26 < x < 4.99999999999999975e60Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6446.6%
Simplified46.6%
flip-+N/A
/-lowering-/.f64N/A
Applied egg-rr71.4%
Taylor expanded in x around 0
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
if 4.99999999999999975e60 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/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
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification79.4%
(FPCore (x)
:precision binary64
(let* ((t_0
(*
x
(+
0.3333333333333333
(*
(* x x)
(+ 0.016666666666666666 (* x (* x 0.0003968253968253968)))))))
(t_1
(*
(* x x)
(+
0.16666666666666666
(*
(* x x)
(+ 0.008333333333333333 (* x (* x 0.0001984126984126984))))))))
(if (<= x 2e+26)
(/ (* x (+ 1.0 (* t_1 (* t_1 t_1)))) (+ 1.0 (* t_1 (+ t_1 -1.0))))
(if (<= x 5e+60)
(/
(*
x
(/
(- 4.0 (* (* x x) (* t_0 t_0)))
(-
2.0
(*
(* x x)
(+ 0.3333333333333333 (* (* x x) 0.016666666666666666))))))
2.0)
(* 0.008333333333333333 (* x (* x (* x (* x x)))))))))
double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))));
double t_1 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984)))));
double tmp;
if (x <= 2e+26) {
tmp = (x * (1.0 + (t_1 * (t_1 * t_1)))) / (1.0 + (t_1 * (t_1 + -1.0)));
} else if (x <= 5e+60) {
tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (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 * (0.3333333333333333d0 + ((x * x) * (0.016666666666666666d0 + (x * (x * 0.0003968253968253968d0)))))
t_1 = (x * x) * (0.16666666666666666d0 + ((x * x) * (0.008333333333333333d0 + (x * (x * 0.0001984126984126984d0)))))
if (x <= 2d+26) then
tmp = (x * (1.0d0 + (t_1 * (t_1 * t_1)))) / (1.0d0 + (t_1 * (t_1 + (-1.0d0))))
else if (x <= 5d+60) then
tmp = (x * ((4.0d0 - ((x * x) * (t_0 * t_0))) / (2.0d0 - ((x * x) * (0.3333333333333333d0 + ((x * x) * 0.016666666666666666d0)))))) / 2.0d0
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))));
double t_1 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984)))));
double tmp;
if (x <= 2e+26) {
tmp = (x * (1.0 + (t_1 * (t_1 * t_1)))) / (1.0 + (t_1 * (t_1 + -1.0)));
} else if (x <= 5e+60) {
tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))))) t_1 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984))))) tmp = 0 if x <= 2e+26: tmp = (x * (1.0 + (t_1 * (t_1 * t_1)))) / (1.0 + (t_1 * (t_1 + -1.0))) elif x <= 5e+60: tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0 else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) t_0 = Float64(x * Float64(0.3333333333333333 + Float64(Float64(x * x) * Float64(0.016666666666666666 + Float64(x * Float64(x * 0.0003968253968253968)))))) t_1 = Float64(Float64(x * x) * Float64(0.16666666666666666 + Float64(Float64(x * x) * Float64(0.008333333333333333 + Float64(x * Float64(x * 0.0001984126984126984)))))) tmp = 0.0 if (x <= 2e+26) tmp = Float64(Float64(x * Float64(1.0 + Float64(t_1 * Float64(t_1 * t_1)))) / Float64(1.0 + Float64(t_1 * Float64(t_1 + -1.0)))); elseif (x <= 5e+60) tmp = Float64(Float64(x * Float64(Float64(4.0 - Float64(Float64(x * x) * Float64(t_0 * t_0))) / Float64(2.0 - Float64(Float64(x * x) * Float64(0.3333333333333333 + Float64(Float64(x * x) * 0.016666666666666666)))))) / 2.0); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))))); t_1 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984))))); tmp = 0.0; if (x <= 2e+26) tmp = (x * (1.0 + (t_1 * (t_1 * t_1)))) / (1.0 + (t_1 * (t_1 + -1.0))); elseif (x <= 5e+60) tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0; else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * N[(0.016666666666666666 + N[(x * N[(x * 0.0003968253968253968), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x * x), $MachinePrecision] * N[(0.16666666666666666 + N[(N[(x * x), $MachinePrecision] * N[(0.008333333333333333 + N[(x * N[(x * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 2e+26], N[(N[(x * N[(1.0 + N[(t$95$1 * N[(t$95$1 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(t$95$1 * N[(t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 5e+60], N[(N[(x * N[(N[(4.0 - N[(N[(x * x), $MachinePrecision] * N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(2.0 - N[(N[(x * x), $MachinePrecision] * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.016666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot \left(0.016666666666666666 + x \cdot \left(x \cdot 0.0003968253968253968\right)\right)\right)\\
t_1 := \left(x \cdot x\right) \cdot \left(0.16666666666666666 + \left(x \cdot x\right) \cdot \left(0.008333333333333333 + x \cdot \left(x \cdot 0.0001984126984126984\right)\right)\right)\\
\mathbf{if}\;x \leq 2 \cdot 10^{+26}:\\
\;\;\;\;\frac{x \cdot \left(1 + t\_1 \cdot \left(t\_1 \cdot t\_1\right)\right)}{1 + t\_1 \cdot \left(t\_1 + -1\right)}\\
\mathbf{elif}\;x \leq 5 \cdot 10^{+60}:\\
\;\;\;\;\frac{x \cdot \frac{4 - \left(x \cdot x\right) \cdot \left(t\_0 \cdot t\_0\right)}{2 - \left(x \cdot x\right) \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot 0.016666666666666666\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 2.0000000000000001e26Initial program 35.3%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.2%
Simplified91.2%
*-commutativeN/A
flip3-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr74.2%
if 2.0000000000000001e26 < x < 4.99999999999999975e60Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6446.6%
Simplified46.6%
flip-+N/A
/-lowering-/.f64N/A
Applied egg-rr71.4%
Taylor expanded in x around 0
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
if 4.99999999999999975e60 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/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
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification79.4%
(FPCore (x)
:precision binary64
(let* ((t_0
(*
(* x x)
(+
0.16666666666666666
(*
(* x x)
(+ 0.008333333333333333 (* x (* x 0.0001984126984126984))))))))
(if (<= x 2e+44)
(/ (* x (- 1.0 (* t_0 t_0))) (- 1.0 t_0))
(* x (+ 1.0 (* x (* (* x (* x (* x (* x x)))) 0.0001984126984126984)))))))
double code(double x) {
double t_0 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984)))));
double tmp;
if (x <= 2e+44) {
tmp = (x * (1.0 - (t_0 * t_0))) / (1.0 - t_0);
} else {
tmp = x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984)));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: tmp
t_0 = (x * x) * (0.16666666666666666d0 + ((x * x) * (0.008333333333333333d0 + (x * (x * 0.0001984126984126984d0)))))
if (x <= 2d+44) then
tmp = (x * (1.0d0 - (t_0 * t_0))) / (1.0d0 - t_0)
else
tmp = x * (1.0d0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984d0)))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984)))));
double tmp;
if (x <= 2e+44) {
tmp = (x * (1.0 - (t_0 * t_0))) / (1.0 - t_0);
} else {
tmp = x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984)));
}
return tmp;
}
def code(x): t_0 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984))))) tmp = 0 if x <= 2e+44: tmp = (x * (1.0 - (t_0 * t_0))) / (1.0 - t_0) else: tmp = x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984))) return tmp
function code(x) t_0 = Float64(Float64(x * x) * Float64(0.16666666666666666 + Float64(Float64(x * x) * Float64(0.008333333333333333 + Float64(x * Float64(x * 0.0001984126984126984)))))) tmp = 0.0 if (x <= 2e+44) tmp = Float64(Float64(x * Float64(1.0 - Float64(t_0 * t_0))) / Float64(1.0 - t_0)); else tmp = Float64(x * Float64(1.0 + Float64(x * Float64(Float64(x * Float64(x * Float64(x * Float64(x * x)))) * 0.0001984126984126984)))); end return tmp end
function tmp_2 = code(x) t_0 = (x * x) * (0.16666666666666666 + ((x * x) * (0.008333333333333333 + (x * (x * 0.0001984126984126984))))); tmp = 0.0; if (x <= 2e+44) tmp = (x * (1.0 - (t_0 * t_0))) / (1.0 - t_0); else tmp = x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(N[(x * x), $MachinePrecision] * N[(0.16666666666666666 + N[(N[(x * x), $MachinePrecision] * N[(0.008333333333333333 + N[(x * N[(x * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 2e+44], N[(N[(x * N[(1.0 - N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - t$95$0), $MachinePrecision]), $MachinePrecision], N[(x * N[(1.0 + N[(x * N[(N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x \cdot x\right) \cdot \left(0.16666666666666666 + \left(x \cdot x\right) \cdot \left(0.008333333333333333 + x \cdot \left(x \cdot 0.0001984126984126984\right)\right)\right)\\
\mathbf{if}\;x \leq 2 \cdot 10^{+44}:\\
\;\;\;\;\frac{x \cdot \left(1 - t\_0 \cdot t\_0\right)}{1 - t\_0}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(1 + x \cdot \left(\left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right) \cdot 0.0001984126984126984\right)\right)\\
\end{array}
\end{array}
if x < 2.0000000000000002e44Initial program 36.5%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6489.6%
Simplified89.6%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr74.4%
if 2.0000000000000002e44 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0%
Simplified100.0%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64100.0%
Applied egg-rr100.0%
Taylor expanded in x around inf
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification79.1%
(FPCore (x)
:precision binary64
(let* ((t_0
(*
x
(+
0.3333333333333333
(*
(* x x)
(+ 0.016666666666666666 (* x (* x 0.0003968253968253968))))))))
(if (<= x 5e+60)
(/
(*
x
(/
(- 4.0 (* (* x x) (* t_0 t_0)))
(-
2.0
(* (* x x) (+ 0.3333333333333333 (* (* x x) 0.016666666666666666))))))
2.0)
(* 0.008333333333333333 (* x (* x (* x (* x x))))))))
double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))));
double tmp;
if (x <= 5e+60) {
tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: tmp
t_0 = x * (0.3333333333333333d0 + ((x * x) * (0.016666666666666666d0 + (x * (x * 0.0003968253968253968d0)))))
if (x <= 5d+60) then
tmp = (x * ((4.0d0 - ((x * x) * (t_0 * t_0))) / (2.0d0 - ((x * x) * (0.3333333333333333d0 + ((x * x) * 0.016666666666666666d0)))))) / 2.0d0
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968)))));
double tmp;
if (x <= 5e+60) {
tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))))) tmp = 0 if x <= 5e+60: tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0 else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) t_0 = Float64(x * Float64(0.3333333333333333 + Float64(Float64(x * x) * Float64(0.016666666666666666 + Float64(x * Float64(x * 0.0003968253968253968)))))) tmp = 0.0 if (x <= 5e+60) tmp = Float64(Float64(x * Float64(Float64(4.0 - Float64(Float64(x * x) * Float64(t_0 * t_0))) / Float64(2.0 - Float64(Float64(x * x) * Float64(0.3333333333333333 + Float64(Float64(x * x) * 0.016666666666666666)))))) / 2.0); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) t_0 = x * (0.3333333333333333 + ((x * x) * (0.016666666666666666 + (x * (x * 0.0003968253968253968))))); tmp = 0.0; if (x <= 5e+60) tmp = (x * ((4.0 - ((x * x) * (t_0 * t_0))) / (2.0 - ((x * x) * (0.3333333333333333 + ((x * x) * 0.016666666666666666)))))) / 2.0; else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * N[(0.016666666666666666 + N[(x * N[(x * 0.0003968253968253968), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 5e+60], N[(N[(x * N[(N[(4.0 - N[(N[(x * x), $MachinePrecision] * N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(2.0 - N[(N[(x * x), $MachinePrecision] * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.016666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot \left(0.016666666666666666 + x \cdot \left(x \cdot 0.0003968253968253968\right)\right)\right)\\
\mathbf{if}\;x \leq 5 \cdot 10^{+60}:\\
\;\;\;\;\frac{x \cdot \frac{4 - \left(x \cdot x\right) \cdot \left(t\_0 \cdot t\_0\right)}{2 - \left(x \cdot x\right) \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot 0.016666666666666666\right)}}{2}\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 4.99999999999999975e60Initial program 37.4%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6489.7%
Simplified89.7%
flip-+N/A
/-lowering-/.f64N/A
Applied egg-rr72.9%
Taylor expanded in x around 0
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6477.2%
Simplified77.2%
if 4.99999999999999975e60 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/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
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification81.1%
(FPCore (x)
:precision binary64
(let* ((t_0 (* x (+ 0.016666666666666666 (* x (* x 0.0003968253968253968))))))
(if (<= x 5e+60)
(/
(*
x
(+
2.0
(*
(/ x (/ 1.0 (- 0.1111111111111111 (* t_0 (* (* x x) t_0)))))
(/ x (- 0.3333333333333333 (* x t_0))))))
2.0)
(* 0.008333333333333333 (* x (* x (* x (* x x))))))))
double code(double x) {
double t_0 = x * (0.016666666666666666 + (x * (x * 0.0003968253968253968)));
double tmp;
if (x <= 5e+60) {
tmp = (x * (2.0 + ((x / (1.0 / (0.1111111111111111 - (t_0 * ((x * x) * t_0))))) * (x / (0.3333333333333333 - (x * t_0)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: tmp
t_0 = x * (0.016666666666666666d0 + (x * (x * 0.0003968253968253968d0)))
if (x <= 5d+60) then
tmp = (x * (2.0d0 + ((x / (1.0d0 / (0.1111111111111111d0 - (t_0 * ((x * x) * t_0))))) * (x / (0.3333333333333333d0 - (x * t_0)))))) / 2.0d0
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (0.016666666666666666 + (x * (x * 0.0003968253968253968)));
double tmp;
if (x <= 5e+60) {
tmp = (x * (2.0 + ((x / (1.0 / (0.1111111111111111 - (t_0 * ((x * x) * t_0))))) * (x / (0.3333333333333333 - (x * t_0)))))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): t_0 = x * (0.016666666666666666 + (x * (x * 0.0003968253968253968))) tmp = 0 if x <= 5e+60: tmp = (x * (2.0 + ((x / (1.0 / (0.1111111111111111 - (t_0 * ((x * x) * t_0))))) * (x / (0.3333333333333333 - (x * t_0)))))) / 2.0 else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) t_0 = Float64(x * Float64(0.016666666666666666 + Float64(x * Float64(x * 0.0003968253968253968)))) tmp = 0.0 if (x <= 5e+60) tmp = Float64(Float64(x * Float64(2.0 + Float64(Float64(x / Float64(1.0 / Float64(0.1111111111111111 - Float64(t_0 * Float64(Float64(x * x) * t_0))))) * Float64(x / Float64(0.3333333333333333 - Float64(x * t_0)))))) / 2.0); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) t_0 = x * (0.016666666666666666 + (x * (x * 0.0003968253968253968))); tmp = 0.0; if (x <= 5e+60) tmp = (x * (2.0 + ((x / (1.0 / (0.1111111111111111 - (t_0 * ((x * x) * t_0))))) * (x / (0.3333333333333333 - (x * t_0)))))) / 2.0; else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(0.016666666666666666 + N[(x * N[(x * 0.0003968253968253968), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 5e+60], N[(N[(x * N[(2.0 + N[(N[(x / N[(1.0 / N[(0.1111111111111111 - N[(t$95$0 * N[(N[(x * x), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(x / N[(0.3333333333333333 - N[(x * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(0.016666666666666666 + x \cdot \left(x \cdot 0.0003968253968253968\right)\right)\\
\mathbf{if}\;x \leq 5 \cdot 10^{+60}:\\
\;\;\;\;\frac{x \cdot \left(2 + \frac{x}{\frac{1}{0.1111111111111111 - t\_0 \cdot \left(\left(x \cdot x\right) \cdot t\_0\right)}} \cdot \frac{x}{0.3333333333333333 - x \cdot t\_0}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 4.99999999999999975e60Initial program 37.4%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6489.7%
Simplified89.7%
flip3-+N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
Applied egg-rr89.7%
flip-+N/A
associate-/r/N/A
times-fracN/A
*-lowering-*.f64N/A
Applied egg-rr75.8%
if 4.99999999999999975e60 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/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
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification80.0%
(FPCore (x)
:precision binary64
(let* ((t_0 (* x (+ 0.3333333333333333 (* (* x x) 0.016666666666666666)))))
(if (<= x 5e+60)
(/ (/ (* x (- 4.0 (* t_0 (* (* x x) t_0)))) (- 2.0 (* x t_0))) 2.0)
(* 0.008333333333333333 (* x (* x (* x (* x x))))))))
double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * 0.016666666666666666));
double tmp;
if (x <= 5e+60) {
tmp = ((x * (4.0 - (t_0 * ((x * x) * t_0)))) / (2.0 - (x * t_0))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: t_0
real(8) :: tmp
t_0 = x * (0.3333333333333333d0 + ((x * x) * 0.016666666666666666d0))
if (x <= 5d+60) then
tmp = ((x * (4.0d0 - (t_0 * ((x * x) * t_0)))) / (2.0d0 - (x * t_0))) / 2.0d0
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double t_0 = x * (0.3333333333333333 + ((x * x) * 0.016666666666666666));
double tmp;
if (x <= 5e+60) {
tmp = ((x * (4.0 - (t_0 * ((x * x) * t_0)))) / (2.0 - (x * t_0))) / 2.0;
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): t_0 = x * (0.3333333333333333 + ((x * x) * 0.016666666666666666)) tmp = 0 if x <= 5e+60: tmp = ((x * (4.0 - (t_0 * ((x * x) * t_0)))) / (2.0 - (x * t_0))) / 2.0 else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) t_0 = Float64(x * Float64(0.3333333333333333 + Float64(Float64(x * x) * 0.016666666666666666))) tmp = 0.0 if (x <= 5e+60) tmp = Float64(Float64(Float64(x * Float64(4.0 - Float64(t_0 * Float64(Float64(x * x) * t_0)))) / Float64(2.0 - Float64(x * t_0))) / 2.0); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) t_0 = x * (0.3333333333333333 + ((x * x) * 0.016666666666666666)); tmp = 0.0; if (x <= 5e+60) tmp = ((x * (4.0 - (t_0 * ((x * x) * t_0)))) / (2.0 - (x * t_0))) / 2.0; else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := Block[{t$95$0 = N[(x * N[(0.3333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.016666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 5e+60], N[(N[(N[(x * N[(4.0 - N[(t$95$0 * N[(N[(x * x), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(2.0 - N[(x * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(0.3333333333333333 + \left(x \cdot x\right) \cdot 0.016666666666666666\right)\\
\mathbf{if}\;x \leq 5 \cdot 10^{+60}:\\
\;\;\;\;\frac{\frac{x \cdot \left(4 - t\_0 \cdot \left(\left(x \cdot x\right) \cdot t\_0\right)\right)}{2 - x \cdot t\_0}}{2}\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 4.99999999999999975e60Initial program 37.4%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6486.9%
Simplified86.9%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr75.8%
if 4.99999999999999975e60 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/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
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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 simplification79.9%
(FPCore (x)
:precision binary64
(*
x
(+
1.0
(*
(* x x)
(+
0.16666666666666666
(*
x
(* x (+ 0.008333333333333333 (* (* x x) 0.0001984126984126984)))))))))
double code(double x) {
return x * (1.0 + ((x * x) * (0.16666666666666666 + (x * (x * (0.008333333333333333 + ((x * x) * 0.0001984126984126984)))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = x * (1.0d0 + ((x * x) * (0.16666666666666666d0 + (x * (x * (0.008333333333333333d0 + ((x * x) * 0.0001984126984126984d0)))))))
end function
public static double code(double x) {
return x * (1.0 + ((x * x) * (0.16666666666666666 + (x * (x * (0.008333333333333333 + ((x * x) * 0.0001984126984126984)))))));
}
def code(x): return x * (1.0 + ((x * x) * (0.16666666666666666 + (x * (x * (0.008333333333333333 + ((x * x) * 0.0001984126984126984)))))))
function code(x) return Float64(x * Float64(1.0 + Float64(Float64(x * x) * Float64(0.16666666666666666 + Float64(x * Float64(x * Float64(0.008333333333333333 + Float64(Float64(x * x) * 0.0001984126984126984)))))))) end
function tmp = code(x) tmp = x * (1.0 + ((x * x) * (0.16666666666666666 + (x * (x * (0.008333333333333333 + ((x * x) * 0.0001984126984126984))))))); end
code[x_] := N[(x * N[(1.0 + N[(N[(x * x), $MachinePrecision] * N[(0.16666666666666666 + N[(x * N[(x * N[(0.008333333333333333 + N[(N[(x * x), $MachinePrecision] * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(1 + \left(x \cdot x\right) \cdot \left(0.16666666666666666 + x \cdot \left(x \cdot \left(0.008333333333333333 + \left(x \cdot x\right) \cdot 0.0001984126984126984\right)\right)\right)\right)
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.5%
Simplified91.5%
(FPCore (x)
:precision binary64
(*
x
(+
1.0
(*
(* x x)
(+ 0.16666666666666666 (* (* x (* x (* x x))) 0.0001984126984126984))))))
double code(double x) {
return x * (1.0 + ((x * x) * (0.16666666666666666 + ((x * (x * (x * x))) * 0.0001984126984126984))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = x * (1.0d0 + ((x * x) * (0.16666666666666666d0 + ((x * (x * (x * x))) * 0.0001984126984126984d0))))
end function
public static double code(double x) {
return x * (1.0 + ((x * x) * (0.16666666666666666 + ((x * (x * (x * x))) * 0.0001984126984126984))));
}
def code(x): return x * (1.0 + ((x * x) * (0.16666666666666666 + ((x * (x * (x * x))) * 0.0001984126984126984))))
function code(x) return Float64(x * Float64(1.0 + Float64(Float64(x * x) * Float64(0.16666666666666666 + Float64(Float64(x * Float64(x * Float64(x * x))) * 0.0001984126984126984))))) end
function tmp = code(x) tmp = x * (1.0 + ((x * x) * (0.16666666666666666 + ((x * (x * (x * x))) * 0.0001984126984126984)))); end
code[x_] := N[(x * N[(1.0 + N[(N[(x * x), $MachinePrecision] * N[(0.16666666666666666 + N[(N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(1 + \left(x \cdot x\right) \cdot \left(0.16666666666666666 + \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right) \cdot 0.0001984126984126984\right)\right)
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.5%
Simplified91.5%
Taylor expanded in x around inf
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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-*.f6491.4%
Simplified91.4%
Final simplification91.4%
(FPCore (x) :precision binary64 (* x (+ 1.0 (* x (* (* x (* x (* x (* x x)))) 0.0001984126984126984)))))
double code(double x) {
return x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984)));
}
real(8) function code(x)
real(8), intent (in) :: x
code = x * (1.0d0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984d0)))
end function
public static double code(double x) {
return x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984)));
}
def code(x): return x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984)))
function code(x) return Float64(x * Float64(1.0 + Float64(x * Float64(Float64(x * Float64(x * Float64(x * Float64(x * x)))) * 0.0001984126984126984)))) end
function tmp = code(x) tmp = x * (1.0 + (x * ((x * (x * (x * (x * x)))) * 0.0001984126984126984))); end
code[x_] := N[(x * N[(1.0 + N[(x * N[(N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.0001984126984126984), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(1 + x \cdot \left(\left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right) \cdot 0.0001984126984126984\right)\right)
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6491.5%
Simplified91.5%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6491.5%
Applied egg-rr91.5%
Taylor expanded in x around inf
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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-*.f6491.2%
Simplified91.2%
Final simplification91.2%
(FPCore (x) :precision binary64 (if (<= x 5.0) (* x (+ 1.0 (* x (* x 0.16666666666666666)))) (* 0.008333333333333333 (* x (* x (* x (* x x)))))))
double code(double x) {
double tmp;
if (x <= 5.0) {
tmp = x * (1.0 + (x * (x * 0.16666666666666666)));
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 5.0d0) then
tmp = x * (1.0d0 + (x * (x * 0.16666666666666666d0)))
else
tmp = 0.008333333333333333d0 * (x * (x * (x * (x * x))))
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 5.0) {
tmp = x * (1.0 + (x * (x * 0.16666666666666666)));
} else {
tmp = 0.008333333333333333 * (x * (x * (x * (x * x))));
}
return tmp;
}
def code(x): tmp = 0 if x <= 5.0: tmp = x * (1.0 + (x * (x * 0.16666666666666666))) else: tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))) return tmp
function code(x) tmp = 0.0 if (x <= 5.0) tmp = Float64(x * Float64(1.0 + Float64(x * Float64(x * 0.16666666666666666)))); else tmp = Float64(0.008333333333333333 * Float64(x * Float64(x * Float64(x * Float64(x * x))))); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 5.0) tmp = x * (1.0 + (x * (x * 0.16666666666666666))); else tmp = 0.008333333333333333 * (x * (x * (x * (x * x)))); end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 5.0], N[(x * N[(1.0 + N[(x * N[(x * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.008333333333333333 * N[(x * N[(x * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 5:\\
\;\;\;\;x \cdot \left(1 + x \cdot \left(x \cdot 0.16666666666666666\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.008333333333333333 \cdot \left(x \cdot \left(x \cdot \left(x \cdot \left(x \cdot x\right)\right)\right)\right)\\
\end{array}
\end{array}
if x < 5Initial program 32.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6489.6%
Simplified89.6%
if 5 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6473.5%
Simplified73.5%
Taylor expanded in x around inf
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/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-*.f6473.5%
Simplified73.5%
Final simplification85.8%
(FPCore (x) :precision binary64 (* x (+ 1.0 (* x (* x (+ 0.16666666666666666 (* x (* x 0.008333333333333333))))))))
double code(double x) {
return x * (1.0 + (x * (x * (0.16666666666666666 + (x * (x * 0.008333333333333333))))));
}
real(8) function code(x)
real(8), intent (in) :: x
code = x * (1.0d0 + (x * (x * (0.16666666666666666d0 + (x * (x * 0.008333333333333333d0))))))
end function
public static double code(double x) {
return x * (1.0 + (x * (x * (0.16666666666666666 + (x * (x * 0.008333333333333333))))));
}
def code(x): return x * (1.0 + (x * (x * (0.16666666666666666 + (x * (x * 0.008333333333333333))))))
function code(x) return Float64(x * Float64(1.0 + Float64(x * Float64(x * Float64(0.16666666666666666 + Float64(x * Float64(x * 0.008333333333333333))))))) end
function tmp = code(x) tmp = x * (1.0 + (x * (x * (0.16666666666666666 + (x * (x * 0.008333333333333333)))))); end
code[x_] := N[(x * N[(1.0 + N[(x * N[(x * N[(0.16666666666666666 + N[(x * N[(x * 0.008333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(1 + x \cdot \left(x \cdot \left(0.16666666666666666 + x \cdot \left(x \cdot 0.008333333333333333\right)\right)\right)\right)
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
*-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
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6489.2%
Simplified89.2%
(FPCore (x) :precision binary64 (if (<= x 2.5) x (* (* x (* x x)) 0.16666666666666666)))
double code(double x) {
double tmp;
if (x <= 2.5) {
tmp = x;
} else {
tmp = (x * (x * x)) * 0.16666666666666666;
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= 2.5d0) then
tmp = x
else
tmp = (x * (x * x)) * 0.16666666666666666d0
end if
code = tmp
end function
public static double code(double x) {
double tmp;
if (x <= 2.5) {
tmp = x;
} else {
tmp = (x * (x * x)) * 0.16666666666666666;
}
return tmp;
}
def code(x): tmp = 0 if x <= 2.5: tmp = x else: tmp = (x * (x * x)) * 0.16666666666666666 return tmp
function code(x) tmp = 0.0 if (x <= 2.5) tmp = x; else tmp = Float64(Float64(x * Float64(x * x)) * 0.16666666666666666); end return tmp end
function tmp_2 = code(x) tmp = 0.0; if (x <= 2.5) tmp = x; else tmp = (x * (x * x)) * 0.16666666666666666; end tmp_2 = tmp; end
code[x_] := If[LessEqual[x, 2.5], x, N[(N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision] * 0.16666666666666666), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 2.5:\\
\;\;\;\;x\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(x \cdot x\right)\right) \cdot 0.16666666666666666\\
\end{array}
\end{array}
if x < 2.5Initial program 32.0%
Taylor expanded in x around 0
Simplified74.3%
if 2.5 < x Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6461.0%
Simplified61.0%
Taylor expanded in x around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6461.0%
Simplified61.0%
Final simplification71.1%
(FPCore (x) :precision binary64 (* x (+ 1.0 (* x (* x 0.16666666666666666)))))
double code(double x) {
return x * (1.0 + (x * (x * 0.16666666666666666)));
}
real(8) function code(x)
real(8), intent (in) :: x
code = x * (1.0d0 + (x * (x * 0.16666666666666666d0)))
end function
public static double code(double x) {
return x * (1.0 + (x * (x * 0.16666666666666666)));
}
def code(x): return x * (1.0 + (x * (x * 0.16666666666666666)))
function code(x) return Float64(x * Float64(1.0 + Float64(x * Float64(x * 0.16666666666666666)))) end
function tmp = code(x) tmp = x * (1.0 + (x * (x * 0.16666666666666666))); end
code[x_] := N[(x * N[(1.0 + N[(x * N[(x * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(1 + x \cdot \left(x \cdot 0.16666666666666666\right)\right)
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6482.8%
Simplified82.8%
(FPCore (x) :precision binary64 x)
double code(double x) {
return x;
}
real(8) function code(x)
real(8), intent (in) :: x
code = x
end function
public static double code(double x) {
return x;
}
def code(x): return x
function code(x) return x end
function tmp = code(x) tmp = x; end
code[x_] := x
\begin{array}{l}
\\
x
\end{array}
Initial program 48.2%
Taylor expanded in x around 0
Simplified57.7%
herbie shell --seed 2024192
(FPCore (x)
:name "Hyperbolic sine"
:precision binary64
(/ (- (exp x) (exp (- x))) 2.0))