
(FPCore (x.re x.im y.re y.im) :precision binary64 (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
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 = ((x_46re * y_46re) + (x_46im * y_46im)) / ((y_46re * y_46re) + (y_46im * y_46im))
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im))
function code(x_46_re, x_46_im, y_46_re, y_46_im) return Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 13 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x.re x.im y.re y.im) :precision binary64 (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
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 = ((x_46re * y_46re) + (x_46im * y_46im)) / ((y_46re * y_46re) + (y_46im * y_46im))
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im))
function code(x_46_re, x_46_im, y_46_re, y_46_im) return Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\end{array}
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (* x.re y.re) (* x.im y.im)))
(t_1 (/ t_0 (+ (* y.re y.re) (* y.im y.im)))))
(if (<= t_1 1e+251)
(* (/ 1.0 (hypot y.re y.im)) (/ t_0 (hypot y.re y.im)))
(if (<= t_1 INFINITY)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(+ (/ x.re y.re) (/ (/ x.im y.re) (/ y.re y.im)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re * y_46_re) + (x_46_im * y_46_im);
double t_1 = t_0 / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (t_1 <= 1e+251) {
tmp = (1.0 / hypot(y_46_re, y_46_im)) * (t_0 / hypot(y_46_re, y_46_im));
} else if (t_1 <= ((double) INFINITY)) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im));
}
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 * y_46_re) + (x_46_im * y_46_im);
double t_1 = t_0 / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (t_1 <= 1e+251) {
tmp = (1.0 / Math.hypot(y_46_re, y_46_im)) * (t_0 / Math.hypot(y_46_re, y_46_im));
} else if (t_1 <= Double.POSITIVE_INFINITY) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re * y_46_re) + (x_46_im * y_46_im) t_1 = t_0 / ((y_46_re * y_46_re) + (y_46_im * y_46_im)) tmp = 0 if t_1 <= 1e+251: tmp = (1.0 / math.hypot(y_46_re, y_46_im)) * (t_0 / math.hypot(y_46_re, y_46_im)) elif t_1 <= math.inf: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) else: tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) t_1 = Float64(t_0 / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) tmp = 0.0 if (t_1 <= 1e+251) tmp = Float64(Float64(1.0 / hypot(y_46_re, y_46_im)) * Float64(t_0 / hypot(y_46_re, y_46_im))); elseif (t_1 <= Inf) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); else tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) / Float64(y_46_re / y_46_im))); 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 * y_46_re) + (x_46_im * y_46_im); t_1 = t_0 / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); tmp = 0.0; if (t_1 <= 1e+251) tmp = (1.0 / hypot(y_46_re, y_46_im)) * (t_0 / hypot(y_46_re, y_46_im)); elseif (t_1 <= Inf) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); else tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)); 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 * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 1e+251], N[(N[(1.0 / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision] * N[(t$95$0 / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x.re \cdot y.re + x.im \cdot y.im\\
t_1 := \frac{t_0}{y.re \cdot y.re + y.im \cdot y.im}\\
\mathbf{if}\;t_1 \leq 10^{+251}:\\
\;\;\;\;\frac{1}{\mathsf{hypot}\left(y.re, y.im\right)} \cdot \frac{t_0}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\mathbf{elif}\;t_1 \leq \infty:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{\frac{x.im}{y.re}}{\frac{y.re}{y.im}}\\
\end{array}
\end{array}
if (/.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 y.re y.re) (*.f64 y.im y.im))) < 1e251Initial program 75.7%
*-un-lft-identity75.7%
add-sqr-sqrt75.7%
times-frac75.7%
hypot-def75.7%
fma-def75.7%
hypot-def94.1%
Applied egg-rr94.1%
fma-def94.1%
Applied egg-rr94.1%
if 1e251 < (/.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 y.re y.re) (*.f64 y.im y.im))) < +inf.0Initial program 33.2%
Taylor expanded in y.re around 0 54.4%
*-commutative54.4%
unpow254.4%
times-frac77.6%
Simplified77.6%
associate-*r/83.6%
Applied egg-rr83.6%
if +inf.0 < (/.f64 (+.f64 (*.f64 x.re y.re) (*.f64 x.im y.im)) (+.f64 (*.f64 y.re y.re) (*.f64 y.im y.im))) Initial program 0.0%
Taylor expanded in y.re around inf 50.0%
unpow250.0%
times-frac66.3%
Simplified66.3%
clear-num66.3%
un-div-inv66.4%
Applied egg-rr66.4%
Final simplification88.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im)))))
(if (<= y.re -1.95e+124)
(+ (/ x.re y.re) (* (/ 1.0 y.re) (/ (/ x.im y.re) (/ 1.0 y.im))))
(if (<= y.re -5.2e-26)
t_0
(if (<= y.re 2.12e-134)
(+ (/ x.im y.im) (/ (/ (* x.re y.re) y.im) y.im))
(if (<= y.re 5.8e+26)
t_0
(if (<= y.re 1.35e+90)
(* (/ y.im (hypot y.re y.im)) (/ x.im (hypot y.re y.im)))
(/ (+ x.re (* y.im (/ x.im y.re))) (hypot y.re y.im)))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -1.95e+124) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.2e-26) {
tmp = t_0;
} else if (y_46_re <= 2.12e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 5.8e+26) {
tmp = t_0;
} else if (y_46_re <= 1.35e+90) {
tmp = (y_46_im / hypot(y_46_re, y_46_im)) * (x_46_im / hypot(y_46_re, y_46_im));
} else {
tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / hypot(y_46_re, y_46_im);
}
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 * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -1.95e+124) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.2e-26) {
tmp = t_0;
} else if (y_46_re <= 2.12e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 5.8e+26) {
tmp = t_0;
} else if (y_46_re <= 1.35e+90) {
tmp = (y_46_im / Math.hypot(y_46_re, y_46_im)) * (x_46_im / Math.hypot(y_46_re, y_46_im));
} else {
tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / Math.hypot(y_46_re, y_46_im);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)) tmp = 0 if y_46_re <= -1.95e+124: tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))) elif y_46_re <= -5.2e-26: tmp = t_0 elif y_46_re <= 2.12e-134: tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im) elif y_46_re <= 5.8e+26: tmp = t_0 elif y_46_re <= 1.35e+90: tmp = (y_46_im / math.hypot(y_46_re, y_46_im)) * (x_46_im / math.hypot(y_46_re, y_46_im)) else: tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / math.hypot(y_46_re, y_46_im) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) tmp = 0.0 if (y_46_re <= -1.95e+124) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(1.0 / y_46_re) * Float64(Float64(x_46_im / y_46_re) / Float64(1.0 / y_46_im)))); elseif (y_46_re <= -5.2e-26) tmp = t_0; elseif (y_46_re <= 2.12e-134) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(Float64(x_46_re * y_46_re) / y_46_im) / y_46_im)); elseif (y_46_re <= 5.8e+26) tmp = t_0; elseif (y_46_re <= 1.35e+90) tmp = Float64(Float64(y_46_im / hypot(y_46_re, y_46_im)) * Float64(x_46_im / hypot(y_46_re, y_46_im))); else tmp = Float64(Float64(x_46_re + Float64(y_46_im * Float64(x_46_im / y_46_re))) / hypot(y_46_re, y_46_im)); 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 * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); tmp = 0.0; if (y_46_re <= -1.95e+124) tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))); elseif (y_46_re <= -5.2e-26) tmp = t_0; elseif (y_46_re <= 2.12e-134) tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im); elseif (y_46_re <= 5.8e+26) tmp = t_0; elseif (y_46_re <= 1.35e+90) tmp = (y_46_im / hypot(y_46_re, y_46_im)) * (x_46_im / hypot(y_46_re, y_46_im)); else tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / hypot(y_46_re, y_46_im); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -1.95e+124], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(1.0 / y$46$re), $MachinePrecision] * N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(1.0 / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -5.2e-26], t$95$0, If[LessEqual[y$46$re, 2.12e-134], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] / y$46$im), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 5.8e+26], t$95$0, If[LessEqual[y$46$re, 1.35e+90], N[(N[(y$46$im / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision] * N[(x$46$im / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re + N[(y$46$im * N[(x$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\\
\mathbf{if}\;y.re \leq -1.95 \cdot 10^{+124}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{1}{y.re} \cdot \frac{\frac{x.im}{y.re}}{\frac{1}{y.im}}\\
\mathbf{elif}\;y.re \leq -5.2 \cdot 10^{-26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 2.12 \cdot 10^{-134}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{\frac{x.re \cdot y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 5.8 \cdot 10^{+26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 1.35 \cdot 10^{+90}:\\
\;\;\;\;\frac{y.im}{\mathsf{hypot}\left(y.re, y.im\right)} \cdot \frac{x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re + y.im \cdot \frac{x.im}{y.re}}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\end{array}
\end{array}
if y.re < -1.95e124Initial program 35.2%
Taylor expanded in y.re around inf 85.8%
unpow285.8%
times-frac93.1%
Simplified93.1%
clear-num93.1%
un-div-inv93.1%
Applied egg-rr93.1%
*-un-lft-identity93.1%
div-inv93.1%
times-frac95.0%
Applied egg-rr95.0%
if -1.95e124 < y.re < -5.2000000000000002e-26 or 2.12e-134 < y.re < 5.8e26Initial program 80.3%
if -5.2000000000000002e-26 < y.re < 2.12e-134Initial program 73.2%
Taylor expanded in y.re around 0 81.3%
unpow281.3%
associate-/r*89.8%
*-commutative89.8%
Simplified89.8%
if 5.8e26 < y.re < 1.35e90Initial program 33.4%
Taylor expanded in x.re around 0 24.9%
*-commutative24.9%
add-sqr-sqrt24.9%
hypot-udef24.9%
hypot-udef24.9%
times-frac91.5%
Applied egg-rr91.5%
if 1.35e90 < y.re Initial program 37.6%
*-un-lft-identity37.6%
add-sqr-sqrt37.6%
times-frac37.6%
hypot-def37.6%
fma-def37.6%
hypot-def50.3%
Applied egg-rr50.3%
Taylor expanded in y.re around inf 71.8%
expm1-log1p-u62.8%
expm1-udef26.6%
associate-*l/26.6%
*-un-lft-identity26.6%
div-inv26.6%
*-commutative26.6%
associate-*l*27.7%
div-inv27.7%
Applied egg-rr27.7%
expm1-def73.1%
expm1-log1p81.9%
Simplified81.9%
Final simplification87.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -4.1e+131)
(+ (/ x.re y.re) (* (/ 1.0 y.re) (/ (/ x.im y.re) (/ 1.0 y.im))))
(if (<= y.re -3.1e-21)
(/ (fma x.re y.re (* x.im y.im)) (fma y.re y.re (* y.im y.im)))
(if (<= y.re 2.12e-134)
(+ (/ x.im y.im) (/ (/ (* x.re y.re) y.im) y.im))
(if (<= y.re 1.8e+26)
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im)))
(if (<= y.re 1.35e+90)
(* (/ y.im (hypot y.re y.im)) (/ x.im (hypot y.re y.im)))
(/ (+ x.re (* y.im (/ x.im y.re))) (hypot y.re y.im))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -4.1e+131) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -3.1e-21) {
tmp = fma(x_46_re, y_46_re, (x_46_im * y_46_im)) / fma(y_46_re, y_46_re, (y_46_im * y_46_im));
} else if (y_46_re <= 2.12e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 1.8e+26) {
tmp = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
} else if (y_46_re <= 1.35e+90) {
tmp = (y_46_im / hypot(y_46_re, y_46_im)) * (x_46_im / hypot(y_46_re, y_46_im));
} else {
tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / hypot(y_46_re, y_46_im);
}
return tmp;
}
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -4.1e+131) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(1.0 / y_46_re) * Float64(Float64(x_46_im / y_46_re) / Float64(1.0 / y_46_im)))); elseif (y_46_re <= -3.1e-21) tmp = Float64(fma(x_46_re, y_46_re, Float64(x_46_im * y_46_im)) / fma(y_46_re, y_46_re, Float64(y_46_im * y_46_im))); elseif (y_46_re <= 2.12e-134) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(Float64(x_46_re * y_46_re) / y_46_im) / y_46_im)); elseif (y_46_re <= 1.8e+26) tmp = Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))); elseif (y_46_re <= 1.35e+90) tmp = Float64(Float64(y_46_im / hypot(y_46_re, y_46_im)) * Float64(x_46_im / hypot(y_46_re, y_46_im))); else tmp = Float64(Float64(x_46_re + Float64(y_46_im * Float64(x_46_im / y_46_re))) / hypot(y_46_re, y_46_im)); end return tmp end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -4.1e+131], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(1.0 / y$46$re), $MachinePrecision] * N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(1.0 / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -3.1e-21], N[(N[(x$46$re * y$46$re + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(y$46$re * y$46$re + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.12e-134], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] / y$46$im), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1.8e+26], N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1.35e+90], N[(N[(y$46$im / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision] * N[(x$46$im / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re + N[(y$46$im * N[(x$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -4.1 \cdot 10^{+131}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{1}{y.re} \cdot \frac{\frac{x.im}{y.re}}{\frac{1}{y.im}}\\
\mathbf{elif}\;y.re \leq -3.1 \cdot 10^{-21}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x.re, y.re, x.im \cdot y.im\right)}{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}\\
\mathbf{elif}\;y.re \leq 2.12 \cdot 10^{-134}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{\frac{x.re \cdot y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 1.8 \cdot 10^{+26}:\\
\;\;\;\;\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\\
\mathbf{elif}\;y.re \leq 1.35 \cdot 10^{+90}:\\
\;\;\;\;\frac{y.im}{\mathsf{hypot}\left(y.re, y.im\right)} \cdot \frac{x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re + y.im \cdot \frac{x.im}{y.re}}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\end{array}
\end{array}
if y.re < -4.10000000000000007e131Initial program 30.9%
Taylor expanded in y.re around inf 84.8%
unpow284.8%
times-frac94.7%
Simplified94.7%
clear-num94.7%
un-div-inv94.7%
Applied egg-rr94.7%
*-un-lft-identity94.7%
div-inv94.7%
times-frac94.7%
Applied egg-rr94.7%
if -4.10000000000000007e131 < y.re < -3.0999999999999998e-21Initial program 83.6%
fma-def83.7%
fma-def83.7%
Simplified83.7%
if -3.0999999999999998e-21 < y.re < 2.12e-134Initial program 73.2%
Taylor expanded in y.re around 0 81.3%
unpow281.3%
associate-/r*89.8%
*-commutative89.8%
Simplified89.8%
if 2.12e-134 < y.re < 1.80000000000000012e26Initial program 78.4%
if 1.80000000000000012e26 < y.re < 1.35e90Initial program 33.4%
Taylor expanded in x.re around 0 24.9%
*-commutative24.9%
add-sqr-sqrt24.9%
hypot-udef24.9%
hypot-udef24.9%
times-frac91.5%
Applied egg-rr91.5%
if 1.35e90 < y.re Initial program 37.6%
*-un-lft-identity37.6%
add-sqr-sqrt37.6%
times-frac37.6%
hypot-def37.6%
fma-def37.6%
hypot-def50.3%
Applied egg-rr50.3%
Taylor expanded in y.re around inf 71.8%
expm1-log1p-u62.8%
expm1-udef26.6%
associate-*l/26.6%
*-un-lft-identity26.6%
div-inv26.6%
*-commutative26.6%
associate-*l*27.7%
div-inv27.7%
Applied egg-rr27.7%
expm1-def73.1%
expm1-log1p81.9%
Simplified81.9%
Final simplification87.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im)))))
(if (<= y.re -8.5e+123)
(+ (/ x.re y.re) (* (/ 1.0 y.re) (/ (/ x.im y.re) (/ 1.0 y.im))))
(if (<= y.re -5.5e-26)
t_0
(if (<= y.re 2.7e-134)
(+ (/ x.im y.im) (/ (/ (* x.re y.re) y.im) y.im))
(if (<= y.re 4.1e+26)
t_0
(if (<= y.re 1.7e+90)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
(/ (+ x.re (* y.im (/ x.im y.re))) (hypot y.re y.im)))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -8.5e+123) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.5e-26) {
tmp = t_0;
} else if (y_46_re <= 2.7e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 4.1e+26) {
tmp = t_0;
} else if (y_46_re <= 1.7e+90) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / hypot(y_46_re, y_46_im);
}
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 * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -8.5e+123) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.5e-26) {
tmp = t_0;
} else if (y_46_re <= 2.7e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 4.1e+26) {
tmp = t_0;
} else if (y_46_re <= 1.7e+90) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / Math.hypot(y_46_re, y_46_im);
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)) tmp = 0 if y_46_re <= -8.5e+123: tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))) elif y_46_re <= -5.5e-26: tmp = t_0 elif y_46_re <= 2.7e-134: tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im) elif y_46_re <= 4.1e+26: tmp = t_0 elif y_46_re <= 1.7e+90: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / math.hypot(y_46_re, y_46_im) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) tmp = 0.0 if (y_46_re <= -8.5e+123) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(1.0 / y_46_re) * Float64(Float64(x_46_im / y_46_re) / Float64(1.0 / y_46_im)))); elseif (y_46_re <= -5.5e-26) tmp = t_0; elseif (y_46_re <= 2.7e-134) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(Float64(x_46_re * y_46_re) / y_46_im) / y_46_im)); elseif (y_46_re <= 4.1e+26) tmp = t_0; elseif (y_46_re <= 1.7e+90) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); else tmp = Float64(Float64(x_46_re + Float64(y_46_im * Float64(x_46_im / y_46_re))) / hypot(y_46_re, y_46_im)); 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 * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); tmp = 0.0; if (y_46_re <= -8.5e+123) tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))); elseif (y_46_re <= -5.5e-26) tmp = t_0; elseif (y_46_re <= 2.7e-134) tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im); elseif (y_46_re <= 4.1e+26) tmp = t_0; elseif (y_46_re <= 1.7e+90) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); else tmp = (x_46_re + (y_46_im * (x_46_im / y_46_re))) / hypot(y_46_re, y_46_im); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -8.5e+123], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(1.0 / y$46$re), $MachinePrecision] * N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(1.0 / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -5.5e-26], t$95$0, If[LessEqual[y$46$re, 2.7e-134], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] / y$46$im), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 4.1e+26], t$95$0, If[LessEqual[y$46$re, 1.7e+90], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re + N[(y$46$im * N[(x$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sqrt[y$46$re ^ 2 + y$46$im ^ 2], $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\\
\mathbf{if}\;y.re \leq -8.5 \cdot 10^{+123}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{1}{y.re} \cdot \frac{\frac{x.im}{y.re}}{\frac{1}{y.im}}\\
\mathbf{elif}\;y.re \leq -5.5 \cdot 10^{-26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 2.7 \cdot 10^{-134}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{\frac{x.re \cdot y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 4.1 \cdot 10^{+26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 1.7 \cdot 10^{+90}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re + y.im \cdot \frac{x.im}{y.re}}{\mathsf{hypot}\left(y.re, y.im\right)}\\
\end{array}
\end{array}
if y.re < -8.5e123Initial program 35.2%
Taylor expanded in y.re around inf 85.8%
unpow285.8%
times-frac93.1%
Simplified93.1%
clear-num93.1%
un-div-inv93.1%
Applied egg-rr93.1%
*-un-lft-identity93.1%
div-inv93.1%
times-frac95.0%
Applied egg-rr95.0%
if -8.5e123 < y.re < -5.5000000000000005e-26 or 2.6999999999999998e-134 < y.re < 4.09999999999999983e26Initial program 80.3%
if -5.5000000000000005e-26 < y.re < 2.6999999999999998e-134Initial program 73.2%
Taylor expanded in y.re around 0 81.3%
unpow281.3%
associate-/r*89.8%
*-commutative89.8%
Simplified89.8%
if 4.09999999999999983e26 < y.re < 1.70000000000000009e90Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
if 1.70000000000000009e90 < y.re Initial program 37.6%
*-un-lft-identity37.6%
add-sqr-sqrt37.6%
times-frac37.6%
hypot-def37.6%
fma-def37.6%
hypot-def50.3%
Applied egg-rr50.3%
Taylor expanded in y.re around inf 71.8%
expm1-log1p-u62.8%
expm1-udef26.6%
associate-*l/26.6%
*-un-lft-identity26.6%
div-inv26.6%
*-commutative26.6%
associate-*l*27.7%
div-inv27.7%
Applied egg-rr27.7%
expm1-def73.1%
expm1-log1p81.9%
Simplified81.9%
Final simplification86.6%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im)))))
(if (<= y.re -1.6e+123)
(+ (/ x.re y.re) (* (/ 1.0 y.re) (/ (/ x.im y.re) (/ 1.0 y.im))))
(if (<= y.re -5.6e-26)
t_0
(if (<= y.re 1.45e-134)
(+ (/ x.im y.im) (/ (/ (* x.re y.re) y.im) y.im))
(if (<= y.re 5e+26)
t_0
(if (<= y.re 2.1e+91)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
(+ (/ x.re y.re) (/ (/ x.im y.re) (/ y.re y.im))))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -1.6e+123) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.6e-26) {
tmp = t_0;
} else if (y_46_re <= 1.45e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 5e+26) {
tmp = t_0;
} else if (y_46_re <= 2.1e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_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) :: t_0
real(8) :: tmp
t_0 = ((x_46re * y_46re) + (x_46im * y_46im)) / ((y_46re * y_46re) + (y_46im * y_46im))
if (y_46re <= (-1.6d+123)) then
tmp = (x_46re / y_46re) + ((1.0d0 / y_46re) * ((x_46im / y_46re) / (1.0d0 / y_46im)))
else if (y_46re <= (-5.6d-26)) then
tmp = t_0
else if (y_46re <= 1.45d-134) then
tmp = (x_46im / y_46im) + (((x_46re * y_46re) / y_46im) / y_46im)
else if (y_46re <= 5d+26) then
tmp = t_0
else if (y_46re <= 2.1d+91) then
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_46im))
else
tmp = (x_46re / y_46re) + ((x_46im / y_46re) / (y_46re / y_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 t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
double tmp;
if (y_46_re <= -1.6e+123) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= -5.6e-26) {
tmp = t_0;
} else if (y_46_re <= 1.45e-134) {
tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im);
} else if (y_46_re <= 5e+26) {
tmp = t_0;
} else if (y_46_re <= 2.1e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)) tmp = 0 if y_46_re <= -1.6e+123: tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))) elif y_46_re <= -5.6e-26: tmp = t_0 elif y_46_re <= 1.45e-134: tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im) elif y_46_re <= 5e+26: tmp = t_0 elif y_46_re <= 2.1e+91: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(Float64(x_46_re * y_46_re) + Float64(x_46_im * y_46_im)) / Float64(Float64(y_46_re * y_46_re) + Float64(y_46_im * y_46_im))) tmp = 0.0 if (y_46_re <= -1.6e+123) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(1.0 / y_46_re) * Float64(Float64(x_46_im / y_46_re) / Float64(1.0 / y_46_im)))); elseif (y_46_re <= -5.6e-26) tmp = t_0; elseif (y_46_re <= 1.45e-134) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(Float64(x_46_re * y_46_re) / y_46_im) / y_46_im)); elseif (y_46_re <= 5e+26) tmp = t_0; elseif (y_46_re <= 2.1e+91) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); else tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) / Float64(y_46_re / y_46_im))); 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 * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im)); tmp = 0.0; if (y_46_re <= -1.6e+123) tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))); elseif (y_46_re <= -5.6e-26) tmp = t_0; elseif (y_46_re <= 1.45e-134) tmp = (x_46_im / y_46_im) + (((x_46_re * y_46_re) / y_46_im) / y_46_im); elseif (y_46_re <= 5e+26) tmp = t_0; elseif (y_46_re <= 2.1e+91) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); else tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := Block[{t$95$0 = N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] + N[(x$46$im * y$46$im), $MachinePrecision]), $MachinePrecision] / N[(N[(y$46$re * y$46$re), $MachinePrecision] + N[(y$46$im * y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -1.6e+123], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(1.0 / y$46$re), $MachinePrecision] * N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(1.0 / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, -5.6e-26], t$95$0, If[LessEqual[y$46$re, 1.45e-134], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(N[(x$46$re * y$46$re), $MachinePrecision] / y$46$im), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 5e+26], t$95$0, If[LessEqual[y$46$re, 2.1e+91], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\\
\mathbf{if}\;y.re \leq -1.6 \cdot 10^{+123}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{1}{y.re} \cdot \frac{\frac{x.im}{y.re}}{\frac{1}{y.im}}\\
\mathbf{elif}\;y.re \leq -5.6 \cdot 10^{-26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 1.45 \cdot 10^{-134}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{\frac{x.re \cdot y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 5 \cdot 10^{+26}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 2.1 \cdot 10^{+91}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{\frac{x.im}{y.re}}{\frac{y.re}{y.im}}\\
\end{array}
\end{array}
if y.re < -1.60000000000000002e123Initial program 35.2%
Taylor expanded in y.re around inf 85.8%
unpow285.8%
times-frac93.1%
Simplified93.1%
clear-num93.1%
un-div-inv93.1%
Applied egg-rr93.1%
*-un-lft-identity93.1%
div-inv93.1%
times-frac95.0%
Applied egg-rr95.0%
if -1.60000000000000002e123 < y.re < -5.6000000000000002e-26 or 1.44999999999999997e-134 < y.re < 5.0000000000000001e26Initial program 80.3%
if -5.6000000000000002e-26 < y.re < 1.44999999999999997e-134Initial program 73.2%
Taylor expanded in y.re around 0 81.3%
unpow281.3%
associate-/r*89.8%
*-commutative89.8%
Simplified89.8%
if 5.0000000000000001e26 < y.re < 2.10000000000000008e91Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
if 2.10000000000000008e91 < y.re Initial program 37.6%
Taylor expanded in y.re around inf 66.6%
unpow266.6%
times-frac79.9%
Simplified79.9%
clear-num79.9%
un-div-inv80.0%
Applied egg-rr80.0%
Final simplification86.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (/ x.re y.re) (* (/ x.im y.re) (/ y.im y.re)))))
(if (<= y.re -4.6e+52)
t_0
(if (<= y.re 3600000000.0)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(if (or (<= y.re 1.45e+26) (not (<= y.re 1.6e+90)))
t_0
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
double tmp;
if (y_46_re <= -4.6e+52) {
tmp = t_0;
} else if (y_46_re <= 3600000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if ((y_46_re <= 1.45e+26) || !(y_46_re <= 1.6e+90)) {
tmp = t_0;
} else {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_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) :: t_0
real(8) :: tmp
t_0 = (x_46re / y_46re) + ((x_46im / y_46re) * (y_46im / y_46re))
if (y_46re <= (-4.6d+52)) then
tmp = t_0
else if (y_46re <= 3600000000.0d0) then
tmp = (x_46im / y_46im) + ((x_46re * (y_46re / y_46im)) / y_46im)
else if ((y_46re <= 1.45d+26) .or. (.not. (y_46re <= 1.6d+90))) then
tmp = t_0
else
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_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 t_0 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
double tmp;
if (y_46_re <= -4.6e+52) {
tmp = t_0;
} else if (y_46_re <= 3600000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if ((y_46_re <= 1.45e+26) || !(y_46_re <= 1.6e+90)) {
tmp = t_0;
} else {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)) tmp = 0 if y_46_re <= -4.6e+52: tmp = t_0 elif y_46_re <= 3600000000.0: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) elif (y_46_re <= 1.45e+26) or not (y_46_re <= 1.6e+90): tmp = t_0 else: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) * Float64(y_46_im / y_46_re))) tmp = 0.0 if (y_46_re <= -4.6e+52) tmp = t_0; elseif (y_46_re <= 3600000000.0) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); elseif ((y_46_re <= 1.45e+26) || !(y_46_re <= 1.6e+90)) tmp = t_0; else tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); 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 / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)); tmp = 0.0; if (y_46_re <= -4.6e+52) tmp = t_0; elseif (y_46_re <= 3600000000.0) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); elseif ((y_46_re <= 1.45e+26) || ~((y_46_re <= 1.6e+90))) tmp = t_0; else tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); 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 / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] * N[(y$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -4.6e+52], t$95$0, If[LessEqual[y$46$re, 3600000000.0], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[y$46$re, 1.45e+26], N[Not[LessEqual[y$46$re, 1.6e+90]], $MachinePrecision]], t$95$0, N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x.re}{y.re} + \frac{x.im}{y.re} \cdot \frac{y.im}{y.re}\\
\mathbf{if}\;y.re \leq -4.6 \cdot 10^{+52}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 3600000000:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 1.45 \cdot 10^{+26} \lor \neg \left(y.re \leq 1.6 \cdot 10^{+90}\right):\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\end{array}
\end{array}
if y.re < -4.6e52 or 3.6e9 < y.re < 1.45e26 or 1.59999999999999999e90 < y.re Initial program 44.0%
Taylor expanded in y.re around inf 76.5%
unpow276.5%
times-frac85.2%
Simplified85.2%
if -4.6e52 < y.re < 3.6e9Initial program 74.9%
Taylor expanded in y.re around 0 77.1%
*-commutative77.1%
unpow277.1%
times-frac81.2%
Simplified81.2%
associate-*r/83.5%
Applied egg-rr83.5%
if 1.45e26 < y.re < 1.59999999999999999e90Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
Final simplification83.9%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(let* ((t_0 (+ (/ x.re y.re) (* (/ x.im y.re) (/ y.im y.re)))))
(if (<= y.re -1.15e+53)
t_0
(if (<= y.re 280000000.0)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(if (<= y.re 1.05e+22)
(+ (/ x.re y.re) (/ (* x.im y.im) (* y.re y.re)))
(if (<= y.re 1.4e+90)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
t_0))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double t_0 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
double tmp;
if (y_46_re <= -1.15e+53) {
tmp = t_0;
} else if (y_46_re <= 280000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 1.05e+22) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 1.4e+90) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = t_0;
}
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 / y_46re) + ((x_46im / y_46re) * (y_46im / y_46re))
if (y_46re <= (-1.15d+53)) then
tmp = t_0
else if (y_46re <= 280000000.0d0) then
tmp = (x_46im / y_46im) + ((x_46re * (y_46re / y_46im)) / y_46im)
else if (y_46re <= 1.05d+22) then
tmp = (x_46re / y_46re) + ((x_46im * y_46im) / (y_46re * y_46re))
else if (y_46re <= 1.4d+90) then
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_46im))
else
tmp = t_0
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 / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
double tmp;
if (y_46_re <= -1.15e+53) {
tmp = t_0;
} else if (y_46_re <= 280000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 1.05e+22) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 1.4e+90) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = t_0;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): t_0 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)) tmp = 0 if y_46_re <= -1.15e+53: tmp = t_0 elif y_46_re <= 280000000.0: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) elif y_46_re <= 1.05e+22: tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)) elif y_46_re <= 1.4e+90: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = t_0 return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) t_0 = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) * Float64(y_46_im / y_46_re))) tmp = 0.0 if (y_46_re <= -1.15e+53) tmp = t_0; elseif (y_46_re <= 280000000.0) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); elseif (y_46_re <= 1.05e+22) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im * y_46_im) / Float64(y_46_re * y_46_re))); elseif (y_46_re <= 1.4e+90) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); 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 = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)); tmp = 0.0; if (y_46_re <= -1.15e+53) tmp = t_0; elseif (y_46_re <= 280000000.0) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); elseif (y_46_re <= 1.05e+22) tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)); elseif (y_46_re <= 1.4e+90) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); 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[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] * N[(y$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$46$re, -1.15e+53], t$95$0, If[LessEqual[y$46$re, 280000000.0], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1.05e+22], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im * y$46$im), $MachinePrecision] / N[(y$46$re * y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1.4e+90], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{x.re}{y.re} + \frac{x.im}{y.re} \cdot \frac{y.im}{y.re}\\
\mathbf{if}\;y.re \leq -1.15 \cdot 10^{+53}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;y.re \leq 280000000:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 1.05 \cdot 10^{+22}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{x.im \cdot y.im}{y.re \cdot y.re}\\
\mathbf{elif}\;y.re \leq 1.4 \cdot 10^{+90}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if y.re < -1.1500000000000001e53 or 1.4e90 < y.re Initial program 42.3%
Taylor expanded in y.re around inf 75.7%
unpow275.7%
times-frac84.7%
Simplified84.7%
if -1.1500000000000001e53 < y.re < 2.8e8Initial program 74.9%
Taylor expanded in y.re around 0 77.1%
*-commutative77.1%
unpow277.1%
times-frac81.2%
Simplified81.2%
associate-*r/83.5%
Applied egg-rr83.5%
if 2.8e8 < y.re < 1.0499999999999999e22Initial program 81.8%
*-un-lft-identity81.8%
add-sqr-sqrt81.5%
times-frac81.5%
hypot-def81.8%
fma-def81.8%
hypot-def81.5%
Applied egg-rr81.5%
Taylor expanded in y.re around inf 95.5%
unpow295.5%
Simplified95.5%
if 1.0499999999999999e22 < y.re < 1.4e90Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
Final simplification83.9%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -8.6e+52)
(+ (/ x.re y.re) (* (/ x.im y.re) (/ y.im y.re)))
(if (<= y.re 3800000000.0)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(if (<= y.re 2.3e+26)
(+ (/ x.re y.re) (/ (* x.im y.im) (* y.re y.re)))
(if (<= y.re 2.1e+91)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
(+ (/ x.re y.re) (/ (/ x.im y.re) (/ y.re y.im))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -8.6e+52) {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
} else if (y_46_re <= 3800000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 2.3e+26) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 2.1e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_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 (y_46re <= (-8.6d+52)) then
tmp = (x_46re / y_46re) + ((x_46im / y_46re) * (y_46im / y_46re))
else if (y_46re <= 3800000000.0d0) then
tmp = (x_46im / y_46im) + ((x_46re * (y_46re / y_46im)) / y_46im)
else if (y_46re <= 2.3d+26) then
tmp = (x_46re / y_46re) + ((x_46im * y_46im) / (y_46re * y_46re))
else if (y_46re <= 2.1d+91) then
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_46im))
else
tmp = (x_46re / y_46re) + ((x_46im / y_46re) / (y_46re / y_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 (y_46_re <= -8.6e+52) {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re));
} else if (y_46_re <= 3800000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 2.3e+26) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 2.1e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -8.6e+52: tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)) elif y_46_re <= 3800000000.0: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) elif y_46_re <= 2.3e+26: tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)) elif y_46_re <= 2.1e+91: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -8.6e+52) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) * Float64(y_46_im / y_46_re))); elseif (y_46_re <= 3800000000.0) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); elseif (y_46_re <= 2.3e+26) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im * y_46_im) / Float64(y_46_re * y_46_re))); elseif (y_46_re <= 2.1e+91) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); else tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) / Float64(y_46_re / y_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 (y_46_re <= -8.6e+52) tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) * (y_46_im / y_46_re)); elseif (y_46_re <= 3800000000.0) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); elseif (y_46_re <= 2.3e+26) tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)); elseif (y_46_re <= 2.1e+91) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); else tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -8.6e+52], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] * N[(y$46$im / y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 3800000000.0], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.3e+26], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im * y$46$im), $MachinePrecision] / N[(y$46$re * y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 2.1e+91], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -8.6 \cdot 10^{+52}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{x.im}{y.re} \cdot \frac{y.im}{y.re}\\
\mathbf{elif}\;y.re \leq 3800000000:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 2.3 \cdot 10^{+26}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{x.im \cdot y.im}{y.re \cdot y.re}\\
\mathbf{elif}\;y.re \leq 2.1 \cdot 10^{+91}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{\frac{x.im}{y.re}}{\frac{y.re}{y.im}}\\
\end{array}
\end{array}
if y.re < -8.5999999999999999e52Initial program 45.9%
Taylor expanded in y.re around inf 82.8%
unpow282.8%
times-frac88.5%
Simplified88.5%
if -8.5999999999999999e52 < y.re < 3.8e9Initial program 74.9%
Taylor expanded in y.re around 0 77.1%
*-commutative77.1%
unpow277.1%
times-frac81.2%
Simplified81.2%
associate-*r/83.5%
Applied egg-rr83.5%
if 3.8e9 < y.re < 2.3000000000000001e26Initial program 81.8%
*-un-lft-identity81.8%
add-sqr-sqrt81.5%
times-frac81.5%
hypot-def81.8%
fma-def81.8%
hypot-def81.5%
Applied egg-rr81.5%
Taylor expanded in y.re around inf 95.5%
unpow295.5%
Simplified95.5%
if 2.3000000000000001e26 < y.re < 2.10000000000000008e91Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
if 2.10000000000000008e91 < y.re Initial program 37.6%
Taylor expanded in y.re around inf 66.6%
unpow266.6%
times-frac79.9%
Simplified79.9%
clear-num79.9%
un-div-inv80.0%
Applied egg-rr80.0%
Final simplification84.0%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -1.15e+55)
(+ (/ x.re y.re) (* (/ 1.0 y.re) (/ (/ x.im y.re) (/ 1.0 y.im))))
(if (<= y.re 1050000000.0)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(if (<= y.re 5e+24)
(+ (/ x.re y.re) (/ (* x.im y.im) (* y.re y.re)))
(if (<= y.re 3.2e+92)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
(+ (/ x.re y.re) (/ (/ x.im y.re) (/ y.re y.im))))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -1.15e+55) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= 1050000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 5e+24) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 3.2e+92) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_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 (y_46re <= (-1.15d+55)) then
tmp = (x_46re / y_46re) + ((1.0d0 / y_46re) * ((x_46im / y_46re) / (1.0d0 / y_46im)))
else if (y_46re <= 1050000000.0d0) then
tmp = (x_46im / y_46im) + ((x_46re * (y_46re / y_46im)) / y_46im)
else if (y_46re <= 5d+24) then
tmp = (x_46re / y_46re) + ((x_46im * y_46im) / (y_46re * y_46re))
else if (y_46re <= 3.2d+92) then
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_46im))
else
tmp = (x_46re / y_46re) + ((x_46im / y_46re) / (y_46re / y_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 (y_46_re <= -1.15e+55) {
tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im)));
} else if (y_46_re <= 1050000000.0) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else if (y_46_re <= 5e+24) {
tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re));
} else if (y_46_re <= 3.2e+92) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im));
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -1.15e+55: tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))) elif y_46_re <= 1050000000.0: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) elif y_46_re <= 5e+24: tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)) elif y_46_re <= 3.2e+92: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)) return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -1.15e+55) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(1.0 / y_46_re) * Float64(Float64(x_46_im / y_46_re) / Float64(1.0 / y_46_im)))); elseif (y_46_re <= 1050000000.0) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); elseif (y_46_re <= 5e+24) tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im * y_46_im) / Float64(y_46_re * y_46_re))); elseif (y_46_re <= 3.2e+92) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); else tmp = Float64(Float64(x_46_re / y_46_re) + Float64(Float64(x_46_im / y_46_re) / Float64(y_46_re / y_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 (y_46_re <= -1.15e+55) tmp = (x_46_re / y_46_re) + ((1.0 / y_46_re) * ((x_46_im / y_46_re) / (1.0 / y_46_im))); elseif (y_46_re <= 1050000000.0) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); elseif (y_46_re <= 5e+24) tmp = (x_46_re / y_46_re) + ((x_46_im * y_46_im) / (y_46_re * y_46_re)); elseif (y_46_re <= 3.2e+92) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); else tmp = (x_46_re / y_46_re) + ((x_46_im / y_46_re) / (y_46_re / y_46_im)); end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -1.15e+55], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(1.0 / y$46$re), $MachinePrecision] * N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(1.0 / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 1050000000.0], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 5e+24], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im * y$46$im), $MachinePrecision] / N[(y$46$re * y$46$re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$46$re, 3.2e+92], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re / y$46$re), $MachinePrecision] + N[(N[(x$46$im / y$46$re), $MachinePrecision] / N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -1.15 \cdot 10^{+55}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{1}{y.re} \cdot \frac{\frac{x.im}{y.re}}{\frac{1}{y.im}}\\
\mathbf{elif}\;y.re \leq 1050000000:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{elif}\;y.re \leq 5 \cdot 10^{+24}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{x.im \cdot y.im}{y.re \cdot y.re}\\
\mathbf{elif}\;y.re \leq 3.2 \cdot 10^{+92}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{\frac{x.im}{y.re}}{\frac{y.re}{y.im}}\\
\end{array}
\end{array}
if y.re < -1.14999999999999994e55Initial program 45.9%
Taylor expanded in y.re around inf 82.8%
unpow282.8%
times-frac88.5%
Simplified88.5%
clear-num88.5%
un-div-inv88.5%
Applied egg-rr88.5%
*-un-lft-identity88.5%
div-inv88.5%
times-frac90.0%
Applied egg-rr90.0%
if -1.14999999999999994e55 < y.re < 1.05e9Initial program 74.9%
Taylor expanded in y.re around 0 77.1%
*-commutative77.1%
unpow277.1%
times-frac81.2%
Simplified81.2%
associate-*r/83.5%
Applied egg-rr83.5%
if 1.05e9 < y.re < 5.00000000000000045e24Initial program 81.8%
*-un-lft-identity81.8%
add-sqr-sqrt81.5%
times-frac81.5%
hypot-def81.8%
fma-def81.8%
hypot-def81.5%
Applied egg-rr81.5%
Taylor expanded in y.re around inf 95.5%
unpow295.5%
Simplified95.5%
if 5.00000000000000045e24 < y.re < 3.20000000000000025e92Initial program 33.4%
Taylor expanded in y.re around 0 77.0%
*-commutative77.0%
unpow277.0%
times-frac77.0%
Simplified77.0%
if 3.20000000000000025e92 < y.re Initial program 37.6%
Taylor expanded in y.re around inf 66.6%
unpow266.6%
times-frac79.9%
Simplified79.9%
clear-num79.9%
un-div-inv80.0%
Applied egg-rr80.0%
Final simplification84.3%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -1.1e+77)
(/ x.re y.re)
(if (<= y.re 2.4e+91)
(+ (/ x.im y.im) (* (/ y.re y.im) (/ x.re y.im)))
(/ x.re y.re))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -1.1e+77) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 2.4e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = x_46_re / y_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 (y_46re <= (-1.1d+77)) then
tmp = x_46re / y_46re
else if (y_46re <= 2.4d+91) then
tmp = (x_46im / y_46im) + ((y_46re / y_46im) * (x_46re / y_46im))
else
tmp = x_46re / y_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 (y_46_re <= -1.1e+77) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 2.4e+91) {
tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im));
} else {
tmp = x_46_re / y_46_re;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -1.1e+77: tmp = x_46_re / y_46_re elif y_46_re <= 2.4e+91: tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)) else: tmp = x_46_re / y_46_re return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -1.1e+77) tmp = Float64(x_46_re / y_46_re); elseif (y_46_re <= 2.4e+91) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(y_46_re / y_46_im) * Float64(x_46_re / y_46_im))); else tmp = Float64(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) tmp = 0.0; if (y_46_re <= -1.1e+77) tmp = x_46_re / y_46_re; elseif (y_46_re <= 2.4e+91) tmp = (x_46_im / y_46_im) + ((y_46_re / y_46_im) * (x_46_re / y_46_im)); else tmp = x_46_re / y_46_re; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -1.1e+77], N[(x$46$re / y$46$re), $MachinePrecision], If[LessEqual[y$46$re, 2.4e+91], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(y$46$re / y$46$im), $MachinePrecision] * N[(x$46$re / y$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x$46$re / y$46$re), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -1.1 \cdot 10^{+77}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\mathbf{elif}\;y.re \leq 2.4 \cdot 10^{+91}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re}{y.im} \cdot \frac{x.re}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\end{array}
\end{array}
if y.re < -1.1e77 or 2.39999999999999983e91 < y.re Initial program 40.5%
Taylor expanded in y.re around inf 75.0%
if -1.1e77 < y.re < 2.39999999999999983e91Initial program 72.0%
Taylor expanded in y.re around 0 72.9%
*-commutative72.9%
unpow272.9%
times-frac77.1%
Simplified77.1%
Final simplification76.2%
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -3.3e+76)
(/ x.re y.re)
(if (<= y.re 8.5e+91)
(+ (/ x.im y.im) (/ (* x.re (/ y.re y.im)) y.im))
(/ x.re y.re))))
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.3e+76) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 8.5e+91) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else {
tmp = x_46_re / y_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 (y_46re <= (-3.3d+76)) then
tmp = x_46re / y_46re
else if (y_46re <= 8.5d+91) then
tmp = (x_46im / y_46im) + ((x_46re * (y_46re / y_46im)) / y_46im)
else
tmp = x_46re / y_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 (y_46_re <= -3.3e+76) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 8.5e+91) {
tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im);
} else {
tmp = x_46_re / y_46_re;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -3.3e+76: tmp = x_46_re / y_46_re elif y_46_re <= 8.5e+91: tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im) else: tmp = x_46_re / y_46_re return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -3.3e+76) tmp = Float64(x_46_re / y_46_re); elseif (y_46_re <= 8.5e+91) tmp = Float64(Float64(x_46_im / y_46_im) + Float64(Float64(x_46_re * Float64(y_46_re / y_46_im)) / y_46_im)); else tmp = Float64(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) tmp = 0.0; if (y_46_re <= -3.3e+76) tmp = x_46_re / y_46_re; elseif (y_46_re <= 8.5e+91) tmp = (x_46_im / y_46_im) + ((x_46_re * (y_46_re / y_46_im)) / y_46_im); else tmp = x_46_re / y_46_re; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -3.3e+76], N[(x$46$re / y$46$re), $MachinePrecision], If[LessEqual[y$46$re, 8.5e+91], N[(N[(x$46$im / y$46$im), $MachinePrecision] + N[(N[(x$46$re * N[(y$46$re / y$46$im), $MachinePrecision]), $MachinePrecision] / y$46$im), $MachinePrecision]), $MachinePrecision], N[(x$46$re / y$46$re), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -3.3 \cdot 10^{+76}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\mathbf{elif}\;y.re \leq 8.5 \cdot 10^{+91}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{x.re \cdot \frac{y.re}{y.im}}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\end{array}
\end{array}
if y.re < -3.3000000000000001e76 or 8.4999999999999995e91 < y.re Initial program 40.5%
Taylor expanded in y.re around inf 75.0%
if -3.3000000000000001e76 < y.re < 8.4999999999999995e91Initial program 72.0%
Taylor expanded in y.re around 0 72.9%
*-commutative72.9%
unpow272.9%
times-frac77.1%
Simplified77.1%
associate-*r/79.0%
Applied egg-rr79.0%
Final simplification77.4%
(FPCore (x.re x.im y.re y.im) :precision binary64 (if (<= y.re -5.2e+53) (/ x.re y.re) (if (<= y.re 1.35e+90) (/ x.im y.im) (/ x.re y.re))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -5.2e+53) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 1.35e+90) {
tmp = x_46_im / y_46_im;
} else {
tmp = x_46_re / y_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 (y_46re <= (-5.2d+53)) then
tmp = x_46re / y_46re
else if (y_46re <= 1.35d+90) then
tmp = x_46im / y_46im
else
tmp = x_46re / y_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 (y_46_re <= -5.2e+53) {
tmp = x_46_re / y_46_re;
} else if (y_46_re <= 1.35e+90) {
tmp = x_46_im / y_46_im;
} else {
tmp = x_46_re / y_46_re;
}
return tmp;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): tmp = 0 if y_46_re <= -5.2e+53: tmp = x_46_re / y_46_re elif y_46_re <= 1.35e+90: tmp = x_46_im / y_46_im else: tmp = x_46_re / y_46_re return tmp
function code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = 0.0 if (y_46_re <= -5.2e+53) tmp = Float64(x_46_re / y_46_re); elseif (y_46_re <= 1.35e+90) tmp = Float64(x_46_im / y_46_im); else tmp = Float64(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) tmp = 0.0; if (y_46_re <= -5.2e+53) tmp = x_46_re / y_46_re; elseif (y_46_re <= 1.35e+90) tmp = x_46_im / y_46_im; else tmp = x_46_re / y_46_re; end tmp_2 = tmp; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := If[LessEqual[y$46$re, -5.2e+53], N[(x$46$re / y$46$re), $MachinePrecision], If[LessEqual[y$46$re, 1.35e+90], N[(x$46$im / y$46$im), $MachinePrecision], N[(x$46$re / y$46$re), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y.re \leq -5.2 \cdot 10^{+53}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\mathbf{elif}\;y.re \leq 1.35 \cdot 10^{+90}:\\
\;\;\;\;\frac{x.im}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{y.re}\\
\end{array}
\end{array}
if y.re < -5.19999999999999996e53 or 1.35e90 < y.re Initial program 42.3%
Taylor expanded in y.re around inf 73.5%
if -5.19999999999999996e53 < y.re < 1.35e90Initial program 71.7%
Taylor expanded in y.re around 0 64.8%
Final simplification68.6%
(FPCore (x.re x.im y.re y.im) :precision binary64 (/ x.im y.im))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return x_46_im / y_46_im;
}
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 = x_46im / y_46im
end function
public static double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return x_46_im / y_46_im;
}
def code(x_46_re, x_46_im, y_46_re, y_46_im): return x_46_im / y_46_im
function code(x_46_re, x_46_im, y_46_re, y_46_im) return Float64(x_46_im / y_46_im) end
function tmp = code(x_46_re, x_46_im, y_46_re, y_46_im) tmp = x_46_im / y_46_im; end
code[x$46$re_, x$46$im_, y$46$re_, y$46$im_] := N[(x$46$im / y$46$im), $MachinePrecision]
\begin{array}{l}
\\
\frac{x.im}{y.im}
\end{array}
Initial program 59.0%
Taylor expanded in y.re around 0 43.0%
Final simplification43.0%
herbie shell --seed 2023293
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))