
(FPCore (x n) :precision binary64 (- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))
double code(double x, double n) {
return pow((x + 1.0), (1.0 / n)) - pow(x, (1.0 / n));
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
code = ((x + 1.0d0) ** (1.0d0 / n)) - (x ** (1.0d0 / n))
end function
public static double code(double x, double n) {
return Math.pow((x + 1.0), (1.0 / n)) - Math.pow(x, (1.0 / n));
}
def code(x, n): return math.pow((x + 1.0), (1.0 / n)) - math.pow(x, (1.0 / n))
function code(x, n) return Float64((Float64(x + 1.0) ^ Float64(1.0 / n)) - (x ^ Float64(1.0 / n))) end
function tmp = code(x, n) tmp = ((x + 1.0) ^ (1.0 / n)) - (x ^ (1.0 / n)); end
code[x_, n_] := N[(N[Power[N[(x + 1.0), $MachinePrecision], N[(1.0 / n), $MachinePrecision]], $MachinePrecision] - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 19 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x n) :precision binary64 (- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))
double code(double x, double n) {
return pow((x + 1.0), (1.0 / n)) - pow(x, (1.0 / n));
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
code = ((x + 1.0d0) ** (1.0d0 / n)) - (x ** (1.0d0 / n))
end function
public static double code(double x, double n) {
return Math.pow((x + 1.0), (1.0 / n)) - Math.pow(x, (1.0 / n));
}
def code(x, n): return math.pow((x + 1.0), (1.0 / n)) - math.pow(x, (1.0 / n))
function code(x, n) return Float64((Float64(x + 1.0) ^ Float64(1.0 / n)) - (x ^ Float64(1.0 / n))) end
function tmp = code(x, n) tmp = ((x + 1.0) ^ (1.0 / n)) - (x ^ (1.0 / n)); end
code[x_, n_] := N[(N[Power[N[(x + 1.0), $MachinePrecision], N[(1.0 / n), $MachinePrecision]], $MachinePrecision] - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}
\end{array}
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-5)
(/
(+
(/
(+
(* 0.5 (- (pow (log1p x) 2.0) (pow (log x) 2.0)))
(*
(/ -0.16666666666666666 n)
(- (pow (log x) 3.0) (pow (log1p x) 3.0))))
n)
(- (log1p x) (log x)))
n)
(- (pow E (/ x n)) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-5) {
tmp = ((((0.5 * (pow(log1p(x), 2.0) - pow(log(x), 2.0))) + ((-0.16666666666666666 / n) * (pow(log(x), 3.0) - pow(log1p(x), 3.0)))) / n) + (log1p(x) - log(x))) / n;
} else {
tmp = pow(((double) M_E), (x / n)) - t_0;
}
return tmp;
}
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-5) {
tmp = ((((0.5 * (Math.pow(Math.log1p(x), 2.0) - Math.pow(Math.log(x), 2.0))) + ((-0.16666666666666666 / n) * (Math.pow(Math.log(x), 3.0) - Math.pow(Math.log1p(x), 3.0)))) / n) + (Math.log1p(x) - Math.log(x))) / n;
} else {
tmp = Math.pow(Math.E, (x / n)) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-5: tmp = ((((0.5 * (math.pow(math.log1p(x), 2.0) - math.pow(math.log(x), 2.0))) + ((-0.16666666666666666 / n) * (math.pow(math.log(x), 3.0) - math.pow(math.log1p(x), 3.0)))) / n) + (math.log1p(x) - math.log(x))) / n else: tmp = math.pow(math.e, (x / n)) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-5) tmp = Float64(Float64(Float64(Float64(Float64(0.5 * Float64((log1p(x) ^ 2.0) - (log(x) ^ 2.0))) + Float64(Float64(-0.16666666666666666 / n) * Float64((log(x) ^ 3.0) - (log1p(x) ^ 3.0)))) / n) + Float64(log1p(x) - log(x))) / n); else tmp = Float64((exp(1) ^ Float64(x / n)) - t_0); end return tmp end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-5], N[(N[(N[(N[(N[(0.5 * N[(N[Power[N[Log[1 + x], $MachinePrecision], 2.0], $MachinePrecision] - N[Power[N[Log[x], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(-0.16666666666666666 / n), $MachinePrecision] * N[(N[Power[N[Log[x], $MachinePrecision], 3.0], $MachinePrecision] - N[Power[N[Log[1 + x], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision] + N[(N[Log[1 + x], $MachinePrecision] - N[Log[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision], N[(N[Power[E, N[(x / n), $MachinePrecision]], $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-5}:\\
\;\;\;\;\frac{\frac{0.5 \cdot \left({\left(\mathsf{log1p}\left(x\right)\right)}^{2} - {\log x}^{2}\right) + \frac{-0.16666666666666666}{n} \cdot \left({\log x}^{3} - {\left(\mathsf{log1p}\left(x\right)\right)}^{3}\right)}{n} + \left(\mathsf{log1p}\left(x\right) - \log x\right)}{n}\\
\mathbf{else}:\\
\;\;\;\;{e}^{\left(\frac{x}{n}\right)} - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 1.00000000000000008e-5Initial program 33.8%
Taylor expanded in n around -inf
Simplified79.4%
if 1.00000000000000008e-5 < (/.f64 #s(literal 1 binary64) n) Initial program 58.6%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6497.1%
Applied egg-rr97.1%
Taylor expanded in x around 0
Simplified97.1%
clear-numN/A
div-invN/A
clear-numN/A
exp-prodN/A
pow-lowering-pow.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6497.1%
Applied egg-rr97.1%
Final simplification87.8%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-5)
(/
(+
(log1p x)
(- (* (- (pow (log1p x) 2.0) (pow (log x) 2.0)) (/ 0.5 n)) (log x)))
n)
(- (pow E (/ x n)) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-5) {
tmp = (log1p(x) + (((pow(log1p(x), 2.0) - pow(log(x), 2.0)) * (0.5 / n)) - log(x))) / n;
} else {
tmp = pow(((double) M_E), (x / n)) - t_0;
}
return tmp;
}
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-5) {
tmp = (Math.log1p(x) + (((Math.pow(Math.log1p(x), 2.0) - Math.pow(Math.log(x), 2.0)) * (0.5 / n)) - Math.log(x))) / n;
} else {
tmp = Math.pow(Math.E, (x / n)) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-5: tmp = (math.log1p(x) + (((math.pow(math.log1p(x), 2.0) - math.pow(math.log(x), 2.0)) * (0.5 / n)) - math.log(x))) / n else: tmp = math.pow(math.e, (x / n)) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-5) tmp = Float64(Float64(log1p(x) + Float64(Float64(Float64((log1p(x) ^ 2.0) - (log(x) ^ 2.0)) * Float64(0.5 / n)) - log(x))) / n); else tmp = Float64((exp(1) ^ Float64(x / n)) - t_0); end return tmp end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-5], N[(N[(N[Log[1 + x], $MachinePrecision] + N[(N[(N[(N[Power[N[Log[1 + x], $MachinePrecision], 2.0], $MachinePrecision] - N[Power[N[Log[x], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] * N[(0.5 / n), $MachinePrecision]), $MachinePrecision] - N[Log[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision], N[(N[Power[E, N[(x / n), $MachinePrecision]], $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-5}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(x\right) + \left(\left({\left(\mathsf{log1p}\left(x\right)\right)}^{2} - {\log x}^{2}\right) \cdot \frac{0.5}{n} - \log x\right)}{n}\\
\mathbf{else}:\\
\;\;\;\;{e}^{\left(\frac{x}{n}\right)} - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 1.00000000000000008e-5Initial program 33.8%
Taylor expanded in n around inf
/-lowering-/.f64N/A
Simplified79.3%
if 1.00000000000000008e-5 < (/.f64 #s(literal 1 binary64) n) Initial program 58.6%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6497.1%
Applied egg-rr97.1%
Taylor expanded in x around 0
Simplified97.1%
clear-numN/A
div-invN/A
clear-numN/A
exp-prodN/A
pow-lowering-pow.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6497.1%
Applied egg-rr97.1%
Final simplification87.7%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(- (exp (/ (log1p x) n)) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = exp((log1p(x) / n)) - t_0;
}
return tmp;
}
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = Math.exp((Math.log1p(x) / n)) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) else: tmp = math.exp((math.log1p(x) / n)) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); else tmp = Float64(exp(Float64(log1p(x) / n)) - t_0); end return tmp end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(N[Log[1 + x], $MachinePrecision] / n), $MachinePrecision]], $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) Initial program 56.1%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6491.5%
Applied egg-rr91.5%
Final simplification87.6%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(- (exp (/ x n)) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = exp((x / n)) - t_0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = x ** (1.0d0 / n)
if ((1.0d0 / n) <= (-4d-154)) then
tmp = (t_0 / n) / x
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else
tmp = exp((x / n)) - t_0
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = Math.exp((x / n)) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) else: tmp = math.exp((x / n)) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); else tmp = Float64(exp(Float64(x / n)) - t_0); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (1.0 / n); tmp = 0.0; if ((1.0 / n) <= -4e-154) tmp = (t_0 / n) / x; elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); else tmp = exp((x / n)) - t_0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(x / n), $MachinePrecision]], $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{x}{n}} - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) Initial program 56.1%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6491.5%
Applied egg-rr91.5%
Taylor expanded in x around 0
Simplified91.3%
Final simplification87.5%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(- (+ 1.0 (* x (+ (/ 1.0 n) (* 0.5 (/ x (* n n)))))) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = (1.0 + (x * ((1.0 / n) + (0.5 * (x / (n * n)))))) - t_0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = x ** (1.0d0 / n)
if ((1.0d0 / n) <= (-4d-154)) then
tmp = (t_0 / n) / x
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else
tmp = (1.0d0 + (x * ((1.0d0 / n) + (0.5d0 * (x / (n * n)))))) - t_0
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = (1.0 + (x * ((1.0 / n) + (0.5 * (x / (n * n)))))) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) else: tmp = (1.0 + (x * ((1.0 / n) + (0.5 * (x / (n * n)))))) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); else tmp = Float64(Float64(1.0 + Float64(x * Float64(Float64(1.0 / n) + Float64(0.5 * Float64(x / Float64(n * n)))))) - t_0); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (1.0 / n); tmp = 0.0; if ((1.0 / n) <= -4e-154) tmp = (t_0 / n) / x; elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); else tmp = (1.0 + (x * ((1.0 / n) + (0.5 * (x / (n * n)))))) - t_0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 + N[(x * N[(N[(1.0 / n), $MachinePrecision] + N[(0.5 * N[(x / N[(n * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{else}:\\
\;\;\;\;\left(1 + x \cdot \left(\frac{1}{n} + 0.5 \cdot \frac{x}{n \cdot n}\right)\right) - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) Initial program 56.1%
Taylor expanded in x around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6473.1%
Simplified73.1%
Taylor expanded in n around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6473.2%
Simplified73.2%
Final simplification84.9%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(if (<= (/ 1.0 n) 5e+126)
(- (+ 1.0 (/ x n)) t_0)
(+ (exp (/ x n)) -1.0))))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = (1.0 + (x / n)) - t_0;
} else {
tmp = exp((x / n)) + -1.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = x ** (1.0d0 / n)
if ((1.0d0 / n) <= (-4d-154)) then
tmp = (t_0 / n) / x
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else if ((1.0d0 / n) <= 5d+126) then
tmp = (1.0d0 + (x / n)) - t_0
else
tmp = exp((x / n)) + (-1.0d0)
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = (1.0 + (x / n)) - t_0;
} else {
tmp = Math.exp((x / n)) + -1.0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) elif (1.0 / n) <= 5e+126: tmp = (1.0 + (x / n)) - t_0 else: tmp = math.exp((x / n)) + -1.0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); elseif (Float64(1.0 / n) <= 5e+126) tmp = Float64(Float64(1.0 + Float64(x / n)) - t_0); else tmp = Float64(exp(Float64(x / n)) + -1.0); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (1.0 / n); tmp = 0.0; if ((1.0 / n) <= -4e-154) tmp = (t_0 / n) / x; elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); elseif ((1.0 / n) <= 5e+126) tmp = (1.0 + (x / n)) - t_0; else tmp = exp((x / n)) + -1.0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 5e+126], N[(N[(1.0 + N[(x / n), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], N[(N[Exp[N[(x / n), $MachinePrecision]], $MachinePrecision] + -1.0), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{elif}\;\frac{1}{n} \leq 5 \cdot 10^{+126}:\\
\;\;\;\;\left(1 + \frac{x}{n}\right) - t\_0\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{x}{n}} + -1\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999977e126Initial program 76.5%
Taylor expanded in x around 0
*-rgt-identityN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
*-rgt-identityN/A
/-lowering-/.f6477.9%
Simplified77.9%
if 4.99999999999999977e126 < (/.f64 #s(literal 1 binary64) n) Initial program 32.0%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6499.9%
Applied egg-rr99.9%
Taylor expanded in x around 0
Simplified99.9%
Taylor expanded in n around inf
Simplified72.9%
Final simplification85.3%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(- (+ 1.0 (* x (* 0.5 (/ x (* n n))))) t_0)))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = (1.0 + (x * (0.5 * (x / (n * n))))) - t_0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = x ** (1.0d0 / n)
if ((1.0d0 / n) <= (-4d-154)) then
tmp = (t_0 / n) / x
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else
tmp = (1.0d0 + (x * (0.5d0 * (x / (n * n))))) - t_0
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else {
tmp = (1.0 + (x * (0.5 * (x / (n * n))))) - t_0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) else: tmp = (1.0 + (x * (0.5 * (x / (n * n))))) - t_0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); else tmp = Float64(Float64(1.0 + Float64(x * Float64(0.5 * Float64(x / Float64(n * n))))) - t_0); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (1.0 / n); tmp = 0.0; if ((1.0 / n) <= -4e-154) tmp = (t_0 / n) / x; elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); else tmp = (1.0 + (x * (0.5 * (x / (n * n))))) - t_0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 + N[(x * N[(0.5 * N[(x / N[(n * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{else}:\\
\;\;\;\;\left(1 + x \cdot \left(0.5 \cdot \frac{x}{n \cdot n}\right)\right) - t\_0\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) Initial program 56.1%
Taylor expanded in x around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6473.1%
Simplified73.1%
Taylor expanded in n around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6471.7%
Simplified71.7%
Final simplification84.7%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (/ 1.0 n))))
(if (<= (/ 1.0 n) -4e-154)
(/ (/ t_0 n) x)
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(if (<= (/ 1.0 n) 5e+126) (- 1.0 t_0) (+ (exp (/ x n)) -1.0))))))
double code(double x, double n) {
double t_0 = pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - t_0;
} else {
tmp = exp((x / n)) + -1.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = x ** (1.0d0 / n)
if ((1.0d0 / n) <= (-4d-154)) then
tmp = (t_0 / n) / x
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else if ((1.0d0 / n) <= 5d+126) then
tmp = 1.0d0 - t_0
else
tmp = exp((x / n)) + (-1.0d0)
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = Math.pow(x, (1.0 / n));
double tmp;
if ((1.0 / n) <= -4e-154) {
tmp = (t_0 / n) / x;
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - t_0;
} else {
tmp = Math.exp((x / n)) + -1.0;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, (1.0 / n)) tmp = 0 if (1.0 / n) <= -4e-154: tmp = (t_0 / n) / x elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) elif (1.0 / n) <= 5e+126: tmp = 1.0 - t_0 else: tmp = math.exp((x / n)) + -1.0 return tmp
function code(x, n) t_0 = x ^ Float64(1.0 / n) tmp = 0.0 if (Float64(1.0 / n) <= -4e-154) tmp = Float64(Float64(t_0 / n) / x); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); elseif (Float64(1.0 / n) <= 5e+126) tmp = Float64(1.0 - t_0); else tmp = Float64(exp(Float64(x / n)) + -1.0); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (1.0 / n); tmp = 0.0; if ((1.0 / n) <= -4e-154) tmp = (t_0 / n) / x; elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); elseif ((1.0 / n) <= 5e+126) tmp = 1.0 - t_0; else tmp = exp((x / n)) + -1.0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(1.0 / n), $MachinePrecision], -4e-154], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 5e+126], N[(1.0 - t$95$0), $MachinePrecision], N[(N[Exp[N[(x / n), $MachinePrecision]], $MachinePrecision] + -1.0), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{if}\;\frac{1}{n} \leq -4 \cdot 10^{-154}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{elif}\;\frac{1}{n} \leq 5 \cdot 10^{+126}:\\
\;\;\;\;1 - t\_0\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{x}{n}} + -1\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -3.9999999999999999e-154Initial program 82.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6492.1%
Simplified92.1%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6492.7%
Applied egg-rr92.7%
if -3.9999999999999999e-154 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 33.9%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6480.2%
Simplified80.2%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6480.4%
Applied egg-rr80.4%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999977e126Initial program 76.5%
Taylor expanded in x around 0
Simplified76.2%
if 4.99999999999999977e126 < (/.f64 #s(literal 1 binary64) n) Initial program 32.0%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6499.9%
Applied egg-rr99.9%
Taylor expanded in x around 0
Simplified99.9%
Taylor expanded in n around inf
Simplified72.9%
Final simplification85.1%
(FPCore (x n)
:precision binary64
(if (<= (/ 1.0 n) -2e-11)
(/ 0.3333333333333333 (* n (* x (* x x))))
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ x (+ 1.0 x))) (- 0.0 n))
(if (<= (/ 1.0 n) 5e+126)
(- 1.0 (pow x (/ 1.0 n)))
(+ (exp (/ x n)) -1.0)))))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2e-11) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if ((1.0 / n) <= 1e-12) {
tmp = log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - pow(x, (1.0 / n));
} else {
tmp = exp((x / n)) + -1.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2d-11)) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else if ((1.0d0 / n) <= 1d-12) then
tmp = log((x / (1.0d0 + x))) / (0.0d0 - n)
else if ((1.0d0 / n) <= 5d+126) then
tmp = 1.0d0 - (x ** (1.0d0 / n))
else
tmp = exp((x / n)) + (-1.0d0)
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2e-11) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log((x / (1.0 + x))) / (0.0 - n);
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - Math.pow(x, (1.0 / n));
} else {
tmp = Math.exp((x / n)) + -1.0;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2e-11: tmp = 0.3333333333333333 / (n * (x * (x * x))) elif (1.0 / n) <= 1e-12: tmp = math.log((x / (1.0 + x))) / (0.0 - n) elif (1.0 / n) <= 5e+126: tmp = 1.0 - math.pow(x, (1.0 / n)) else: tmp = math.exp((x / n)) + -1.0 return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2e-11) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(x / Float64(1.0 + x))) / Float64(0.0 - n)); elseif (Float64(1.0 / n) <= 5e+126) tmp = Float64(1.0 - (x ^ Float64(1.0 / n))); else tmp = Float64(exp(Float64(x / n)) + -1.0); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2e-11) tmp = 0.3333333333333333 / (n * (x * (x * x))); elseif ((1.0 / n) <= 1e-12) tmp = log((x / (1.0 + x))) / (0.0 - n); elseif ((1.0 / n) <= 5e+126) tmp = 1.0 - (x ^ (1.0 / n)); else tmp = exp((x / n)) + -1.0; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2e-11], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(x / N[(1.0 + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(0.0 - n), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 5e+126], N[(1.0 - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(x / n), $MachinePrecision]], $MachinePrecision] + -1.0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2 \cdot 10^{-11}:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{x}{1 + x}\right)}{0 - n}\\
\mathbf{elif}\;\frac{1}{n} \leq 5 \cdot 10^{+126}:\\
\;\;\;\;1 - {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{x}{n}} + -1\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -1.99999999999999988e-11Initial program 98.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6449.9%
Simplified49.9%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6440.2%
Simplified40.2%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.2%
Simplified69.2%
if -1.99999999999999988e-11 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 31.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6474.7%
Simplified74.7%
diff-logN/A
clear-numN/A
neg-logN/A
diff-logN/A
neg-lowering-neg.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6474.9%
Applied egg-rr74.9%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999977e126Initial program 76.5%
Taylor expanded in x around 0
Simplified76.2%
if 4.99999999999999977e126 < (/.f64 #s(literal 1 binary64) n) Initial program 32.0%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6499.9%
Applied egg-rr99.9%
Taylor expanded in x around 0
Simplified99.9%
Taylor expanded in n around inf
Simplified72.9%
Final simplification72.8%
(FPCore (x n)
:precision binary64
(if (<= (/ 1.0 n) -2e-11)
(/ 0.3333333333333333 (* n (* x (* x x))))
(if (<= (/ 1.0 n) 1e-12)
(/ (log (/ (+ 1.0 x) x)) n)
(if (<= (/ 1.0 n) 5e+126)
(- 1.0 (pow x (/ 1.0 n)))
(+ (exp (/ x n)) -1.0)))))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2e-11) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if ((1.0 / n) <= 1e-12) {
tmp = log(((1.0 + x) / x)) / n;
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - pow(x, (1.0 / n));
} else {
tmp = exp((x / n)) + -1.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2d-11)) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else if ((1.0d0 / n) <= 1d-12) then
tmp = log(((1.0d0 + x) / x)) / n
else if ((1.0d0 / n) <= 5d+126) then
tmp = 1.0d0 - (x ** (1.0d0 / n))
else
tmp = exp((x / n)) + (-1.0d0)
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2e-11) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if ((1.0 / n) <= 1e-12) {
tmp = Math.log(((1.0 + x) / x)) / n;
} else if ((1.0 / n) <= 5e+126) {
tmp = 1.0 - Math.pow(x, (1.0 / n));
} else {
tmp = Math.exp((x / n)) + -1.0;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2e-11: tmp = 0.3333333333333333 / (n * (x * (x * x))) elif (1.0 / n) <= 1e-12: tmp = math.log(((1.0 + x) / x)) / n elif (1.0 / n) <= 5e+126: tmp = 1.0 - math.pow(x, (1.0 / n)) else: tmp = math.exp((x / n)) + -1.0 return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2e-11) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); elseif (Float64(1.0 / n) <= 1e-12) tmp = Float64(log(Float64(Float64(1.0 + x) / x)) / n); elseif (Float64(1.0 / n) <= 5e+126) tmp = Float64(1.0 - (x ^ Float64(1.0 / n))); else tmp = Float64(exp(Float64(x / n)) + -1.0); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2e-11) tmp = 0.3333333333333333 / (n * (x * (x * x))); elseif ((1.0 / n) <= 1e-12) tmp = log(((1.0 + x) / x)) / n; elseif ((1.0 / n) <= 5e+126) tmp = 1.0 - (x ^ (1.0 / n)); else tmp = exp((x / n)) + -1.0; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2e-11], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 1e-12], N[(N[Log[N[(N[(1.0 + x), $MachinePrecision] / x), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[(1.0 / n), $MachinePrecision], 5e+126], N[(1.0 - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(x / n), $MachinePrecision]], $MachinePrecision] + -1.0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2 \cdot 10^{-11}:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{elif}\;\frac{1}{n} \leq 10^{-12}:\\
\;\;\;\;\frac{\log \left(\frac{1 + x}{x}\right)}{n}\\
\mathbf{elif}\;\frac{1}{n} \leq 5 \cdot 10^{+126}:\\
\;\;\;\;1 - {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{else}:\\
\;\;\;\;e^{\frac{x}{n}} + -1\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -1.99999999999999988e-11Initial program 98.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6449.9%
Simplified49.9%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6440.2%
Simplified40.2%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.2%
Simplified69.2%
if -1.99999999999999988e-11 < (/.f64 #s(literal 1 binary64) n) < 9.9999999999999998e-13Initial program 31.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6474.7%
Simplified74.7%
/-lowering-/.f64N/A
diff-logN/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6474.9%
Applied egg-rr74.9%
if 9.9999999999999998e-13 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999977e126Initial program 76.5%
Taylor expanded in x around 0
Simplified76.2%
if 4.99999999999999977e126 < (/.f64 #s(literal 1 binary64) n) Initial program 32.0%
pow-to-expN/A
exp-lowering-exp.f64N/A
un-div-invN/A
/-lowering-/.f64N/A
+-commutativeN/A
log1p-defineN/A
log1p-lowering-log1p.f6499.9%
Applied egg-rr99.9%
Taylor expanded in x around 0
Simplified99.9%
Taylor expanded in n around inf
Simplified72.9%
Final simplification72.8%
(FPCore (x n)
:precision binary64
(let* ((t_0 (/ (- x (log x)) n)))
(if (<= x 1.45e-240)
t_0
(if (<= x 3.2e-166)
(/ 0.3333333333333333 (* n (* x (* x x))))
(if (<= x 0.88)
t_0
(if (<= x 4.8e+132)
(/
(+
(/ 1.0 n)
(/
(-
(/ -0.5 n)
(/ (+ (/ 0.25 (* n x)) (/ -0.3333333333333333 n)) x))
x))
x)
0.0))))))
double code(double x, double n) {
double t_0 = (x - log(x)) / n;
double tmp;
if (x <= 1.45e-240) {
tmp = t_0;
} else if (x <= 3.2e-166) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if (x <= 0.88) {
tmp = t_0;
} else if (x <= 4.8e+132) {
tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x;
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: t_0
real(8) :: tmp
t_0 = (x - log(x)) / n
if (x <= 1.45d-240) then
tmp = t_0
else if (x <= 3.2d-166) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else if (x <= 0.88d0) then
tmp = t_0
else if (x <= 4.8d+132) then
tmp = ((1.0d0 / n) + ((((-0.5d0) / n) - (((0.25d0 / (n * x)) + ((-0.3333333333333333d0) / n)) / x)) / x)) / x
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double x, double n) {
double t_0 = (x - Math.log(x)) / n;
double tmp;
if (x <= 1.45e-240) {
tmp = t_0;
} else if (x <= 3.2e-166) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else if (x <= 0.88) {
tmp = t_0;
} else if (x <= 4.8e+132) {
tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x;
} else {
tmp = 0.0;
}
return tmp;
}
def code(x, n): t_0 = (x - math.log(x)) / n tmp = 0 if x <= 1.45e-240: tmp = t_0 elif x <= 3.2e-166: tmp = 0.3333333333333333 / (n * (x * (x * x))) elif x <= 0.88: tmp = t_0 elif x <= 4.8e+132: tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x else: tmp = 0.0 return tmp
function code(x, n) t_0 = Float64(Float64(x - log(x)) / n) tmp = 0.0 if (x <= 1.45e-240) tmp = t_0; elseif (x <= 3.2e-166) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); elseif (x <= 0.88) tmp = t_0; elseif (x <= 4.8e+132) tmp = Float64(Float64(Float64(1.0 / n) + Float64(Float64(Float64(-0.5 / n) - Float64(Float64(Float64(0.25 / Float64(n * x)) + Float64(-0.3333333333333333 / n)) / x)) / x)) / x); else tmp = 0.0; end return tmp end
function tmp_2 = code(x, n) t_0 = (x - log(x)) / n; tmp = 0.0; if (x <= 1.45e-240) tmp = t_0; elseif (x <= 3.2e-166) tmp = 0.3333333333333333 / (n * (x * (x * x))); elseif (x <= 0.88) tmp = t_0; elseif (x <= 4.8e+132) tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x; else tmp = 0.0; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[(N[(x - N[Log[x], $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision]}, If[LessEqual[x, 1.45e-240], t$95$0, If[LessEqual[x, 3.2e-166], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 0.88], t$95$0, If[LessEqual[x, 4.8e+132], N[(N[(N[(1.0 / n), $MachinePrecision] + N[(N[(N[(-0.5 / n), $MachinePrecision] - N[(N[(N[(0.25 / N[(n * x), $MachinePrecision]), $MachinePrecision] + N[(-0.3333333333333333 / n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], 0.0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x - \log x}{n}\\
\mathbf{if}\;x \leq 1.45 \cdot 10^{-240}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 3.2 \cdot 10^{-166}:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{elif}\;x \leq 0.88:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 4.8 \cdot 10^{+132}:\\
\;\;\;\;\frac{\frac{1}{n} + \frac{\frac{-0.5}{n} - \frac{\frac{0.25}{n \cdot x} + \frac{-0.3333333333333333}{n}}{x}}{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if x < 1.4500000000000001e-240 or 3.20000000000000001e-166 < x < 0.880000000000000004Initial program 47.8%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6450.6%
Simplified50.6%
Taylor expanded in x around 0
--lowering--.f64N/A
log-lowering-log.f6450.3%
Simplified50.3%
if 1.4500000000000001e-240 < x < 3.20000000000000001e-166Initial program 61.8%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6433.4%
Simplified33.4%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6460.4%
Simplified60.4%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6460.4%
Simplified60.4%
if 0.880000000000000004 < x < 4.8000000000000002e132Initial program 49.5%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6447.5%
Simplified47.5%
Taylor expanded in x around -inf
Simplified64.3%
if 4.8000000000000002e132 < x Initial program 88.3%
Taylor expanded in x around 0
Simplified42.2%
Taylor expanded in n around inf
Simplified88.3%
metadata-eval88.3%
Applied egg-rr88.3%
Final simplification63.4%
(FPCore (x n)
:precision binary64
(if (<= x 4.8e-122)
(- 1.0 (pow x (/ 1.0 n)))
(if (<= x 0.88)
(/ (- x (log x)) n)
(if (<= x 1.3e+133)
(/
(+
(/ 1.0 n)
(/
(- (/ -0.5 n) (/ (+ (/ 0.25 (* n x)) (/ -0.3333333333333333 n)) x))
x))
x)
0.0))))
double code(double x, double n) {
double tmp;
if (x <= 4.8e-122) {
tmp = 1.0 - pow(x, (1.0 / n));
} else if (x <= 0.88) {
tmp = (x - log(x)) / n;
} else if (x <= 1.3e+133) {
tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x;
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if (x <= 4.8d-122) then
tmp = 1.0d0 - (x ** (1.0d0 / n))
else if (x <= 0.88d0) then
tmp = (x - log(x)) / n
else if (x <= 1.3d+133) then
tmp = ((1.0d0 / n) + ((((-0.5d0) / n) - (((0.25d0 / (n * x)) + ((-0.3333333333333333d0) / n)) / x)) / x)) / x
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if (x <= 4.8e-122) {
tmp = 1.0 - Math.pow(x, (1.0 / n));
} else if (x <= 0.88) {
tmp = (x - Math.log(x)) / n;
} else if (x <= 1.3e+133) {
tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x;
} else {
tmp = 0.0;
}
return tmp;
}
def code(x, n): tmp = 0 if x <= 4.8e-122: tmp = 1.0 - math.pow(x, (1.0 / n)) elif x <= 0.88: tmp = (x - math.log(x)) / n elif x <= 1.3e+133: tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x else: tmp = 0.0 return tmp
function code(x, n) tmp = 0.0 if (x <= 4.8e-122) tmp = Float64(1.0 - (x ^ Float64(1.0 / n))); elseif (x <= 0.88) tmp = Float64(Float64(x - log(x)) / n); elseif (x <= 1.3e+133) tmp = Float64(Float64(Float64(1.0 / n) + Float64(Float64(Float64(-0.5 / n) - Float64(Float64(Float64(0.25 / Float64(n * x)) + Float64(-0.3333333333333333 / n)) / x)) / x)) / x); else tmp = 0.0; end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (x <= 4.8e-122) tmp = 1.0 - (x ^ (1.0 / n)); elseif (x <= 0.88) tmp = (x - log(x)) / n; elseif (x <= 1.3e+133) tmp = ((1.0 / n) + (((-0.5 / n) - (((0.25 / (n * x)) + (-0.3333333333333333 / n)) / x)) / x)) / x; else tmp = 0.0; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[x, 4.8e-122], N[(1.0 - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 0.88], N[(N[(x - N[Log[x], $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision], If[LessEqual[x, 1.3e+133], N[(N[(N[(1.0 / n), $MachinePrecision] + N[(N[(N[(-0.5 / n), $MachinePrecision] - N[(N[(N[(0.25 / N[(n * x), $MachinePrecision]), $MachinePrecision] + N[(-0.3333333333333333 / n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], 0.0]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 4.8 \cdot 10^{-122}:\\
\;\;\;\;1 - {x}^{\left(\frac{1}{n}\right)}\\
\mathbf{elif}\;x \leq 0.88:\\
\;\;\;\;\frac{x - \log x}{n}\\
\mathbf{elif}\;x \leq 1.3 \cdot 10^{+133}:\\
\;\;\;\;\frac{\frac{1}{n} + \frac{\frac{-0.5}{n} - \frac{\frac{0.25}{n \cdot x} + \frac{-0.3333333333333333}{n}}{x}}{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if x < 4.79999999999999975e-122Initial program 60.5%
Taylor expanded in x around 0
Simplified60.5%
if 4.79999999999999975e-122 < x < 0.880000000000000004Initial program 36.5%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6455.8%
Simplified55.8%
Taylor expanded in x around 0
--lowering--.f64N/A
log-lowering-log.f6455.3%
Simplified55.3%
if 0.880000000000000004 < x < 1.2999999999999999e133Initial program 49.5%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6447.5%
Simplified47.5%
Taylor expanded in x around -inf
Simplified64.3%
if 1.2999999999999999e133 < x Initial program 88.3%
Taylor expanded in x around 0
Simplified42.2%
Taylor expanded in n around inf
Simplified88.3%
metadata-eval88.3%
Applied egg-rr88.3%
Final simplification66.5%
(FPCore (x n) :precision binary64 (if (<= (/ 1.0 n) -2000000000.0) (/ 0.3333333333333333 (* n (* x (* x x)))) (/ (/ (+ (/ 0.3333333333333333 (* x x)) (+ 1.0 (/ -0.5 x))) n) x)))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = (((0.3333333333333333 / (x * x)) + (1.0 + (-0.5 / x))) / n) / x;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2000000000.0d0)) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else
tmp = (((0.3333333333333333d0 / (x * x)) + (1.0d0 + ((-0.5d0) / x))) / n) / x
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = (((0.3333333333333333 / (x * x)) + (1.0 + (-0.5 / x))) / n) / x;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2000000000.0: tmp = 0.3333333333333333 / (n * (x * (x * x))) else: tmp = (((0.3333333333333333 / (x * x)) + (1.0 + (-0.5 / x))) / n) / x return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2000000000.0) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); else tmp = Float64(Float64(Float64(Float64(0.3333333333333333 / Float64(x * x)) + Float64(1.0 + Float64(-0.5 / x))) / n) / x); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2000000000.0) tmp = 0.3333333333333333 / (n * (x * (x * x))); else tmp = (((0.3333333333333333 / (x * x)) + (1.0 + (-0.5 / x))) / n) / x; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2000000000.0], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(0.3333333333333333 / N[(x * x), $MachinePrecision]), $MachinePrecision] + N[(1.0 + N[(-0.5 / x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision] / x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2000000000:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{0.3333333333333333}{x \cdot x} + \left(1 + \frac{-0.5}{x}\right)}{n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e9Initial program 100.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6452.0%
Simplified52.0%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6439.5%
Simplified39.5%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6471.0%
Simplified71.0%
if -2e9 < (/.f64 #s(literal 1 binary64) n) Initial program 37.1%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6458.3%
Simplified58.3%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6449.0%
Simplified49.0%
associate-/l/N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
associate-+l+N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f6449.0%
Applied egg-rr49.0%
(FPCore (x n) :precision binary64 (if (<= (/ 1.0 n) -2000000000.0) (/ 0.3333333333333333 (* n (* x (* x x)))) (/ (/ (- 1.0 (/ (+ 0.5 (/ -0.3333333333333333 x)) x)) x) n)))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = ((1.0 - ((0.5 + (-0.3333333333333333 / x)) / x)) / x) / n;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2000000000.0d0)) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else
tmp = ((1.0d0 - ((0.5d0 + ((-0.3333333333333333d0) / x)) / x)) / x) / n
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = ((1.0 - ((0.5 + (-0.3333333333333333 / x)) / x)) / x) / n;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2000000000.0: tmp = 0.3333333333333333 / (n * (x * (x * x))) else: tmp = ((1.0 - ((0.5 + (-0.3333333333333333 / x)) / x)) / x) / n return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2000000000.0) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); else tmp = Float64(Float64(Float64(1.0 - Float64(Float64(0.5 + Float64(-0.3333333333333333 / x)) / x)) / x) / n); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2000000000.0) tmp = 0.3333333333333333 / (n * (x * (x * x))); else tmp = ((1.0 - ((0.5 + (-0.3333333333333333 / x)) / x)) / x) / n; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2000000000.0], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(1.0 - N[(N[(0.5 + N[(-0.3333333333333333 / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision] / n), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2000000000:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1 - \frac{0.5 + \frac{-0.3333333333333333}{x}}{x}}{x}}{n}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e9Initial program 100.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6452.0%
Simplified52.0%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6439.5%
Simplified39.5%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6471.0%
Simplified71.0%
if -2e9 < (/.f64 #s(literal 1 binary64) n) Initial program 37.1%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6458.3%
Simplified58.3%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6449.0%
Simplified49.0%
Taylor expanded in x around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/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-eval49.0%
Simplified49.0%
(FPCore (x n) :precision binary64 (if (<= (/ 1.0 n) -4.0) (/ 0.3333333333333333 (* n (* x (* x x)))) (/ (/ 1.0 x) n)))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -4.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = (1.0 / x) / n;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-4.0d0)) then
tmp = 0.3333333333333333d0 / (n * (x * (x * x)))
else
tmp = (1.0d0 / x) / n
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -4.0) {
tmp = 0.3333333333333333 / (n * (x * (x * x)));
} else {
tmp = (1.0 / x) / n;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -4.0: tmp = 0.3333333333333333 / (n * (x * (x * x))) else: tmp = (1.0 / x) / n return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -4.0) tmp = Float64(0.3333333333333333 / Float64(n * Float64(x * Float64(x * x)))); else tmp = Float64(Float64(1.0 / x) / n); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -4.0) tmp = 0.3333333333333333 / (n * (x * (x * x))); else tmp = (1.0 / x) / n; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -4.0], N[(0.3333333333333333 / N[(n * N[(x * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / x), $MachinePrecision] / n), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -4:\\
\;\;\;\;\frac{0.3333333333333333}{n \cdot \left(x \cdot \left(x \cdot x\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{x}}{n}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -4Initial program 100.0%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6450.9%
Simplified50.9%
Taylor expanded in x around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f6439.8%
Simplified39.8%
Taylor expanded in x around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6470.6%
Simplified70.6%
if -4 < (/.f64 #s(literal 1 binary64) n) Initial program 36.3%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6459.0%
Simplified59.0%
Taylor expanded in x around inf
/-lowering-/.f6447.8%
Simplified47.8%
(FPCore (x n) :precision binary64 (if (<= (/ 1.0 n) -2000000000.0) 0.0 (/ (/ 1.0 x) n)))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.0;
} else {
tmp = (1.0 / x) / n;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2000000000.0d0)) then
tmp = 0.0d0
else
tmp = (1.0d0 / x) / n
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.0;
} else {
tmp = (1.0 / x) / n;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2000000000.0: tmp = 0.0 else: tmp = (1.0 / x) / n return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2000000000.0) tmp = 0.0; else tmp = Float64(Float64(1.0 / x) / n); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2000000000.0) tmp = 0.0; else tmp = (1.0 / x) / n; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2000000000.0], 0.0, N[(N[(1.0 / x), $MachinePrecision] / n), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2000000000:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{x}}{n}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e9Initial program 100.0%
Taylor expanded in x around 0
Simplified48.8%
Taylor expanded in n around inf
Simplified53.5%
metadata-eval53.5%
Applied egg-rr53.5%
if -2e9 < (/.f64 #s(literal 1 binary64) n) Initial program 37.1%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6458.3%
Simplified58.3%
Taylor expanded in x around inf
/-lowering-/.f6447.3%
Simplified47.3%
(FPCore (x n) :precision binary64 (if (<= (/ 1.0 n) -2000000000.0) 0.0 (/ (/ 1.0 n) x)))
double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.0;
} else {
tmp = (1.0 / n) / x;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if ((1.0d0 / n) <= (-2000000000.0d0)) then
tmp = 0.0d0
else
tmp = (1.0d0 / n) / x
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((1.0 / n) <= -2000000000.0) {
tmp = 0.0;
} else {
tmp = (1.0 / n) / x;
}
return tmp;
}
def code(x, n): tmp = 0 if (1.0 / n) <= -2000000000.0: tmp = 0.0 else: tmp = (1.0 / n) / x return tmp
function code(x, n) tmp = 0.0 if (Float64(1.0 / n) <= -2000000000.0) tmp = 0.0; else tmp = Float64(Float64(1.0 / n) / x); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if ((1.0 / n) <= -2000000000.0) tmp = 0.0; else tmp = (1.0 / n) / x; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[N[(1.0 / n), $MachinePrecision], -2000000000.0], 0.0, N[(N[(1.0 / n), $MachinePrecision] / x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \leq -2000000000:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e9Initial program 100.0%
Taylor expanded in x around 0
Simplified48.8%
Taylor expanded in n around inf
Simplified53.5%
metadata-eval53.5%
Applied egg-rr53.5%
if -2e9 < (/.f64 #s(literal 1 binary64) n) Initial program 37.1%
Taylor expanded in x around inf
/-lowering-/.f64N/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
exp-negN/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
metadata-evalN/A
distribute-neg-fracN/A
pow-lowering-pow.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6443.9%
Simplified43.9%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
pow-flipN/A
neg-mul-1N/A
neg-mul-1N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6445.5%
Applied egg-rr45.5%
Taylor expanded in n around inf
/-lowering-/.f6447.3%
Simplified47.3%
(FPCore (x n) :precision binary64 (if (<= x 1.5e+131) (/ 1.0 (* n x)) 0.0))
double code(double x, double n) {
double tmp;
if (x <= 1.5e+131) {
tmp = 1.0 / (n * x);
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if (x <= 1.5d+131) then
tmp = 1.0d0 / (n * x)
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if (x <= 1.5e+131) {
tmp = 1.0 / (n * x);
} else {
tmp = 0.0;
}
return tmp;
}
def code(x, n): tmp = 0 if x <= 1.5e+131: tmp = 1.0 / (n * x) else: tmp = 0.0 return tmp
function code(x, n) tmp = 0.0 if (x <= 1.5e+131) tmp = Float64(1.0 / Float64(n * x)); else tmp = 0.0; end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (x <= 1.5e+131) tmp = 1.0 / (n * x); else tmp = 0.0; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[x, 1.5e+131], N[(1.0 / N[(n * x), $MachinePrecision]), $MachinePrecision], 0.0]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1.5 \cdot 10^{+131}:\\
\;\;\;\;\frac{1}{n \cdot x}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if x < 1.5000000000000001e131Initial program 50.6%
Taylor expanded in n around inf
/-lowering-/.f64N/A
--lowering--.f64N/A
log1p-defineN/A
log1p-lowering-log1p.f64N/A
log-lowering-log.f6446.9%
Simplified46.9%
Taylor expanded in x around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6436.5%
Simplified36.5%
if 1.5000000000000001e131 < x Initial program 88.3%
Taylor expanded in x around 0
Simplified42.2%
Taylor expanded in n around inf
Simplified88.3%
metadata-eval88.3%
Applied egg-rr88.3%
Final simplification48.0%
(FPCore (x n) :precision binary64 0.0)
double code(double x, double n) {
return 0.0;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
code = 0.0d0
end function
public static double code(double x, double n) {
return 0.0;
}
def code(x, n): return 0.0
function code(x, n) return 0.0 end
function tmp = code(x, n) tmp = 0.0; end
code[x_, n_] := 0.0
\begin{array}{l}
\\
0
\end{array}
Initial program 59.0%
Taylor expanded in x around 0
Simplified40.7%
Taylor expanded in n around inf
Simplified33.5%
metadata-eval33.5%
Applied egg-rr33.5%
herbie shell --seed 2024158
(FPCore (x n)
:name "2nthrt (problem 3.4.6)"
:precision binary64
(- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))