
(FPCore (x y z t a b) :precision binary64 (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))
double code(double x, double y, double z, double t, double a, double b) {
return (x * exp((((y * log(z)) + ((t - 1.0) * log(a))) - b))) / y;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
code = (x * exp((((y * log(z)) + ((t - 1.0d0) * log(a))) - b))) / y
end function
public static double code(double x, double y, double z, double t, double a, double b) {
return (x * Math.exp((((y * Math.log(z)) + ((t - 1.0) * Math.log(a))) - b))) / y;
}
def code(x, y, z, t, a, b): return (x * math.exp((((y * math.log(z)) + ((t - 1.0) * math.log(a))) - b))) / y
function code(x, y, z, t, a, b) return Float64(Float64(x * exp(Float64(Float64(Float64(y * log(z)) + Float64(Float64(t - 1.0) * log(a))) - b))) / y) end
function tmp = code(x, y, z, t, a, b) tmp = (x * exp((((y * log(z)) + ((t - 1.0) * log(a))) - b))) / y; end
code[x_, y_, z_, t_, a_, b_] := N[(N[(x * N[Exp[N[(N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] + N[(N[(t - 1.0), $MachinePrecision] * N[Log[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]
\begin{array}{l}
\\
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 28 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t a b) :precision binary64 (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))
double code(double x, double y, double z, double t, double a, double b) {
return (x * exp((((y * log(z)) + ((t - 1.0) * log(a))) - b))) / y;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
code = (x * exp((((y * log(z)) + ((t - 1.0d0) * log(a))) - b))) / y
end function
public static double code(double x, double y, double z, double t, double a, double b) {
return (x * Math.exp((((y * Math.log(z)) + ((t - 1.0) * Math.log(a))) - b))) / y;
}
def code(x, y, z, t, a, b): return (x * math.exp((((y * math.log(z)) + ((t - 1.0) * math.log(a))) - b))) / y
function code(x, y, z, t, a, b) return Float64(Float64(x * exp(Float64(Float64(Float64(y * log(z)) + Float64(Float64(t - 1.0) * log(a))) - b))) / y) end
function tmp = code(x, y, z, t, a, b) tmp = (x * exp((((y * log(z)) + ((t - 1.0) * log(a))) - b))) / y; end
code[x_, y_, z_, t_, a_, b_] := N[(N[(x * N[Exp[N[(N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] + N[(N[(t - 1.0), $MachinePrecision] * N[Log[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]
\begin{array}{l}
\\
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\end{array}
(FPCore (x y z t a b) :precision binary64 (/ (* x (exp (- (+ (* y (log z)) (* (log a) (+ t -1.0))) b))) y))
double code(double x, double y, double z, double t, double a, double b) {
return (x * exp((((y * log(z)) + (log(a) * (t + -1.0))) - b))) / y;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
code = (x * exp((((y * log(z)) + (log(a) * (t + (-1.0d0)))) - b))) / y
end function
public static double code(double x, double y, double z, double t, double a, double b) {
return (x * Math.exp((((y * Math.log(z)) + (Math.log(a) * (t + -1.0))) - b))) / y;
}
def code(x, y, z, t, a, b): return (x * math.exp((((y * math.log(z)) + (math.log(a) * (t + -1.0))) - b))) / y
function code(x, y, z, t, a, b) return Float64(Float64(x * exp(Float64(Float64(Float64(y * log(z)) + Float64(log(a) * Float64(t + -1.0))) - b))) / y) end
function tmp = code(x, y, z, t, a, b) tmp = (x * exp((((y * log(z)) + (log(a) * (t + -1.0))) - b))) / y; end
code[x_, y_, z_, t_, a_, b_] := N[(N[(x * N[Exp[N[(N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] + N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]
\begin{array}{l}
\\
\frac{x \cdot e^{\left(y \cdot \log z + \log a \cdot \left(t + -1\right)\right) - b}}{y}
\end{array}
Initial program 98.9%
Final simplification98.9%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (/ (* x (exp (- (+ (* y (log z)) (* (log a) (+ t -1.0))) b))) y)))
(if (<= t_1 -5e+62)
(/ (/ x y) a)
(if (<= t_1 1e+75) (/ x (* a (fma b y y))) (/ (/ x a) y)))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * exp((((y * log(z)) + (log(a) * (t + -1.0))) - b))) / y;
double tmp;
if (t_1 <= -5e+62) {
tmp = (x / y) / a;
} else if (t_1 <= 1e+75) {
tmp = x / (a * fma(b, y, y));
} else {
tmp = (x / a) / y;
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = Float64(Float64(x * exp(Float64(Float64(Float64(y * log(z)) + Float64(log(a) * Float64(t + -1.0))) - b))) / y) tmp = 0.0 if (t_1 <= -5e+62) tmp = Float64(Float64(x / y) / a); elseif (t_1 <= 1e+75) tmp = Float64(x / Float64(a * fma(b, y, y))); else tmp = Float64(Float64(x / a) / y); end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[(x * N[Exp[N[(N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] + N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+62], N[(N[(x / y), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[t$95$1, 1e+75], N[(x / N[(a * N[(b * y + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x / a), $MachinePrecision] / y), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{x \cdot e^{\left(y \cdot \log z + \log a \cdot \left(t + -1\right)\right) - b}}{y}\\
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{+62}:\\
\;\;\;\;\frac{\frac{x}{y}}{a}\\
\mathbf{elif}\;t\_1 \leq 10^{+75}:\\
\;\;\;\;\frac{x}{a \cdot \mathsf{fma}\left(b, y, y\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{a}}{y}\\
\end{array}
\end{array}
if (/.f64 (*.f64 x (exp.f64 (-.f64 (+.f64 (*.f64 y (log.f64 z)) (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a))) b))) y) < -5.00000000000000029e62Initial program 99.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6468.9
Simplified68.9%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6458.4
Simplified58.4%
Taylor expanded in t around 0
/-lowering-/.f6439.8
Simplified39.8%
*-commutativeN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f6439.8
Applied egg-rr39.8%
if -5.00000000000000029e62 < (/.f64 (*.f64 x (exp.f64 (-.f64 (+.f64 (*.f64 y (log.f64 z)) (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a))) b))) y) < 9.99999999999999927e74Initial program 98.5%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6476.0
Simplified76.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6466.5
Simplified66.5%
Taylor expanded in b around 0
distribute-lft-outN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f6448.2
Simplified48.2%
if 9.99999999999999927e74 < (/.f64 (*.f64 x (exp.f64 (-.f64 (+.f64 (*.f64 y (log.f64 z)) (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a))) b))) y) Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6469.8
Simplified69.8%
Taylor expanded in t around 0
/-lowering-/.f6457.4
Simplified57.4%
Taylor expanded in b around 0
Simplified36.7%
Final simplification43.6%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (* (log a) (+ t -1.0))) (t_2 (* (pow a t) (/ x y))))
(if (<= t_1 -1000000000.0)
t_2
(if (<= t_1 35.0)
(/ x (* a (fma b (fma b (* y 0.5) y) y)))
(if (<= t_1 544.5)
(/ (* x (exp (- b))) y)
(if (<= t_1 200000000000.0) (/ (/ x a) y) t_2))))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = log(a) * (t + -1.0);
double t_2 = pow(a, t) * (x / y);
double tmp;
if (t_1 <= -1000000000.0) {
tmp = t_2;
} else if (t_1 <= 35.0) {
tmp = x / (a * fma(b, fma(b, (y * 0.5), y), y));
} else if (t_1 <= 544.5) {
tmp = (x * exp(-b)) / y;
} else if (t_1 <= 200000000000.0) {
tmp = (x / a) / y;
} else {
tmp = t_2;
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = Float64(log(a) * Float64(t + -1.0)) t_2 = Float64((a ^ t) * Float64(x / y)) tmp = 0.0 if (t_1 <= -1000000000.0) tmp = t_2; elseif (t_1 <= 35.0) tmp = Float64(x / Float64(a * fma(b, fma(b, Float64(y * 0.5), y), y))); elseif (t_1 <= 544.5) tmp = Float64(Float64(x * exp(Float64(-b))) / y); elseif (t_1 <= 200000000000.0) tmp = Float64(Float64(x / a) / y); else tmp = t_2; end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[a, t], $MachinePrecision] * N[(x / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1000000000.0], t$95$2, If[LessEqual[t$95$1, 35.0], N[(x / N[(a * N[(b * N[(b * N[(y * 0.5), $MachinePrecision] + y), $MachinePrecision] + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 544.5], N[(N[(x * N[Exp[(-b)], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision], If[LessEqual[t$95$1, 200000000000.0], N[(N[(x / a), $MachinePrecision] / y), $MachinePrecision], t$95$2]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \log a \cdot \left(t + -1\right)\\
t_2 := {a}^{t} \cdot \frac{x}{y}\\
\mathbf{if}\;t\_1 \leq -1000000000:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq 35:\\
\;\;\;\;\frac{x}{a \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, y \cdot 0.5, y\right), y\right)}\\
\mathbf{elif}\;t\_1 \leq 544.5:\\
\;\;\;\;\frac{x \cdot e^{-b}}{y}\\
\mathbf{elif}\;t\_1 \leq 200000000000:\\
\;\;\;\;\frac{\frac{x}{a}}{y}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -1e9 or 2e11 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6470.8
Simplified70.8%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6474.2
Simplified74.2%
Taylor expanded in t around inf
Simplified74.2%
if -1e9 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 35Initial program 97.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6465.9
Simplified65.9%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.3
Simplified73.3%
Taylor expanded in b around 0
+-commutativeN/A
+-commutativeN/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f6467.7
Simplified67.7%
if 35 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 544.5Initial program 99.3%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6486.0
Simplified86.0%
Taylor expanded in y around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
neg-lowering-neg.f6469.4
Simplified69.4%
if 544.5 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 2e11Initial program 97.6%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6487.4
Simplified87.4%
Taylor expanded in t around 0
/-lowering-/.f6489.6
Simplified89.6%
Taylor expanded in b around 0
Simplified83.6%
Final simplification72.2%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (* (log a) (+ t -1.0)))
(t_2 (/ (* x (exp (- (* t (log a)) b))) y)))
(if (<= t_1 -1000000000.0)
t_2
(if (<= t_1 -200.0)
(/ (* x (exp (- (* y (log z)) b))) y)
(if (<= t_1 200000000000.0) (/ (/ x (* y (exp b))) a) t_2)))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = log(a) * (t + -1.0);
double t_2 = (x * exp(((t * log(a)) - b))) / y;
double tmp;
if (t_1 <= -1000000000.0) {
tmp = t_2;
} else if (t_1 <= -200.0) {
tmp = (x * exp(((y * log(z)) - b))) / y;
} else if (t_1 <= 200000000000.0) {
tmp = (x / (y * exp(b))) / a;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = log(a) * (t + (-1.0d0))
t_2 = (x * exp(((t * log(a)) - b))) / y
if (t_1 <= (-1000000000.0d0)) then
tmp = t_2
else if (t_1 <= (-200.0d0)) then
tmp = (x * exp(((y * log(z)) - b))) / y
else if (t_1 <= 200000000000.0d0) then
tmp = (x / (y * exp(b))) / a
else
tmp = t_2
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = Math.log(a) * (t + -1.0);
double t_2 = (x * Math.exp(((t * Math.log(a)) - b))) / y;
double tmp;
if (t_1 <= -1000000000.0) {
tmp = t_2;
} else if (t_1 <= -200.0) {
tmp = (x * Math.exp(((y * Math.log(z)) - b))) / y;
} else if (t_1 <= 200000000000.0) {
tmp = (x / (y * Math.exp(b))) / a;
} else {
tmp = t_2;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = math.log(a) * (t + -1.0) t_2 = (x * math.exp(((t * math.log(a)) - b))) / y tmp = 0 if t_1 <= -1000000000.0: tmp = t_2 elif t_1 <= -200.0: tmp = (x * math.exp(((y * math.log(z)) - b))) / y elif t_1 <= 200000000000.0: tmp = (x / (y * math.exp(b))) / a else: tmp = t_2 return tmp
function code(x, y, z, t, a, b) t_1 = Float64(log(a) * Float64(t + -1.0)) t_2 = Float64(Float64(x * exp(Float64(Float64(t * log(a)) - b))) / y) tmp = 0.0 if (t_1 <= -1000000000.0) tmp = t_2; elseif (t_1 <= -200.0) tmp = Float64(Float64(x * exp(Float64(Float64(y * log(z)) - b))) / y); elseif (t_1 <= 200000000000.0) tmp = Float64(Float64(x / Float64(y * exp(b))) / a); else tmp = t_2; end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = log(a) * (t + -1.0); t_2 = (x * exp(((t * log(a)) - b))) / y; tmp = 0.0; if (t_1 <= -1000000000.0) tmp = t_2; elseif (t_1 <= -200.0) tmp = (x * exp(((y * log(z)) - b))) / y; elseif (t_1 <= 200000000000.0) tmp = (x / (y * exp(b))) / a; else tmp = t_2; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x * N[Exp[N[(N[(t * N[Log[a], $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[t$95$1, -1000000000.0], t$95$2, If[LessEqual[t$95$1, -200.0], N[(N[(x * N[Exp[N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision], If[LessEqual[t$95$1, 200000000000.0], N[(N[(x / N[(y * N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision], t$95$2]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \log a \cdot \left(t + -1\right)\\
t_2 := \frac{x \cdot e^{t \cdot \log a - b}}{y}\\
\mathbf{if}\;t\_1 \leq -1000000000:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq -200:\\
\;\;\;\;\frac{x \cdot e^{y \cdot \log z - b}}{y}\\
\mathbf{elif}\;t\_1 \leq 200000000000:\\
\;\;\;\;\frac{\frac{x}{y \cdot e^{b}}}{a}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -1e9 or 2e11 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) Initial program 100.0%
Taylor expanded in t around inf
*-commutativeN/A
*-lowering-*.f64N/A
rem-exp-logN/A
log-lowering-log.f64N/A
rem-exp-log92.8
Simplified92.8%
if -1e9 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -200Initial program 98.2%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6483.7
Simplified83.7%
if -200 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 2e11Initial program 97.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.7
Simplified82.7%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6477.2
Simplified77.2%
associate-/l/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6483.2
Applied egg-rr83.2%
Final simplification87.9%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (pow a (+ t -1.0))) (t_2 (* (log a) (+ t -1.0))))
(if (<= t_2 -700.0)
(* x (/ t_1 y))
(if (<= t_2 -600.0)
(* x (/ (pow z y) y))
(if (<= t_2 1e+81) (/ (/ x (* y (exp b))) a) (/ (* x t_1) y))))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = pow(a, (t + -1.0));
double t_2 = log(a) * (t + -1.0);
double tmp;
if (t_2 <= -700.0) {
tmp = x * (t_1 / y);
} else if (t_2 <= -600.0) {
tmp = x * (pow(z, y) / y);
} else if (t_2 <= 1e+81) {
tmp = (x / (y * exp(b))) / a;
} else {
tmp = (x * t_1) / y;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = a ** (t + (-1.0d0))
t_2 = log(a) * (t + (-1.0d0))
if (t_2 <= (-700.0d0)) then
tmp = x * (t_1 / y)
else if (t_2 <= (-600.0d0)) then
tmp = x * ((z ** y) / y)
else if (t_2 <= 1d+81) then
tmp = (x / (y * exp(b))) / a
else
tmp = (x * t_1) / y
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = Math.pow(a, (t + -1.0));
double t_2 = Math.log(a) * (t + -1.0);
double tmp;
if (t_2 <= -700.0) {
tmp = x * (t_1 / y);
} else if (t_2 <= -600.0) {
tmp = x * (Math.pow(z, y) / y);
} else if (t_2 <= 1e+81) {
tmp = (x / (y * Math.exp(b))) / a;
} else {
tmp = (x * t_1) / y;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = math.pow(a, (t + -1.0)) t_2 = math.log(a) * (t + -1.0) tmp = 0 if t_2 <= -700.0: tmp = x * (t_1 / y) elif t_2 <= -600.0: tmp = x * (math.pow(z, y) / y) elif t_2 <= 1e+81: tmp = (x / (y * math.exp(b))) / a else: tmp = (x * t_1) / y return tmp
function code(x, y, z, t, a, b) t_1 = a ^ Float64(t + -1.0) t_2 = Float64(log(a) * Float64(t + -1.0)) tmp = 0.0 if (t_2 <= -700.0) tmp = Float64(x * Float64(t_1 / y)); elseif (t_2 <= -600.0) tmp = Float64(x * Float64((z ^ y) / y)); elseif (t_2 <= 1e+81) tmp = Float64(Float64(x / Float64(y * exp(b))) / a); else tmp = Float64(Float64(x * t_1) / y); end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = a ^ (t + -1.0); t_2 = log(a) * (t + -1.0); tmp = 0.0; if (t_2 <= -700.0) tmp = x * (t_1 / y); elseif (t_2 <= -600.0) tmp = x * ((z ^ y) / y); elseif (t_2 <= 1e+81) tmp = (x / (y * exp(b))) / a; else tmp = (x * t_1) / y; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -700.0], N[(x * N[(t$95$1 / y), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, -600.0], N[(x * N[(N[Power[z, y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 1e+81], N[(N[(x / N[(y * N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision], N[(N[(x * t$95$1), $MachinePrecision] / y), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := {a}^{\left(t + -1\right)}\\
t_2 := \log a \cdot \left(t + -1\right)\\
\mathbf{if}\;t\_2 \leq -700:\\
\;\;\;\;x \cdot \frac{t\_1}{y}\\
\mathbf{elif}\;t\_2 \leq -600:\\
\;\;\;\;x \cdot \frac{{z}^{y}}{y}\\
\mathbf{elif}\;t\_2 \leq 10^{+81}:\\
\;\;\;\;\frac{\frac{x}{y \cdot e^{b}}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot t\_1}{y}\\
\end{array}
\end{array}
if (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -700Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.6
Simplified72.6%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6469.9
Simplified69.9%
*-commutativeN/A
div-invN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
associate-*l/N/A
metadata-evalN/A
*-lft-identityN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6481.5
Applied egg-rr81.5%
if -700 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -600Initial program 98.6%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6484.1
Simplified84.1%
Taylor expanded in b around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6467.9
Simplified67.9%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f6467.9
Applied egg-rr67.9%
if -600 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 9.99999999999999921e80Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.8
Simplified75.8%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6476.5
Simplified76.5%
associate-/l/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.7
Applied egg-rr78.7%
if 9.99999999999999921e80 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6474.5
Simplified74.5%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6488.4
Simplified88.4%
associate-*r/N/A
clear-numN/A
metadata-evalN/A
/-lowering-/.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6495.4
Applied egg-rr95.4%
clear-numN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6495.4
Applied egg-rr95.4%
Final simplification81.8%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (* (log a) (+ t -1.0))) (t_2 (* (pow a t) (/ x y))))
(if (<= t_1 -1000000000.0)
t_2
(if (<= t_1 75.0)
(/
x
(* (* y a) (fma b (fma b (fma b 0.16666666666666666 0.5) 1.0) 1.0)))
(if (<= t_1 200000000000.0)
(/
(fma
b
(fma
(* b b)
(* -0.16666666666666666 (/ x y))
(/ (* x (fma 0.5 b -1.0)) y))
(/ x y))
a)
t_2)))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = log(a) * (t + -1.0);
double t_2 = pow(a, t) * (x / y);
double tmp;
if (t_1 <= -1000000000.0) {
tmp = t_2;
} else if (t_1 <= 75.0) {
tmp = x / ((y * a) * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0));
} else if (t_1 <= 200000000000.0) {
tmp = fma(b, fma((b * b), (-0.16666666666666666 * (x / y)), ((x * fma(0.5, b, -1.0)) / y)), (x / y)) / a;
} else {
tmp = t_2;
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = Float64(log(a) * Float64(t + -1.0)) t_2 = Float64((a ^ t) * Float64(x / y)) tmp = 0.0 if (t_1 <= -1000000000.0) tmp = t_2; elseif (t_1 <= 75.0) tmp = Float64(x / Float64(Float64(y * a) * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0))); elseif (t_1 <= 200000000000.0) tmp = Float64(fma(b, fma(Float64(b * b), Float64(-0.16666666666666666 * Float64(x / y)), Float64(Float64(x * fma(0.5, b, -1.0)) / y)), Float64(x / y)) / a); else tmp = t_2; end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[a, t], $MachinePrecision] * N[(x / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1000000000.0], t$95$2, If[LessEqual[t$95$1, 75.0], N[(x / N[(N[(y * a), $MachinePrecision] * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 200000000000.0], N[(N[(b * N[(N[(b * b), $MachinePrecision] * N[(-0.16666666666666666 * N[(x / y), $MachinePrecision]), $MachinePrecision] + N[(N[(x * N[(0.5 * b + -1.0), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision] + N[(x / y), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision], t$95$2]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \log a \cdot \left(t + -1\right)\\
t_2 := {a}^{t} \cdot \frac{x}{y}\\
\mathbf{if}\;t\_1 \leq -1000000000:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq 75:\\
\;\;\;\;\frac{x}{\left(y \cdot a\right) \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\mathbf{elif}\;t\_1 \leq 200000000000:\\
\;\;\;\;\frac{\mathsf{fma}\left(b, \mathsf{fma}\left(b \cdot b, -0.16666666666666666 \cdot \frac{x}{y}, \frac{x \cdot \mathsf{fma}\left(0.5, b, -1\right)}{y}\right), \frac{x}{y}\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < -1e9 or 2e11 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6470.8
Simplified70.8%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6474.2
Simplified74.2%
Taylor expanded in t around inf
Simplified74.2%
if -1e9 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 75Initial program 97.3%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6468.2
Simplified68.2%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.1
Simplified75.1%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6468.5
Simplified68.5%
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f6468.5
Applied egg-rr68.5%
if 75 < (*.f64 (-.f64 t #s(literal 1 binary64)) (log.f64 a)) < 2e11Initial program 98.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.8
Simplified82.8%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.6
Simplified73.6%
Taylor expanded in b around 0
Simplified40.4%
Taylor expanded in a around 0
/-lowering-/.f64N/A
Simplified58.0%
Final simplification68.9%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (/ (* x (exp (- (* y (log z)) b))) y)))
(if (<= y -61.0)
t_1
(if (<= y 18.0) (/ (* x (exp (- (* (log a) (+ t -1.0)) b))) y) t_1))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * exp(((y * log(z)) - b))) / y;
double tmp;
if (y <= -61.0) {
tmp = t_1;
} else if (y <= 18.0) {
tmp = (x * exp(((log(a) * (t + -1.0)) - b))) / y;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: tmp
t_1 = (x * exp(((y * log(z)) - b))) / y
if (y <= (-61.0d0)) then
tmp = t_1
else if (y <= 18.0d0) then
tmp = (x * exp(((log(a) * (t + (-1.0d0))) - b))) / y
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * Math.exp(((y * Math.log(z)) - b))) / y;
double tmp;
if (y <= -61.0) {
tmp = t_1;
} else if (y <= 18.0) {
tmp = (x * Math.exp(((Math.log(a) * (t + -1.0)) - b))) / y;
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = (x * math.exp(((y * math.log(z)) - b))) / y tmp = 0 if y <= -61.0: tmp = t_1 elif y <= 18.0: tmp = (x * math.exp(((math.log(a) * (t + -1.0)) - b))) / y else: tmp = t_1 return tmp
function code(x, y, z, t, a, b) t_1 = Float64(Float64(x * exp(Float64(Float64(y * log(z)) - b))) / y) tmp = 0.0 if (y <= -61.0) tmp = t_1; elseif (y <= 18.0) tmp = Float64(Float64(x * exp(Float64(Float64(log(a) * Float64(t + -1.0)) - b))) / y); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = (x * exp(((y * log(z)) - b))) / y; tmp = 0.0; if (y <= -61.0) tmp = t_1; elseif (y <= 18.0) tmp = (x * exp(((log(a) * (t + -1.0)) - b))) / y; else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[(x * N[Exp[N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[y, -61.0], t$95$1, If[LessEqual[y, 18.0], N[(N[(x * N[Exp[N[(N[(N[Log[a], $MachinePrecision] * N[(t + -1.0), $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{x \cdot e^{y \cdot \log z - b}}{y}\\
\mathbf{if}\;y \leq -61:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;y \leq 18:\\
\;\;\;\;\frac{x \cdot e^{\log a \cdot \left(t + -1\right) - b}}{y}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if y < -61 or 18 < y Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6494.7
Simplified94.7%
if -61 < y < 18Initial program 98.1%
Taylor expanded in y around 0
*-lowering-*.f64N/A
rem-exp-logN/A
log-lowering-log.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f6498.1
Simplified98.1%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (/ (* x (exp (- (* y (log z)) b))) y)))
(if (<= y -6.8)
t_1
(if (<= y 1.65) (/ (* x (pow a (+ t -1.0))) (* y (exp b))) t_1))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * exp(((y * log(z)) - b))) / y;
double tmp;
if (y <= -6.8) {
tmp = t_1;
} else if (y <= 1.65) {
tmp = (x * pow(a, (t + -1.0))) / (y * exp(b));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: tmp
t_1 = (x * exp(((y * log(z)) - b))) / y
if (y <= (-6.8d0)) then
tmp = t_1
else if (y <= 1.65d0) then
tmp = (x * (a ** (t + (-1.0d0)))) / (y * exp(b))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * Math.exp(((y * Math.log(z)) - b))) / y;
double tmp;
if (y <= -6.8) {
tmp = t_1;
} else if (y <= 1.65) {
tmp = (x * Math.pow(a, (t + -1.0))) / (y * Math.exp(b));
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = (x * math.exp(((y * math.log(z)) - b))) / y tmp = 0 if y <= -6.8: tmp = t_1 elif y <= 1.65: tmp = (x * math.pow(a, (t + -1.0))) / (y * math.exp(b)) else: tmp = t_1 return tmp
function code(x, y, z, t, a, b) t_1 = Float64(Float64(x * exp(Float64(Float64(y * log(z)) - b))) / y) tmp = 0.0 if (y <= -6.8) tmp = t_1; elseif (y <= 1.65) tmp = Float64(Float64(x * (a ^ Float64(t + -1.0))) / Float64(y * exp(b))); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = (x * exp(((y * log(z)) - b))) / y; tmp = 0.0; if (y <= -6.8) tmp = t_1; elseif (y <= 1.65) tmp = (x * (a ^ (t + -1.0))) / (y * exp(b)); else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[(x * N[Exp[N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[y, -6.8], t$95$1, If[LessEqual[y, 1.65], N[(N[(x * N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(y * N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{x \cdot e^{y \cdot \log z - b}}{y}\\
\mathbf{if}\;y \leq -6.8:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;y \leq 1.65:\\
\;\;\;\;\frac{x \cdot {a}^{\left(t + -1\right)}}{y \cdot e^{b}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if y < -6.79999999999999982 or 1.6499999999999999 < y Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6494.7
Simplified94.7%
if -6.79999999999999982 < y < 1.6499999999999999Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6488.0
Simplified88.0%
Final simplification90.9%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (/ (* x (exp (- (* y (log z)) b))) y)))
(if (<= b -4.5e+17)
t_1
(if (<= b 2.2e+28) (/ 1.0 (/ y (* x (pow a (+ t -1.0))))) t_1))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * exp(((y * log(z)) - b))) / y;
double tmp;
if (b <= -4.5e+17) {
tmp = t_1;
} else if (b <= 2.2e+28) {
tmp = 1.0 / (y / (x * pow(a, (t + -1.0))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: tmp
t_1 = (x * exp(((y * log(z)) - b))) / y
if (b <= (-4.5d+17)) then
tmp = t_1
else if (b <= 2.2d+28) then
tmp = 1.0d0 / (y / (x * (a ** (t + (-1.0d0)))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x * Math.exp(((y * Math.log(z)) - b))) / y;
double tmp;
if (b <= -4.5e+17) {
tmp = t_1;
} else if (b <= 2.2e+28) {
tmp = 1.0 / (y / (x * Math.pow(a, (t + -1.0))));
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = (x * math.exp(((y * math.log(z)) - b))) / y tmp = 0 if b <= -4.5e+17: tmp = t_1 elif b <= 2.2e+28: tmp = 1.0 / (y / (x * math.pow(a, (t + -1.0)))) else: tmp = t_1 return tmp
function code(x, y, z, t, a, b) t_1 = Float64(Float64(x * exp(Float64(Float64(y * log(z)) - b))) / y) tmp = 0.0 if (b <= -4.5e+17) tmp = t_1; elseif (b <= 2.2e+28) tmp = Float64(1.0 / Float64(y / Float64(x * (a ^ Float64(t + -1.0))))); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = (x * exp(((y * log(z)) - b))) / y; tmp = 0.0; if (b <= -4.5e+17) tmp = t_1; elseif (b <= 2.2e+28) tmp = 1.0 / (y / (x * (a ^ (t + -1.0)))); else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(N[(x * N[Exp[N[(N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision] - b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[b, -4.5e+17], t$95$1, If[LessEqual[b, 2.2e+28], N[(1.0 / N[(y / N[(x * N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{x \cdot e^{y \cdot \log z - b}}{y}\\
\mathbf{if}\;b \leq -4.5 \cdot 10^{+17}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 2.2 \cdot 10^{+28}:\\
\;\;\;\;\frac{1}{\frac{y}{x \cdot {a}^{\left(t + -1\right)}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if b < -4.5e17 or 2.19999999999999986e28 < b Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6495.2
Simplified95.2%
if -4.5e17 < b < 2.19999999999999986e28Initial program 97.9%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6476.8
Simplified76.8%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6471.9
Simplified71.9%
associate-*r/N/A
clear-numN/A
metadata-evalN/A
/-lowering-/.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6478.0
Applied egg-rr78.0%
(FPCore (x y z t a b)
:precision binary64
(if (<= b -4.5e+63)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b 3e+28)
(/ 1.0 (/ y (* x (pow a (+ t -1.0)))))
(/ x (* a (* y (exp b)))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -4.5e+63) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= 3e+28) {
tmp = 1.0 / (y / (x * pow(a, (t + -1.0))));
} else {
tmp = x / (a * (y * exp(b)));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -4.5e+63) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= 3e+28) tmp = Float64(1.0 / Float64(y / Float64(x * (a ^ Float64(t + -1.0))))); else tmp = Float64(x / Float64(a * Float64(y * exp(b)))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -4.5e+63], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 3e+28], N[(1.0 / N[(y / N[(x * N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -4.5 \cdot 10^{+63}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq 3 \cdot 10^{+28}:\\
\;\;\;\;\frac{1}{\frac{y}{x \cdot {a}^{\left(t + -1\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot e^{b}\right)}\\
\end{array}
\end{array}
if b < -4.50000000000000017e63Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.9
Simplified86.9%
Taylor expanded in b around 0
Simplified85.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6489.2
Simplified89.2%
if -4.50000000000000017e63 < b < 3.0000000000000001e28Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6471.9
Simplified71.9%
associate-*r/N/A
clear-numN/A
metadata-evalN/A
/-lowering-/.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6476.9
Applied egg-rr76.9%
if 3.0000000000000001e28 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.7
Simplified73.7%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6481.2
Simplified81.2%
Final simplification80.2%
(FPCore (x y z t a b)
:precision binary64
(if (<= b -5.5e+63)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b 7.2e+28)
(/ (* x (pow a (+ t -1.0))) y)
(/ x (* a (* y (exp b)))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -5.5e+63) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= 7.2e+28) {
tmp = (x * pow(a, (t + -1.0))) / y;
} else {
tmp = x / (a * (y * exp(b)));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -5.5e+63) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= 7.2e+28) tmp = Float64(Float64(x * (a ^ Float64(t + -1.0))) / y); else tmp = Float64(x / Float64(a * Float64(y * exp(b)))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -5.5e+63], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 7.2e+28], N[(N[(x * N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision], N[(x / N[(a * N[(y * N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -5.5 \cdot 10^{+63}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq 7.2 \cdot 10^{+28}:\\
\;\;\;\;\frac{x \cdot {a}^{\left(t + -1\right)}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot e^{b}\right)}\\
\end{array}
\end{array}
if b < -5.50000000000000004e63Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.9
Simplified86.9%
Taylor expanded in b around 0
Simplified85.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6489.2
Simplified89.2%
if -5.50000000000000004e63 < b < 7.1999999999999999e28Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6471.9
Simplified71.9%
associate-*r/N/A
clear-numN/A
metadata-evalN/A
/-lowering-/.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6476.9
Applied egg-rr76.9%
clear-numN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6476.8
Applied egg-rr76.8%
if 7.1999999999999999e28 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.7
Simplified73.7%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6481.2
Simplified81.2%
Final simplification80.1%
(FPCore (x y z t a b)
:precision binary64
(if (<= b -7.5e+62)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b 3.3e+28) (/ (* x (pow a (+ t -1.0))) y) (/ (* x (exp (- b))) y))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -7.5e+62) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= 3.3e+28) {
tmp = (x * pow(a, (t + -1.0))) / y;
} else {
tmp = (x * exp(-b)) / y;
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -7.5e+62) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= 3.3e+28) tmp = Float64(Float64(x * (a ^ Float64(t + -1.0))) / y); else tmp = Float64(Float64(x * exp(Float64(-b))) / y); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -7.5e+62], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 3.3e+28], N[(N[(x * N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision], N[(N[(x * N[Exp[(-b)], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -7.5 \cdot 10^{+62}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq 3.3 \cdot 10^{+28}:\\
\;\;\;\;\frac{x \cdot {a}^{\left(t + -1\right)}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot e^{-b}}{y}\\
\end{array}
\end{array}
if b < -7.49999999999999998e62Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.9
Simplified86.9%
Taylor expanded in b around 0
Simplified85.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6489.2
Simplified89.2%
if -7.49999999999999998e62 < b < 3.3e28Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6471.9
Simplified71.9%
associate-*r/N/A
clear-numN/A
metadata-evalN/A
/-lowering-/.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6476.9
Applied egg-rr76.9%
clear-numN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6476.8
Applied egg-rr76.8%
if 3.3e28 < b Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6492.8
Simplified92.8%
Taylor expanded in y around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
neg-lowering-neg.f6481.2
Simplified81.2%
Final simplification80.1%
(FPCore (x y z t a b)
:precision binary64
(if (<= b -4e+63)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b 2.3e+28) (* x (/ (pow a (+ t -1.0)) y)) (/ (* x (exp (- b))) y))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -4e+63) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= 2.3e+28) {
tmp = x * (pow(a, (t + -1.0)) / y);
} else {
tmp = (x * exp(-b)) / y;
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -4e+63) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= 2.3e+28) tmp = Float64(x * Float64((a ^ Float64(t + -1.0)) / y)); else tmp = Float64(Float64(x * exp(Float64(-b))) / y); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -4e+63], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 2.3e+28], N[(x * N[(N[Power[a, N[(t + -1.0), $MachinePrecision]], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], N[(N[(x * N[Exp[(-b)], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -4 \cdot 10^{+63}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq 2.3 \cdot 10^{+28}:\\
\;\;\;\;x \cdot \frac{{a}^{\left(t + -1\right)}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot e^{-b}}{y}\\
\end{array}
\end{array}
if b < -4.00000000000000023e63Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.9
Simplified86.9%
Taylor expanded in b around 0
Simplified85.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6489.2
Simplified89.2%
if -4.00000000000000023e63 < b < 2.29999999999999984e28Initial program 98.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6471.9
Simplified71.9%
*-commutativeN/A
div-invN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
associate-*l/N/A
metadata-evalN/A
*-lft-identityN/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
+-lowering-+.f6473.7
Applied egg-rr73.7%
if 2.29999999999999984e28 < b Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6492.8
Simplified92.8%
Taylor expanded in y around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
neg-lowering-neg.f6481.2
Simplified81.2%
Final simplification78.4%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (fma b (fma b 0.16666666666666666 0.5) 1.0)))
(if (<= b -2.25e+55)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b 2e+28)
(* x (/ (pow z y) y))
(if (<= b 1.05e+103)
(/
x
(*
a
(/
(*
y
(fma
b
(* t_1 (fma b (* b (fma b 0.16666666666666666 0.5)) b))
-1.0))
(fma b t_1 -1.0))))
(/ x (* a (* y (* (* b b) (fma 0.16666666666666666 b 0.5))))))))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = fma(b, fma(b, 0.16666666666666666, 0.5), 1.0);
double tmp;
if (b <= -2.25e+55) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= 2e+28) {
tmp = x * (pow(z, y) / y);
} else if (b <= 1.05e+103) {
tmp = x / (a * ((y * fma(b, (t_1 * fma(b, (b * fma(b, 0.16666666666666666, 0.5)), b)), -1.0)) / fma(b, t_1, -1.0)));
} else {
tmp = x / (a * (y * ((b * b) * fma(0.16666666666666666, b, 0.5))));
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = fma(b, fma(b, 0.16666666666666666, 0.5), 1.0) tmp = 0.0 if (b <= -2.25e+55) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= 2e+28) tmp = Float64(x * Float64((z ^ y) / y)); elseif (b <= 1.05e+103) tmp = Float64(x / Float64(a * Float64(Float64(y * fma(b, Float64(t_1 * fma(b, Float64(b * fma(b, 0.16666666666666666, 0.5)), b)), -1.0)) / fma(b, t_1, -1.0)))); else tmp = Float64(x / Float64(a * Float64(y * Float64(Float64(b * b) * fma(0.16666666666666666, b, 0.5))))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[b, -2.25e+55], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 2e+28], N[(x * N[(N[Power[z, y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 1.05e+103], N[(x / N[(a * N[(N[(y * N[(b * N[(t$95$1 * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] / N[(b * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(N[(b * b), $MachinePrecision] * N[(0.16666666666666666 * b + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{if}\;b \leq -2.25 \cdot 10^{+55}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq 2 \cdot 10^{+28}:\\
\;\;\;\;x \cdot \frac{{z}^{y}}{y}\\
\mathbf{elif}\;b \leq 1.05 \cdot 10^{+103}:\\
\;\;\;\;\frac{x}{a \cdot \frac{y \cdot \mathsf{fma}\left(b, t\_1 \cdot \mathsf{fma}\left(b, b \cdot \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), b\right), -1\right)}{\mathsf{fma}\left(b, t\_1, -1\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \left(\left(b \cdot b\right) \cdot \mathsf{fma}\left(0.16666666666666666, b, 0.5\right)\right)\right)}\\
\end{array}
\end{array}
if b < -2.24999999999999999e55Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6461.8
Simplified61.8%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6485.3
Simplified85.3%
Taylor expanded in b around 0
Simplified81.5%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6487.6
Simplified87.6%
if -2.24999999999999999e55 < b < 1.99999999999999992e28Initial program 98.1%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6453.4
Simplified53.4%
Taylor expanded in b around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6450.0
Simplified50.0%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f6450.0
Applied egg-rr50.0%
if 1.99999999999999992e28 < b < 1.0500000000000001e103Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6455.6
Simplified55.6%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.7
Simplified72.7%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6429.8
Simplified29.8%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr67.5%
if 1.0500000000000001e103 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.6
Simplified78.6%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.6
Simplified82.6%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6482.6
Simplified82.6%
Taylor expanded in b around inf
*-commutativeN/A
cube-multN/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
+-commutativeN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f6482.6
Simplified82.6%
Final simplification64.6%
(FPCore (x y z t a b) :precision binary64 (if (<= (log a) -235.0) (/ (/ x a) y) (/ x (* a (fma b y y)))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (log(a) <= -235.0) {
tmp = (x / a) / y;
} else {
tmp = x / (a * fma(b, y, y));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (log(a) <= -235.0) tmp = Float64(Float64(x / a) / y); else tmp = Float64(x / Float64(a * fma(b, y, y))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[N[Log[a], $MachinePrecision], -235.0], N[(N[(x / a), $MachinePrecision] / y), $MachinePrecision], N[(x / N[(a * N[(b * y + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\log a \leq -235:\\
\;\;\;\;\frac{\frac{x}{a}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \mathsf{fma}\left(b, y, y\right)}\\
\end{array}
\end{array}
if (log.f64 a) < -235Initial program 99.2%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6477.0
Simplified77.0%
Taylor expanded in t around 0
/-lowering-/.f6466.2
Simplified66.2%
Taylor expanded in b around 0
Simplified48.6%
if -235 < (log.f64 a) Initial program 98.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6470.6
Simplified70.6%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6463.8
Simplified63.8%
Taylor expanded in b around 0
distribute-lft-outN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f6439.9
Simplified39.9%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (fma b (fma b 0.16666666666666666 0.5) 1.0)))
(if (<= b -1.3e-57)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(if (<= b -6.1e-96)
(/
x
(* a (* (* b (* b b)) (fma y (/ 0.5 b) (* y 0.16666666666666666)))))
(if (<= b 1.05e+103)
(/
x
(*
a
(/
(*
y
(fma
b
(* t_1 (fma b (* b (fma b 0.16666666666666666 0.5)) b))
-1.0))
(fma b t_1 -1.0))))
(/ x (* a (* y (* (* b b) (fma 0.16666666666666666 b 0.5))))))))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = fma(b, fma(b, 0.16666666666666666, 0.5), 1.0);
double tmp;
if (b <= -1.3e-57) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else if (b <= -6.1e-96) {
tmp = x / (a * ((b * (b * b)) * fma(y, (0.5 / b), (y * 0.16666666666666666))));
} else if (b <= 1.05e+103) {
tmp = x / (a * ((y * fma(b, (t_1 * fma(b, (b * fma(b, 0.16666666666666666, 0.5)), b)), -1.0)) / fma(b, t_1, -1.0)));
} else {
tmp = x / (a * (y * ((b * b) * fma(0.16666666666666666, b, 0.5))));
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = fma(b, fma(b, 0.16666666666666666, 0.5), 1.0) tmp = 0.0 if (b <= -1.3e-57) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); elseif (b <= -6.1e-96) tmp = Float64(x / Float64(a * Float64(Float64(b * Float64(b * b)) * fma(y, Float64(0.5 / b), Float64(y * 0.16666666666666666))))); elseif (b <= 1.05e+103) tmp = Float64(x / Float64(a * Float64(Float64(y * fma(b, Float64(t_1 * fma(b, Float64(b * fma(b, 0.16666666666666666, 0.5)), b)), -1.0)) / fma(b, t_1, -1.0)))); else tmp = Float64(x / Float64(a * Float64(y * Float64(Float64(b * b) * fma(0.16666666666666666, b, 0.5))))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[b, -1.3e-57], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, -6.1e-96], N[(x / N[(a * N[(N[(b * N[(b * b), $MachinePrecision]), $MachinePrecision] * N[(y * N[(0.5 / b), $MachinePrecision] + N[(y * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 1.05e+103], N[(x / N[(a * N[(N[(y * N[(b * N[(t$95$1 * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] / N[(b * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(N[(b * b), $MachinePrecision] * N[(0.16666666666666666 * b + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{if}\;b \leq -1.3 \cdot 10^{-57}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{elif}\;b \leq -6.1 \cdot 10^{-96}:\\
\;\;\;\;\frac{x}{a \cdot \left(\left(b \cdot \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(y, \frac{0.5}{b}, y \cdot 0.16666666666666666\right)\right)}\\
\mathbf{elif}\;b \leq 1.05 \cdot 10^{+103}:\\
\;\;\;\;\frac{x}{a \cdot \frac{y \cdot \mathsf{fma}\left(b, t\_1 \cdot \mathsf{fma}\left(b, b \cdot \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), b\right), -1\right)}{\mathsf{fma}\left(b, t\_1, -1\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \left(\left(b \cdot b\right) \cdot \mathsf{fma}\left(0.16666666666666666, b, 0.5\right)\right)\right)}\\
\end{array}
\end{array}
if b < -1.29999999999999993e-57Initial program 99.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6466.0
Simplified66.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6476.8
Simplified76.8%
Taylor expanded in b around 0
Simplified69.5%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6473.2
Simplified73.2%
if -1.29999999999999993e-57 < b < -6.1000000000000001e-96Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.5
Simplified75.5%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f643.6
Simplified3.6%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f643.6
Simplified3.6%
Taylor expanded in b around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6464.0
Simplified64.0%
if -6.1000000000000001e-96 < b < 1.0500000000000001e103Initial program 97.9%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6474.4
Simplified74.4%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6450.3
Simplified50.3%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6443.2
Simplified43.2%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr48.8%
if 1.0500000000000001e103 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.6
Simplified78.6%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.6
Simplified82.6%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6482.6
Simplified82.6%
Taylor expanded in b around inf
*-commutativeN/A
cube-multN/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
+-commutativeN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f6482.6
Simplified82.6%
Final simplification63.3%
(FPCore (x y z t a b)
:precision binary64
(if (<= b -9e-46)
(fma
b
(*
x
(fma
-0.16666666666666666
(/ (* b b) (* y a))
(/ (fma 0.5 b -1.0) (* y a))))
(/ x (* y a)))
(/ (/ x a) (* y (fma b (fma b (fma b 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -9e-46) {
tmp = fma(b, (x * fma(-0.16666666666666666, ((b * b) / (y * a)), (fma(0.5, b, -1.0) / (y * a)))), (x / (y * a)));
} else {
tmp = (x / a) / (y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -9e-46) tmp = fma(b, Float64(x * fma(-0.16666666666666666, Float64(Float64(b * b) / Float64(y * a)), Float64(fma(0.5, b, -1.0) / Float64(y * a)))), Float64(x / Float64(y * a))); else tmp = Float64(Float64(x / a) / Float64(y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -9e-46], N[(b * N[(x * N[(-0.16666666666666666 * N[(N[(b * b), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision] + N[(N[(0.5 * b + -1.0), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x / a), $MachinePrecision] / N[(y * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -9 \cdot 10^{-46}:\\
\;\;\;\;\mathsf{fma}\left(b, x \cdot \mathsf{fma}\left(-0.16666666666666666, \frac{b \cdot b}{y \cdot a}, \frac{\mathsf{fma}\left(0.5, b, -1\right)}{y \cdot a}\right), \frac{x}{y \cdot a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{a}}{y \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\end{array}
\end{array}
if b < -9.00000000000000001e-46Initial program 99.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6465.5
Simplified65.5%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.2
Simplified78.2%
Taylor expanded in b around 0
Simplified70.5%
Taylor expanded in x around 0
*-lowering-*.f64N/A
associate--l+N/A
associate-*r/N/A
div-subN/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6474.4
Simplified74.4%
if -9.00000000000000001e-46 < b Initial program 98.6%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in t around 0
/-lowering-/.f6458.1
Simplified58.1%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6454.0
Simplified54.0%
Final simplification59.8%
(FPCore (x y z t a b) :precision binary64 (if (<= b -1.75e-45) (/ (* -0.16666666666666666 (* x (* b (* b b)))) (* y a)) (/ (/ x a) (* y (fma b (fma b (fma b 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -1.75e-45) {
tmp = (-0.16666666666666666 * (x * (b * (b * b)))) / (y * a);
} else {
tmp = (x / a) / (y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -1.75e-45) tmp = Float64(Float64(-0.16666666666666666 * Float64(x * Float64(b * Float64(b * b)))) / Float64(y * a)); else tmp = Float64(Float64(x / a) / Float64(y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -1.75e-45], N[(N[(-0.16666666666666666 * N[(x * N[(b * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision], N[(N[(x / a), $MachinePrecision] / N[(y * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -1.75 \cdot 10^{-45}:\\
\;\;\;\;\frac{-0.16666666666666666 \cdot \left(x \cdot \left(b \cdot \left(b \cdot b\right)\right)\right)}{y \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{a}}{y \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\end{array}
\end{array}
if b < -1.75e-45Initial program 99.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6465.5
Simplified65.5%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.2
Simplified78.2%
Taylor expanded in b around 0
Simplified70.5%
Taylor expanded in b around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f6471.8
Simplified71.8%
if -1.75e-45 < b Initial program 98.6%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in t around 0
/-lowering-/.f6458.1
Simplified58.1%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6454.0
Simplified54.0%
Final simplification59.0%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (* b (* b b))))
(if (<= b -1.6e-45)
(/ (* -0.16666666666666666 (* x t_1)) (* y a))
(if (<= b 4.1e+31)
(/ (/ x a) (fma b y y))
(/ x (* a (* y (* 0.16666666666666666 t_1))))))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = b * (b * b);
double tmp;
if (b <= -1.6e-45) {
tmp = (-0.16666666666666666 * (x * t_1)) / (y * a);
} else if (b <= 4.1e+31) {
tmp = (x / a) / fma(b, y, y);
} else {
tmp = x / (a * (y * (0.16666666666666666 * t_1)));
}
return tmp;
}
function code(x, y, z, t, a, b) t_1 = Float64(b * Float64(b * b)) tmp = 0.0 if (b <= -1.6e-45) tmp = Float64(Float64(-0.16666666666666666 * Float64(x * t_1)) / Float64(y * a)); elseif (b <= 4.1e+31) tmp = Float64(Float64(x / a) / fma(b, y, y)); else tmp = Float64(x / Float64(a * Float64(y * Float64(0.16666666666666666 * t_1)))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[(b * N[(b * b), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[b, -1.6e-45], N[(N[(-0.16666666666666666 * N[(x * t$95$1), $MachinePrecision]), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 4.1e+31], N[(N[(x / a), $MachinePrecision] / N[(b * y + y), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(0.16666666666666666 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := b \cdot \left(b \cdot b\right)\\
\mathbf{if}\;b \leq -1.6 \cdot 10^{-45}:\\
\;\;\;\;\frac{-0.16666666666666666 \cdot \left(x \cdot t\_1\right)}{y \cdot a}\\
\mathbf{elif}\;b \leq 4.1 \cdot 10^{+31}:\\
\;\;\;\;\frac{\frac{x}{a}}{\mathsf{fma}\left(b, y, y\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \left(0.16666666666666666 \cdot t\_1\right)\right)}\\
\end{array}
\end{array}
if b < -1.60000000000000004e-45Initial program 99.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6465.5
Simplified65.5%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.2
Simplified78.2%
Taylor expanded in b around 0
Simplified70.5%
Taylor expanded in b around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f6471.8
Simplified71.8%
if -1.60000000000000004e-45 < b < 4.1000000000000002e31Initial program 97.8%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6477.0
Simplified77.0%
Taylor expanded in t around 0
/-lowering-/.f6446.9
Simplified46.9%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f6446.6
Simplified46.6%
if 4.1000000000000002e31 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.3
Simplified73.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6480.9
Simplified80.9%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6469.4
Simplified69.4%
Taylor expanded in b around inf
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*r*N/A
*-commutativeN/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.4
Simplified69.4%
Final simplification59.7%
(FPCore (x y z t a b) :precision binary64 (if (<= b -5.4e-15) (/ (* -0.16666666666666666 (* x (* b (* b b)))) (* y a)) (/ x (* a (* y (fma b (fma b (fma b 0.16666666666666666 0.5) 1.0) 1.0))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -5.4e-15) {
tmp = (-0.16666666666666666 * (x * (b * (b * b)))) / (y * a);
} else {
tmp = x / (a * (y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0)));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -5.4e-15) tmp = Float64(Float64(-0.16666666666666666 * Float64(x * Float64(b * Float64(b * b)))) / Float64(y * a)); else tmp = Float64(x / Float64(a * Float64(y * fma(b, fma(b, fma(b, 0.16666666666666666, 0.5), 1.0), 1.0)))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -5.4e-15], N[(N[(-0.16666666666666666 * N[(x * N[(b * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y * a), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(b * N[(b * N[(b * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -5.4 \cdot 10^{-15}:\\
\;\;\;\;\frac{-0.16666666666666666 \cdot \left(x \cdot \left(b \cdot \left(b \cdot b\right)\right)\right)}{y \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.16666666666666666, 0.5\right), 1\right), 1\right)\right)}\\
\end{array}
\end{array}
if b < -5.40000000000000018e-15Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6464.8
Simplified64.8%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6478.4
Simplified78.4%
Taylor expanded in b around 0
Simplified70.2%
Taylor expanded in b around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f6473.0
Simplified73.0%
if -5.40000000000000018e-15 < b Initial program 98.5%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6475.6
Simplified75.6%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6457.6
Simplified57.6%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6453.1
Simplified53.1%
Final simplification58.3%
(FPCore (x y z t a b) :precision binary64 (if (<= b 1.1e-127) (* (/ x (* y a)) (- 1.0 b)) (/ x (* a (* y (* 0.16666666666666666 (* b (* b b))))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= 1.1e-127) {
tmp = (x / (y * a)) * (1.0 - b);
} else {
tmp = x / (a * (y * (0.16666666666666666 * (b * (b * b)))));
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: tmp
if (b <= 1.1d-127) then
tmp = (x / (y * a)) * (1.0d0 - b)
else
tmp = x / (a * (y * (0.16666666666666666d0 * (b * (b * b)))))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= 1.1e-127) {
tmp = (x / (y * a)) * (1.0 - b);
} else {
tmp = x / (a * (y * (0.16666666666666666 * (b * (b * b)))));
}
return tmp;
}
def code(x, y, z, t, a, b): tmp = 0 if b <= 1.1e-127: tmp = (x / (y * a)) * (1.0 - b) else: tmp = x / (a * (y * (0.16666666666666666 * (b * (b * b))))) return tmp
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= 1.1e-127) tmp = Float64(Float64(x / Float64(y * a)) * Float64(1.0 - b)); else tmp = Float64(x / Float64(a * Float64(y * Float64(0.16666666666666666 * Float64(b * Float64(b * b)))))); end return tmp end
function tmp_2 = code(x, y, z, t, a, b) tmp = 0.0; if (b <= 1.1e-127) tmp = (x / (y * a)) * (1.0 - b); else tmp = x / (a * (y * (0.16666666666666666 * (b * (b * b))))); end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, 1.1e-127], N[(N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision] * N[(1.0 - b), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(0.16666666666666666 * N[(b * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.1 \cdot 10^{-127}:\\
\;\;\;\;\frac{x}{y \cdot a} \cdot \left(1 - b\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \left(0.16666666666666666 \cdot \left(b \cdot \left(b \cdot b\right)\right)\right)\right)}\\
\end{array}
\end{array}
if b < 1.1000000000000001e-127Initial program 98.5%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.8
Simplified72.8%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.4
Simplified62.4%
Taylor expanded in b around 0
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-lft1-inN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6451.0
Simplified51.0%
if 1.1000000000000001e-127 < b Initial program 99.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.7
Simplified72.7%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6464.3
Simplified64.3%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6455.5
Simplified55.5%
Taylor expanded in b around inf
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*r*N/A
*-commutativeN/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6456.5
Simplified56.5%
Final simplification53.1%
(FPCore (x y z t a b) :precision binary64 (if (<= b -1.15e+56) (* (/ x (* y a)) (- 1.0 b)) (/ x (* a (* y (fma b (fma b 0.5 1.0) 1.0))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= -1.15e+56) {
tmp = (x / (y * a)) * (1.0 - b);
} else {
tmp = x / (a * (y * fma(b, fma(b, 0.5, 1.0), 1.0)));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= -1.15e+56) tmp = Float64(Float64(x / Float64(y * a)) * Float64(1.0 - b)); else tmp = Float64(x / Float64(a * Float64(y * fma(b, fma(b, 0.5, 1.0), 1.0)))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, -1.15e+56], N[(N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision] * N[(1.0 - b), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(y * N[(b * N[(b * 0.5 + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -1.15 \cdot 10^{+56}:\\
\;\;\;\;\frac{x}{y \cdot a} \cdot \left(1 - b\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \left(y \cdot \mathsf{fma}\left(b, \mathsf{fma}\left(b, 0.5, 1\right), 1\right)\right)}\\
\end{array}
\end{array}
if b < -1.15000000000000007e56Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6463.1
Simplified63.1%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6487.2
Simplified87.2%
Taylor expanded in b around 0
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-lft1-inN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6456.2
Simplified56.2%
if -1.15000000000000007e56 < b Initial program 98.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6474.9
Simplified74.9%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6457.9
Simplified57.9%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6451.5
Simplified51.5%
Final simplification52.3%
(FPCore (x y z t a b) :precision binary64 (if (<= b 1e-196) (* (/ x (* y a)) (- 1.0 b)) (if (<= b 2.2e+118) (/ (/ x a) y) (/ x (* a (fma b y y))))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= 1e-196) {
tmp = (x / (y * a)) * (1.0 - b);
} else if (b <= 2.2e+118) {
tmp = (x / a) / y;
} else {
tmp = x / (a * fma(b, y, y));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= 1e-196) tmp = Float64(Float64(x / Float64(y * a)) * Float64(1.0 - b)); elseif (b <= 2.2e+118) tmp = Float64(Float64(x / a) / y); else tmp = Float64(x / Float64(a * fma(b, y, y))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, 1e-196], N[(N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision] * N[(1.0 - b), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 2.2e+118], N[(N[(x / a), $MachinePrecision] / y), $MachinePrecision], N[(x / N[(a * N[(b * y + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 10^{-196}:\\
\;\;\;\;\frac{x}{y \cdot a} \cdot \left(1 - b\right)\\
\mathbf{elif}\;b \leq 2.2 \cdot 10^{+118}:\\
\;\;\;\;\frac{\frac{x}{a}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \mathsf{fma}\left(b, y, y\right)}\\
\end{array}
\end{array}
if b < 1e-196Initial program 98.6%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.2
Simplified72.2%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in b around 0
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-lft1-inN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6449.8
Simplified49.8%
if 1e-196 < b < 2.19999999999999986e118Initial program 99.1%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6468.0
Simplified68.0%
Taylor expanded in t around 0
/-lowering-/.f6454.0
Simplified54.0%
Taylor expanded in b around 0
Simplified40.5%
if 2.19999999999999986e118 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.0
Simplified82.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.6
Simplified86.6%
Taylor expanded in b around 0
distribute-lft-outN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f6447.1
Simplified47.1%
Final simplification46.8%
(FPCore (x y z t a b) :precision binary64 (if (<= b 1e-201) (* (/ x (* y a)) (- 1.0 b)) (/ (/ x a) (fma b y y))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= 1e-201) {
tmp = (x / (y * a)) * (1.0 - b);
} else {
tmp = (x / a) / fma(b, y, y);
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= 1e-201) tmp = Float64(Float64(x / Float64(y * a)) * Float64(1.0 - b)); else tmp = Float64(Float64(x / a) / fma(b, y, y)); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, 1e-201], N[(N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision] * N[(1.0 - b), $MachinePrecision]), $MachinePrecision], N[(N[(x / a), $MachinePrecision] / N[(b * y + y), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 10^{-201}:\\
\;\;\;\;\frac{x}{y \cdot a} \cdot \left(1 - b\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{a}}{\mathsf{fma}\left(b, y, y\right)}\\
\end{array}
\end{array}
if b < 9.99999999999999946e-202Initial program 98.6%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6472.2
Simplified72.2%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6462.3
Simplified62.3%
Taylor expanded in b around 0
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-lft1-inN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6449.8
Simplified49.8%
if 9.99999999999999946e-202 < b Initial program 99.4%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.5
Simplified73.5%
Taylor expanded in t around 0
/-lowering-/.f6465.9
Simplified65.9%
Taylor expanded in b around 0
+-commutativeN/A
accelerator-lowering-fma.f6440.7
Simplified40.7%
Final simplification45.8%
(FPCore (x y z t a b) :precision binary64 (if (<= b 1.4e+118) (* x (/ 1.0 (* y a))) (/ x (* a (fma b y y)))))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (b <= 1.4e+118) {
tmp = x * (1.0 / (y * a));
} else {
tmp = x / (a * fma(b, y, y));
}
return tmp;
}
function code(x, y, z, t, a, b) tmp = 0.0 if (b <= 1.4e+118) tmp = Float64(x * Float64(1.0 / Float64(y * a))); else tmp = Float64(x / Float64(a * fma(b, y, y))); end return tmp end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[b, 1.4e+118], N[(x * N[(1.0 / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / N[(a * N[(b * y + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.4 \cdot 10^{+118}:\\
\;\;\;\;x \cdot \frac{1}{y \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{a \cdot \mathsf{fma}\left(b, y, y\right)}\\
\end{array}
\end{array}
if b < 1.39999999999999993e118Initial program 98.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6470.9
Simplified70.9%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6462.7
Simplified62.7%
Taylor expanded in t around 0
/-lowering-/.f6439.5
Simplified39.5%
frac-timesN/A
div-invN/A
*-lft-identityN/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6440.5
Applied egg-rr40.5%
if 1.39999999999999993e118 < b Initial program 100.0%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6482.0
Simplified82.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6486.6
Simplified86.6%
Taylor expanded in b around 0
distribute-lft-outN/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f6447.1
Simplified47.1%
Final simplification41.6%
(FPCore (x y z t a b) :precision binary64 (if (<= t 3.2e+48) (* x (/ 1.0 (* y a))) (/ x y)))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (t <= 3.2e+48) {
tmp = x * (1.0 / (y * a));
} else {
tmp = x / y;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: tmp
if (t <= 3.2d+48) then
tmp = x * (1.0d0 / (y * a))
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (t <= 3.2e+48) {
tmp = x * (1.0 / (y * a));
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z, t, a, b): tmp = 0 if t <= 3.2e+48: tmp = x * (1.0 / (y * a)) else: tmp = x / y return tmp
function code(x, y, z, t, a, b) tmp = 0.0 if (t <= 3.2e+48) tmp = Float64(x * Float64(1.0 / Float64(y * a))); else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z, t, a, b) tmp = 0.0; if (t <= 3.2e+48) tmp = x * (1.0 / (y * a)); else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[t, 3.2e+48], N[(x * N[(1.0 / N[(y * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / y), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq 3.2 \cdot 10^{+48}:\\
\;\;\;\;x \cdot \frac{1}{y \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if t < 3.2000000000000001e48Initial program 98.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.3
Simplified73.3%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6456.0
Simplified56.0%
Taylor expanded in t around 0
/-lowering-/.f6438.1
Simplified38.1%
frac-timesN/A
div-invN/A
*-lft-identityN/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6441.0
Applied egg-rr41.0%
if 3.2000000000000001e48 < t Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6461.7
Simplified61.7%
Taylor expanded in b around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6442.7
Simplified42.7%
Taylor expanded in y around 0
/-lowering-/.f6422.3
Simplified22.3%
Final simplification37.3%
(FPCore (x y z t a b) :precision binary64 (if (<= t 2.9e+47) (/ x (* y a)) (/ x y)))
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (t <= 2.9e+47) {
tmp = x / (y * a);
} else {
tmp = x / y;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: tmp
if (t <= 2.9d+47) then
tmp = x / (y * a)
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (t <= 2.9e+47) {
tmp = x / (y * a);
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z, t, a, b): tmp = 0 if t <= 2.9e+47: tmp = x / (y * a) else: tmp = x / y return tmp
function code(x, y, z, t, a, b) tmp = 0.0 if (t <= 2.9e+47) tmp = Float64(x / Float64(y * a)); else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z, t, a, b) tmp = 0.0; if (t <= 2.9e+47) tmp = x / (y * a); else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := If[LessEqual[t, 2.9e+47], N[(x / N[(y * a), $MachinePrecision]), $MachinePrecision], N[(x / y), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq 2.9 \cdot 10^{+47}:\\
\;\;\;\;\frac{x}{y \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if t < 2.8999999999999998e47Initial program 98.7%
Taylor expanded in y around 0
*-commutativeN/A
exp-diffN/A
associate-*l/N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
exp-prodN/A
pow-lowering-pow.f64N/A
rem-exp-logN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f6473.3
Simplified73.3%
Taylor expanded in b around 0
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
exp-to-powN/A
pow-lowering-pow.f64N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
/-lowering-/.f6456.0
Simplified56.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
*-lowering-*.f6440.9
Simplified40.9%
if 2.8999999999999998e47 < t Initial program 100.0%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6461.7
Simplified61.7%
Taylor expanded in b around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6442.7
Simplified42.7%
Taylor expanded in y around 0
/-lowering-/.f6422.3
Simplified22.3%
Final simplification37.2%
(FPCore (x y z t a b) :precision binary64 (/ x y))
double code(double x, double y, double z, double t, double a, double b) {
return x / y;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
code = x / y
end function
public static double code(double x, double y, double z, double t, double a, double b) {
return x / y;
}
def code(x, y, z, t, a, b): return x / y
function code(x, y, z, t, a, b) return Float64(x / y) end
function tmp = code(x, y, z, t, a, b) tmp = x / y; end
code[x_, y_, z_, t_, a_, b_] := N[(x / y), $MachinePrecision]
\begin{array}{l}
\\
\frac{x}{y}
\end{array}
Initial program 98.9%
Taylor expanded in y around inf
*-lowering-*.f64N/A
log-lowering-log.f6471.8
Simplified71.8%
Taylor expanded in b around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6444.9
Simplified44.9%
Taylor expanded in y around 0
/-lowering-/.f6417.6
Simplified17.6%
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (pow a (- t 1.0)))
(t_2 (/ (* x (/ t_1 y)) (- (+ b 1.0) (* y (log z))))))
(if (< t -0.8845848504127471)
t_2
(if (< t 852031.2288374073)
(/ (* (/ x y) t_1) (exp (- b (* (log z) y))))
t_2))))
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = pow(a, (t - 1.0));
double t_2 = (x * (t_1 / y)) / ((b + 1.0) - (y * log(z)));
double tmp;
if (t < -0.8845848504127471) {
tmp = t_2;
} else if (t < 852031.2288374073) {
tmp = ((x / y) * t_1) / exp((b - (log(z) * y)));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = a ** (t - 1.0d0)
t_2 = (x * (t_1 / y)) / ((b + 1.0d0) - (y * log(z)))
if (t < (-0.8845848504127471d0)) then
tmp = t_2
else if (t < 852031.2288374073d0) then
tmp = ((x / y) * t_1) / exp((b - (log(z) * y)))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = Math.pow(a, (t - 1.0));
double t_2 = (x * (t_1 / y)) / ((b + 1.0) - (y * Math.log(z)));
double tmp;
if (t < -0.8845848504127471) {
tmp = t_2;
} else if (t < 852031.2288374073) {
tmp = ((x / y) * t_1) / Math.exp((b - (Math.log(z) * y)));
} else {
tmp = t_2;
}
return tmp;
}
def code(x, y, z, t, a, b): t_1 = math.pow(a, (t - 1.0)) t_2 = (x * (t_1 / y)) / ((b + 1.0) - (y * math.log(z))) tmp = 0 if t < -0.8845848504127471: tmp = t_2 elif t < 852031.2288374073: tmp = ((x / y) * t_1) / math.exp((b - (math.log(z) * y))) else: tmp = t_2 return tmp
function code(x, y, z, t, a, b) t_1 = a ^ Float64(t - 1.0) t_2 = Float64(Float64(x * Float64(t_1 / y)) / Float64(Float64(b + 1.0) - Float64(y * log(z)))) tmp = 0.0 if (t < -0.8845848504127471) tmp = t_2; elseif (t < 852031.2288374073) tmp = Float64(Float64(Float64(x / y) * t_1) / exp(Float64(b - Float64(log(z) * y)))); else tmp = t_2; end return tmp end
function tmp_2 = code(x, y, z, t, a, b) t_1 = a ^ (t - 1.0); t_2 = (x * (t_1 / y)) / ((b + 1.0) - (y * log(z))); tmp = 0.0; if (t < -0.8845848504127471) tmp = t_2; elseif (t < 852031.2288374073) tmp = ((x / y) * t_1) / exp((b - (log(z) * y))); else tmp = t_2; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_] := Block[{t$95$1 = N[Power[a, N[(t - 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[(x * N[(t$95$1 / y), $MachinePrecision]), $MachinePrecision] / N[(N[(b + 1.0), $MachinePrecision] - N[(y * N[Log[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Less[t, -0.8845848504127471], t$95$2, If[Less[t, 852031.2288374073], N[(N[(N[(x / y), $MachinePrecision] * t$95$1), $MachinePrecision] / N[Exp[N[(b - N[(N[Log[z], $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$2]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := {a}^{\left(t - 1\right)}\\
t_2 := \frac{x \cdot \frac{t\_1}{y}}{\left(b + 1\right) - y \cdot \log z}\\
\mathbf{if}\;t < -0.8845848504127471:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t < 852031.2288374073:\\
\;\;\;\;\frac{\frac{x}{y} \cdot t\_1}{e^{b - \log z \cdot y}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
herbie shell --seed 2024199
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:alt
(! :herbie-platform default (if (< t -8845848504127471/10000000000000000) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 8520312288374073/10000000000) (/ (* (/ x y) (pow a (- t 1))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))