
(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 14 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 (if (<= x 1.0) (- (/ x n) (expm1 (/ (log x) n))) (/ (/ (pow x (pow n -1.0)) n) x)))
double code(double x, double n) {
double tmp;
if (x <= 1.0) {
tmp = (x / n) - expm1((log(x) / n));
} else {
tmp = (pow(x, pow(n, -1.0)) / n) / x;
}
return tmp;
}
public static double code(double x, double n) {
double tmp;
if (x <= 1.0) {
tmp = (x / n) - Math.expm1((Math.log(x) / n));
} else {
tmp = (Math.pow(x, Math.pow(n, -1.0)) / n) / x;
}
return tmp;
}
def code(x, n): tmp = 0 if x <= 1.0: tmp = (x / n) - math.expm1((math.log(x) / n)) else: tmp = (math.pow(x, math.pow(n, -1.0)) / n) / x return tmp
function code(x, n) tmp = 0.0 if (x <= 1.0) tmp = Float64(Float64(x / n) - expm1(Float64(log(x) / n))); else tmp = Float64(Float64((x ^ (n ^ -1.0)) / n) / x); end return tmp end
code[x_, n_] := If[LessEqual[x, 1.0], N[(N[(x / n), $MachinePrecision] - N[(Exp[N[(N[Log[x], $MachinePrecision] / n), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision], N[(N[(N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision] / x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1:\\
\;\;\;\;\frac{x}{n} - \mathsf{expm1}\left(\frac{\log x}{n}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{{x}^{\left({n}^{-1}\right)}}{n}}{x}\\
\end{array}
\end{array}
if x < 1Initial program 51.2%
Taylor expanded in x around 0
associate--l+N/A
+-commutativeN/A
*-rgt-identityN/A
associate-*r/N/A
remove-double-negN/A
mul-1-negN/A
distribute-neg-fracN/A
mul-1-negN/A
log-recN/A
mul-1-negN/A
associate-+l-N/A
lower--.f64N/A
associate-*r/N/A
*-rgt-identityN/A
lower-/.f64N/A
lower-expm1.f64N/A
mul-1-negN/A
Applied rewrites88.4%
if 1 < x Initial program 66.6%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f6497.2
Applied rewrites97.2%
Applied rewrites97.3%
Applied rewrites97.3%
Final simplification92.3%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (pow n -1.0))) (t_1 (- (pow (+ x 1.0) (pow n -1.0)) t_0)))
(if (or (<= t_1 (- INFINITY)) (not (<= t_1 0.0)))
(- 1.0 t_0)
(/ (log (/ (+ 1.0 x) x)) n))))
double code(double x, double n) {
double t_0 = pow(x, pow(n, -1.0));
double t_1 = pow((x + 1.0), pow(n, -1.0)) - t_0;
double tmp;
if ((t_1 <= -((double) INFINITY)) || !(t_1 <= 0.0)) {
tmp = 1.0 - t_0;
} else {
tmp = log(((1.0 + x) / x)) / n;
}
return tmp;
}
public static double code(double x, double n) {
double t_0 = Math.pow(x, Math.pow(n, -1.0));
double t_1 = Math.pow((x + 1.0), Math.pow(n, -1.0)) - t_0;
double tmp;
if ((t_1 <= -Double.POSITIVE_INFINITY) || !(t_1 <= 0.0)) {
tmp = 1.0 - t_0;
} else {
tmp = Math.log(((1.0 + x) / x)) / n;
}
return tmp;
}
def code(x, n): t_0 = math.pow(x, math.pow(n, -1.0)) t_1 = math.pow((x + 1.0), math.pow(n, -1.0)) - t_0 tmp = 0 if (t_1 <= -math.inf) or not (t_1 <= 0.0): tmp = 1.0 - t_0 else: tmp = math.log(((1.0 + x) / x)) / n return tmp
function code(x, n) t_0 = x ^ (n ^ -1.0) t_1 = Float64((Float64(x + 1.0) ^ (n ^ -1.0)) - t_0) tmp = 0.0 if ((t_1 <= Float64(-Inf)) || !(t_1 <= 0.0)) tmp = Float64(1.0 - t_0); else tmp = Float64(log(Float64(Float64(1.0 + x) / x)) / n); end return tmp end
function tmp_2 = code(x, n) t_0 = x ^ (n ^ -1.0); t_1 = ((x + 1.0) ^ (n ^ -1.0)) - t_0; tmp = 0.0; if ((t_1 <= -Inf) || ~((t_1 <= 0.0))) tmp = 1.0 - t_0; else tmp = log(((1.0 + x) / x)) / n; end tmp_2 = tmp; end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[N[(x + 1.0), $MachinePrecision], N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision] - t$95$0), $MachinePrecision]}, If[Or[LessEqual[t$95$1, (-Infinity)], N[Not[LessEqual[t$95$1, 0.0]], $MachinePrecision]], N[(1.0 - t$95$0), $MachinePrecision], N[(N[Log[N[(N[(1.0 + x), $MachinePrecision] / x), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left({n}^{-1}\right)}\\
t_1 := {\left(x + 1\right)}^{\left({n}^{-1}\right)} - t\_0\\
\mathbf{if}\;t\_1 \leq -\infty \lor \neg \left(t\_1 \leq 0\right):\\
\;\;\;\;1 - t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1 + x}{x}\right)}{n}\\
\end{array}
\end{array}
if (-.f64 (pow.f64 (+.f64 x #s(literal 1 binary64)) (/.f64 #s(literal 1 binary64) n)) (pow.f64 x (/.f64 #s(literal 1 binary64) n))) < -inf.0 or 0.0 < (-.f64 (pow.f64 (+.f64 x #s(literal 1 binary64)) (/.f64 #s(literal 1 binary64) n)) (pow.f64 x (/.f64 #s(literal 1 binary64) n))) Initial program 85.6%
Taylor expanded in x around 0
Applied rewrites80.9%
if -inf.0 < (-.f64 (pow.f64 (+.f64 x #s(literal 1 binary64)) (/.f64 #s(literal 1 binary64) n)) (pow.f64 x (/.f64 #s(literal 1 binary64) n))) < 0.0Initial program 45.1%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6479.8
Applied rewrites79.8%
Applied rewrites80.1%
Final simplification80.3%
(FPCore (x n)
:precision binary64
(let* ((t_0 (pow x (pow n -1.0))))
(if (<= (pow n -1.0) -5e-8)
(/ (/ t_0 n) x)
(if (<= (pow n -1.0) 5e-21)
(/ (log (/ (+ 1.0 x) x)) n)
(if (<= (pow n -1.0) 2e+216)
(- (+ (/ x n) 1.0) t_0)
(/
(/ (fma (- (/ 0.3333333333333333 x) 0.5) n (* n x)) (* (* n x) n))
x))))))
double code(double x, double n) {
double t_0 = pow(x, pow(n, -1.0));
double tmp;
if (pow(n, -1.0) <= -5e-8) {
tmp = (t_0 / n) / x;
} else if (pow(n, -1.0) <= 5e-21) {
tmp = log(((1.0 + x) / x)) / n;
} else if (pow(n, -1.0) <= 2e+216) {
tmp = ((x / n) + 1.0) - t_0;
} else {
tmp = (fma(((0.3333333333333333 / x) - 0.5), n, (n * x)) / ((n * x) * n)) / x;
}
return tmp;
}
function code(x, n) t_0 = x ^ (n ^ -1.0) tmp = 0.0 if ((n ^ -1.0) <= -5e-8) tmp = Float64(Float64(t_0 / n) / x); elseif ((n ^ -1.0) <= 5e-21) tmp = Float64(log(Float64(Float64(1.0 + x) / x)) / n); elseif ((n ^ -1.0) <= 2e+216) tmp = Float64(Float64(Float64(x / n) + 1.0) - t_0); else tmp = Float64(Float64(fma(Float64(Float64(0.3333333333333333 / x) - 0.5), n, Float64(n * x)) / Float64(Float64(n * x) * n)) / x); end return tmp end
code[x_, n_] := Block[{t$95$0 = N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Power[n, -1.0], $MachinePrecision], -5e-8], N[(N[(t$95$0 / n), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 5e-21], N[(N[Log[N[(N[(1.0 + x), $MachinePrecision] / x), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 2e+216], N[(N[(N[(x / n), $MachinePrecision] + 1.0), $MachinePrecision] - t$95$0), $MachinePrecision], N[(N[(N[(N[(N[(0.3333333333333333 / x), $MachinePrecision] - 0.5), $MachinePrecision] * n + N[(n * x), $MachinePrecision]), $MachinePrecision] / N[(N[(n * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {x}^{\left({n}^{-1}\right)}\\
\mathbf{if}\;{n}^{-1} \leq -5 \cdot 10^{-8}:\\
\;\;\;\;\frac{\frac{t\_0}{n}}{x}\\
\mathbf{elif}\;{n}^{-1} \leq 5 \cdot 10^{-21}:\\
\;\;\;\;\frac{\log \left(\frac{1 + x}{x}\right)}{n}\\
\mathbf{elif}\;{n}^{-1} \leq 2 \cdot 10^{+216}:\\
\;\;\;\;\left(\frac{x}{n} + 1\right) - t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{0.3333333333333333}{x} - 0.5, n, n \cdot x\right)}{\left(n \cdot x\right) \cdot n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -4.9999999999999998e-8Initial program 96.1%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f64100.0
Applied rewrites100.0%
Applied rewrites100.0%
Applied rewrites100.0%
if -4.9999999999999998e-8 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999973e-21Initial program 26.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6476.0
Applied rewrites76.0%
Applied rewrites76.4%
if 4.99999999999999973e-21 < (/.f64 #s(literal 1 binary64) n) < 2e216Initial program 89.6%
Taylor expanded in x around 0
+-commutativeN/A
*-rgt-identityN/A
associate-*r/N/A
lower-+.f64N/A
associate-*r/N/A
*-rgt-identityN/A
lower-/.f6482.9
Applied rewrites82.9%
if 2e216 < (/.f64 #s(literal 1 binary64) n) Initial program 39.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f646.8
Applied rewrites6.8%
Taylor expanded in x around inf
Applied rewrites58.3%
Taylor expanded in x around -inf
Applied rewrites64.2%
Applied rewrites75.8%
Final simplification85.1%
(FPCore (x n)
:precision binary64
(if (<= (pow n -1.0) -5e-8)
(/ (pow x (- (pow n -1.0) 1.0)) n)
(if (<= (pow n -1.0) 5e-21)
(/ (log (/ (+ 1.0 x) x)) n)
(if (<= (pow n -1.0) 2e+216)
(- (+ (/ x n) 1.0) (pow x (pow n -1.0)))
(/
(/ (fma (- (/ 0.3333333333333333 x) 0.5) n (* n x)) (* (* n x) n))
x)))))
double code(double x, double n) {
double tmp;
if (pow(n, -1.0) <= -5e-8) {
tmp = pow(x, (pow(n, -1.0) - 1.0)) / n;
} else if (pow(n, -1.0) <= 5e-21) {
tmp = log(((1.0 + x) / x)) / n;
} else if (pow(n, -1.0) <= 2e+216) {
tmp = ((x / n) + 1.0) - pow(x, pow(n, -1.0));
} else {
tmp = (fma(((0.3333333333333333 / x) - 0.5), n, (n * x)) / ((n * x) * n)) / x;
}
return tmp;
}
function code(x, n) tmp = 0.0 if ((n ^ -1.0) <= -5e-8) tmp = Float64((x ^ Float64((n ^ -1.0) - 1.0)) / n); elseif ((n ^ -1.0) <= 5e-21) tmp = Float64(log(Float64(Float64(1.0 + x) / x)) / n); elseif ((n ^ -1.0) <= 2e+216) tmp = Float64(Float64(Float64(x / n) + 1.0) - (x ^ (n ^ -1.0))); else tmp = Float64(Float64(fma(Float64(Float64(0.3333333333333333 / x) - 0.5), n, Float64(n * x)) / Float64(Float64(n * x) * n)) / x); end return tmp end
code[x_, n_] := If[LessEqual[N[Power[n, -1.0], $MachinePrecision], -5e-8], N[(N[Power[x, N[(N[Power[n, -1.0], $MachinePrecision] - 1.0), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 5e-21], N[(N[Log[N[(N[(1.0 + x), $MachinePrecision] / x), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 2e+216], N[(N[(N[(x / n), $MachinePrecision] + 1.0), $MachinePrecision] - N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(N[(0.3333333333333333 / x), $MachinePrecision] - 0.5), $MachinePrecision] * n + N[(n * x), $MachinePrecision]), $MachinePrecision] / N[(N[(n * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;{n}^{-1} \leq -5 \cdot 10^{-8}:\\
\;\;\;\;\frac{{x}^{\left({n}^{-1} - 1\right)}}{n}\\
\mathbf{elif}\;{n}^{-1} \leq 5 \cdot 10^{-21}:\\
\;\;\;\;\frac{\log \left(\frac{1 + x}{x}\right)}{n}\\
\mathbf{elif}\;{n}^{-1} \leq 2 \cdot 10^{+216}:\\
\;\;\;\;\left(\frac{x}{n} + 1\right) - {x}^{\left({n}^{-1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{0.3333333333333333}{x} - 0.5, n, n \cdot x\right)}{\left(n \cdot x\right) \cdot n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -4.9999999999999998e-8Initial program 96.1%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f64100.0
Applied rewrites100.0%
Applied rewrites99.6%
Taylor expanded in x around 0
Applied rewrites99.6%
if -4.9999999999999998e-8 < (/.f64 #s(literal 1 binary64) n) < 4.99999999999999973e-21Initial program 26.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6476.0
Applied rewrites76.0%
Applied rewrites76.4%
if 4.99999999999999973e-21 < (/.f64 #s(literal 1 binary64) n) < 2e216Initial program 89.6%
Taylor expanded in x around 0
+-commutativeN/A
*-rgt-identityN/A
associate-*r/N/A
lower-+.f64N/A
associate-*r/N/A
*-rgt-identityN/A
lower-/.f6482.9
Applied rewrites82.9%
if 2e216 < (/.f64 #s(literal 1 binary64) n) Initial program 39.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f646.8
Applied rewrites6.8%
Taylor expanded in x around inf
Applied rewrites58.3%
Taylor expanded in x around -inf
Applied rewrites64.2%
Applied rewrites75.8%
Final simplification85.0%
(FPCore (x n)
:precision binary64
(if (<= (pow n -1.0) -5e-8)
(/ (pow x (- (pow n -1.0) 1.0)) n)
(if (<= (pow n -1.0) 0.005)
(/ (log (/ (+ 1.0 x) x)) n)
(if (<= (pow n -1.0) 2e+216)
(- 1.0 (pow x (pow n -1.0)))
(/
(/ (fma (- (/ 0.3333333333333333 x) 0.5) n (* n x)) (* (* n x) n))
x)))))
double code(double x, double n) {
double tmp;
if (pow(n, -1.0) <= -5e-8) {
tmp = pow(x, (pow(n, -1.0) - 1.0)) / n;
} else if (pow(n, -1.0) <= 0.005) {
tmp = log(((1.0 + x) / x)) / n;
} else if (pow(n, -1.0) <= 2e+216) {
tmp = 1.0 - pow(x, pow(n, -1.0));
} else {
tmp = (fma(((0.3333333333333333 / x) - 0.5), n, (n * x)) / ((n * x) * n)) / x;
}
return tmp;
}
function code(x, n) tmp = 0.0 if ((n ^ -1.0) <= -5e-8) tmp = Float64((x ^ Float64((n ^ -1.0) - 1.0)) / n); elseif ((n ^ -1.0) <= 0.005) tmp = Float64(log(Float64(Float64(1.0 + x) / x)) / n); elseif ((n ^ -1.0) <= 2e+216) tmp = Float64(1.0 - (x ^ (n ^ -1.0))); else tmp = Float64(Float64(fma(Float64(Float64(0.3333333333333333 / x) - 0.5), n, Float64(n * x)) / Float64(Float64(n * x) * n)) / x); end return tmp end
code[x_, n_] := If[LessEqual[N[Power[n, -1.0], $MachinePrecision], -5e-8], N[(N[Power[x, N[(N[Power[n, -1.0], $MachinePrecision] - 1.0), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 0.005], N[(N[Log[N[(N[(1.0 + x), $MachinePrecision] / x), $MachinePrecision]], $MachinePrecision] / n), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 2e+216], N[(1.0 - N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(N[(0.3333333333333333 / x), $MachinePrecision] - 0.5), $MachinePrecision] * n + N[(n * x), $MachinePrecision]), $MachinePrecision] / N[(N[(n * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;{n}^{-1} \leq -5 \cdot 10^{-8}:\\
\;\;\;\;\frac{{x}^{\left({n}^{-1} - 1\right)}}{n}\\
\mathbf{elif}\;{n}^{-1} \leq 0.005:\\
\;\;\;\;\frac{\log \left(\frac{1 + x}{x}\right)}{n}\\
\mathbf{elif}\;{n}^{-1} \leq 2 \cdot 10^{+216}:\\
\;\;\;\;1 - {x}^{\left({n}^{-1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{0.3333333333333333}{x} - 0.5, n, n \cdot x\right)}{\left(n \cdot x\right) \cdot n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -4.9999999999999998e-8Initial program 96.1%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f64100.0
Applied rewrites100.0%
Applied rewrites99.6%
Taylor expanded in x around 0
Applied rewrites99.6%
if -4.9999999999999998e-8 < (/.f64 #s(literal 1 binary64) n) < 0.0050000000000000001Initial program 26.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6475.5
Applied rewrites75.5%
Applied rewrites75.8%
if 0.0050000000000000001 < (/.f64 #s(literal 1 binary64) n) < 2e216Initial program 92.8%
Taylor expanded in x around 0
Applied rewrites85.6%
if 2e216 < (/.f64 #s(literal 1 binary64) n) Initial program 39.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f646.8
Applied rewrites6.8%
Taylor expanded in x around inf
Applied rewrites58.3%
Taylor expanded in x around -inf
Applied rewrites64.2%
Applied rewrites75.8%
Final simplification84.9%
(FPCore (x n)
:precision binary64
(if (<= (pow n -1.0) -2e+16)
(/ (/ 0.3333333333333333 (* (* x x) n)) x)
(if (<= (pow n -1.0) 2e+99)
(* 2.0 (/ (/ 0.5 n) (+ 0.5 x)))
(/
(/ (fma (- (/ 0.3333333333333333 x) 0.5) n (* n x)) (* (* n x) n))
x))))
double code(double x, double n) {
double tmp;
if (pow(n, -1.0) <= -2e+16) {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
} else if (pow(n, -1.0) <= 2e+99) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else {
tmp = (fma(((0.3333333333333333 / x) - 0.5), n, (n * x)) / ((n * x) * n)) / x;
}
return tmp;
}
function code(x, n) tmp = 0.0 if ((n ^ -1.0) <= -2e+16) tmp = Float64(Float64(0.3333333333333333 / Float64(Float64(x * x) * n)) / x); elseif ((n ^ -1.0) <= 2e+99) tmp = Float64(2.0 * Float64(Float64(0.5 / n) / Float64(0.5 + x))); else tmp = Float64(Float64(fma(Float64(Float64(0.3333333333333333 / x) - 0.5), n, Float64(n * x)) / Float64(Float64(n * x) * n)) / x); end return tmp end
code[x_, n_] := If[LessEqual[N[Power[n, -1.0], $MachinePrecision], -2e+16], N[(N[(0.3333333333333333 / N[(N[(x * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[N[Power[n, -1.0], $MachinePrecision], 2e+99], N[(2.0 * N[(N[(0.5 / n), $MachinePrecision] / N[(0.5 + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(N[(0.3333333333333333 / x), $MachinePrecision] - 0.5), $MachinePrecision] * n + N[(n * x), $MachinePrecision]), $MachinePrecision] / N[(N[(n * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;{n}^{-1} \leq -2 \cdot 10^{+16}:\\
\;\;\;\;\frac{\frac{0.3333333333333333}{\left(x \cdot x\right) \cdot n}}{x}\\
\mathbf{elif}\;{n}^{-1} \leq 2 \cdot 10^{+99}:\\
\;\;\;\;2 \cdot \frac{\frac{0.5}{n}}{0.5 + x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{0.3333333333333333}{x} - 0.5, n, n \cdot x\right)}{\left(n \cdot x\right) \cdot n}}{x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e16Initial program 100.0%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6455.6
Applied rewrites55.6%
Taylor expanded in x around inf
Applied rewrites26.2%
Taylor expanded in x around -inf
Applied rewrites40.8%
Taylor expanded in x around 0
Applied rewrites65.5%
if -2e16 < (/.f64 #s(literal 1 binary64) n) < 1.9999999999999999e99Initial program 34.2%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6466.3
Applied rewrites66.3%
Applied rewrites66.3%
Applied rewrites66.3%
Taylor expanded in x around inf
Applied rewrites50.1%
if 1.9999999999999999e99 < (/.f64 #s(literal 1 binary64) n) Initial program 56.9%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f645.8
Applied rewrites5.8%
Taylor expanded in x around inf
Applied rewrites36.1%
Taylor expanded in x around -inf
Applied rewrites43.2%
Applied rewrites53.4%
Final simplification55.5%
(FPCore (x n) :precision binary64 (if (or (<= (pow n -1.0) -2e+16) (not (<= (pow n -1.0) 2e+99))) (/ (/ 0.3333333333333333 (* (* x x) n)) x) (* 2.0 (/ (/ 0.5 n) (+ 0.5 x)))))
double code(double x, double n) {
double tmp;
if ((pow(n, -1.0) <= -2e+16) || !(pow(n, -1.0) <= 2e+99)) {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
} else {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if (((n ** (-1.0d0)) <= (-2d+16)) .or. (.not. ((n ** (-1.0d0)) <= 2d+99))) then
tmp = (0.3333333333333333d0 / ((x * x) * n)) / x
else
tmp = 2.0d0 * ((0.5d0 / n) / (0.5d0 + x))
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if ((Math.pow(n, -1.0) <= -2e+16) || !(Math.pow(n, -1.0) <= 2e+99)) {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
} else {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
}
return tmp;
}
def code(x, n): tmp = 0 if (math.pow(n, -1.0) <= -2e+16) or not (math.pow(n, -1.0) <= 2e+99): tmp = (0.3333333333333333 / ((x * x) * n)) / x else: tmp = 2.0 * ((0.5 / n) / (0.5 + x)) return tmp
function code(x, n) tmp = 0.0 if (((n ^ -1.0) <= -2e+16) || !((n ^ -1.0) <= 2e+99)) tmp = Float64(Float64(0.3333333333333333 / Float64(Float64(x * x) * n)) / x); else tmp = Float64(2.0 * Float64(Float64(0.5 / n) / Float64(0.5 + x))); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (((n ^ -1.0) <= -2e+16) || ~(((n ^ -1.0) <= 2e+99))) tmp = (0.3333333333333333 / ((x * x) * n)) / x; else tmp = 2.0 * ((0.5 / n) / (0.5 + x)); end tmp_2 = tmp; end
code[x_, n_] := If[Or[LessEqual[N[Power[n, -1.0], $MachinePrecision], -2e+16], N[Not[LessEqual[N[Power[n, -1.0], $MachinePrecision], 2e+99]], $MachinePrecision]], N[(N[(0.3333333333333333 / N[(N[(x * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], N[(2.0 * N[(N[(0.5 / n), $MachinePrecision] / N[(0.5 + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;{n}^{-1} \leq -2 \cdot 10^{+16} \lor \neg \left({n}^{-1} \leq 2 \cdot 10^{+99}\right):\\
\;\;\;\;\frac{\frac{0.3333333333333333}{\left(x \cdot x\right) \cdot n}}{x}\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \frac{\frac{0.5}{n}}{0.5 + x}\\
\end{array}
\end{array}
if (/.f64 #s(literal 1 binary64) n) < -2e16 or 1.9999999999999999e99 < (/.f64 #s(literal 1 binary64) n) Initial program 89.4%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6443.4
Applied rewrites43.4%
Taylor expanded in x around inf
Applied rewrites28.6%
Taylor expanded in x around -inf
Applied rewrites41.4%
Taylor expanded in x around 0
Applied rewrites60.0%
if -2e16 < (/.f64 #s(literal 1 binary64) n) < 1.9999999999999999e99Initial program 34.2%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6466.3
Applied rewrites66.3%
Applied rewrites66.3%
Applied rewrites66.3%
Taylor expanded in x around inf
Applied rewrites50.1%
Final simplification54.4%
(FPCore (x n)
:precision binary64
(if (<= n -2e+79)
(* 2.0 (/ (/ 0.5 n) (+ 0.5 x)))
(if (<= n -320000.0)
(/ (- x (log x)) n)
(if (<= n 7.4e-242)
(/ 0.3333333333333333 (* (pow x 3.0) n))
(if (<= n 300.0) (- 1.0 (pow x (pow n -1.0))) (/ (- (log x)) n))))))
double code(double x, double n) {
double tmp;
if (n <= -2e+79) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else if (n <= -320000.0) {
tmp = (x - log(x)) / n;
} else if (n <= 7.4e-242) {
tmp = 0.3333333333333333 / (pow(x, 3.0) * n);
} else if (n <= 300.0) {
tmp = 1.0 - pow(x, pow(n, -1.0));
} else {
tmp = -log(x) / n;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if (n <= (-2d+79)) then
tmp = 2.0d0 * ((0.5d0 / n) / (0.5d0 + x))
else if (n <= (-320000.0d0)) then
tmp = (x - log(x)) / n
else if (n <= 7.4d-242) then
tmp = 0.3333333333333333d0 / ((x ** 3.0d0) * n)
else if (n <= 300.0d0) then
tmp = 1.0d0 - (x ** (n ** (-1.0d0)))
else
tmp = -log(x) / n
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if (n <= -2e+79) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else if (n <= -320000.0) {
tmp = (x - Math.log(x)) / n;
} else if (n <= 7.4e-242) {
tmp = 0.3333333333333333 / (Math.pow(x, 3.0) * n);
} else if (n <= 300.0) {
tmp = 1.0 - Math.pow(x, Math.pow(n, -1.0));
} else {
tmp = -Math.log(x) / n;
}
return tmp;
}
def code(x, n): tmp = 0 if n <= -2e+79: tmp = 2.0 * ((0.5 / n) / (0.5 + x)) elif n <= -320000.0: tmp = (x - math.log(x)) / n elif n <= 7.4e-242: tmp = 0.3333333333333333 / (math.pow(x, 3.0) * n) elif n <= 300.0: tmp = 1.0 - math.pow(x, math.pow(n, -1.0)) else: tmp = -math.log(x) / n return tmp
function code(x, n) tmp = 0.0 if (n <= -2e+79) tmp = Float64(2.0 * Float64(Float64(0.5 / n) / Float64(0.5 + x))); elseif (n <= -320000.0) tmp = Float64(Float64(x - log(x)) / n); elseif (n <= 7.4e-242) tmp = Float64(0.3333333333333333 / Float64((x ^ 3.0) * n)); elseif (n <= 300.0) tmp = Float64(1.0 - (x ^ (n ^ -1.0))); else tmp = Float64(Float64(-log(x)) / n); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (n <= -2e+79) tmp = 2.0 * ((0.5 / n) / (0.5 + x)); elseif (n <= -320000.0) tmp = (x - log(x)) / n; elseif (n <= 7.4e-242) tmp = 0.3333333333333333 / ((x ^ 3.0) * n); elseif (n <= 300.0) tmp = 1.0 - (x ^ (n ^ -1.0)); else tmp = -log(x) / n; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[n, -2e+79], N[(2.0 * N[(N[(0.5 / n), $MachinePrecision] / N[(0.5 + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[n, -320000.0], N[(N[(x - N[Log[x], $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision], If[LessEqual[n, 7.4e-242], N[(0.3333333333333333 / N[(N[Power[x, 3.0], $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision], If[LessEqual[n, 300.0], N[(1.0 - N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[((-N[Log[x], $MachinePrecision]) / n), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;n \leq -2 \cdot 10^{+79}:\\
\;\;\;\;2 \cdot \frac{\frac{0.5}{n}}{0.5 + x}\\
\mathbf{elif}\;n \leq -320000:\\
\;\;\;\;\frac{x - \log x}{n}\\
\mathbf{elif}\;n \leq 7.4 \cdot 10^{-242}:\\
\;\;\;\;\frac{0.3333333333333333}{{x}^{3} \cdot n}\\
\mathbf{elif}\;n \leq 300:\\
\;\;\;\;1 - {x}^{\left({n}^{-1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log x}{n}\\
\end{array}
\end{array}
if n < -1.99999999999999993e79Initial program 29.6%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6472.7
Applied rewrites72.7%
Applied rewrites72.7%
Applied rewrites72.7%
Taylor expanded in x around inf
Applied rewrites65.3%
if -1.99999999999999993e79 < n < -3.2e5Initial program 24.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6483.4
Applied rewrites83.4%
Taylor expanded in x around 0
Applied rewrites67.3%
if -3.2e5 < n < 7.39999999999999994e-242Initial program 88.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6449.0
Applied rewrites49.0%
Taylor expanded in x around inf
Applied rewrites31.9%
Taylor expanded in x around -inf
Applied rewrites45.3%
Taylor expanded in x around 0
Applied rewrites75.7%
if 7.39999999999999994e-242 < n < 300Initial program 90.9%
Taylor expanded in x around 0
Applied rewrites78.8%
if 300 < n Initial program 23.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6474.9
Applied rewrites74.9%
Taylor expanded in x around 0
Applied rewrites54.9%
Final simplification68.6%
(FPCore (x n)
:precision binary64
(if (<= n -2e+79)
(* 2.0 (/ (/ 0.5 n) (+ 0.5 x)))
(if (<= n -320000.0)
(/ (- x (log x)) n)
(if (<= n 7.4e-242)
(/ (/ 0.3333333333333333 (* (* x x) n)) x)
(if (<= n 300.0) (- 1.0 (pow x (pow n -1.0))) (/ (- (log x)) n))))))
double code(double x, double n) {
double tmp;
if (n <= -2e+79) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else if (n <= -320000.0) {
tmp = (x - log(x)) / n;
} else if (n <= 7.4e-242) {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
} else if (n <= 300.0) {
tmp = 1.0 - pow(x, pow(n, -1.0));
} else {
tmp = -log(x) / n;
}
return tmp;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
real(8) :: tmp
if (n <= (-2d+79)) then
tmp = 2.0d0 * ((0.5d0 / n) / (0.5d0 + x))
else if (n <= (-320000.0d0)) then
tmp = (x - log(x)) / n
else if (n <= 7.4d-242) then
tmp = (0.3333333333333333d0 / ((x * x) * n)) / x
else if (n <= 300.0d0) then
tmp = 1.0d0 - (x ** (n ** (-1.0d0)))
else
tmp = -log(x) / n
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if (n <= -2e+79) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else if (n <= -320000.0) {
tmp = (x - Math.log(x)) / n;
} else if (n <= 7.4e-242) {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
} else if (n <= 300.0) {
tmp = 1.0 - Math.pow(x, Math.pow(n, -1.0));
} else {
tmp = -Math.log(x) / n;
}
return tmp;
}
def code(x, n): tmp = 0 if n <= -2e+79: tmp = 2.0 * ((0.5 / n) / (0.5 + x)) elif n <= -320000.0: tmp = (x - math.log(x)) / n elif n <= 7.4e-242: tmp = (0.3333333333333333 / ((x * x) * n)) / x elif n <= 300.0: tmp = 1.0 - math.pow(x, math.pow(n, -1.0)) else: tmp = -math.log(x) / n return tmp
function code(x, n) tmp = 0.0 if (n <= -2e+79) tmp = Float64(2.0 * Float64(Float64(0.5 / n) / Float64(0.5 + x))); elseif (n <= -320000.0) tmp = Float64(Float64(x - log(x)) / n); elseif (n <= 7.4e-242) tmp = Float64(Float64(0.3333333333333333 / Float64(Float64(x * x) * n)) / x); elseif (n <= 300.0) tmp = Float64(1.0 - (x ^ (n ^ -1.0))); else tmp = Float64(Float64(-log(x)) / n); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (n <= -2e+79) tmp = 2.0 * ((0.5 / n) / (0.5 + x)); elseif (n <= -320000.0) tmp = (x - log(x)) / n; elseif (n <= 7.4e-242) tmp = (0.3333333333333333 / ((x * x) * n)) / x; elseif (n <= 300.0) tmp = 1.0 - (x ^ (n ^ -1.0)); else tmp = -log(x) / n; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[n, -2e+79], N[(2.0 * N[(N[(0.5 / n), $MachinePrecision] / N[(0.5 + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[n, -320000.0], N[(N[(x - N[Log[x], $MachinePrecision]), $MachinePrecision] / n), $MachinePrecision], If[LessEqual[n, 7.4e-242], N[(N[(0.3333333333333333 / N[(N[(x * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[n, 300.0], N[(1.0 - N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[((-N[Log[x], $MachinePrecision]) / n), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;n \leq -2 \cdot 10^{+79}:\\
\;\;\;\;2 \cdot \frac{\frac{0.5}{n}}{0.5 + x}\\
\mathbf{elif}\;n \leq -320000:\\
\;\;\;\;\frac{x - \log x}{n}\\
\mathbf{elif}\;n \leq 7.4 \cdot 10^{-242}:\\
\;\;\;\;\frac{\frac{0.3333333333333333}{\left(x \cdot x\right) \cdot n}}{x}\\
\mathbf{elif}\;n \leq 300:\\
\;\;\;\;1 - {x}^{\left({n}^{-1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log x}{n}\\
\end{array}
\end{array}
if n < -1.99999999999999993e79Initial program 29.6%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6472.7
Applied rewrites72.7%
Applied rewrites72.7%
Applied rewrites72.7%
Taylor expanded in x around inf
Applied rewrites65.3%
if -1.99999999999999993e79 < n < -3.2e5Initial program 24.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6483.4
Applied rewrites83.4%
Taylor expanded in x around 0
Applied rewrites67.3%
if -3.2e5 < n < 7.39999999999999994e-242Initial program 88.5%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6449.0
Applied rewrites49.0%
Taylor expanded in x around inf
Applied rewrites31.9%
Taylor expanded in x around -inf
Applied rewrites45.3%
Taylor expanded in x around 0
Applied rewrites66.0%
if 7.39999999999999994e-242 < n < 300Initial program 90.9%
Taylor expanded in x around 0
Applied rewrites78.8%
if 300 < n Initial program 23.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6474.9
Applied rewrites74.9%
Taylor expanded in x around 0
Applied rewrites54.9%
Final simplification64.9%
(FPCore (x n)
:precision binary64
(if (<= x 1.2e-19)
(/ (- (log x)) n)
(if (<= x 1.0)
(/ (/ (fma (- (/ 0.3333333333333333 x) 0.5) n (* n x)) (* (* n x) n)) x)
(if (<= x 4.1e+170)
(/
(/ (+ (/ (- -0.5 (/ (- (/ 0.25 x) 0.3333333333333333) x)) x) 1.0) x)
n)
(/ (/ 0.3333333333333333 (* (* x x) n)) x)))))
double code(double x, double n) {
double tmp;
if (x <= 1.2e-19) {
tmp = -log(x) / n;
} else if (x <= 1.0) {
tmp = (fma(((0.3333333333333333 / x) - 0.5), n, (n * x)) / ((n * x) * n)) / x;
} else if (x <= 4.1e+170) {
tmp = ((((-0.5 - (((0.25 / x) - 0.3333333333333333) / x)) / x) + 1.0) / x) / n;
} else {
tmp = (0.3333333333333333 / ((x * x) * n)) / x;
}
return tmp;
}
function code(x, n) tmp = 0.0 if (x <= 1.2e-19) tmp = Float64(Float64(-log(x)) / n); elseif (x <= 1.0) tmp = Float64(Float64(fma(Float64(Float64(0.3333333333333333 / x) - 0.5), n, Float64(n * x)) / Float64(Float64(n * x) * n)) / x); elseif (x <= 4.1e+170) tmp = Float64(Float64(Float64(Float64(Float64(-0.5 - Float64(Float64(Float64(0.25 / x) - 0.3333333333333333) / x)) / x) + 1.0) / x) / n); else tmp = Float64(Float64(0.3333333333333333 / Float64(Float64(x * x) * n)) / x); end return tmp end
code[x_, n_] := If[LessEqual[x, 1.2e-19], N[((-N[Log[x], $MachinePrecision]) / n), $MachinePrecision], If[LessEqual[x, 1.0], N[(N[(N[(N[(N[(0.3333333333333333 / x), $MachinePrecision] - 0.5), $MachinePrecision] * n + N[(n * x), $MachinePrecision]), $MachinePrecision] / N[(N[(n * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], If[LessEqual[x, 4.1e+170], N[(N[(N[(N[(N[(-0.5 - N[(N[(N[(0.25 / x), $MachinePrecision] - 0.3333333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision] + 1.0), $MachinePrecision] / x), $MachinePrecision] / n), $MachinePrecision], N[(N[(0.3333333333333333 / N[(N[(x * x), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 1.2 \cdot 10^{-19}:\\
\;\;\;\;\frac{-\log x}{n}\\
\mathbf{elif}\;x \leq 1:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{0.3333333333333333}{x} - 0.5, n, n \cdot x\right)}{\left(n \cdot x\right) \cdot n}}{x}\\
\mathbf{elif}\;x \leq 4.1 \cdot 10^{+170}:\\
\;\;\;\;\frac{\frac{\frac{-0.5 - \frac{\frac{0.25}{x} - 0.3333333333333333}{x}}{x} + 1}{x}}{n}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.3333333333333333}{\left(x \cdot x\right) \cdot n}}{x}\\
\end{array}
\end{array}
if x < 1.20000000000000011e-19Initial program 48.6%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6448.6
Applied rewrites48.6%
Taylor expanded in x around 0
Applied rewrites48.6%
if 1.20000000000000011e-19 < x < 1Initial program 82.8%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6422.6
Applied rewrites22.6%
Taylor expanded in x around inf
Applied rewrites7.8%
Taylor expanded in x around -inf
Applied rewrites15.7%
Applied rewrites57.3%
if 1 < x < 4.1e170Initial program 52.7%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6457.0
Applied rewrites57.0%
Taylor expanded in x around inf
Applied rewrites56.4%
Taylor expanded in x around inf
Applied rewrites60.8%
if 4.1e170 < x Initial program 86.6%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6486.6
Applied rewrites86.6%
Taylor expanded in x around inf
Applied rewrites54.0%
Taylor expanded in x around -inf
Applied rewrites54.0%
Taylor expanded in x around 0
Applied rewrites86.6%
Final simplification59.0%
(FPCore (x n) :precision binary64 (/ (pow x -1.0) n))
double code(double x, double n) {
return 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)) / n
end function
public static double code(double x, double n) {
return Math.pow(x, -1.0) / n;
}
def code(x, n): return math.pow(x, -1.0) / n
function code(x, n) return Float64((x ^ -1.0) / n) end
function tmp = code(x, n) tmp = (x ^ -1.0) / n; end
code[x_, n_] := N[(N[Power[x, -1.0], $MachinePrecision] / n), $MachinePrecision]
\begin{array}{l}
\\
\frac{{x}^{-1}}{n}
\end{array}
Initial program 57.9%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6456.5
Applied rewrites56.5%
Taylor expanded in x around inf
Applied rewrites37.5%
Final simplification37.5%
(FPCore (x n) :precision binary64 (pow (* n x) -1.0))
double code(double x, double n) {
return pow((n * x), -1.0);
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
code = (n * x) ** (-1.0d0)
end function
public static double code(double x, double n) {
return Math.pow((n * x), -1.0);
}
def code(x, n): return math.pow((n * x), -1.0)
function code(x, n) return Float64(n * x) ^ -1.0 end
function tmp = code(x, n) tmp = (n * x) ^ -1.0; end
code[x_, n_] := N[Power[N[(n * x), $MachinePrecision], -1.0], $MachinePrecision]
\begin{array}{l}
\\
{\left(n \cdot x\right)}^{-1}
\end{array}
Initial program 57.9%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6456.5
Applied rewrites56.5%
Applied rewrites56.5%
Taylor expanded in x around inf
Applied rewrites36.6%
Final simplification36.6%
(FPCore (x n) :precision binary64 (if (<= n -12000000.0) (* 2.0 (/ (/ 0.5 n) (+ 0.5 x))) (/ (/ 1.0 n) x)))
double code(double x, double n) {
double tmp;
if (n <= -12000000.0) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} 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 (n <= (-12000000.0d0)) then
tmp = 2.0d0 * ((0.5d0 / n) / (0.5d0 + x))
else
tmp = (1.0d0 / n) / x
end if
code = tmp
end function
public static double code(double x, double n) {
double tmp;
if (n <= -12000000.0) {
tmp = 2.0 * ((0.5 / n) / (0.5 + x));
} else {
tmp = (1.0 / n) / x;
}
return tmp;
}
def code(x, n): tmp = 0 if n <= -12000000.0: tmp = 2.0 * ((0.5 / n) / (0.5 + x)) else: tmp = (1.0 / n) / x return tmp
function code(x, n) tmp = 0.0 if (n <= -12000000.0) tmp = Float64(2.0 * Float64(Float64(0.5 / n) / Float64(0.5 + x))); else tmp = Float64(Float64(1.0 / n) / x); end return tmp end
function tmp_2 = code(x, n) tmp = 0.0; if (n <= -12000000.0) tmp = 2.0 * ((0.5 / n) / (0.5 + x)); else tmp = (1.0 / n) / x; end tmp_2 = tmp; end
code[x_, n_] := If[LessEqual[n, -12000000.0], N[(2.0 * N[(N[(0.5 / n), $MachinePrecision] / N[(0.5 + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / n), $MachinePrecision] / x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;n \leq -12000000:\\
\;\;\;\;2 \cdot \frac{\frac{0.5}{n}}{0.5 + x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{n}}{x}\\
\end{array}
\end{array}
if n < -1.2e7Initial program 28.9%
Taylor expanded in n around inf
lower-/.f64N/A
lower--.f64N/A
lower-log1p.f64N/A
lower-log.f6476.0
Applied rewrites76.0%
Applied rewrites76.0%
Applied rewrites76.0%
Taylor expanded in x around inf
Applied rewrites59.2%
if -1.2e7 < n Initial program 68.2%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f6461.7
Applied rewrites61.7%
Applied rewrites61.7%
Taylor expanded in n around inf
Applied rewrites32.4%
(FPCore (x n) :precision binary64 (/ (/ 1.0 n) x))
double code(double x, double n) {
return (1.0 / n) / x;
}
real(8) function code(x, n)
real(8), intent (in) :: x
real(8), intent (in) :: n
code = (1.0d0 / n) / x
end function
public static double code(double x, double n) {
return (1.0 / n) / x;
}
def code(x, n): return (1.0 / n) / x
function code(x, n) return Float64(Float64(1.0 / n) / x) end
function tmp = code(x, n) tmp = (1.0 / n) / x; end
code[x_, n_] := N[(N[(1.0 / n), $MachinePrecision] / x), $MachinePrecision]
\begin{array}{l}
\\
\frac{\frac{1}{n}}{x}
\end{array}
Initial program 57.9%
Taylor expanded in x around inf
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
log-recN/A
mul-1-negN/A
associate-*r/N/A
associate-*r*N/A
metadata-evalN/A
*-commutativeN/A
associate-/l*N/A
exp-to-powN/A
lower-pow.f64N/A
lower-/.f6459.1
Applied rewrites59.1%
Applied rewrites59.1%
Taylor expanded in n around inf
Applied rewrites37.5%
herbie shell --seed 2024298
(FPCore (x n)
:name "2nthrt (problem 3.4.6)"
:precision binary64
(- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))