
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (sqrt (+ (* x.re x.re) (* x.im x.im))))))
(*
(exp (- (* t_0 y.re) (* (atan2 x.im x.re) y.im)))
(sin (+ (* t_0 y.im) (* (atan2 x.im x.re) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
return exp(((t_0 * y_46_re) - (atan2(x_46_im, x_46_re) * y_46_im))) * sin(((t_0 * y_46_im) + (atan2(x_46_im, x_46_re) * y_46_re)));
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
t_0 = log(sqrt(((x_46re * x_46re) + (x_46im * x_46im))))
code = exp(((t_0 * y_46re) - (atan2(x_46im, x_46re) * y_46im))) * sin(((t_0 * y_46im) + (atan2(x_46im, x_46re) * y_46re)))
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
return Math.exp(((t_0 * y_46_re) - (Math.atan2(x_46_im, x_46_re) * y_46_im))) * Math.sin(((t_0 * y_46_im) + (Math.atan2(x_46_im, x_46_re) * y_46_re)));
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))) return math.exp(((t_0 * y_46_re) - (math.atan2(x_46_im, x_46_re) * y_46_im))) * math.sin(((t_0 * y_46_im) + (math.atan2(x_46_im, x_46_re) * y_46_re)))
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)))) return Float64(exp(Float64(Float64(t_0 * y_46_re) - Float64(atan(x_46_im, x_46_re) * y_46_im))) * sin(Float64(Float64(t_0 * y_46_im) + Float64(atan(x_46_im, x_46_re) * y_46_re)))) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))); tmp = exp(((t_0 * y_46_re) - (atan2(x_46_im, x_46_re) * y_46_im))) * sin(((t_0 * y_46_im) + (atan2(x_46_im, x_46_re) * y_46_re))); end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]}, N[(N[Exp[N[(N[(t$95$0 * y$46$re), $MachinePrecision] - N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(N[(t$95$0 * y$46$im), $MachinePrecision] + N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right)\\
e^{t\_0 \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(t\_0 \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 30 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (sqrt (+ (* x.re x.re) (* x.im x.im))))))
(*
(exp (- (* t_0 y.re) (* (atan2 x.im x.re) y.im)))
(sin (+ (* t_0 y.im) (* (atan2 x.im x.re) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
return exp(((t_0 * y_46_re) - (atan2(x_46_im, x_46_re) * y_46_im))) * sin(((t_0 * y_46_im) + (atan2(x_46_im, x_46_re) * y_46_re)));
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
t_0 = log(sqrt(((x_46re * x_46re) + (x_46im * x_46im))))
code = exp(((t_0 * y_46re) - (atan2(x_46im, x_46re) * y_46im))) * sin(((t_0 * y_46im) + (atan2(x_46im, x_46re) * y_46re)))
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
return Math.exp(((t_0 * y_46_re) - (Math.atan2(x_46_im, x_46_re) * y_46_im))) * Math.sin(((t_0 * y_46_im) + (Math.atan2(x_46_im, x_46_re) * y_46_re)));
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))) return math.exp(((t_0 * y_46_re) - (math.atan2(x_46_im, x_46_re) * y_46_im))) * math.sin(((t_0 * y_46_im) + (math.atan2(x_46_im, x_46_re) * y_46_re)))
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)))) return Float64(exp(Float64(Float64(t_0 * y_46_re) - Float64(atan(x_46_im, x_46_re) * y_46_im))) * sin(Float64(Float64(t_0 * y_46_im) + Float64(atan(x_46_im, x_46_re) * y_46_re)))) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))); tmp = exp(((t_0 * y_46_re) - (atan2(x_46_im, x_46_re) * y_46_im))) * sin(((t_0 * y_46_im) + (atan2(x_46_im, x_46_re) * y_46_re))); end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]}, N[(N[Exp[N[(N[(t$95$0 * y$46$re), $MachinePrecision] - N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(N[(t$95$0 * y$46$im), $MachinePrecision] + N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right)\\
e^{t\_0 \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(t\_0 \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)
\end{array}
\end{array}
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (log (hypot x.im x.re)))
(t_3 (* y.im t_2))
(t_4 (sin t_3))
(t_5 (cos t_3)))
(if (or (<= y.re -2600000000.0) (not (<= y.re 3.8e-25)))
(*
(exp (- (* y.re (log (sqrt (+ (* x.re x.re) (* x.im x.im))))) t_0))
(+ (sin t_1) (* y.im (* t_2 (cos t_1)))))
(/
(+
t_4
(*
y.re
(+
(* (atan2 x.im x.re) t_5)
(*
y.re
(+
(* -0.5 (* t_4 (pow (atan2 x.im x.re) 2.0)))
(*
(* y.re -0.16666666666666666)
(* t_5 (pow (atan2 x.im x.re) 3.0))))))))
(/ (exp t_0) (pow (hypot x.re x.im) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = log(hypot(x_46_im, x_46_re));
double t_3 = y_46_im * t_2;
double t_4 = sin(t_3);
double t_5 = cos(t_3);
double tmp;
if ((y_46_re <= -2600000000.0) || !(y_46_re <= 3.8e-25)) {
tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (t_2 * cos(t_1))));
} else {
tmp = (t_4 + (y_46_re * ((atan2(x_46_im, x_46_re) * t_5) + (y_46_re * ((-0.5 * (t_4 * pow(atan2(x_46_im, x_46_re), 2.0))) + ((y_46_re * -0.16666666666666666) * (t_5 * pow(atan2(x_46_im, x_46_re), 3.0)))))))) / (exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.log(Math.hypot(x_46_im, x_46_re));
double t_3 = y_46_im * t_2;
double t_4 = Math.sin(t_3);
double t_5 = Math.cos(t_3);
double tmp;
if ((y_46_re <= -2600000000.0) || !(y_46_re <= 3.8e-25)) {
tmp = Math.exp(((y_46_re * Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (Math.sin(t_1) + (y_46_im * (t_2 * Math.cos(t_1))));
} else {
tmp = (t_4 + (y_46_re * ((Math.atan2(x_46_im, x_46_re) * t_5) + (y_46_re * ((-0.5 * (t_4 * Math.pow(Math.atan2(x_46_im, x_46_re), 2.0))) + ((y_46_re * -0.16666666666666666) * (t_5 * Math.pow(Math.atan2(x_46_im, x_46_re), 3.0)))))))) / (Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.log(math.hypot(x_46_im, x_46_re)) t_3 = y_46_im * t_2 t_4 = math.sin(t_3) t_5 = math.cos(t_3) tmp = 0 if (y_46_re <= -2600000000.0) or not (y_46_re <= 3.8e-25): tmp = math.exp(((y_46_re * math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (math.sin(t_1) + (y_46_im * (t_2 * math.cos(t_1)))) else: tmp = (t_4 + (y_46_re * ((math.atan2(x_46_im, x_46_re) * t_5) + (y_46_re * ((-0.5 * (t_4 * math.pow(math.atan2(x_46_im, x_46_re), 2.0))) + ((y_46_re * -0.16666666666666666) * (t_5 * math.pow(math.atan2(x_46_im, x_46_re), 3.0)))))))) / (math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = log(hypot(x_46_im, x_46_re)) t_3 = Float64(y_46_im * t_2) t_4 = sin(t_3) t_5 = cos(t_3) tmp = 0.0 if ((y_46_re <= -2600000000.0) || !(y_46_re <= 3.8e-25)) tmp = Float64(exp(Float64(Float64(y_46_re * log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))))) - t_0)) * Float64(sin(t_1) + Float64(y_46_im * Float64(t_2 * cos(t_1))))); else tmp = Float64(Float64(t_4 + Float64(y_46_re * Float64(Float64(atan(x_46_im, x_46_re) * t_5) + Float64(y_46_re * Float64(Float64(-0.5 * Float64(t_4 * (atan(x_46_im, x_46_re) ^ 2.0))) + Float64(Float64(y_46_re * -0.16666666666666666) * Float64(t_5 * (atan(x_46_im, x_46_re) ^ 3.0)))))))) / Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = log(hypot(x_46_im, x_46_re)); t_3 = y_46_im * t_2; t_4 = sin(t_3); t_5 = cos(t_3); tmp = 0.0; if ((y_46_re <= -2600000000.0) || ~((y_46_re <= 3.8e-25))) tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (t_2 * cos(t_1)))); else tmp = (t_4 + (y_46_re * ((atan2(x_46_im, x_46_re) * t_5) + (y_46_re * ((-0.5 * (t_4 * (atan2(x_46_im, x_46_re) ^ 2.0))) + ((y_46_re * -0.16666666666666666) * (t_5 * (atan2(x_46_im, x_46_re) ^ 3.0)))))))) / (exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(y$46$im * t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[Cos[t$95$3], $MachinePrecision]}, If[Or[LessEqual[y$46$re, -2600000000.0], N[Not[LessEqual[y$46$re, 3.8e-25]], $MachinePrecision]], N[(N[Exp[N[(N[(y$46$re * N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[(N[Sin[t$95$1], $MachinePrecision] + N[(y$46$im * N[(t$95$2 * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(t$95$4 + N[(y$46$re * N[(N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * t$95$5), $MachinePrecision] + N[(y$46$re * N[(N[(-0.5 * N[(t$95$4 * N[Power[N[ArcTan[x$46$im / x$46$re], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(y$46$re * -0.16666666666666666), $MachinePrecision] * N[(t$95$5 * N[Power[N[ArcTan[x$46$im / x$46$re], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\\
t_3 := y.im \cdot t\_2\\
t_4 := \sin t\_3\\
t_5 := \cos t\_3\\
\mathbf{if}\;y.re \leq -2600000000 \lor \neg \left(y.re \leq 3.8 \cdot 10^{-25}\right):\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - t\_0} \cdot \left(\sin t\_1 + y.im \cdot \left(t\_2 \cdot \cos t\_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t\_4 + y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot t\_5 + y.re \cdot \left(-0.5 \cdot \left(t\_4 \cdot {\tan^{-1}_* \frac{x.im}{x.re}}^{2}\right) + \left(y.re \cdot -0.16666666666666666\right) \cdot \left(t\_5 \cdot {\tan^{-1}_* \frac{x.im}{x.re}}^{3}\right)\right)\right)}{\frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\end{array}
\end{array}
if y.re < -2.6e9 or 3.7999999999999998e-25 < y.re Initial program 35.9%
Taylor expanded in y.im around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6478.2%
Simplified78.2%
if -2.6e9 < y.re < 3.7999999999999998e-25Initial program 41.2%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified84.4%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
Simplified84.4%
Final simplification81.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (log (sqrt (+ (* x.re x.re) (* x.im x.im)))))
(t_3 (* (exp (- (* y.re t_2) t_0)) (sin (+ t_1 (* t_2 y.im))))))
(if (<= t_3 INFINITY)
t_3
(/
(sin (+ t_1 (* y.im (log (hypot x.re x.im)))))
(/ (exp t_0) (pow (hypot x.re x.im) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
double t_3 = exp(((y_46_re * t_2) - t_0)) * sin((t_1 + (t_2 * y_46_im)));
double tmp;
if (t_3 <= ((double) INFINITY)) {
tmp = t_3;
} else {
tmp = sin((t_1 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))));
double t_3 = Math.exp(((y_46_re * t_2) - t_0)) * Math.sin((t_1 + (t_2 * y_46_im)));
double tmp;
if (t_3 <= Double.POSITIVE_INFINITY) {
tmp = t_3;
} else {
tmp = Math.sin((t_1 + (y_46_im * Math.log(Math.hypot(x_46_re, x_46_im))))) / (Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))) t_3 = math.exp(((y_46_re * t_2) - t_0)) * math.sin((t_1 + (t_2 * y_46_im))) tmp = 0 if t_3 <= math.inf: tmp = t_3 else: tmp = math.sin((t_1 + (y_46_im * math.log(math.hypot(x_46_re, x_46_im))))) / (math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)))) t_3 = Float64(exp(Float64(Float64(y_46_re * t_2) - t_0)) * sin(Float64(t_1 + Float64(t_2 * y_46_im)))) tmp = 0.0 if (t_3 <= Inf) tmp = t_3; else tmp = Float64(sin(Float64(t_1 + Float64(y_46_im * log(hypot(x_46_re, x_46_im))))) / Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im)))); t_3 = exp(((y_46_re * t_2) - t_0)) * sin((t_1 + (t_2 * y_46_im))); tmp = 0.0; if (t_3 <= Inf) tmp = t_3; else tmp = sin((t_1 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(N[Exp[N[(N[(y$46$re * t$95$2), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(t$95$1 + N[(t$95$2 * y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$3, Infinity], t$95$3, N[(N[Sin[N[(t$95$1 + N[(y$46$im * N[Log[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right)\\
t_3 := e^{y.re \cdot t\_2 - t\_0} \cdot \sin \left(t\_1 + t\_2 \cdot y.im\right)\\
\mathbf{if}\;t\_3 \leq \infty:\\
\;\;\;\;t\_3\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin \left(t\_1 + y.im \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)}{\frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\end{array}
\end{array}
if (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re)))) < +inf.0Initial program 80.3%
if +inf.0 < (*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re)))) Initial program 0.0%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified75.1%
Final simplification77.6%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (log (hypot x.im x.re)))
(t_3 (* y.im t_2)))
(if (or (<= y.re -5.5e-5) (not (<= y.re 2.4e-22)))
(*
(exp (- (* y.re (log (sqrt (+ (* x.re x.re) (* x.im x.im))))) t_0))
(+ (sin t_1) (* y.im (* t_2 (cos t_1)))))
(/
(+ (sin t_3) (* y.re (* (atan2 x.im x.re) (cos t_3))))
(/ (exp t_0) (pow (hypot x.re x.im) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = log(hypot(x_46_im, x_46_re));
double t_3 = y_46_im * t_2;
double tmp;
if ((y_46_re <= -5.5e-5) || !(y_46_re <= 2.4e-22)) {
tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (t_2 * cos(t_1))));
} else {
tmp = (sin(t_3) + (y_46_re * (atan2(x_46_im, x_46_re) * cos(t_3)))) / (exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.log(Math.hypot(x_46_im, x_46_re));
double t_3 = y_46_im * t_2;
double tmp;
if ((y_46_re <= -5.5e-5) || !(y_46_re <= 2.4e-22)) {
tmp = Math.exp(((y_46_re * Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (Math.sin(t_1) + (y_46_im * (t_2 * Math.cos(t_1))));
} else {
tmp = (Math.sin(t_3) + (y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.cos(t_3)))) / (Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.log(math.hypot(x_46_im, x_46_re)) t_3 = y_46_im * t_2 tmp = 0 if (y_46_re <= -5.5e-5) or not (y_46_re <= 2.4e-22): tmp = math.exp(((y_46_re * math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (math.sin(t_1) + (y_46_im * (t_2 * math.cos(t_1)))) else: tmp = (math.sin(t_3) + (y_46_re * (math.atan2(x_46_im, x_46_re) * math.cos(t_3)))) / (math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = log(hypot(x_46_im, x_46_re)) t_3 = Float64(y_46_im * t_2) tmp = 0.0 if ((y_46_re <= -5.5e-5) || !(y_46_re <= 2.4e-22)) tmp = Float64(exp(Float64(Float64(y_46_re * log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))))) - t_0)) * Float64(sin(t_1) + Float64(y_46_im * Float64(t_2 * cos(t_1))))); else tmp = Float64(Float64(sin(t_3) + Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * cos(t_3)))) / Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = log(hypot(x_46_im, x_46_re)); t_3 = y_46_im * t_2; tmp = 0.0; if ((y_46_re <= -5.5e-5) || ~((y_46_re <= 2.4e-22))) tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (t_2 * cos(t_1)))); else tmp = (sin(t_3) + (y_46_re * (atan2(x_46_im, x_46_re) * cos(t_3)))) / (exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(y$46$im * t$95$2), $MachinePrecision]}, If[Or[LessEqual[y$46$re, -5.5e-5], N[Not[LessEqual[y$46$re, 2.4e-22]], $MachinePrecision]], N[(N[Exp[N[(N[(y$46$re * N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[(N[Sin[t$95$1], $MachinePrecision] + N[(y$46$im * N[(t$95$2 * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[Sin[t$95$3], $MachinePrecision] + N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Cos[t$95$3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\\
t_3 := y.im \cdot t\_2\\
\mathbf{if}\;y.re \leq -5.5 \cdot 10^{-5} \lor \neg \left(y.re \leq 2.4 \cdot 10^{-22}\right):\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - t\_0} \cdot \left(\sin t\_1 + y.im \cdot \left(t\_2 \cdot \cos t\_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin t\_3 + y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \cos t\_3\right)}{\frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\end{array}
\end{array}
if y.re < -5.5000000000000002e-5 or 2.40000000000000002e-22 < y.re Initial program 37.1%
Taylor expanded in y.im around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6478.8%
Simplified78.8%
if -5.5000000000000002e-5 < y.re < 2.40000000000000002e-22Initial program 40.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified83.9%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified83.9%
Final simplification81.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im)) (t_1 (* y.re (atan2 x.im x.re))))
(if (or (<= y.re -1e-32) (not (<= y.re 2.1e-22)))
(*
(exp (- (* y.re (log (sqrt (+ (* x.re x.re) (* x.im x.im))))) t_0))
(+ (sin t_1) (* y.im (* (log (hypot x.im x.re)) (cos t_1)))))
(/
(sin (+ t_1 (* y.im (log (hypot x.re x.im)))))
(/ (exp t_0) (pow (hypot x.re x.im) y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double tmp;
if ((y_46_re <= -1e-32) || !(y_46_re <= 2.1e-22)) {
tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (log(hypot(x_46_im, x_46_re)) * cos(t_1))));
} else {
tmp = sin((t_1 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double tmp;
if ((y_46_re <= -1e-32) || !(y_46_re <= 2.1e-22)) {
tmp = Math.exp(((y_46_re * Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (Math.sin(t_1) + (y_46_im * (Math.log(Math.hypot(x_46_im, x_46_re)) * Math.cos(t_1))));
} else {
tmp = Math.sin((t_1 + (y_46_im * Math.log(Math.hypot(x_46_re, x_46_im))))) / (Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) tmp = 0 if (y_46_re <= -1e-32) or not (y_46_re <= 2.1e-22): tmp = math.exp(((y_46_re * math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (math.sin(t_1) + (y_46_im * (math.log(math.hypot(x_46_im, x_46_re)) * math.cos(t_1)))) else: tmp = math.sin((t_1 + (y_46_im * math.log(math.hypot(x_46_re, x_46_im))))) / (math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) tmp = 0.0 if ((y_46_re <= -1e-32) || !(y_46_re <= 2.1e-22)) tmp = Float64(exp(Float64(Float64(y_46_re * log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))))) - t_0)) * Float64(sin(t_1) + Float64(y_46_im * Float64(log(hypot(x_46_im, x_46_re)) * cos(t_1))))); else tmp = Float64(sin(Float64(t_1 + Float64(y_46_im * log(hypot(x_46_re, x_46_im))))) / Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); tmp = 0.0; if ((y_46_re <= -1e-32) || ~((y_46_re <= 2.1e-22))) tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_0)) * (sin(t_1) + (y_46_im * (log(hypot(x_46_im, x_46_re)) * cos(t_1)))); else tmp = sin((t_1 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[y$46$re, -1e-32], N[Not[LessEqual[y$46$re, 2.1e-22]], $MachinePrecision]], N[(N[Exp[N[(N[(y$46$re * N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[(N[Sin[t$95$1], $MachinePrecision] + N[(y$46$im * N[(N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision] * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Sin[N[(t$95$1 + N[(y$46$im * N[Log[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{if}\;y.re \leq -1 \cdot 10^{-32} \lor \neg \left(y.re \leq 2.1 \cdot 10^{-22}\right):\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - t\_0} \cdot \left(\sin t\_1 + y.im \cdot \left(\log \left(\mathsf{hypot}\left(x.im, x.re\right)\right) \cdot \cos t\_1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin \left(t\_1 + y.im \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)}{\frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\end{array}
\end{array}
if y.re < -1.00000000000000006e-32 or 2.10000000000000008e-22 < y.re Initial program 37.7%
Taylor expanded in y.im around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6478.6%
Simplified78.6%
if -1.00000000000000006e-32 < y.re < 2.10000000000000008e-22Initial program 39.5%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified84.4%
Final simplification81.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* y.re (atan2 x.im x.re))) (t_1 (* (atan2 x.im x.re) y.im)))
(if (<= y.re -55000000000.0)
(* t_0 (pow (hypot x.im x.re) y.re))
(if (<= y.re 2.4e-22)
(/
(sin (+ t_0 (* y.im (log (hypot x.re x.im)))))
(/ (exp t_1) (pow (hypot x.re x.im) y.re)))
(*
(exp (- (* y.re (log (sqrt (+ (* x.re x.re) (* x.im x.im))))) t_1))
(sin t_0))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * atan2(x_46_im, x_46_re);
double t_1 = atan2(x_46_im, x_46_re) * y_46_im;
double tmp;
if (y_46_re <= -55000000000.0) {
tmp = t_0 * pow(hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 2.4e-22) {
tmp = sin((t_0 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_1) / pow(hypot(x_46_re, x_46_im), y_46_re));
} else {
tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * sin(t_0);
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_1 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double tmp;
if (y_46_re <= -55000000000.0) {
tmp = t_0 * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 2.4e-22) {
tmp = Math.sin((t_0 + (y_46_im * Math.log(Math.hypot(x_46_re, x_46_im))))) / (Math.exp(t_1) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
} else {
tmp = Math.exp(((y_46_re * Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * Math.sin(t_0);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * math.atan2(x_46_im, x_46_re) t_1 = math.atan2(x_46_im, x_46_re) * y_46_im tmp = 0 if y_46_re <= -55000000000.0: tmp = t_0 * math.pow(math.hypot(x_46_im, x_46_re), y_46_re) elif y_46_re <= 2.4e-22: tmp = math.sin((t_0 + (y_46_im * math.log(math.hypot(x_46_re, x_46_im))))) / (math.exp(t_1) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) else: tmp = math.exp(((y_46_re * math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * math.sin(t_0) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_1 = Float64(atan(x_46_im, x_46_re) * y_46_im) tmp = 0.0 if (y_46_re <= -55000000000.0) tmp = Float64(t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re)); elseif (y_46_re <= 2.4e-22) tmp = Float64(sin(Float64(t_0 + Float64(y_46_im * log(hypot(x_46_re, x_46_im))))) / Float64(exp(t_1) / (hypot(x_46_re, x_46_im) ^ y_46_re))); else tmp = Float64(exp(Float64(Float64(y_46_re * log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))))) - t_1)) * sin(t_0)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * atan2(x_46_im, x_46_re); t_1 = atan2(x_46_im, x_46_re) * y_46_im; tmp = 0.0; if (y_46_re <= -55000000000.0) tmp = t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re); elseif (y_46_re <= 2.4e-22) tmp = sin((t_0 + (y_46_im * log(hypot(x_46_re, x_46_im))))) / (exp(t_1) / (hypot(x_46_re, x_46_im) ^ y_46_re)); else tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * sin(t_0); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, If[LessEqual[y$46$re, -55000000000.0], N[(t$95$0 * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.4e-22], N[(N[Sin[N[(t$95$0 + N[(y$46$im * N[Log[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(N[Exp[t$95$1], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(N[(y$46$re * N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$1), $MachinePrecision]], $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_1 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
\mathbf{if}\;y.re \leq -55000000000:\\
\;\;\;\;t\_0 \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-22}:\\
\;\;\;\;\frac{\sin \left(t\_0 + y.im \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)}{\frac{e^{t\_1}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - t\_1} \cdot \sin t\_0\\
\end{array}
\end{array}
if y.re < -5.5e10Initial program 34.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified67.1%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified71.4%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.2%
Simplified80.2%
if -5.5e10 < y.re < 2.40000000000000002e-22Initial program 41.2%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified84.4%
if 2.40000000000000002e-22 < y.re Initial program 37.9%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6465.6%
Simplified65.6%
Final simplification79.0%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (log (/ -1.0 x.re)))
(t_3 (/ (exp t_0) (pow (hypot x.re x.im) y.re))))
(if (<= x.re -1.6e-208)
(* (exp (- (* t_2 (- 0.0 y.re)) t_0)) (sin (- t_1 (* y.im t_2))))
(if (<= x.re 3.6e-231)
(/ (sin t_1) t_3)
(if (<= x.re 1.5e-15)
(/ (sin (* y.im (log (hypot x.im x.re)))) t_3)
(*
(exp (- (* (- 0.0 y.re) (log (/ 1.0 x.re))) t_0))
(sin (+ t_1 (* y.im (log x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = log((-1.0 / x_46_re));
double t_3 = exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re);
double tmp;
if (x_46_re <= -1.6e-208) {
tmp = exp(((t_2 * (0.0 - y_46_re)) - t_0)) * sin((t_1 - (y_46_im * t_2)));
} else if (x_46_re <= 3.6e-231) {
tmp = sin(t_1) / t_3;
} else if (x_46_re <= 1.5e-15) {
tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) / t_3;
} else {
tmp = exp((((0.0 - y_46_re) * log((1.0 / x_46_re))) - t_0)) * sin((t_1 + (y_46_im * log(x_46_re))));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.log((-1.0 / x_46_re));
double t_3 = Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re);
double tmp;
if (x_46_re <= -1.6e-208) {
tmp = Math.exp(((t_2 * (0.0 - y_46_re)) - t_0)) * Math.sin((t_1 - (y_46_im * t_2)));
} else if (x_46_re <= 3.6e-231) {
tmp = Math.sin(t_1) / t_3;
} else if (x_46_re <= 1.5e-15) {
tmp = Math.sin((y_46_im * Math.log(Math.hypot(x_46_im, x_46_re)))) / t_3;
} else {
tmp = Math.exp((((0.0 - y_46_re) * Math.log((1.0 / x_46_re))) - t_0)) * Math.sin((t_1 + (y_46_im * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.log((-1.0 / x_46_re)) t_3 = math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re) tmp = 0 if x_46_re <= -1.6e-208: tmp = math.exp(((t_2 * (0.0 - y_46_re)) - t_0)) * math.sin((t_1 - (y_46_im * t_2))) elif x_46_re <= 3.6e-231: tmp = math.sin(t_1) / t_3 elif x_46_re <= 1.5e-15: tmp = math.sin((y_46_im * math.log(math.hypot(x_46_im, x_46_re)))) / t_3 else: tmp = math.exp((((0.0 - y_46_re) * math.log((1.0 / x_46_re))) - t_0)) * math.sin((t_1 + (y_46_im * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = log(Float64(-1.0 / x_46_re)) t_3 = Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)) tmp = 0.0 if (x_46_re <= -1.6e-208) tmp = Float64(exp(Float64(Float64(t_2 * Float64(0.0 - y_46_re)) - t_0)) * sin(Float64(t_1 - Float64(y_46_im * t_2)))); elseif (x_46_re <= 3.6e-231) tmp = Float64(sin(t_1) / t_3); elseif (x_46_re <= 1.5e-15) tmp = Float64(sin(Float64(y_46_im * log(hypot(x_46_im, x_46_re)))) / t_3); else tmp = Float64(exp(Float64(Float64(Float64(0.0 - y_46_re) * log(Float64(1.0 / x_46_re))) - t_0)) * sin(Float64(t_1 + Float64(y_46_im * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = log((-1.0 / x_46_re)); t_3 = exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re); tmp = 0.0; if (x_46_re <= -1.6e-208) tmp = exp(((t_2 * (0.0 - y_46_re)) - t_0)) * sin((t_1 - (y_46_im * t_2))); elseif (x_46_re <= 3.6e-231) tmp = sin(t_1) / t_3; elseif (x_46_re <= 1.5e-15) tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) / t_3; else tmp = exp((((0.0 - y_46_re) * log((1.0 / x_46_re))) - t_0)) * sin((t_1 + (y_46_im * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Log[N[(-1.0 / x$46$re), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x$46$re, -1.6e-208], N[(N[Exp[N[(N[(t$95$2 * N[(0.0 - y$46$re), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(t$95$1 - N[(y$46$im * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 3.6e-231], N[(N[Sin[t$95$1], $MachinePrecision] / t$95$3), $MachinePrecision], If[LessEqual[x$46$re, 1.5e-15], N[(N[Sin[N[(y$46$im * N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$3), $MachinePrecision], N[(N[Exp[N[(N[(N[(0.0 - y$46$re), $MachinePrecision] * N[Log[N[(1.0 / x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(t$95$1 + N[(y$46$im * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \log \left(\frac{-1}{x.re}\right)\\
t_3 := \frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}\\
\mathbf{if}\;x.re \leq -1.6 \cdot 10^{-208}:\\
\;\;\;\;e^{t\_2 \cdot \left(0 - y.re\right) - t\_0} \cdot \sin \left(t\_1 - y.im \cdot t\_2\right)\\
\mathbf{elif}\;x.re \leq 3.6 \cdot 10^{-231}:\\
\;\;\;\;\frac{\sin t\_1}{t\_3}\\
\mathbf{elif}\;x.re \leq 1.5 \cdot 10^{-15}:\\
\;\;\;\;\frac{\sin \left(y.im \cdot \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\right)}{t\_3}\\
\mathbf{else}:\\
\;\;\;\;e^{\left(0 - y.re\right) \cdot \log \left(\frac{1}{x.re}\right) - t\_0} \cdot \sin \left(t\_1 + y.im \cdot \log x.re\right)\\
\end{array}
\end{array}
if x.re < -1.6000000000000001e-208Initial program 40.2%
Taylor expanded in x.re around -inf
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
--lowering--.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
Simplified72.1%
if -1.6000000000000001e-208 < x.re < 3.59999999999999973e-231Initial program 40.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified79.3%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6471.2%
Simplified71.2%
if 3.59999999999999973e-231 < x.re < 1.5e-15Initial program 47.6%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified80.8%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6474.2%
Simplified74.2%
if 1.5e-15 < x.re Initial program 30.7%
Taylor expanded in x.re around inf
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
--lowering--.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
Simplified78.6%
Final simplification74.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (exp (* (atan2 x.im x.re) (- 0.0 y.im))))
(t_1 (* (atan2 x.im x.re) y.im))
(t_2 (* y.re (atan2 x.im x.re)))
(t_3 (sin t_2)))
(if (<= y.re -2.75e+70)
(* t_2 (pow (hypot x.im x.re) y.re))
(if (<= y.re -2.3e-225)
(/ t_3 (/ (exp t_1) (pow (hypot x.re x.im) y.re)))
(if (<= y.re 6.6e-94)
(* (sin (* y.im (log (hypot x.im x.re)))) t_0)
(if (<= y.re 2.4e-22)
(* y.re (* (atan2 x.im x.re) t_0))
(*
(exp (- (* y.re (log (sqrt (+ (* x.re x.re) (* x.im x.im))))) t_1))
t_3)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_1 = atan2(x_46_im, x_46_re) * y_46_im;
double t_2 = y_46_re * atan2(x_46_im, x_46_re);
double t_3 = sin(t_2);
double tmp;
if (y_46_re <= -2.75e+70) {
tmp = t_2 * pow(hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= -2.3e-225) {
tmp = t_3 / (exp(t_1) / pow(hypot(x_46_re, x_46_im), y_46_re));
} else if (y_46_re <= 6.6e-94) {
tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0;
} else if (y_46_re <= 2.4e-22) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * t_0);
} else {
tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * t_3;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_1 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_2 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_3 = Math.sin(t_2);
double tmp;
if (y_46_re <= -2.75e+70) {
tmp = t_2 * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= -2.3e-225) {
tmp = t_3 / (Math.exp(t_1) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
} else if (y_46_re <= 6.6e-94) {
tmp = Math.sin((y_46_im * Math.log(Math.hypot(x_46_im, x_46_re)))) * t_0;
} else if (y_46_re <= 2.4e-22) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * t_0);
} else {
tmp = Math.exp(((y_46_re * Math.log(Math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * t_3;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))) t_1 = math.atan2(x_46_im, x_46_re) * y_46_im t_2 = y_46_re * math.atan2(x_46_im, x_46_re) t_3 = math.sin(t_2) tmp = 0 if y_46_re <= -2.75e+70: tmp = t_2 * math.pow(math.hypot(x_46_im, x_46_re), y_46_re) elif y_46_re <= -2.3e-225: tmp = t_3 / (math.exp(t_1) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) elif y_46_re <= 6.6e-94: tmp = math.sin((y_46_im * math.log(math.hypot(x_46_im, x_46_re)))) * t_0 elif y_46_re <= 2.4e-22: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * t_0) else: tmp = math.exp(((y_46_re * math.log(math.sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * t_3 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))) t_1 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_2 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_3 = sin(t_2) tmp = 0.0 if (y_46_re <= -2.75e+70) tmp = Float64(t_2 * (hypot(x_46_im, x_46_re) ^ y_46_re)); elseif (y_46_re <= -2.3e-225) tmp = Float64(t_3 / Float64(exp(t_1) / (hypot(x_46_re, x_46_im) ^ y_46_re))); elseif (y_46_re <= 6.6e-94) tmp = Float64(sin(Float64(y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0); elseif (y_46_re <= 2.4e-22) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * t_0)); else tmp = Float64(exp(Float64(Float64(y_46_re * log(sqrt(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))))) - t_1)) * t_3); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))); t_1 = atan2(x_46_im, x_46_re) * y_46_im; t_2 = y_46_re * atan2(x_46_im, x_46_re); t_3 = sin(t_2); tmp = 0.0; if (y_46_re <= -2.75e+70) tmp = t_2 * (hypot(x_46_im, x_46_re) ^ y_46_re); elseif (y_46_re <= -2.3e-225) tmp = t_3 / (exp(t_1) / (hypot(x_46_re, x_46_im) ^ y_46_re)); elseif (y_46_re <= 6.6e-94) tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0; elseif (y_46_re <= 2.4e-22) tmp = y_46_re * (atan2(x_46_im, x_46_re) * t_0); else tmp = exp(((y_46_re * log(sqrt(((x_46_re * x_46_re) + (x_46_im * x_46_im))))) - t_1)) * t_3; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$2 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Sin[t$95$2], $MachinePrecision]}, If[LessEqual[y$46$re, -2.75e+70], N[(t$95$2 * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -2.3e-225], N[(t$95$3 / N[(N[Exp[t$95$1], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 6.6e-94], N[(N[Sin[N[(y$46$im * N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision], If[LessEqual[y$46$re, 2.4e-22], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(N[(y$46$re * N[Log[N[Sqrt[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$1), $MachinePrecision]], $MachinePrecision] * t$95$3), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\\
t_1 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_2 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_3 := \sin t\_2\\
\mathbf{if}\;y.re \leq -2.75 \cdot 10^{+70}:\\
\;\;\;\;t\_2 \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{elif}\;y.re \leq -2.3 \cdot 10^{-225}:\\
\;\;\;\;\frac{t\_3}{\frac{e^{t\_1}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\mathbf{elif}\;y.re \leq 6.6 \cdot 10^{-94}:\\
\;\;\;\;\sin \left(y.im \cdot \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\right) \cdot t\_0\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-22}:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - t\_1} \cdot t\_3\\
\end{array}
\end{array}
if y.re < -2.74999999999999993e70Initial program 37.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified65.5%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified72.4%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6481.2%
Simplified81.2%
if -2.74999999999999993e70 < y.re < -2.2999999999999999e-225Initial program 35.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified82.3%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6473.6%
Simplified73.6%
if -2.2999999999999999e-225 < y.re < 6.6000000000000003e-94Initial program 46.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.5%
Simplified80.5%
if 6.6000000000000003e-94 < y.re < 2.40000000000000002e-22Initial program 21.1%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6432.6%
Simplified32.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6464.1%
Simplified64.1%
if 2.40000000000000002e-22 < y.re Initial program 37.9%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6465.6%
Simplified65.6%
Final simplification74.7%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* (atan2 x.im x.re) y.im))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (log (/ -1.0 x.re))))
(if (<= x.re -4.8e-208)
(* (exp (- (* t_2 (- 0.0 y.re)) t_0)) (sin (- t_1 (* y.im t_2))))
(if (<= x.re 3.6e-125)
(/ (sin t_1) (/ (exp t_0) (pow (hypot x.re x.im) y.re)))
(if (<= x.re 1.85e-15)
(* y.im (* (log (hypot x.im x.re)) (pow (hypot x.im x.re) y.re)))
(*
(exp (- (* (- 0.0 y.re) (log (/ 1.0 x.re))) t_0))
(sin (+ t_1 (* y.im (log x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = log((-1.0 / x_46_re));
double tmp;
if (x_46_re <= -4.8e-208) {
tmp = exp(((t_2 * (0.0 - y_46_re)) - t_0)) * sin((t_1 - (y_46_im * t_2)));
} else if (x_46_re <= 3.6e-125) {
tmp = sin(t_1) / (exp(t_0) / pow(hypot(x_46_re, x_46_im), y_46_re));
} else if (x_46_re <= 1.85e-15) {
tmp = y_46_im * (log(hypot(x_46_im, x_46_re)) * pow(hypot(x_46_im, x_46_re), y_46_re));
} else {
tmp = exp((((0.0 - y_46_re) * log((1.0 / x_46_re))) - t_0)) * sin((t_1 + (y_46_im * log(x_46_re))));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.atan2(x_46_im, x_46_re) * y_46_im;
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.log((-1.0 / x_46_re));
double tmp;
if (x_46_re <= -4.8e-208) {
tmp = Math.exp(((t_2 * (0.0 - y_46_re)) - t_0)) * Math.sin((t_1 - (y_46_im * t_2)));
} else if (x_46_re <= 3.6e-125) {
tmp = Math.sin(t_1) / (Math.exp(t_0) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
} else if (x_46_re <= 1.85e-15) {
tmp = y_46_im * (Math.log(Math.hypot(x_46_im, x_46_re)) * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re));
} else {
tmp = Math.exp((((0.0 - y_46_re) * Math.log((1.0 / x_46_re))) - t_0)) * Math.sin((t_1 + (y_46_im * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.atan2(x_46_im, x_46_re) * y_46_im t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.log((-1.0 / x_46_re)) tmp = 0 if x_46_re <= -4.8e-208: tmp = math.exp(((t_2 * (0.0 - y_46_re)) - t_0)) * math.sin((t_1 - (y_46_im * t_2))) elif x_46_re <= 3.6e-125: tmp = math.sin(t_1) / (math.exp(t_0) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) elif x_46_re <= 1.85e-15: tmp = y_46_im * (math.log(math.hypot(x_46_im, x_46_re)) * math.pow(math.hypot(x_46_im, x_46_re), y_46_re)) else: tmp = math.exp((((0.0 - y_46_re) * math.log((1.0 / x_46_re))) - t_0)) * math.sin((t_1 + (y_46_im * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(atan(x_46_im, x_46_re) * y_46_im) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = log(Float64(-1.0 / x_46_re)) tmp = 0.0 if (x_46_re <= -4.8e-208) tmp = Float64(exp(Float64(Float64(t_2 * Float64(0.0 - y_46_re)) - t_0)) * sin(Float64(t_1 - Float64(y_46_im * t_2)))); elseif (x_46_re <= 3.6e-125) tmp = Float64(sin(t_1) / Float64(exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re))); elseif (x_46_re <= 1.85e-15) tmp = Float64(y_46_im * Float64(log(hypot(x_46_im, x_46_re)) * (hypot(x_46_im, x_46_re) ^ y_46_re))); else tmp = Float64(exp(Float64(Float64(Float64(0.0 - y_46_re) * log(Float64(1.0 / x_46_re))) - t_0)) * sin(Float64(t_1 + Float64(y_46_im * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = atan2(x_46_im, x_46_re) * y_46_im; t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = log((-1.0 / x_46_re)); tmp = 0.0; if (x_46_re <= -4.8e-208) tmp = exp(((t_2 * (0.0 - y_46_re)) - t_0)) * sin((t_1 - (y_46_im * t_2))); elseif (x_46_re <= 3.6e-125) tmp = sin(t_1) / (exp(t_0) / (hypot(x_46_re, x_46_im) ^ y_46_re)); elseif (x_46_re <= 1.85e-15) tmp = y_46_im * (log(hypot(x_46_im, x_46_re)) * (hypot(x_46_im, x_46_re) ^ y_46_re)); else tmp = exp((((0.0 - y_46_re) * log((1.0 / x_46_re))) - t_0)) * sin((t_1 + (y_46_im * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Log[N[(-1.0 / x$46$re), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x$46$re, -4.8e-208], N[(N[Exp[N[(N[(t$95$2 * N[(0.0 - y$46$re), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(t$95$1 - N[(y$46$im * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 3.6e-125], N[(N[Sin[t$95$1], $MachinePrecision] / N[(N[Exp[t$95$0], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 1.85e-15], N[(y$46$im * N[(N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision] * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Exp[N[(N[(N[(0.0 - y$46$re), $MachinePrecision] * N[Log[N[(1.0 / x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(t$95$1 + N[(y$46$im * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \log \left(\frac{-1}{x.re}\right)\\
\mathbf{if}\;x.re \leq -4.8 \cdot 10^{-208}:\\
\;\;\;\;e^{t\_2 \cdot \left(0 - y.re\right) - t\_0} \cdot \sin \left(t\_1 - y.im \cdot t\_2\right)\\
\mathbf{elif}\;x.re \leq 3.6 \cdot 10^{-125}:\\
\;\;\;\;\frac{\sin t\_1}{\frac{e^{t\_0}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
\mathbf{elif}\;x.re \leq 1.85 \cdot 10^{-15}:\\
\;\;\;\;y.im \cdot \left(\log \left(\mathsf{hypot}\left(x.im, x.re\right)\right) \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\right)\\
\mathbf{else}:\\
\;\;\;\;e^{\left(0 - y.re\right) \cdot \log \left(\frac{1}{x.re}\right) - t\_0} \cdot \sin \left(t\_1 + y.im \cdot \log x.re\right)\\
\end{array}
\end{array}
if x.re < -4.7999999999999998e-208Initial program 40.2%
Taylor expanded in x.re around -inf
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
--lowering--.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
Simplified72.1%
if -4.7999999999999998e-208 < x.re < 3.6000000000000002e-125Initial program 41.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified77.2%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6465.4%
Simplified65.4%
if 3.6000000000000002e-125 < x.re < 1.85000000000000008e-15Initial program 52.5%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified89.4%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6489.4%
Simplified89.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6482.9%
Simplified82.9%
if 1.85000000000000008e-15 < x.re Initial program 30.7%
Taylor expanded in x.re around inf
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
--lowering--.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
Simplified78.6%
Final simplification73.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (hypot x.im x.re)))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2
(/
(sin t_1)
(/ (exp (* (atan2 x.im x.re) y.im)) (pow (hypot x.re x.im) y.re))))
(t_3 (pow (hypot x.im x.re) y.re)))
(if (<= y.re -2.5e+70)
(* t_1 t_3)
(if (<= y.re -1.95e-225)
t_2
(if (<= y.re 5.8e-96)
(* (sin (* y.im t_0)) (exp (* (atan2 x.im x.re) (- 0.0 y.im))))
(if (<= y.re 7.5e+67) t_2 (* y.im (* t_0 t_3))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log(hypot(x_46_im, x_46_re));
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = sin(t_1) / (exp((atan2(x_46_im, x_46_re) * y_46_im)) / pow(hypot(x_46_re, x_46_im), y_46_re));
double t_3 = pow(hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -2.5e+70) {
tmp = t_1 * t_3;
} else if (y_46_re <= -1.95e-225) {
tmp = t_2;
} else if (y_46_re <= 5.8e-96) {
tmp = sin((y_46_im * t_0)) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
} else if (y_46_re <= 7.5e+67) {
tmp = t_2;
} else {
tmp = y_46_im * (t_0 * t_3);
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log(Math.hypot(x_46_im, x_46_re));
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.sin(t_1) / (Math.exp((Math.atan2(x_46_im, x_46_re) * y_46_im)) / Math.pow(Math.hypot(x_46_re, x_46_im), y_46_re));
double t_3 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -2.5e+70) {
tmp = t_1 * t_3;
} else if (y_46_re <= -1.95e-225) {
tmp = t_2;
} else if (y_46_re <= 5.8e-96) {
tmp = Math.sin((y_46_im * t_0)) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
} else if (y_46_re <= 7.5e+67) {
tmp = t_2;
} else {
tmp = y_46_im * (t_0 * t_3);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log(math.hypot(x_46_im, x_46_re)) t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.sin(t_1) / (math.exp((math.atan2(x_46_im, x_46_re) * y_46_im)) / math.pow(math.hypot(x_46_re, x_46_im), y_46_re)) t_3 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) tmp = 0 if y_46_re <= -2.5e+70: tmp = t_1 * t_3 elif y_46_re <= -1.95e-225: tmp = t_2 elif y_46_re <= 5.8e-96: tmp = math.sin((y_46_im * t_0)) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))) elif y_46_re <= 7.5e+67: tmp = t_2 else: tmp = y_46_im * (t_0 * t_3) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(hypot(x_46_im, x_46_re)) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = Float64(sin(t_1) / Float64(exp(Float64(atan(x_46_im, x_46_re) * y_46_im)) / (hypot(x_46_re, x_46_im) ^ y_46_re))) t_3 = hypot(x_46_im, x_46_re) ^ y_46_re tmp = 0.0 if (y_46_re <= -2.5e+70) tmp = Float64(t_1 * t_3); elseif (y_46_re <= -1.95e-225) tmp = t_2; elseif (y_46_re <= 5.8e-96) tmp = Float64(sin(Float64(y_46_im * t_0)) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im)))); elseif (y_46_re <= 7.5e+67) tmp = t_2; else tmp = Float64(y_46_im * Float64(t_0 * t_3)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(hypot(x_46_im, x_46_re)); t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = sin(t_1) / (exp((atan2(x_46_im, x_46_re) * y_46_im)) / (hypot(x_46_re, x_46_im) ^ y_46_re)); t_3 = hypot(x_46_im, x_46_re) ^ y_46_re; tmp = 0.0; if (y_46_re <= -2.5e+70) tmp = t_1 * t_3; elseif (y_46_re <= -1.95e-225) tmp = t_2; elseif (y_46_re <= 5.8e-96) tmp = sin((y_46_im * t_0)) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))); elseif (y_46_re <= 7.5e+67) tmp = t_2; else tmp = y_46_im * (t_0 * t_3); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Sin[t$95$1], $MachinePrecision] / N[(N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]], $MachinePrecision] / N[Power[N[Sqrt[x$46$re ^ 2 + x$46$im ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, If[LessEqual[y$46$re, -2.5e+70], N[(t$95$1 * t$95$3), $MachinePrecision], If[LessEqual[y$46$re, -1.95e-225], t$95$2, If[LessEqual[y$46$re, 5.8e-96], N[(N[Sin[N[(y$46$im * t$95$0), $MachinePrecision]], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 7.5e+67], t$95$2, N[(y$46$im * N[(t$95$0 * t$95$3), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := \frac{\sin t\_1}{\frac{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}}\\
t_3 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{if}\;y.re \leq -2.5 \cdot 10^{+70}:\\
\;\;\;\;t\_1 \cdot t\_3\\
\mathbf{elif}\;y.re \leq -1.95 \cdot 10^{-225}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;y.re \leq 5.8 \cdot 10^{-96}:\\
\;\;\;\;\sin \left(y.im \cdot t\_0\right) \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\\
\mathbf{elif}\;y.re \leq 7.5 \cdot 10^{+67}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \left(t\_0 \cdot t\_3\right)\\
\end{array}
\end{array}
if y.re < -2.5000000000000001e70Initial program 37.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified65.5%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified72.4%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6481.2%
Simplified81.2%
if -2.5000000000000001e70 < y.re < -1.95e-225 or 5.79999999999999987e-96 < y.re < 7.5000000000000005e67Initial program 37.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified76.2%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6470.3%
Simplified70.3%
if -1.95e-225 < y.re < 5.79999999999999987e-96Initial program 46.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.5%
Simplified80.5%
if 7.5000000000000005e67 < y.re Initial program 27.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified50.0%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6436.1%
Simplified36.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6461.2%
Simplified61.2%
Final simplification74.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (exp (* (atan2 x.im x.re) (- 0.0 y.im))))
(t_1 (* y.re (* (atan2 x.im x.re) t_0)))
(t_2 (* y.re (atan2 x.im x.re)))
(t_3 (pow (hypot x.im x.re) y.re)))
(if (<= y.re -9.8e-45)
(* t_2 t_3)
(if (<= y.re -2.3e-225)
t_1
(if (<= y.re 2.2e-96)
(* (sin (* y.im (log (hypot x.im x.re)))) t_0)
(if (<= y.re 2.4e-22) t_1 (* (sin t_2) t_3)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_1 = y_46_re * (atan2(x_46_im, x_46_re) * t_0);
double t_2 = y_46_re * atan2(x_46_im, x_46_re);
double t_3 = pow(hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_2 * t_3;
} else if (y_46_re <= -2.3e-225) {
tmp = t_1;
} else if (y_46_re <= 2.2e-96) {
tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0;
} else if (y_46_re <= 2.4e-22) {
tmp = t_1;
} else {
tmp = sin(t_2) * t_3;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_1 = y_46_re * (Math.atan2(x_46_im, x_46_re) * t_0);
double t_2 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_3 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_2 * t_3;
} else if (y_46_re <= -2.3e-225) {
tmp = t_1;
} else if (y_46_re <= 2.2e-96) {
tmp = Math.sin((y_46_im * Math.log(Math.hypot(x_46_im, x_46_re)))) * t_0;
} else if (y_46_re <= 2.4e-22) {
tmp = t_1;
} else {
tmp = Math.sin(t_2) * t_3;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))) t_1 = y_46_re * (math.atan2(x_46_im, x_46_re) * t_0) t_2 = y_46_re * math.atan2(x_46_im, x_46_re) t_3 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) tmp = 0 if y_46_re <= -9.8e-45: tmp = t_2 * t_3 elif y_46_re <= -2.3e-225: tmp = t_1 elif y_46_re <= 2.2e-96: tmp = math.sin((y_46_im * math.log(math.hypot(x_46_im, x_46_re)))) * t_0 elif y_46_re <= 2.4e-22: tmp = t_1 else: tmp = math.sin(t_2) * t_3 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))) t_1 = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * t_0)) t_2 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_3 = hypot(x_46_im, x_46_re) ^ y_46_re tmp = 0.0 if (y_46_re <= -9.8e-45) tmp = Float64(t_2 * t_3); elseif (y_46_re <= -2.3e-225) tmp = t_1; elseif (y_46_re <= 2.2e-96) tmp = Float64(sin(Float64(y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0); elseif (y_46_re <= 2.4e-22) tmp = t_1; else tmp = Float64(sin(t_2) * t_3); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))); t_1 = y_46_re * (atan2(x_46_im, x_46_re) * t_0); t_2 = y_46_re * atan2(x_46_im, x_46_re); t_3 = hypot(x_46_im, x_46_re) ^ y_46_re; tmp = 0.0; if (y_46_re <= -9.8e-45) tmp = t_2 * t_3; elseif (y_46_re <= -2.3e-225) tmp = t_1; elseif (y_46_re <= 2.2e-96) tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) * t_0; elseif (y_46_re <= 2.4e-22) tmp = t_1; else tmp = sin(t_2) * t_3; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, If[LessEqual[y$46$re, -9.8e-45], N[(t$95$2 * t$95$3), $MachinePrecision], If[LessEqual[y$46$re, -2.3e-225], t$95$1, If[LessEqual[y$46$re, 2.2e-96], N[(N[Sin[N[(y$46$im * N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision], If[LessEqual[y$46$re, 2.4e-22], t$95$1, N[(N[Sin[t$95$2], $MachinePrecision] * t$95$3), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\\
t_1 := y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot t\_0\right)\\
t_2 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_3 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{if}\;y.re \leq -9.8 \cdot 10^{-45}:\\
\;\;\;\;t\_2 \cdot t\_3\\
\mathbf{elif}\;y.re \leq -2.3 \cdot 10^{-225}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;y.re \leq 2.2 \cdot 10^{-96}:\\
\;\;\;\;\sin \left(y.im \cdot \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\right) \cdot t\_0\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-22}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;\sin t\_2 \cdot t\_3\\
\end{array}
\end{array}
if y.re < -9.7999999999999996e-45Initial program 38.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified70.0%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified73.3%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.5%
Simplified78.5%
if -9.7999999999999996e-45 < y.re < -2.2999999999999999e-225 or 2.19999999999999979e-96 < y.re < 2.40000000000000002e-22Initial program 27.7%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6437.6%
Simplified37.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6468.1%
Simplified68.1%
if -2.2999999999999999e-225 < y.re < 2.19999999999999979e-96Initial program 46.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
atan2-lowering-atan2.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.5%
Simplified80.5%
if 2.40000000000000002e-22 < y.re Initial program 37.9%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.5%
Simplified60.5%
Final simplification73.1%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(*
y.re
(* (atan2 x.im x.re) (exp (* (atan2 x.im x.re) (- 0.0 y.im))))))
(t_1 (* y.re (atan2 x.im x.re)))
(t_2 (pow (hypot x.im x.re) y.re)))
(if (<= y.re -9.8e-45)
(* t_1 t_2)
(if (<= y.re -4.1e-227)
t_0
(if (<= y.re 3.5e-96)
(/
(sin (* y.im (log (hypot x.im x.re))))
(exp (* (atan2 x.im x.re) y.im)))
(if (<= y.re 2.4e-22) t_0 (* (sin t_1) t_2)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double t_2 = pow(hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_1 * t_2;
} else if (y_46_re <= -4.1e-227) {
tmp = t_0;
} else if (y_46_re <= 3.5e-96) {
tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) / exp((atan2(x_46_im, x_46_re) * y_46_im));
} else if (y_46_re <= 2.4e-22) {
tmp = t_0;
} else {
tmp = sin(t_1) * t_2;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double t_2 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_1 * t_2;
} else if (y_46_re <= -4.1e-227) {
tmp = t_0;
} else if (y_46_re <= 3.5e-96) {
tmp = Math.sin((y_46_im * Math.log(Math.hypot(x_46_im, x_46_re)))) / Math.exp((Math.atan2(x_46_im, x_46_re) * y_46_im));
} else if (y_46_re <= 2.4e-22) {
tmp = t_0;
} else {
tmp = Math.sin(t_1) * t_2;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * (math.atan2(x_46_im, x_46_re) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))) t_1 = y_46_re * math.atan2(x_46_im, x_46_re) t_2 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) tmp = 0 if y_46_re <= -9.8e-45: tmp = t_1 * t_2 elif y_46_re <= -4.1e-227: tmp = t_0 elif y_46_re <= 3.5e-96: tmp = math.sin((y_46_im * math.log(math.hypot(x_46_im, x_46_re)))) / math.exp((math.atan2(x_46_im, x_46_re) * y_46_im)) elif y_46_re <= 2.4e-22: tmp = t_0 else: tmp = math.sin(t_1) * t_2 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))))) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) t_2 = hypot(x_46_im, x_46_re) ^ y_46_re tmp = 0.0 if (y_46_re <= -9.8e-45) tmp = Float64(t_1 * t_2); elseif (y_46_re <= -4.1e-227) tmp = t_0; elseif (y_46_re <= 3.5e-96) tmp = Float64(sin(Float64(y_46_im * log(hypot(x_46_im, x_46_re)))) / exp(Float64(atan(x_46_im, x_46_re) * y_46_im))); elseif (y_46_re <= 2.4e-22) tmp = t_0; else tmp = Float64(sin(t_1) * t_2); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))); t_1 = y_46_re * atan2(x_46_im, x_46_re); t_2 = hypot(x_46_im, x_46_re) ^ y_46_re; tmp = 0.0; if (y_46_re <= -9.8e-45) tmp = t_1 * t_2; elseif (y_46_re <= -4.1e-227) tmp = t_0; elseif (y_46_re <= 3.5e-96) tmp = sin((y_46_im * log(hypot(x_46_im, x_46_re)))) / exp((atan2(x_46_im, x_46_re) * y_46_im)); elseif (y_46_re <= 2.4e-22) tmp = t_0; else tmp = sin(t_1) * t_2; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, If[LessEqual[y$46$re, -9.8e-45], N[(t$95$1 * t$95$2), $MachinePrecision], If[LessEqual[y$46$re, -4.1e-227], t$95$0, If[LessEqual[y$46$re, 3.5e-96], N[(N[Sin[N[(y$46$im * N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * y$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.4e-22], t$95$0, N[(N[Sin[t$95$1], $MachinePrecision] * t$95$2), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\right)\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
t_2 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{if}\;y.re \leq -9.8 \cdot 10^{-45}:\\
\;\;\;\;t\_1 \cdot t\_2\\
\mathbf{elif}\;y.re \leq -4.1 \cdot 10^{-227}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;y.re \leq 3.5 \cdot 10^{-96}:\\
\;\;\;\;\frac{\sin \left(y.im \cdot \log \left(\mathsf{hypot}\left(x.im, x.re\right)\right)\right)}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-22}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\sin t\_1 \cdot t\_2\\
\end{array}
\end{array}
if y.re < -9.7999999999999996e-45Initial program 38.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified70.0%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified73.3%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.5%
Simplified78.5%
if -9.7999999999999996e-45 < y.re < -4.10000000000000009e-227 or 3.4999999999999999e-96 < y.re < 2.40000000000000002e-22Initial program 27.7%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6437.6%
Simplified37.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6468.1%
Simplified68.1%
if -4.10000000000000009e-227 < y.re < 3.4999999999999999e-96Initial program 46.2%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified88.4%
Taylor expanded in y.re around 0
/-lowering-/.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
exp-lowering-exp.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6480.5%
Simplified80.5%
if 2.40000000000000002e-22 < y.re Initial program 37.9%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.5%
Simplified60.5%
Final simplification73.1%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (pow (hypot x.im x.re) y.re))
(t_1 (* y.im (* (log (hypot x.im x.re)) t_0)))
(t_2 (exp (* (atan2 x.im x.re) (- 0.0 y.im))))
(t_3 (sin (* y.re (atan2 x.im x.re)))))
(if (<= y.im -33000.0)
(* y.re (* (atan2 x.im x.re) t_2))
(if (<= y.im -3.3e-96)
t_1
(if (<= y.im 1e-142)
(* t_3 t_0)
(if (<= y.im 6.4e+18) t_1 (* t_3 t_2)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = pow(hypot(x_46_im, x_46_re), y_46_re);
double t_1 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_0);
double t_2 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_3 = sin((y_46_re * atan2(x_46_im, x_46_re)));
double tmp;
if (y_46_im <= -33000.0) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * t_2);
} else if (y_46_im <= -3.3e-96) {
tmp = t_1;
} else if (y_46_im <= 1e-142) {
tmp = t_3 * t_0;
} else if (y_46_im <= 6.4e+18) {
tmp = t_1;
} else {
tmp = t_3 * t_2;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double t_1 = y_46_im * (Math.log(Math.hypot(x_46_im, x_46_re)) * t_0);
double t_2 = Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)));
double t_3 = Math.sin((y_46_re * Math.atan2(x_46_im, x_46_re)));
double tmp;
if (y_46_im <= -33000.0) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * t_2);
} else if (y_46_im <= -3.3e-96) {
tmp = t_1;
} else if (y_46_im <= 1e-142) {
tmp = t_3 * t_0;
} else if (y_46_im <= 6.4e+18) {
tmp = t_1;
} else {
tmp = t_3 * t_2;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) t_1 = y_46_im * (math.log(math.hypot(x_46_im, x_46_re)) * t_0) t_2 = math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))) t_3 = math.sin((y_46_re * math.atan2(x_46_im, x_46_re))) tmp = 0 if y_46_im <= -33000.0: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * t_2) elif y_46_im <= -3.3e-96: tmp = t_1 elif y_46_im <= 1e-142: tmp = t_3 * t_0 elif y_46_im <= 6.4e+18: tmp = t_1 else: tmp = t_3 * t_2 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = hypot(x_46_im, x_46_re) ^ y_46_re t_1 = Float64(y_46_im * Float64(log(hypot(x_46_im, x_46_re)) * t_0)) t_2 = exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))) t_3 = sin(Float64(y_46_re * atan(x_46_im, x_46_re))) tmp = 0.0 if (y_46_im <= -33000.0) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * t_2)); elseif (y_46_im <= -3.3e-96) tmp = t_1; elseif (y_46_im <= 1e-142) tmp = Float64(t_3 * t_0); elseif (y_46_im <= 6.4e+18) tmp = t_1; else tmp = Float64(t_3 * t_2); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = hypot(x_46_im, x_46_re) ^ y_46_re; t_1 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_0); t_2 = exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))); t_3 = sin((y_46_re * atan2(x_46_im, x_46_re))); tmp = 0.0; if (y_46_im <= -33000.0) tmp = y_46_re * (atan2(x_46_im, x_46_re) * t_2); elseif (y_46_im <= -3.3e-96) tmp = t_1; elseif (y_46_im <= 1e-142) tmp = t_3 * t_0; elseif (y_46_im <= 6.4e+18) tmp = t_1; else tmp = t_3 * t_2; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, Block[{t$95$1 = N[(y$46$im * N[(N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[Sin[N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[y$46$im, -33000.0], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$im, -3.3e-96], t$95$1, If[LessEqual[y$46$im, 1e-142], N[(t$95$3 * t$95$0), $MachinePrecision], If[LessEqual[y$46$im, 6.4e+18], t$95$1, N[(t$95$3 * t$95$2), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
t_1 := y.im \cdot \left(\log \left(\mathsf{hypot}\left(x.im, x.re\right)\right) \cdot t\_0\right)\\
t_2 := e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\\
t_3 := \sin \left(y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right)\\
\mathbf{if}\;y.im \leq -33000:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot t\_2\right)\\
\mathbf{elif}\;y.im \leq -3.3 \cdot 10^{-96}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;y.im \leq 10^{-142}:\\
\;\;\;\;t\_3 \cdot t\_0\\
\mathbf{elif}\;y.im \leq 6.4 \cdot 10^{+18}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_3 \cdot t\_2\\
\end{array}
\end{array}
if y.im < -33000Initial program 37.2%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6457.0%
Simplified57.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6458.8%
Simplified58.8%
if -33000 < y.im < -3.2999999999999999e-96 or 1e-142 < y.im < 6.4e18Initial program 36.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified87.7%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6482.7%
Simplified82.7%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.3%
Simplified78.3%
if -3.2999999999999999e-96 < y.im < 1e-142Initial program 44.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.2%
Simplified78.2%
if 6.4e18 < y.im Initial program 33.3%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6455.5%
Simplified55.5%
Taylor expanded in y.re around 0
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6463.8%
Simplified63.8%
Final simplification70.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(*
y.re
(* (atan2 x.im x.re) (exp (* (atan2 x.im x.re) (- 0.0 y.im))))))
(t_1 (pow (hypot x.im x.re) y.re))
(t_2 (* y.im (* (log (hypot x.im x.re)) t_1))))
(if (<= y.im -40000.0)
t_0
(if (<= y.im -3.3e-96)
t_2
(if (<= y.im 1.25e-142)
(* (sin (* y.re (atan2 x.im x.re))) t_1)
(if (<= y.im 0.054) t_2 t_0))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = pow(hypot(x_46_im, x_46_re), y_46_re);
double t_2 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_1);
double tmp;
if (y_46_im <= -40000.0) {
tmp = t_0;
} else if (y_46_im <= -3.3e-96) {
tmp = t_2;
} else if (y_46_im <= 1.25e-142) {
tmp = sin((y_46_re * atan2(x_46_im, x_46_re))) * t_1;
} else if (y_46_im <= 0.054) {
tmp = t_2;
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double t_2 = y_46_im * (Math.log(Math.hypot(x_46_im, x_46_re)) * t_1);
double tmp;
if (y_46_im <= -40000.0) {
tmp = t_0;
} else if (y_46_im <= -3.3e-96) {
tmp = t_2;
} else if (y_46_im <= 1.25e-142) {
tmp = Math.sin((y_46_re * Math.atan2(x_46_im, x_46_re))) * t_1;
} else if (y_46_im <= 0.054) {
tmp = t_2;
} else {
tmp = t_0;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * (math.atan2(x_46_im, x_46_re) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))) t_1 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) t_2 = y_46_im * (math.log(math.hypot(x_46_im, x_46_re)) * t_1) tmp = 0 if y_46_im <= -40000.0: tmp = t_0 elif y_46_im <= -3.3e-96: tmp = t_2 elif y_46_im <= 1.25e-142: tmp = math.sin((y_46_re * math.atan2(x_46_im, x_46_re))) * t_1 elif y_46_im <= 0.054: tmp = t_2 else: tmp = t_0 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))))) t_1 = hypot(x_46_im, x_46_re) ^ y_46_re t_2 = Float64(y_46_im * Float64(log(hypot(x_46_im, x_46_re)) * t_1)) tmp = 0.0 if (y_46_im <= -40000.0) tmp = t_0; elseif (y_46_im <= -3.3e-96) tmp = t_2; elseif (y_46_im <= 1.25e-142) tmp = Float64(sin(Float64(y_46_re * atan(x_46_im, x_46_re))) * t_1); elseif (y_46_im <= 0.054) tmp = t_2; else tmp = t_0; end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))); t_1 = hypot(x_46_im, x_46_re) ^ y_46_re; t_2 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_1); tmp = 0.0; if (y_46_im <= -40000.0) tmp = t_0; elseif (y_46_im <= -3.3e-96) tmp = t_2; elseif (y_46_im <= 1.25e-142) tmp = sin((y_46_re * atan2(x_46_im, x_46_re))) * t_1; elseif (y_46_im <= 0.054) tmp = t_2; else tmp = t_0; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, Block[{t$95$2 = N[(y$46$im * N[(N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$im, -40000.0], t$95$0, If[LessEqual[y$46$im, -3.3e-96], t$95$2, If[LessEqual[y$46$im, 1.25e-142], N[(N[Sin[N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * t$95$1), $MachinePrecision], If[LessEqual[y$46$im, 0.054], t$95$2, t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\right)\\
t_1 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
t_2 := y.im \cdot \left(\log \left(\mathsf{hypot}\left(x.im, x.re\right)\right) \cdot t\_1\right)\\
\mathbf{if}\;y.im \leq -40000:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;y.im \leq -3.3 \cdot 10^{-96}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;y.im \leq 1.25 \cdot 10^{-142}:\\
\;\;\;\;\sin \left(y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right) \cdot t\_1\\
\mathbf{elif}\;y.im \leq 0.054:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if y.im < -4e4 or 0.0539999999999999994 < y.im Initial program 34.9%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6456.0%
Simplified56.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6457.7%
Simplified57.7%
if -4e4 < y.im < -3.2999999999999999e-96 or 1.2500000000000001e-142 < y.im < 0.0539999999999999994Initial program 37.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified92.8%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6487.4%
Simplified87.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6482.7%
Simplified82.7%
if -3.2999999999999999e-96 < y.im < 1.2500000000000001e-142Initial program 44.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.2%
Simplified78.2%
Final simplification69.1%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(*
y.re
(* (atan2 x.im x.re) (exp (* (atan2 x.im x.re) (- 0.0 y.im))))))
(t_1 (pow (hypot x.im x.re) y.re))
(t_2 (* y.im (* (log (hypot x.im x.re)) t_1))))
(if (<= y.im -205000000.0)
t_0
(if (<= y.im -3.3e-96)
t_2
(if (<= y.im 8.5e-142)
(* (* y.re (atan2 x.im x.re)) t_1)
(if (<= y.im 0.054) t_2 t_0))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = pow(hypot(x_46_im, x_46_re), y_46_re);
double t_2 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_1);
double tmp;
if (y_46_im <= -205000000.0) {
tmp = t_0;
} else if (y_46_im <= -3.3e-96) {
tmp = t_2;
} else if (y_46_im <= 8.5e-142) {
tmp = (y_46_re * atan2(x_46_im, x_46_re)) * t_1;
} else if (y_46_im <= 0.054) {
tmp = t_2;
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
double t_1 = Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
double t_2 = y_46_im * (Math.log(Math.hypot(x_46_im, x_46_re)) * t_1);
double tmp;
if (y_46_im <= -205000000.0) {
tmp = t_0;
} else if (y_46_im <= -3.3e-96) {
tmp = t_2;
} else if (y_46_im <= 8.5e-142) {
tmp = (y_46_re * Math.atan2(x_46_im, x_46_re)) * t_1;
} else if (y_46_im <= 0.054) {
tmp = t_2;
} else {
tmp = t_0;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * (math.atan2(x_46_im, x_46_re) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))) t_1 = math.pow(math.hypot(x_46_im, x_46_re), y_46_re) t_2 = y_46_im * (math.log(math.hypot(x_46_im, x_46_re)) * t_1) tmp = 0 if y_46_im <= -205000000.0: tmp = t_0 elif y_46_im <= -3.3e-96: tmp = t_2 elif y_46_im <= 8.5e-142: tmp = (y_46_re * math.atan2(x_46_im, x_46_re)) * t_1 elif y_46_im <= 0.054: tmp = t_2 else: tmp = t_0 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))))) t_1 = hypot(x_46_im, x_46_re) ^ y_46_re t_2 = Float64(y_46_im * Float64(log(hypot(x_46_im, x_46_re)) * t_1)) tmp = 0.0 if (y_46_im <= -205000000.0) tmp = t_0; elseif (y_46_im <= -3.3e-96) tmp = t_2; elseif (y_46_im <= 8.5e-142) tmp = Float64(Float64(y_46_re * atan(x_46_im, x_46_re)) * t_1); elseif (y_46_im <= 0.054) tmp = t_2; else tmp = t_0; end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))); t_1 = hypot(x_46_im, x_46_re) ^ y_46_re; t_2 = y_46_im * (log(hypot(x_46_im, x_46_re)) * t_1); tmp = 0.0; if (y_46_im <= -205000000.0) tmp = t_0; elseif (y_46_im <= -3.3e-96) tmp = t_2; elseif (y_46_im <= 8.5e-142) tmp = (y_46_re * atan2(x_46_im, x_46_re)) * t_1; elseif (y_46_im <= 0.054) tmp = t_2; else tmp = t_0; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]}, Block[{t$95$2 = N[(y$46$im * N[(N[Log[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision]], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$im, -205000000.0], t$95$0, If[LessEqual[y$46$im, -3.3e-96], t$95$2, If[LessEqual[y$46$im, 8.5e-142], N[(N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision], If[LessEqual[y$46$im, 0.054], t$95$2, t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\right)\\
t_1 := {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
t_2 := y.im \cdot \left(\log \left(\mathsf{hypot}\left(x.im, x.re\right)\right) \cdot t\_1\right)\\
\mathbf{if}\;y.im \leq -205000000:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;y.im \leq -3.3 \cdot 10^{-96}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;y.im \leq 8.5 \cdot 10^{-142}:\\
\;\;\;\;\left(y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right) \cdot t\_1\\
\mathbf{elif}\;y.im \leq 0.054:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if y.im < -2.05e8 or 0.0539999999999999994 < y.im Initial program 34.9%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6456.0%
Simplified56.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6457.7%
Simplified57.7%
if -2.05e8 < y.im < -3.2999999999999999e-96 or 8.4999999999999996e-142 < y.im < 0.0539999999999999994Initial program 37.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified92.8%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6487.4%
Simplified87.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6482.7%
Simplified82.7%
if -3.2999999999999999e-96 < y.im < 8.4999999999999996e-142Initial program 44.5%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified95.0%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified92.1%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6475.4%
Simplified75.4%
Final simplification68.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (sin (* y.re (atan2 x.im x.re))))
(t_1 (* t_0 (pow x.re y.re)))
(t_2 (+ (* x.re x.re) (* x.im x.im))))
(if (<= x.re -860.0)
t_1
(if (<= x.re 1.12e-64)
(* t_0 (pow x.im y.re))
(if (<= x.re 2.35e+70)
(* y.im (/ (pow t_2 (/ y.re 2.0)) (/ 2.0 (log t_2))))
(if (<= x.re 5.2e+167)
t_1
(* y.im (* (log x.re) (exp (* y.re (log x.re)))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = sin((y_46_re * atan2(x_46_im, x_46_re)));
double t_1 = t_0 * pow(x_46_re, y_46_re);
double t_2 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double tmp;
if (x_46_re <= -860.0) {
tmp = t_1;
} else if (x_46_re <= 1.12e-64) {
tmp = t_0 * pow(x_46_im, y_46_re);
} else if (x_46_re <= 2.35e+70) {
tmp = y_46_im * (pow(t_2, (y_46_re / 2.0)) / (2.0 / log(t_2)));
} else if (x_46_re <= 5.2e+167) {
tmp = t_1;
} else {
tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re))));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = sin((y_46re * atan2(x_46im, x_46re)))
t_1 = t_0 * (x_46re ** y_46re)
t_2 = (x_46re * x_46re) + (x_46im * x_46im)
if (x_46re <= (-860.0d0)) then
tmp = t_1
else if (x_46re <= 1.12d-64) then
tmp = t_0 * (x_46im ** y_46re)
else if (x_46re <= 2.35d+70) then
tmp = y_46im * ((t_2 ** (y_46re / 2.0d0)) / (2.0d0 / log(t_2)))
else if (x_46re <= 5.2d+167) then
tmp = t_1
else
tmp = y_46im * (log(x_46re) * exp((y_46re * log(x_46re))))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.sin((y_46_re * Math.atan2(x_46_im, x_46_re)));
double t_1 = t_0 * Math.pow(x_46_re, y_46_re);
double t_2 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double tmp;
if (x_46_re <= -860.0) {
tmp = t_1;
} else if (x_46_re <= 1.12e-64) {
tmp = t_0 * Math.pow(x_46_im, y_46_re);
} else if (x_46_re <= 2.35e+70) {
tmp = y_46_im * (Math.pow(t_2, (y_46_re / 2.0)) / (2.0 / Math.log(t_2)));
} else if (x_46_re <= 5.2e+167) {
tmp = t_1;
} else {
tmp = y_46_im * (Math.log(x_46_re) * Math.exp((y_46_re * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.sin((y_46_re * math.atan2(x_46_im, x_46_re))) t_1 = t_0 * math.pow(x_46_re, y_46_re) t_2 = (x_46_re * x_46_re) + (x_46_im * x_46_im) tmp = 0 if x_46_re <= -860.0: tmp = t_1 elif x_46_re <= 1.12e-64: tmp = t_0 * math.pow(x_46_im, y_46_re) elif x_46_re <= 2.35e+70: tmp = y_46_im * (math.pow(t_2, (y_46_re / 2.0)) / (2.0 / math.log(t_2))) elif x_46_re <= 5.2e+167: tmp = t_1 else: tmp = y_46_im * (math.log(x_46_re) * math.exp((y_46_re * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = sin(Float64(y_46_re * atan(x_46_im, x_46_re))) t_1 = Float64(t_0 * (x_46_re ^ y_46_re)) t_2 = Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) tmp = 0.0 if (x_46_re <= -860.0) tmp = t_1; elseif (x_46_re <= 1.12e-64) tmp = Float64(t_0 * (x_46_im ^ y_46_re)); elseif (x_46_re <= 2.35e+70) tmp = Float64(y_46_im * Float64((t_2 ^ Float64(y_46_re / 2.0)) / Float64(2.0 / log(t_2)))); elseif (x_46_re <= 5.2e+167) tmp = t_1; else tmp = Float64(y_46_im * Float64(log(x_46_re) * exp(Float64(y_46_re * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = sin((y_46_re * atan2(x_46_im, x_46_re))); t_1 = t_0 * (x_46_re ^ y_46_re); t_2 = (x_46_re * x_46_re) + (x_46_im * x_46_im); tmp = 0.0; if (x_46_re <= -860.0) tmp = t_1; elseif (x_46_re <= 1.12e-64) tmp = t_0 * (x_46_im ^ y_46_re); elseif (x_46_re <= 2.35e+70) tmp = y_46_im * ((t_2 ^ (y_46_re / 2.0)) / (2.0 / log(t_2))); elseif (x_46_re <= 5.2e+167) tmp = t_1; else tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Sin[N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * N[Power[x$46$re, y$46$re], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x$46$re, -860.0], t$95$1, If[LessEqual[x$46$re, 1.12e-64], N[(t$95$0 * N[Power[x$46$im, y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 2.35e+70], N[(y$46$im * N[(N[Power[t$95$2, N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision] / N[(2.0 / N[Log[t$95$2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 5.2e+167], t$95$1, N[(y$46$im * N[(N[Log[x$46$re], $MachinePrecision] * N[Exp[N[(y$46$re * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \sin \left(y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right)\\
t_1 := t\_0 \cdot {x.re}^{y.re}\\
t_2 := x.re \cdot x.re + x.im \cdot x.im\\
\mathbf{if}\;x.re \leq -860:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;x.re \leq 1.12 \cdot 10^{-64}:\\
\;\;\;\;t\_0 \cdot {x.im}^{y.re}\\
\mathbf{elif}\;x.re \leq 2.35 \cdot 10^{+70}:\\
\;\;\;\;y.im \cdot \frac{{t\_2}^{\left(\frac{y.re}{2}\right)}}{\frac{2}{\log t\_2}}\\
\mathbf{elif}\;x.re \leq 5.2 \cdot 10^{+167}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \left(\log x.re \cdot e^{y.re \cdot \log x.re}\right)\\
\end{array}
\end{array}
if x.re < -860 or 2.3499999999999999e70 < x.re < 5.2000000000000004e167Initial program 33.2%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6461.1%
Simplified61.1%
Taylor expanded in x.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f6449.8%
Simplified49.8%
if -860 < x.re < 1.12e-64Initial program 45.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6444.1%
Simplified44.1%
Taylor expanded in x.re around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f6435.4%
Simplified35.4%
if 1.12e-64 < x.re < 2.3499999999999999e70Initial program 67.6%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified74.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6467.9%
Simplified67.9%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr35.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.9%
Simplified60.9%
associate-*r*N/A
metadata-evalN/A
div-invN/A
clear-numN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr60.8%
if 5.2000000000000004e167 < x.re Initial program 0.0%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified73.7%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6473.7%
Simplified73.7%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr0.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6429.8%
Simplified29.8%
Taylor expanded in x.re around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
Simplified72.0%
Final simplification47.7%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* y.re (atan2 x.im x.re))))
(if (<= y.re -9.8e-45)
(* t_0 (pow (hypot x.im x.re) y.re))
(if (<= y.re 2.4e-22)
(* y.re (* (atan2 x.im x.re) (exp (* (atan2 x.im x.re) (- 0.0 y.im)))))
(* (sin t_0) (pow (+ (* x.re x.re) (* x.im x.im)) (/ y.re 2.0)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_0 * pow(hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 2.4e-22) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
} else {
tmp = sin(t_0) * pow(((x_46_re * x_46_re) + (x_46_im * x_46_im)), (y_46_re / 2.0));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * Math.atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_0 * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 2.4e-22) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
} else {
tmp = Math.sin(t_0) * Math.pow(((x_46_re * x_46_re) + (x_46_im * x_46_im)), (y_46_re / 2.0));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * math.atan2(x_46_im, x_46_re) tmp = 0 if y_46_re <= -9.8e-45: tmp = t_0 * math.pow(math.hypot(x_46_im, x_46_re), y_46_re) elif y_46_re <= 2.4e-22: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))) else: tmp = math.sin(t_0) * math.pow(((x_46_re * x_46_re) + (x_46_im * x_46_im)), (y_46_re / 2.0)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * atan(x_46_im, x_46_re)) tmp = 0.0 if (y_46_re <= -9.8e-45) tmp = Float64(t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re)); elseif (y_46_re <= 2.4e-22) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))))); else tmp = Float64(sin(t_0) * (Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) ^ Float64(y_46_re / 2.0))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * atan2(x_46_im, x_46_re); tmp = 0.0; if (y_46_re <= -9.8e-45) tmp = t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re); elseif (y_46_re <= 2.4e-22) tmp = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))); else tmp = sin(t_0) * (((x_46_re * x_46_re) + (x_46_im * x_46_im)) ^ (y_46_re / 2.0)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -9.8e-45], N[(t$95$0 * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.4e-22], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Sin[t$95$0], $MachinePrecision] * N[Power[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision], N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{if}\;y.re \leq -9.8 \cdot 10^{-45}:\\
\;\;\;\;t\_0 \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-22}:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\sin t\_0 \cdot {\left(x.re \cdot x.re + x.im \cdot x.im\right)}^{\left(\frac{y.re}{2}\right)}\\
\end{array}
\end{array}
if y.re < -9.7999999999999996e-45Initial program 38.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified70.0%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified73.3%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.5%
Simplified78.5%
if -9.7999999999999996e-45 < y.re < 2.40000000000000002e-22Initial program 38.8%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6431.1%
Simplified31.1%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6452.8%
Simplified52.8%
if 2.40000000000000002e-22 < y.re Initial program 37.9%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.5%
Simplified60.5%
*-commutativeN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
*-lowering-*.f64N/A
sqrt-pow2N/A
pow-lowering-pow.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6460.5%
Applied egg-rr60.5%
Final simplification62.6%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (* x.re x.re) (* x.im x.im)))
(t_1 (log t_0))
(t_2 (/ 2.0 t_1))
(t_3 (* y.im (/ (pow t_0 (/ y.re 2.0)) t_2)))
(t_4 (* y.re (log (exp (atan2 x.im x.re))))))
(if (<= y.re -2.7e+109)
t_3
(if (<= y.re -4.6e-250)
t_4
(if (<= y.re 4.4e-193)
(* t_1 (* y.im 0.5))
(if (<= y.re 4.5e-47)
t_4
(if (<= y.re 20000.0)
(* (atan2 x.im x.re) (* y.re (+ (/ y.re t_2) 1.0)))
t_3)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = log(t_0);
double t_2 = 2.0 / t_1;
double t_3 = y_46_im * (pow(t_0, (y_46_re / 2.0)) / t_2);
double t_4 = y_46_re * log(exp(atan2(x_46_im, x_46_re)));
double tmp;
if (y_46_re <= -2.7e+109) {
tmp = t_3;
} else if (y_46_re <= -4.6e-250) {
tmp = t_4;
} else if (y_46_re <= 4.4e-193) {
tmp = t_1 * (y_46_im * 0.5);
} else if (y_46_re <= 4.5e-47) {
tmp = t_4;
} else if (y_46_re <= 20000.0) {
tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = (x_46re * x_46re) + (x_46im * x_46im)
t_1 = log(t_0)
t_2 = 2.0d0 / t_1
t_3 = y_46im * ((t_0 ** (y_46re / 2.0d0)) / t_2)
t_4 = y_46re * log(exp(atan2(x_46im, x_46re)))
if (y_46re <= (-2.7d+109)) then
tmp = t_3
else if (y_46re <= (-4.6d-250)) then
tmp = t_4
else if (y_46re <= 4.4d-193) then
tmp = t_1 * (y_46im * 0.5d0)
else if (y_46re <= 4.5d-47) then
tmp = t_4
else if (y_46re <= 20000.0d0) then
tmp = atan2(x_46im, x_46re) * (y_46re * ((y_46re / t_2) + 1.0d0))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = Math.log(t_0);
double t_2 = 2.0 / t_1;
double t_3 = y_46_im * (Math.pow(t_0, (y_46_re / 2.0)) / t_2);
double t_4 = y_46_re * Math.log(Math.exp(Math.atan2(x_46_im, x_46_re)));
double tmp;
if (y_46_re <= -2.7e+109) {
tmp = t_3;
} else if (y_46_re <= -4.6e-250) {
tmp = t_4;
} else if (y_46_re <= 4.4e-193) {
tmp = t_1 * (y_46_im * 0.5);
} else if (y_46_re <= 4.5e-47) {
tmp = t_4;
} else if (y_46_re <= 20000.0) {
tmp = Math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0));
} else {
tmp = t_3;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im) t_1 = math.log(t_0) t_2 = 2.0 / t_1 t_3 = y_46_im * (math.pow(t_0, (y_46_re / 2.0)) / t_2) t_4 = y_46_re * math.log(math.exp(math.atan2(x_46_im, x_46_re))) tmp = 0 if y_46_re <= -2.7e+109: tmp = t_3 elif y_46_re <= -4.6e-250: tmp = t_4 elif y_46_re <= 4.4e-193: tmp = t_1 * (y_46_im * 0.5) elif y_46_re <= 4.5e-47: tmp = t_4 elif y_46_re <= 20000.0: tmp = math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0)) else: tmp = t_3 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) t_1 = log(t_0) t_2 = Float64(2.0 / t_1) t_3 = Float64(y_46_im * Float64((t_0 ^ Float64(y_46_re / 2.0)) / t_2)) t_4 = Float64(y_46_re * log(exp(atan(x_46_im, x_46_re)))) tmp = 0.0 if (y_46_re <= -2.7e+109) tmp = t_3; elseif (y_46_re <= -4.6e-250) tmp = t_4; elseif (y_46_re <= 4.4e-193) tmp = Float64(t_1 * Float64(y_46_im * 0.5)); elseif (y_46_re <= 4.5e-47) tmp = t_4; elseif (y_46_re <= 20000.0) tmp = Float64(atan(x_46_im, x_46_re) * Float64(y_46_re * Float64(Float64(y_46_re / t_2) + 1.0))); else tmp = t_3; end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im); t_1 = log(t_0); t_2 = 2.0 / t_1; t_3 = y_46_im * ((t_0 ^ (y_46_re / 2.0)) / t_2); t_4 = y_46_re * log(exp(atan2(x_46_im, x_46_re))); tmp = 0.0; if (y_46_re <= -2.7e+109) tmp = t_3; elseif (y_46_re <= -4.6e-250) tmp = t_4; elseif (y_46_re <= 4.4e-193) tmp = t_1 * (y_46_im * 0.5); elseif (y_46_re <= 4.5e-47) tmp = t_4; elseif (y_46_re <= 20000.0) tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0)); else tmp = t_3; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Log[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(2.0 / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(y$46$im * N[(N[Power[t$95$0, N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(y$46$re * N[Log[N[Exp[N[ArcTan[x$46$im / x$46$re], $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -2.7e+109], t$95$3, If[LessEqual[y$46$re, -4.6e-250], t$95$4, If[LessEqual[y$46$re, 4.4e-193], N[(t$95$1 * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 4.5e-47], t$95$4, If[LessEqual[y$46$re, 20000.0], N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(y$46$re * N[(N[(y$46$re / t$95$2), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x.re \cdot x.re + x.im \cdot x.im\\
t_1 := \log t\_0\\
t_2 := \frac{2}{t\_1}\\
t_3 := y.im \cdot \frac{{t\_0}^{\left(\frac{y.re}{2}\right)}}{t\_2}\\
t_4 := y.re \cdot \log \left(e^{\tan^{-1}_* \frac{x.im}{x.re}}\right)\\
\mathbf{if}\;y.re \leq -2.7 \cdot 10^{+109}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;y.re \leq 4.4 \cdot 10^{-193}:\\
\;\;\;\;t\_1 \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 4.5 \cdot 10^{-47}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;y.re \leq 20000:\\
\;\;\;\;\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(y.re \cdot \left(\frac{y.re}{t\_2} + 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if y.re < -2.70000000000000001e109 or 2e4 < y.re Initial program 35.6%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified57.4%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6452.5%
Simplified52.5%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr5.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6444.7%
Simplified44.7%
associate-*r*N/A
metadata-evalN/A
div-invN/A
clear-numN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr44.7%
if -2.70000000000000001e109 < y.re < -4.5999999999999999e-250 or 4.39999999999999953e-193 < y.re < 4.5e-47Initial program 37.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6447.0%
Simplified47.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6429.6%
Simplified29.6%
rem-log-expN/A
log-lowering-log.f64N/A
exp-lowering-exp.f64N/A
atan2-lowering-atan2.f6435.9%
Applied egg-rr35.9%
if -4.5999999999999999e-250 < y.re < 4.39999999999999953e-193Initial program 47.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified91.6%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6489.3%
Simplified89.3%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr24.8%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6433.5%
Simplified33.5%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6433.5%
Simplified33.5%
if 4.5e-47 < y.re < 2e4Initial program 42.7%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.0%
Simplified51.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6436.7%
Simplified36.7%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr64.0%
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
Applied egg-rr64.1%
Final simplification40.5%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (* x.re x.re) (* x.im x.im))) (t_1 (* y.re (atan2 x.im x.re))))
(if (<= x.re 1.25e-64)
(* t_1 (pow (hypot x.im x.re) y.re))
(if (<= x.re 8.2e+70)
(* y.im (/ (pow t_0 (/ y.re 2.0)) (/ 2.0 (log t_0))))
(if (<= x.re 1.35e+168)
(* (sin t_1) (pow x.re y.re))
(* y.im (* (log x.re) (exp (* y.re (log x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = y_46_re * atan2(x_46_im, x_46_re);
double tmp;
if (x_46_re <= 1.25e-64) {
tmp = t_1 * pow(hypot(x_46_im, x_46_re), y_46_re);
} else if (x_46_re <= 8.2e+70) {
tmp = y_46_im * (pow(t_0, (y_46_re / 2.0)) / (2.0 / log(t_0)));
} else if (x_46_re <= 1.35e+168) {
tmp = sin(t_1) * pow(x_46_re, y_46_re);
} else {
tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re))));
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = y_46_re * Math.atan2(x_46_im, x_46_re);
double tmp;
if (x_46_re <= 1.25e-64) {
tmp = t_1 * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
} else if (x_46_re <= 8.2e+70) {
tmp = y_46_im * (Math.pow(t_0, (y_46_re / 2.0)) / (2.0 / Math.log(t_0)));
} else if (x_46_re <= 1.35e+168) {
tmp = Math.sin(t_1) * Math.pow(x_46_re, y_46_re);
} else {
tmp = y_46_im * (Math.log(x_46_re) * Math.exp((y_46_re * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im) t_1 = y_46_re * math.atan2(x_46_im, x_46_re) tmp = 0 if x_46_re <= 1.25e-64: tmp = t_1 * math.pow(math.hypot(x_46_im, x_46_re), y_46_re) elif x_46_re <= 8.2e+70: tmp = y_46_im * (math.pow(t_0, (y_46_re / 2.0)) / (2.0 / math.log(t_0))) elif x_46_re <= 1.35e+168: tmp = math.sin(t_1) * math.pow(x_46_re, y_46_re) else: tmp = y_46_im * (math.log(x_46_re) * math.exp((y_46_re * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) t_1 = Float64(y_46_re * atan(x_46_im, x_46_re)) tmp = 0.0 if (x_46_re <= 1.25e-64) tmp = Float64(t_1 * (hypot(x_46_im, x_46_re) ^ y_46_re)); elseif (x_46_re <= 8.2e+70) tmp = Float64(y_46_im * Float64((t_0 ^ Float64(y_46_re / 2.0)) / Float64(2.0 / log(t_0)))); elseif (x_46_re <= 1.35e+168) tmp = Float64(sin(t_1) * (x_46_re ^ y_46_re)); else tmp = Float64(y_46_im * Float64(log(x_46_re) * exp(Float64(y_46_re * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im); t_1 = y_46_re * atan2(x_46_im, x_46_re); tmp = 0.0; if (x_46_re <= 1.25e-64) tmp = t_1 * (hypot(x_46_im, x_46_re) ^ y_46_re); elseif (x_46_re <= 8.2e+70) tmp = y_46_im * ((t_0 ^ (y_46_re / 2.0)) / (2.0 / log(t_0))); elseif (x_46_re <= 1.35e+168) tmp = sin(t_1) * (x_46_re ^ y_46_re); else tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x$46$re, 1.25e-64], N[(t$95$1 * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 8.2e+70], N[(y$46$im * N[(N[Power[t$95$0, N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision] / N[(2.0 / N[Log[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 1.35e+168], N[(N[Sin[t$95$1], $MachinePrecision] * N[Power[x$46$re, y$46$re], $MachinePrecision]), $MachinePrecision], N[(y$46$im * N[(N[Log[x$46$re], $MachinePrecision] * N[Exp[N[(y$46$re * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x.re \cdot x.re + x.im \cdot x.im\\
t_1 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{if}\;x.re \leq 1.25 \cdot 10^{-64}:\\
\;\;\;\;t\_1 \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{elif}\;x.re \leq 8.2 \cdot 10^{+70}:\\
\;\;\;\;y.im \cdot \frac{{t\_0}^{\left(\frac{y.re}{2}\right)}}{\frac{2}{\log t\_0}}\\
\mathbf{elif}\;x.re \leq 1.35 \cdot 10^{+168}:\\
\;\;\;\;\sin t\_1 \cdot {x.re}^{y.re}\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \left(\log x.re \cdot e^{y.re \cdot \log x.re}\right)\\
\end{array}
\end{array}
if x.re < 1.25000000000000008e-64Initial program 39.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified72.6%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified73.6%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6445.8%
Simplified45.8%
if 1.25000000000000008e-64 < x.re < 8.2000000000000004e70Initial program 67.6%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified74.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6467.9%
Simplified67.9%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr35.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.9%
Simplified60.9%
associate-*r*N/A
metadata-evalN/A
div-invN/A
clear-numN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr60.8%
if 8.2000000000000004e70 < x.re < 1.35000000000000008e168Initial program 42.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6469.8%
Simplified69.8%
Taylor expanded in x.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f6469.8%
Simplified69.8%
if 1.35000000000000008e168 < x.re Initial program 0.0%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified73.7%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6473.7%
Simplified73.7%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr0.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6429.8%
Simplified29.8%
Taylor expanded in x.re around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
Simplified72.0%
Final simplification53.5%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* y.re (atan2 x.im x.re))))
(if (<= y.re -9.8e-45)
(* t_0 (pow (hypot x.im x.re) y.re))
(if (<= y.re 4.2e+40)
(* y.re (* (atan2 x.im x.re) (exp (* (atan2 x.im x.re) (- 0.0 y.im)))))
(* (sin t_0) (pow x.re y.re))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_0 * pow(hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 4.2e+40) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
} else {
tmp = sin(t_0) * pow(x_46_re, y_46_re);
}
return tmp;
}
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * Math.atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -9.8e-45) {
tmp = t_0 * Math.pow(Math.hypot(x_46_im, x_46_re), y_46_re);
} else if (y_46_re <= 4.2e+40) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * Math.exp((Math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im))));
} else {
tmp = Math.sin(t_0) * Math.pow(x_46_re, y_46_re);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * math.atan2(x_46_im, x_46_re) tmp = 0 if y_46_re <= -9.8e-45: tmp = t_0 * math.pow(math.hypot(x_46_im, x_46_re), y_46_re) elif y_46_re <= 4.2e+40: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * math.exp((math.atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))) else: tmp = math.sin(t_0) * math.pow(x_46_re, y_46_re) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * atan(x_46_im, x_46_re)) tmp = 0.0 if (y_46_re <= -9.8e-45) tmp = Float64(t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re)); elseif (y_46_re <= 4.2e+40) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * exp(Float64(atan(x_46_im, x_46_re) * Float64(0.0 - y_46_im))))); else tmp = Float64(sin(t_0) * (x_46_re ^ y_46_re)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * atan2(x_46_im, x_46_re); tmp = 0.0; if (y_46_re <= -9.8e-45) tmp = t_0 * (hypot(x_46_im, x_46_re) ^ y_46_re); elseif (y_46_re <= 4.2e+40) tmp = y_46_re * (atan2(x_46_im, x_46_re) * exp((atan2(x_46_im, x_46_re) * (0.0 - y_46_im)))); else tmp = sin(t_0) * (x_46_re ^ y_46_re); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -9.8e-45], N[(t$95$0 * N[Power[N[Sqrt[x$46$im ^ 2 + x$46$re ^ 2], $MachinePrecision], y$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 4.2e+40], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[Exp[N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(0.0 - y$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Sin[t$95$0], $MachinePrecision] * N[Power[x$46$re, y$46$re], $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{if}\;y.re \leq -9.8 \cdot 10^{-45}:\\
\;\;\;\;t\_0 \cdot {\left(\mathsf{hypot}\left(x.im, x.re\right)\right)}^{y.re}\\
\mathbf{elif}\;y.re \leq 4.2 \cdot 10^{+40}:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(0 - y.im\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\sin t\_0 \cdot {x.re}^{y.re}\\
\end{array}
\end{array}
if y.re < -9.7999999999999996e-45Initial program 38.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified70.0%
Taylor expanded in y.re around 0
+-lowering-+.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
cos-lowering-cos.f64N/A
Simplified73.3%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.5%
Simplified78.5%
if -9.7999999999999996e-45 < y.re < 4.2000000000000002e40Initial program 39.8%
Taylor expanded in y.im around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6436.1%
Simplified36.1%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6453.0%
Simplified53.0%
if 4.2000000000000002e40 < y.re Initial program 34.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6461.1%
Simplified61.1%
Taylor expanded in x.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f6453.9%
Simplified53.9%
Final simplification61.1%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (* x.re x.re) (* x.im x.im))))
(if (<= x.re -5.5e+129)
(* y.re (* (atan2 x.im x.re) (- 1.0 (* y.re (log (/ -1.0 x.re))))))
(if (<= x.re 1.28e-15)
(* y.im (/ (pow t_0 (/ y.re 2.0)) (/ 2.0 (log t_0))))
(* y.im (* (log x.re) (exp (* y.re (log x.re)))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double tmp;
if (x_46_re <= -5.5e+129) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * (1.0 - (y_46_re * log((-1.0 / x_46_re)))));
} else if (x_46_re <= 1.28e-15) {
tmp = y_46_im * (pow(t_0, (y_46_re / 2.0)) / (2.0 / log(t_0)));
} else {
tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re))));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: tmp
t_0 = (x_46re * x_46re) + (x_46im * x_46im)
if (x_46re <= (-5.5d+129)) then
tmp = y_46re * (atan2(x_46im, x_46re) * (1.0d0 - (y_46re * log(((-1.0d0) / x_46re)))))
else if (x_46re <= 1.28d-15) then
tmp = y_46im * ((t_0 ** (y_46re / 2.0d0)) / (2.0d0 / log(t_0)))
else
tmp = y_46im * (log(x_46re) * exp((y_46re * log(x_46re))))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double tmp;
if (x_46_re <= -5.5e+129) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * (1.0 - (y_46_re * Math.log((-1.0 / x_46_re)))));
} else if (x_46_re <= 1.28e-15) {
tmp = y_46_im * (Math.pow(t_0, (y_46_re / 2.0)) / (2.0 / Math.log(t_0)));
} else {
tmp = y_46_im * (Math.log(x_46_re) * Math.exp((y_46_re * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im) tmp = 0 if x_46_re <= -5.5e+129: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * (1.0 - (y_46_re * math.log((-1.0 / x_46_re))))) elif x_46_re <= 1.28e-15: tmp = y_46_im * (math.pow(t_0, (y_46_re / 2.0)) / (2.0 / math.log(t_0))) else: tmp = y_46_im * (math.log(x_46_re) * math.exp((y_46_re * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) tmp = 0.0 if (x_46_re <= -5.5e+129) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * Float64(1.0 - Float64(y_46_re * log(Float64(-1.0 / x_46_re)))))); elseif (x_46_re <= 1.28e-15) tmp = Float64(y_46_im * Float64((t_0 ^ Float64(y_46_re / 2.0)) / Float64(2.0 / log(t_0)))); else tmp = Float64(y_46_im * Float64(log(x_46_re) * exp(Float64(y_46_re * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im); tmp = 0.0; if (x_46_re <= -5.5e+129) tmp = y_46_re * (atan2(x_46_im, x_46_re) * (1.0 - (y_46_re * log((-1.0 / x_46_re))))); elseif (x_46_re <= 1.28e-15) tmp = y_46_im * ((t_0 ^ (y_46_re / 2.0)) / (2.0 / log(t_0))); else tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x$46$re, -5.5e+129], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(1.0 - N[(y$46$re * N[Log[N[(-1.0 / x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$re, 1.28e-15], N[(y$46$im * N[(N[Power[t$95$0, N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision] / N[(2.0 / N[Log[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y$46$im * N[(N[Log[x$46$re], $MachinePrecision] * N[Exp[N[(y$46$re * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x.re \cdot x.re + x.im \cdot x.im\\
\mathbf{if}\;x.re \leq -5.5 \cdot 10^{+129}:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(1 - y.re \cdot \log \left(\frac{-1}{x.re}\right)\right)\right)\\
\mathbf{elif}\;x.re \leq 1.28 \cdot 10^{-15}:\\
\;\;\;\;y.im \cdot \frac{{t\_0}^{\left(\frac{y.re}{2}\right)}}{\frac{2}{\log t\_0}}\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \left(\log x.re \cdot e^{y.re \cdot \log x.re}\right)\\
\end{array}
\end{array}
if x.re < -5.49999999999999984e129Initial program 5.6%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.8%
Simplified51.8%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6418.9%
Simplified18.9%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr9.7%
Taylor expanded in x.re around -inf
*-lowering-*.f64N/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
/-lowering-/.f64N/A
atan2-lowering-atan2.f6418.9%
Simplified18.9%
if -5.49999999999999984e129 < x.re < 1.28000000000000009e-15Initial program 51.4%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified73.6%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6459.6%
Simplified59.6%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr14.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6434.1%
Simplified34.1%
associate-*r*N/A
metadata-evalN/A
div-invN/A
clear-numN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr32.6%
if 1.28000000000000009e-15 < x.re Initial program 30.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified72.5%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6460.3%
Simplified60.3%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.8%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6436.3%
Simplified36.3%
Taylor expanded in x.re around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
Simplified57.1%
Final simplification38.3%
(FPCore (x.re x.im y.re y.im) :precision binary64 (if (<= x.re 1.35e-37) (* (sin (* y.re (atan2 x.im x.re))) (pow x.im y.re)) (* y.im (* (log x.re) (exp (* y.re (log x.re)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (x_46_re <= 1.35e-37) {
tmp = sin((y_46_re * atan2(x_46_im, x_46_re))) * pow(x_46_im, y_46_re);
} else {
tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re))));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: tmp
if (x_46re <= 1.35d-37) then
tmp = sin((y_46re * atan2(x_46im, x_46re))) * (x_46im ** y_46re)
else
tmp = y_46im * (log(x_46re) * exp((y_46re * log(x_46re))))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (x_46_re <= 1.35e-37) {
tmp = Math.sin((y_46_re * Math.atan2(x_46_im, x_46_re))) * Math.pow(x_46_im, y_46_re);
} else {
tmp = y_46_im * (Math.log(x_46_re) * Math.exp((y_46_re * Math.log(x_46_re))));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if x_46_re <= 1.35e-37: tmp = math.sin((y_46_re * math.atan2(x_46_im, x_46_re))) * math.pow(x_46_im, y_46_re) else: tmp = y_46_im * (math.log(x_46_re) * math.exp((y_46_re * math.log(x_46_re)))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (x_46_re <= 1.35e-37) tmp = Float64(sin(Float64(y_46_re * atan(x_46_im, x_46_re))) * (x_46_im ^ y_46_re)); else tmp = Float64(y_46_im * Float64(log(x_46_re) * exp(Float64(y_46_re * log(x_46_re))))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0; if (x_46_re <= 1.35e-37) tmp = sin((y_46_re * atan2(x_46_im, x_46_re))) * (x_46_im ^ y_46_re); else tmp = y_46_im * (log(x_46_re) * exp((y_46_re * log(x_46_re)))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[x$46$re, 1.35e-37], N[(N[Sin[N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Power[x$46$im, y$46$re], $MachinePrecision]), $MachinePrecision], N[(y$46$im * N[(N[Log[x$46$re], $MachinePrecision] * N[Exp[N[(y$46$re * N[Log[x$46$re], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x.re \leq 1.35 \cdot 10^{-37}:\\
\;\;\;\;\sin \left(y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right) \cdot {x.im}^{y.re}\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \left(\log x.re \cdot e^{y.re \cdot \log x.re}\right)\\
\end{array}
\end{array}
if x.re < 1.35000000000000008e-37Initial program 40.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6448.5%
Simplified48.5%
Taylor expanded in x.re around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f6434.7%
Simplified34.7%
if 1.35000000000000008e-37 < x.re Initial program 35.6%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified74.4%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6463.1%
Simplified63.1%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr17.7%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6440.5%
Simplified40.5%
Taylor expanded in x.re around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
Simplified56.6%
Final simplification42.0%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (* x.re x.re) (* x.im x.im)))
(t_1 (log t_0))
(t_2 (/ 2.0 t_1)))
(if (<= y.re -4.6)
(* (* y.im 0.5) (* (pow x.im y.re) (log (* x.im x.im))))
(if (<= y.re -4.6e-250)
(* y.re (atan2 x.im x.re))
(if (<= y.re 6.8e-89)
(* t_1 (* y.im 0.5))
(if (<= y.re 2100.0)
(* (atan2 x.im x.re) (* y.re (+ (/ y.re t_2) 1.0)))
(* y.im (/ (pow t_0 (/ y.re 2.0)) t_2))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = log(t_0);
double t_2 = 2.0 / t_1;
double tmp;
if (y_46_re <= -4.6) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else if (y_46_re <= 6.8e-89) {
tmp = t_1 * (y_46_im * 0.5);
} else if (y_46_re <= 2100.0) {
tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0));
} else {
tmp = y_46_im * (pow(t_0, (y_46_re / 2.0)) / t_2);
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (x_46re * x_46re) + (x_46im * x_46im)
t_1 = log(t_0)
t_2 = 2.0d0 / t_1
if (y_46re <= (-4.6d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * log((x_46im * x_46im)))
else if (y_46re <= (-4.6d-250)) then
tmp = y_46re * atan2(x_46im, x_46re)
else if (y_46re <= 6.8d-89) then
tmp = t_1 * (y_46im * 0.5d0)
else if (y_46re <= 2100.0d0) then
tmp = atan2(x_46im, x_46re) * (y_46re * ((y_46re / t_2) + 1.0d0))
else
tmp = y_46im * ((t_0 ** (y_46re / 2.0d0)) / t_2)
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im);
double t_1 = Math.log(t_0);
double t_2 = 2.0 / t_1;
double tmp;
if (y_46_re <= -4.6) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * Math.log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else if (y_46_re <= 6.8e-89) {
tmp = t_1 * (y_46_im * 0.5);
} else if (y_46_re <= 2100.0) {
tmp = Math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0));
} else {
tmp = y_46_im * (Math.pow(t_0, (y_46_re / 2.0)) / t_2);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im) t_1 = math.log(t_0) t_2 = 2.0 / t_1 tmp = 0 if y_46_re <= -4.6: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * math.log((x_46_im * x_46_im))) elif y_46_re <= -4.6e-250: tmp = y_46_re * math.atan2(x_46_im, x_46_re) elif y_46_re <= 6.8e-89: tmp = t_1 * (y_46_im * 0.5) elif y_46_re <= 2100.0: tmp = math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0)) else: tmp = y_46_im * (math.pow(t_0, (y_46_re / 2.0)) / t_2) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im)) t_1 = log(t_0) t_2 = Float64(2.0 / t_1) tmp = 0.0 if (y_46_re <= -4.6) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * log(Float64(x_46_im * x_46_im)))); elseif (y_46_re <= -4.6e-250) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); elseif (y_46_re <= 6.8e-89) tmp = Float64(t_1 * Float64(y_46_im * 0.5)); elseif (y_46_re <= 2100.0) tmp = Float64(atan(x_46_im, x_46_re) * Float64(y_46_re * Float64(Float64(y_46_re / t_2) + 1.0))); else tmp = Float64(y_46_im * Float64((t_0 ^ Float64(y_46_re / 2.0)) / t_2)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = (x_46_re * x_46_re) + (x_46_im * x_46_im); t_1 = log(t_0); t_2 = 2.0 / t_1; tmp = 0.0; if (y_46_re <= -4.6) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * log((x_46_im * x_46_im))); elseif (y_46_re <= -4.6e-250) tmp = y_46_re * atan2(x_46_im, x_46_re); elseif (y_46_re <= 6.8e-89) tmp = t_1 * (y_46_im * 0.5); elseif (y_46_re <= 2100.0) tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / t_2) + 1.0)); else tmp = y_46_im * ((t_0 ^ (y_46_re / 2.0)) / t_2); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Log[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(2.0 / t$95$1), $MachinePrecision]}, If[LessEqual[y$46$re, -4.6], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -4.6e-250], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 6.8e-89], N[(t$95$1 * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2100.0], N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(y$46$re * N[(N[(y$46$re / t$95$2), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y$46$im * N[(N[Power[t$95$0, N[(y$46$re / 2.0), $MachinePrecision]], $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x.re \cdot x.re + x.im \cdot x.im\\
t_1 := \log t\_0\\
t_2 := \frac{2}{t\_1}\\
\mathbf{if}\;y.re \leq -4.6:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot \log \left(x.im \cdot x.im\right)\right)\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250}:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{elif}\;y.re \leq 6.8 \cdot 10^{-89}:\\
\;\;\;\;t\_1 \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 2100:\\
\;\;\;\;\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(y.re \cdot \left(\frac{y.re}{t\_2} + 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;y.im \cdot \frac{{t\_0}^{\left(\frac{y.re}{2}\right)}}{t\_2}\\
\end{array}
\end{array}
if y.re < -4.5999999999999996Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -4.5999999999999996 < y.re < -4.5999999999999999e-250Initial program 39.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6440.6%
Simplified40.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6435.8%
Simplified35.8%
if -4.5999999999999999e-250 < y.re < 6.8000000000000001e-89Initial program 45.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified87.5%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.4%
Simplified80.4%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr24.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6428.4%
Simplified28.4%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.4%
Simplified28.4%
if 6.8000000000000001e-89 < y.re < 2100Initial program 36.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6454.7%
Simplified54.7%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6446.7%
Simplified46.7%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr48.5%
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
Applied egg-rr48.5%
if 2100 < y.re Initial program 33.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified52.9%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6439.2%
Simplified39.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr2.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.2%
Simplified51.2%
associate-*r*N/A
metadata-evalN/A
div-invN/A
clear-numN/A
sqrt-pow2N/A
+-commutativeN/A
sqrt-pow2N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr51.2%
Final simplification38.8%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (+ (* x.re x.re) (* x.im x.im)))))
(if (<= y.re -4.2)
(* (* y.im 0.5) (* (pow x.im y.re) (log (* x.im x.im))))
(if (<= y.re -4.6e-250)
(* y.re (atan2 x.im x.re))
(if (<= y.re 6.8e-87)
(* t_0 (* y.im 0.5))
(if (<= y.re 3.7e+27)
(* (atan2 x.im x.re) (* y.re (+ (/ y.re (/ 2.0 t_0)) 1.0)))
(* (* y.im 0.5) (* (pow x.re y.re) (log (* x.re x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log(((x_46_re * x_46_re) + (x_46_im * x_46_im)));
double tmp;
if (y_46_re <= -4.2) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else if (y_46_re <= 6.8e-87) {
tmp = t_0 * (y_46_im * 0.5);
} else if (y_46_re <= 3.7e+27) {
tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / (2.0 / t_0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (pow(x_46_re, y_46_re) * log((x_46_re * x_46_re)));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: tmp
t_0 = log(((x_46re * x_46re) + (x_46im * x_46im)))
if (y_46re <= (-4.2d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * log((x_46im * x_46im)))
else if (y_46re <= (-4.6d-250)) then
tmp = y_46re * atan2(x_46im, x_46re)
else if (y_46re <= 6.8d-87) then
tmp = t_0 * (y_46im * 0.5d0)
else if (y_46re <= 3.7d+27) then
tmp = atan2(x_46im, x_46re) * (y_46re * ((y_46re / (2.0d0 / t_0)) + 1.0d0))
else
tmp = (y_46im * 0.5d0) * ((x_46re ** y_46re) * log((x_46re * x_46re)))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im)));
double tmp;
if (y_46_re <= -4.2) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * Math.log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else if (y_46_re <= 6.8e-87) {
tmp = t_0 * (y_46_im * 0.5);
} else if (y_46_re <= 3.7e+27) {
tmp = Math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / (2.0 / t_0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_re, y_46_re) * Math.log((x_46_re * x_46_re)));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) tmp = 0 if y_46_re <= -4.2: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * math.log((x_46_im * x_46_im))) elif y_46_re <= -4.6e-250: tmp = y_46_re * math.atan2(x_46_im, x_46_re) elif y_46_re <= 6.8e-87: tmp = t_0 * (y_46_im * 0.5) elif y_46_re <= 3.7e+27: tmp = math.atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / (2.0 / t_0)) + 1.0)) else: tmp = (y_46_im * 0.5) * (math.pow(x_46_re, y_46_re) * math.log((x_46_re * x_46_re))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) tmp = 0.0 if (y_46_re <= -4.2) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * log(Float64(x_46_im * x_46_im)))); elseif (y_46_re <= -4.6e-250) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); elseif (y_46_re <= 6.8e-87) tmp = Float64(t_0 * Float64(y_46_im * 0.5)); elseif (y_46_re <= 3.7e+27) tmp = Float64(atan(x_46_im, x_46_re) * Float64(y_46_re * Float64(Float64(y_46_re / Float64(2.0 / t_0)) + 1.0))); else tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_re ^ y_46_re) * log(Float64(x_46_re * x_46_re)))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))); tmp = 0.0; if (y_46_re <= -4.2) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * log((x_46_im * x_46_im))); elseif (y_46_re <= -4.6e-250) tmp = y_46_re * atan2(x_46_im, x_46_re); elseif (y_46_re <= 6.8e-87) tmp = t_0 * (y_46_im * 0.5); elseif (y_46_re <= 3.7e+27) tmp = atan2(x_46_im, x_46_re) * (y_46_re * ((y_46_re / (2.0 / t_0)) + 1.0)); else tmp = (y_46_im * 0.5) * ((x_46_re ^ y_46_re) * log((x_46_re * x_46_re))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[y$46$re, -4.2], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -4.6e-250], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 6.8e-87], N[(t$95$0 * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 3.7e+27], N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(y$46$re * N[(N[(y$46$re / N[(2.0 / t$95$0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$re, y$46$re], $MachinePrecision] * N[Log[N[(x$46$re * x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(x.re \cdot x.re + x.im \cdot x.im\right)\\
\mathbf{if}\;y.re \leq -4.2:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot \log \left(x.im \cdot x.im\right)\right)\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250}:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{elif}\;y.re \leq 6.8 \cdot 10^{-87}:\\
\;\;\;\;t\_0 \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 3.7 \cdot 10^{+27}:\\
\;\;\;\;\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(y.re \cdot \left(\frac{y.re}{\frac{2}{t\_0}} + 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.re}^{y.re} \cdot \log \left(x.re \cdot x.re\right)\right)\\
\end{array}
\end{array}
if y.re < -4.20000000000000018Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -4.20000000000000018 < y.re < -4.5999999999999999e-250Initial program 39.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6440.6%
Simplified40.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6435.8%
Simplified35.8%
if -4.5999999999999999e-250 < y.re < 6.7999999999999997e-87Initial program 44.4%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified87.9%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.2%
Simplified78.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr23.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6427.6%
Simplified27.6%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6427.6%
Simplified27.6%
if 6.7999999999999997e-87 < y.re < 3.70000000000000002e27Initial program 35.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6450.7%
Simplified50.7%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6431.7%
Simplified31.7%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr45.6%
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
*-lowering-*.f64N/A
Applied egg-rr45.6%
if 3.70000000000000002e27 < y.re Initial program 34.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified53.5%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.2%
Simplified37.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr2.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.3%
Simplified51.3%
Taylor expanded in x.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6446.6%
Simplified46.6%
Final simplification37.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (+ (* x.re x.re) (* x.im x.im)))))
(if (<= y.re -3.0)
(* (* y.im 0.5) (* (pow x.im y.re) (log (* x.im x.im))))
(if (<= y.re -4.6e-250)
(* y.re (atan2 x.im x.re))
(if (<= y.re 3.15e-93)
(* t_0 (* y.im 0.5))
(if (<= y.re 1e+25)
(* y.re (* (atan2 x.im x.re) (+ (* y.re (/ t_0 2.0)) 1.0)))
(* (* y.im 0.5) (* (pow x.re y.re) (log (* x.re x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log(((x_46_re * x_46_re) + (x_46_im * x_46_im)));
double tmp;
if (y_46_re <= -3.0) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else if (y_46_re <= 3.15e-93) {
tmp = t_0 * (y_46_im * 0.5);
} else if (y_46_re <= 1e+25) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (pow(x_46_re, y_46_re) * log((x_46_re * x_46_re)));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: tmp
t_0 = log(((x_46re * x_46re) + (x_46im * x_46im)))
if (y_46re <= (-3.0d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * log((x_46im * x_46im)))
else if (y_46re <= (-4.6d-250)) then
tmp = y_46re * atan2(x_46im, x_46re)
else if (y_46re <= 3.15d-93) then
tmp = t_0 * (y_46im * 0.5d0)
else if (y_46re <= 1d+25) then
tmp = y_46re * (atan2(x_46im, x_46re) * ((y_46re * (t_0 / 2.0d0)) + 1.0d0))
else
tmp = (y_46im * 0.5d0) * ((x_46re ** y_46re) * log((x_46re * x_46re)))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im)));
double tmp;
if (y_46_re <= -3.0) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * Math.log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else if (y_46_re <= 3.15e-93) {
tmp = t_0 * (y_46_im * 0.5);
} else if (y_46_re <= 1e+25) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_re, y_46_re) * Math.log((x_46_re * x_46_re)));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) tmp = 0 if y_46_re <= -3.0: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * math.log((x_46_im * x_46_im))) elif y_46_re <= -4.6e-250: tmp = y_46_re * math.atan2(x_46_im, x_46_re) elif y_46_re <= 3.15e-93: tmp = t_0 * (y_46_im * 0.5) elif y_46_re <= 1e+25: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0)) else: tmp = (y_46_im * 0.5) * (math.pow(x_46_re, y_46_re) * math.log((x_46_re * x_46_re))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) tmp = 0.0 if (y_46_re <= -3.0) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * log(Float64(x_46_im * x_46_im)))); elseif (y_46_re <= -4.6e-250) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); elseif (y_46_re <= 3.15e-93) tmp = Float64(t_0 * Float64(y_46_im * 0.5)); elseif (y_46_re <= 1e+25) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * Float64(Float64(y_46_re * Float64(t_0 / 2.0)) + 1.0))); else tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_re ^ y_46_re) * log(Float64(x_46_re * x_46_re)))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))); tmp = 0.0; if (y_46_re <= -3.0) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * log((x_46_im * x_46_im))); elseif (y_46_re <= -4.6e-250) tmp = y_46_re * atan2(x_46_im, x_46_re); elseif (y_46_re <= 3.15e-93) tmp = t_0 * (y_46_im * 0.5); elseif (y_46_re <= 1e+25) tmp = y_46_re * (atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0)); else tmp = (y_46_im * 0.5) * ((x_46_re ^ y_46_re) * log((x_46_re * x_46_re))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[y$46$re, -3.0], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -4.6e-250], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 3.15e-93], N[(t$95$0 * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1e+25], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(N[(y$46$re * N[(t$95$0 / 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$re, y$46$re], $MachinePrecision] * N[Log[N[(x$46$re * x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(x.re \cdot x.re + x.im \cdot x.im\right)\\
\mathbf{if}\;y.re \leq -3:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot \log \left(x.im \cdot x.im\right)\right)\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250}:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{elif}\;y.re \leq 3.15 \cdot 10^{-93}:\\
\;\;\;\;t\_0 \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 10^{+25}:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(y.re \cdot \frac{t\_0}{2} + 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.re}^{y.re} \cdot \log \left(x.re \cdot x.re\right)\right)\\
\end{array}
\end{array}
if y.re < -3Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -3 < y.re < -4.5999999999999999e-250Initial program 39.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6440.6%
Simplified40.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6435.8%
Simplified35.8%
if -4.5999999999999999e-250 < y.re < 3.15000000000000014e-93Initial program 45.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified87.5%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6480.4%
Simplified80.4%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr24.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6428.4%
Simplified28.4%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.4%
Simplified28.4%
if 3.15000000000000014e-93 < y.re < 1.00000000000000009e25Initial program 33.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6453.6%
Simplified53.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6435.8%
Simplified35.8%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr43.0%
if 1.00000000000000009e25 < y.re Initial program 34.9%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified53.5%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.2%
Simplified37.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr2.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.3%
Simplified51.3%
Taylor expanded in x.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6446.6%
Simplified46.6%
Final simplification37.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (log (* x.im x.im))))
(if (<= y.re -8.5)
(* (* y.im 0.5) (* (pow x.im y.re) t_0))
(if (<= y.re -1.16e-252)
(* y.re (atan2 x.im x.re))
(if (<= y.re 1e-86)
(* (log (+ (* x.re x.re) (* x.im x.im))) (* y.im 0.5))
(if (<= y.re 12500.0)
(* y.re (* (atan2 x.im x.re) (+ (* y.re (/ t_0 2.0)) 1.0)))
(* (* y.im 0.5) (* (pow x.re y.re) (log (* x.re x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = log((x_46_im * x_46_im));
double tmp;
if (y_46_re <= -8.5) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * t_0);
} else if (y_46_re <= -1.16e-252) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else if (y_46_re <= 1e-86) {
tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else if (y_46_re <= 12500.0) {
tmp = y_46_re * (atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (pow(x_46_re, y_46_re) * log((x_46_re * x_46_re)));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: tmp
t_0 = log((x_46im * x_46im))
if (y_46re <= (-8.5d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * t_0)
else if (y_46re <= (-1.16d-252)) then
tmp = y_46re * atan2(x_46im, x_46re)
else if (y_46re <= 1d-86) then
tmp = log(((x_46re * x_46re) + (x_46im * x_46im))) * (y_46im * 0.5d0)
else if (y_46re <= 12500.0d0) then
tmp = y_46re * (atan2(x_46im, x_46re) * ((y_46re * (t_0 / 2.0d0)) + 1.0d0))
else
tmp = (y_46im * 0.5d0) * ((x_46re ** y_46re) * log((x_46re * x_46re)))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = Math.log((x_46_im * x_46_im));
double tmp;
if (y_46_re <= -8.5) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * t_0);
} else if (y_46_re <= -1.16e-252) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else if (y_46_re <= 1e-86) {
tmp = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else if (y_46_re <= 12500.0) {
tmp = y_46_re * (Math.atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0));
} else {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_re, y_46_re) * Math.log((x_46_re * x_46_re)));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = math.log((x_46_im * x_46_im)) tmp = 0 if y_46_re <= -8.5: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * t_0) elif y_46_re <= -1.16e-252: tmp = y_46_re * math.atan2(x_46_im, x_46_re) elif y_46_re <= 1e-86: tmp = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5) elif y_46_re <= 12500.0: tmp = y_46_re * (math.atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0)) else: tmp = (y_46_im * 0.5) * (math.pow(x_46_re, y_46_re) * math.log((x_46_re * x_46_re))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log(Float64(x_46_im * x_46_im)) tmp = 0.0 if (y_46_re <= -8.5) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * t_0)); elseif (y_46_re <= -1.16e-252) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); elseif (y_46_re <= 1e-86) tmp = Float64(log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) * Float64(y_46_im * 0.5)); elseif (y_46_re <= 12500.0) tmp = Float64(y_46_re * Float64(atan(x_46_im, x_46_re) * Float64(Float64(y_46_re * Float64(t_0 / 2.0)) + 1.0))); else tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_re ^ y_46_re) * log(Float64(x_46_re * x_46_re)))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = log((x_46_im * x_46_im)); tmp = 0.0; if (y_46_re <= -8.5) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * t_0); elseif (y_46_re <= -1.16e-252) tmp = y_46_re * atan2(x_46_im, x_46_re); elseif (y_46_re <= 1e-86) tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5); elseif (y_46_re <= 12500.0) tmp = y_46_re * (atan2(x_46_im, x_46_re) * ((y_46_re * (t_0 / 2.0)) + 1.0)); else tmp = (y_46_im * 0.5) * ((x_46_re ^ y_46_re) * log((x_46_re * x_46_re))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[y$46$re, -8.5], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -1.16e-252], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1e-86], N[(N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 12500.0], N[(y$46$re * N[(N[ArcTan[x$46$im / x$46$re], $MachinePrecision] * N[(N[(y$46$re * N[(t$95$0 / 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$re, y$46$re], $MachinePrecision] * N[Log[N[(x$46$re * x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \log \left(x.im \cdot x.im\right)\\
\mathbf{if}\;y.re \leq -8.5:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot t\_0\right)\\
\mathbf{elif}\;y.re \leq -1.16 \cdot 10^{-252}:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{elif}\;y.re \leq 10^{-86}:\\
\;\;\;\;\log \left(x.re \cdot x.re + x.im \cdot x.im\right) \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 12500:\\
\;\;\;\;y.re \cdot \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(y.re \cdot \frac{t\_0}{2} + 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.re}^{y.re} \cdot \log \left(x.re \cdot x.re\right)\right)\\
\end{array}
\end{array}
if y.re < -8.5Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -8.5 < y.re < -1.1599999999999999e-252Initial program 39.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6440.6%
Simplified40.6%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6435.8%
Simplified35.8%
if -1.1599999999999999e-252 < y.re < 1.00000000000000008e-86Initial program 44.4%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified87.9%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6478.2%
Simplified78.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr23.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6427.6%
Simplified27.6%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6427.6%
Simplified27.6%
if 1.00000000000000008e-86 < y.re < 12500Initial program 39.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6450.8%
Simplified50.8%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f64N/A
atan2-lowering-atan2.f64N/A
atan2-lowering-atan2.f6442.1%
Simplified42.1%
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr52.4%
Taylor expanded in x.re around 0
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f6449.7%
Simplified49.7%
if 12500 < y.re Initial program 33.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified52.9%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6439.2%
Simplified39.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr2.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.2%
Simplified51.2%
Taylor expanded in x.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6443.3%
Simplified43.3%
Final simplification37.0%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (* y.re (atan2 x.im x.re))))
(if (<= y.re -96.0)
(* (* y.im 0.5) (* (pow x.im y.re) (log (* x.im x.im))))
(if (<= y.re -4.6e-250)
t_0
(if (<= y.re 2.4e-95)
(* (log (+ (* x.re x.re) (* x.im x.im))) (* y.im 0.5))
(if (<= y.re 2100.0)
t_0
(* (* y.im 0.5) (* (pow x.re y.re) (log (* x.re x.re))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -96.0) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = t_0;
} else if (y_46_re <= 2.4e-95) {
tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else if (y_46_re <= 2100.0) {
tmp = t_0;
} else {
tmp = (y_46_im * 0.5) * (pow(x_46_re, y_46_re) * log((x_46_re * x_46_re)));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: t_0
real(8) :: tmp
t_0 = y_46re * atan2(x_46im, x_46re)
if (y_46re <= (-96.0d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * log((x_46im * x_46im)))
else if (y_46re <= (-4.6d-250)) then
tmp = t_0
else if (y_46re <= 2.4d-95) then
tmp = log(((x_46re * x_46re) + (x_46im * x_46im))) * (y_46im * 0.5d0)
else if (y_46re <= 2100.0d0) then
tmp = t_0
else
tmp = (y_46im * 0.5d0) * ((x_46re ** y_46re) * log((x_46re * x_46re)))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = y_46_re * Math.atan2(x_46_im, x_46_re);
double tmp;
if (y_46_re <= -96.0) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * Math.log((x_46_im * x_46_im)));
} else if (y_46_re <= -4.6e-250) {
tmp = t_0;
} else if (y_46_re <= 2.4e-95) {
tmp = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else if (y_46_re <= 2100.0) {
tmp = t_0;
} else {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_re, y_46_re) * Math.log((x_46_re * x_46_re)));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = y_46_re * math.atan2(x_46_im, x_46_re) tmp = 0 if y_46_re <= -96.0: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * math.log((x_46_im * x_46_im))) elif y_46_re <= -4.6e-250: tmp = t_0 elif y_46_re <= 2.4e-95: tmp = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5) elif y_46_re <= 2100.0: tmp = t_0 else: tmp = (y_46_im * 0.5) * (math.pow(x_46_re, y_46_re) * math.log((x_46_re * x_46_re))) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(y_46_re * atan(x_46_im, x_46_re)) tmp = 0.0 if (y_46_re <= -96.0) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * log(Float64(x_46_im * x_46_im)))); elseif (y_46_re <= -4.6e-250) tmp = t_0; elseif (y_46_re <= 2.4e-95) tmp = Float64(log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) * Float64(y_46_im * 0.5)); elseif (y_46_re <= 2100.0) tmp = t_0; else tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_re ^ y_46_re) * log(Float64(x_46_re * x_46_re)))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = y_46_re * atan2(x_46_im, x_46_re); tmp = 0.0; if (y_46_re <= -96.0) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * log((x_46_im * x_46_im))); elseif (y_46_re <= -4.6e-250) tmp = t_0; elseif (y_46_re <= 2.4e-95) tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5); elseif (y_46_re <= 2100.0) tmp = t_0; else tmp = (y_46_im * 0.5) * ((x_46_re ^ y_46_re) * log((x_46_re * x_46_re))); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -96.0], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -4.6e-250], t$95$0, If[LessEqual[y$46$re, 2.4e-95], N[(N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2100.0], t$95$0, N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$re, y$46$re], $MachinePrecision] * N[Log[N[(x$46$re * x$46$re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{if}\;y.re \leq -96:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot \log \left(x.im \cdot x.im\right)\right)\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{-95}:\\
\;\;\;\;\log \left(x.re \cdot x.re + x.im \cdot x.im\right) \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{elif}\;y.re \leq 2100:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.re}^{y.re} \cdot \log \left(x.re \cdot x.re\right)\right)\\
\end{array}
\end{array}
if y.re < -96Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -96 < y.re < -4.5999999999999999e-250 or 2.4e-95 < y.re < 2100Initial program 37.6%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6445.2%
Simplified45.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6438.1%
Simplified38.1%
if -4.5999999999999999e-250 < y.re < 2.4e-95Initial program 46.4%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified88.8%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6481.6%
Simplified81.6%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr24.4%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6428.8%
Simplified28.8%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.8%
Simplified28.8%
if 2100 < y.re Initial program 33.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified52.9%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6439.2%
Simplified39.2%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr2.0%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6451.2%
Simplified51.2%
Taylor expanded in x.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6443.3%
Simplified43.3%
Final simplification36.7%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= x.im -1e-127)
(* y.re (atan2 x.im x.re))
(if (<= x.im 1.4e-201)
(* (log (+ (* x.re x.re) (* x.im x.im))) (* y.im 0.5))
(* (pow x.im y.re) (* y.im (log x.im))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (x_46_im <= -1e-127) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else if (x_46_im <= 1.4e-201) {
tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else {
tmp = pow(x_46_im, y_46_re) * (y_46_im * log(x_46_im));
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: tmp
if (x_46im <= (-1d-127)) then
tmp = y_46re * atan2(x_46im, x_46re)
else if (x_46im <= 1.4d-201) then
tmp = log(((x_46re * x_46re) + (x_46im * x_46im))) * (y_46im * 0.5d0)
else
tmp = (x_46im ** y_46re) * (y_46im * log(x_46im))
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (x_46_im <= -1e-127) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else if (x_46_im <= 1.4e-201) {
tmp = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
} else {
tmp = Math.pow(x_46_im, y_46_re) * (y_46_im * Math.log(x_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if x_46_im <= -1e-127: tmp = y_46_re * math.atan2(x_46_im, x_46_re) elif x_46_im <= 1.4e-201: tmp = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5) else: tmp = math.pow(x_46_im, y_46_re) * (y_46_im * math.log(x_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (x_46_im <= -1e-127) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); elseif (x_46_im <= 1.4e-201) tmp = Float64(log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) * Float64(y_46_im * 0.5)); else tmp = Float64((x_46_im ^ y_46_re) * Float64(y_46_im * log(x_46_im))); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0; if (x_46_im <= -1e-127) tmp = y_46_re * atan2(x_46_im, x_46_re); elseif (x_46_im <= 1.4e-201) tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5); else tmp = (x_46_im ^ y_46_re) * (y_46_im * log(x_46_im)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[x$46$im, -1e-127], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], If[LessEqual[x$46$im, 1.4e-201], N[(N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[(y$46$im * N[Log[x$46$im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x.im \leq -1 \cdot 10^{-127}:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{elif}\;x.im \leq 1.4 \cdot 10^{-201}:\\
\;\;\;\;\log \left(x.re \cdot x.re + x.im \cdot x.im\right) \cdot \left(y.im \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;{x.im}^{y.re} \cdot \left(y.im \cdot \log x.im\right)\\
\end{array}
\end{array}
if x.im < -1e-127Initial program 42.6%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6457.2%
Simplified57.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6418.8%
Simplified18.8%
if -1e-127 < x.im < 1.4e-201Initial program 36.7%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified61.3%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6452.5%
Simplified52.5%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr15.1%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6445.2%
Simplified45.2%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.5%
Simplified28.5%
if 1.4e-201 < x.im Initial program 36.3%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified73.2%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6457.4%
Simplified57.4%
Taylor expanded in x.re around 0
/-lowering-/.f64N/A
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
pow-lowering-pow.f64N/A
exp-lowering-exp.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f6449.1%
Simplified49.1%
Taylor expanded in y.im around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
pow-lowering-pow.f6432.8%
Simplified32.8%
Final simplification27.1%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -125.0)
(* (* y.im 0.5) (* (pow x.im y.re) (log (* x.im x.im))))
(if (or (<= y.re -4.6e-250) (and (not (<= y.re 1.85e-97)) (<= y.re 85.0)))
(* y.re (atan2 x.im x.re))
(* (log (+ (* x.re x.re) (* x.im x.im))) (* y.im 0.5)))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -125.0) {
tmp = (y_46_im * 0.5) * (pow(x_46_im, y_46_re) * log((x_46_im * x_46_im)));
} else if ((y_46_re <= -4.6e-250) || (!(y_46_re <= 1.85e-97) && (y_46_re <= 85.0))) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else {
tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: tmp
if (y_46re <= (-125.0d0)) then
tmp = (y_46im * 0.5d0) * ((x_46im ** y_46re) * log((x_46im * x_46im)))
else if ((y_46re <= (-4.6d-250)) .or. (.not. (y_46re <= 1.85d-97)) .and. (y_46re <= 85.0d0)) then
tmp = y_46re * atan2(x_46im, x_46re)
else
tmp = log(((x_46re * x_46re) + (x_46im * x_46im))) * (y_46im * 0.5d0)
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -125.0) {
tmp = (y_46_im * 0.5) * (Math.pow(x_46_im, y_46_re) * Math.log((x_46_im * x_46_im)));
} else if ((y_46_re <= -4.6e-250) || (!(y_46_re <= 1.85e-97) && (y_46_re <= 85.0))) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else {
tmp = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -125.0: tmp = (y_46_im * 0.5) * (math.pow(x_46_im, y_46_re) * math.log((x_46_im * x_46_im))) elif (y_46_re <= -4.6e-250) or (not (y_46_re <= 1.85e-97) and (y_46_re <= 85.0)): tmp = y_46_re * math.atan2(x_46_im, x_46_re) else: tmp = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -125.0) tmp = Float64(Float64(y_46_im * 0.5) * Float64((x_46_im ^ y_46_re) * log(Float64(x_46_im * x_46_im)))); elseif ((y_46_re <= -4.6e-250) || (!(y_46_re <= 1.85e-97) && (y_46_re <= 85.0))) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); else tmp = Float64(log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) * Float64(y_46_im * 0.5)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0; if (y_46_re <= -125.0) tmp = (y_46_im * 0.5) * ((x_46_im ^ y_46_re) * log((x_46_im * x_46_im))); elseif ((y_46_re <= -4.6e-250) || (~((y_46_re <= 1.85e-97)) && (y_46_re <= 85.0))) tmp = y_46_re * atan2(x_46_im, x_46_re); else tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -125.0], N[(N[(y$46$im * 0.5), $MachinePrecision] * N[(N[Power[x$46$im, y$46$re], $MachinePrecision] * N[Log[N[(x$46$im * x$46$im), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[y$46$re, -4.6e-250], And[N[Not[LessEqual[y$46$re, 1.85e-97]], $MachinePrecision], LessEqual[y$46$re, 85.0]]], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], N[(N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -125:\\
\;\;\;\;\left(y.im \cdot 0.5\right) \cdot \left({x.im}^{y.re} \cdot \log \left(x.im \cdot x.im\right)\right)\\
\mathbf{elif}\;y.re \leq -4.6 \cdot 10^{-250} \lor \neg \left(y.re \leq 1.85 \cdot 10^{-97}\right) \land y.re \leq 85:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{else}:\\
\;\;\;\;\log \left(x.re \cdot x.re + x.im \cdot x.im\right) \cdot \left(y.im \cdot 0.5\right)\\
\end{array}
\end{array}
if y.re < -125Initial program 36.1%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified68.1%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6470.8%
Simplified70.8%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr12.5%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6437.6%
Simplified37.6%
Taylor expanded in x.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6438.0%
Simplified38.0%
if -125 < y.re < -4.5999999999999999e-250 or 1.84999999999999988e-97 < y.re < 85Initial program 37.2%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6445.0%
Simplified45.0%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6439.2%
Simplified39.2%
if -4.5999999999999999e-250 < y.re < 1.84999999999999988e-97 or 85 < y.re Initial program 40.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified72.7%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6461.9%
Simplified61.9%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr14.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6438.0%
Simplified38.0%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6429.3%
Simplified29.3%
Final simplification34.3%
(FPCore (x.re x.im y.re y.im) :precision binary64 (if (or (<= y.re -3.1e-250) (and (not (<= y.re 2.6e-95)) (<= y.re 82.0))) (* y.re (atan2 x.im x.re)) (* (log (+ (* x.re x.re) (* x.im x.im))) (* y.im 0.5))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if ((y_46_re <= -3.1e-250) || (!(y_46_re <= 2.6e-95) && (y_46_re <= 82.0))) {
tmp = y_46_re * atan2(x_46_im, x_46_re);
} else {
tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
}
return tmp;
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
real(8) :: tmp
if ((y_46re <= (-3.1d-250)) .or. (.not. (y_46re <= 2.6d-95)) .and. (y_46re <= 82.0d0)) then
tmp = y_46re * atan2(x_46im, x_46re)
else
tmp = log(((x_46re * x_46re) + (x_46im * x_46im))) * (y_46im * 0.5d0)
end if
code = tmp
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if ((y_46_re <= -3.1e-250) || (!(y_46_re <= 2.6e-95) && (y_46_re <= 82.0))) {
tmp = y_46_re * Math.atan2(x_46_im, x_46_re);
} else {
tmp = Math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if (y_46_re <= -3.1e-250) or (not (y_46_re <= 2.6e-95) and (y_46_re <= 82.0)): tmp = y_46_re * math.atan2(x_46_im, x_46_re) else: tmp = math.log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if ((y_46_re <= -3.1e-250) || (!(y_46_re <= 2.6e-95) && (y_46_re <= 82.0))) tmp = Float64(y_46_re * atan(x_46_im, x_46_re)); else tmp = Float64(log(Float64(Float64(x_46_re * x_46_re) + Float64(x_46_im * x_46_im))) * Float64(y_46_im * 0.5)); end return tmp end
function tmp_2 = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0; if ((y_46_re <= -3.1e-250) || (~((y_46_re <= 2.6e-95)) && (y_46_re <= 82.0))) tmp = y_46_re * atan2(x_46_im, x_46_re); else tmp = log(((x_46_re * x_46_re) + (x_46_im * x_46_im))) * (y_46_im * 0.5); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[Or[LessEqual[y$46$re, -3.1e-250], And[N[Not[LessEqual[y$46$re, 2.6e-95]], $MachinePrecision], LessEqual[y$46$re, 82.0]]], N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision], N[(N[Log[N[(N[(x$46$re * x$46$re), $MachinePrecision] + N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(y$46$im * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -3.1 \cdot 10^{-250} \lor \neg \left(y.re \leq 2.6 \cdot 10^{-95}\right) \land y.re \leq 82:\\
\;\;\;\;y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\\
\mathbf{else}:\\
\;\;\;\;\log \left(x.re \cdot x.re + x.im \cdot x.im\right) \cdot \left(y.im \cdot 0.5\right)\\
\end{array}
\end{array}
if y.re < -3.1000000000000001e-250 or 2.60000000000000001e-95 < y.re < 82Initial program 36.6%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6462.2%
Simplified62.2%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6423.6%
Simplified23.6%
if -3.1000000000000001e-250 < y.re < 2.60000000000000001e-95 or 82 < y.re Initial program 40.8%
exp-diffN/A
associate-*l/N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
exp-diffN/A
Simplified72.7%
Taylor expanded in y.re around 0
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6461.9%
Simplified61.9%
pow1/2N/A
+-commutativeN/A
log-powN/A
associate-*l*N/A
metadata-evalN/A
div-invN/A
unpow1N/A
sqr-powN/A
pow2N/A
pow-lowering-pow.f64N/A
Applied egg-rr14.3%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
rem-square-sqrtN/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6438.0%
Simplified38.0%
Taylor expanded in y.re around 0
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
log-lowering-log.f64N/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6429.3%
Simplified29.3%
Final simplification26.2%
(FPCore (x.re x.im y.re y.im) :precision binary64 (* y.re (atan2 x.im x.re)))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return y_46_re * atan2(x_46_im, x_46_re);
}
real(8) function code(x_46re, x_46im, y_46re, y_46im)
real(8), intent (in) :: x_46re
real(8), intent (in) :: x_46im
real(8), intent (in) :: y_46re
real(8), intent (in) :: y_46im
code = y_46re * atan2(x_46im, x_46re)
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return y_46_re * Math.atan2(x_46_im, x_46_re);
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): return y_46_re * math.atan2(x_46_im, x_46_re)
function code(x_46_re, x_46_im, y_46_re, y_46_im) return Float64(y_46_re * atan(x_46_im, x_46_re)) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = y_46_re * atan2(x_46_im, x_46_re); end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := N[(y$46$re * N[ArcTan[x$46$im / x$46$re], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}
\end{array}
Initial program 38.6%
Taylor expanded in y.im around 0
*-lowering-*.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
atan2-lowering-atan2.f64N/A
pow-lowering-pow.f64N/A
unpow2N/A
unpow2N/A
accelerator-lowering-hypot.f6448.3%
Simplified48.3%
Taylor expanded in y.re around 0
*-lowering-*.f64N/A
atan2-lowering-atan2.f6416.1%
Simplified16.1%
herbie shell --seed 2024130
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
:precision binary64
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))