
(FPCore (re im) :precision binary64 (* (exp re) (cos im)))
double code(double re, double im) {
return exp(re) * cos(im);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = exp(re) * cos(im)
end function
public static double code(double re, double im) {
return Math.exp(re) * Math.cos(im);
}
def code(re, im): return math.exp(re) * math.cos(im)
function code(re, im) return Float64(exp(re) * cos(im)) end
function tmp = code(re, im) tmp = exp(re) * cos(im); end
code[re_, im_] := N[(N[Exp[re], $MachinePrecision] * N[Cos[im], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
e^{re} \cdot \cos im
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 26 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (re im) :precision binary64 (* (exp re) (cos im)))
double code(double re, double im) {
return exp(re) * cos(im);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = exp(re) * cos(im)
end function
public static double code(double re, double im) {
return Math.exp(re) * Math.cos(im);
}
def code(re, im): return math.exp(re) * math.cos(im)
function code(re, im) return Float64(exp(re) * cos(im)) end
function tmp = code(re, im) tmp = exp(re) * cos(im); end
code[re_, im_] := N[(N[Exp[re], $MachinePrecision] * N[Cos[im], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
e^{re} \cdot \cos im
\end{array}
(FPCore (re im) :precision binary64 (* (exp re) (cos im)))
double code(double re, double im) {
return exp(re) * cos(im);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = exp(re) * cos(im)
end function
public static double code(double re, double im) {
return Math.exp(re) * Math.cos(im);
}
def code(re, im): return math.exp(re) * math.cos(im)
function code(re, im) return Float64(exp(re) * cos(im)) end
function tmp = code(re, im) tmp = exp(re) * cos(im); end
code[re_, im_] := N[(N[Exp[re], $MachinePrecision] * N[Cos[im], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
e^{re} \cdot \cos im
\end{array}
Initial program 100.0%
(FPCore (re im) :precision binary64 (if (<= (exp re) 0.02) (exp re) (if (<= (exp re) 1.01) (* (cos im) (+ re 1.0)) (exp re))))
double code(double re, double im) {
double tmp;
if (exp(re) <= 0.02) {
tmp = exp(re);
} else if (exp(re) <= 1.01) {
tmp = cos(im) * (re + 1.0);
} else {
tmp = exp(re);
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (exp(re) <= 0.02d0) then
tmp = exp(re)
else if (exp(re) <= 1.01d0) then
tmp = cos(im) * (re + 1.0d0)
else
tmp = exp(re)
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (Math.exp(re) <= 0.02) {
tmp = Math.exp(re);
} else if (Math.exp(re) <= 1.01) {
tmp = Math.cos(im) * (re + 1.0);
} else {
tmp = Math.exp(re);
}
return tmp;
}
def code(re, im): tmp = 0 if math.exp(re) <= 0.02: tmp = math.exp(re) elif math.exp(re) <= 1.01: tmp = math.cos(im) * (re + 1.0) else: tmp = math.exp(re) return tmp
function code(re, im) tmp = 0.0 if (exp(re) <= 0.02) tmp = exp(re); elseif (exp(re) <= 1.01) tmp = Float64(cos(im) * Float64(re + 1.0)); else tmp = exp(re); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (exp(re) <= 0.02) tmp = exp(re); elseif (exp(re) <= 1.01) tmp = cos(im) * (re + 1.0); else tmp = exp(re); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[N[Exp[re], $MachinePrecision], 0.02], N[Exp[re], $MachinePrecision], If[LessEqual[N[Exp[re], $MachinePrecision], 1.01], N[(N[Cos[im], $MachinePrecision] * N[(re + 1.0), $MachinePrecision]), $MachinePrecision], N[Exp[re], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;e^{re} \leq 0.02:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;e^{re} \leq 1.01:\\
\;\;\;\;\cos im \cdot \left(re + 1\right)\\
\mathbf{else}:\\
\;\;\;\;e^{re}\\
\end{array}
\end{array}
if (exp.f64 re) < 0.0200000000000000004 or 1.01000000000000001 < (exp.f64 re) Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6485.8%
Simplified85.8%
if 0.0200000000000000004 < (exp.f64 re) < 1.01000000000000001Initial program 100.0%
Taylor expanded in re around 0
+-commutativeN/A
+-lowering-+.f6499.0%
Simplified99.0%
Final simplification91.7%
(FPCore (re im) :precision binary64 (if (<= (exp re) 0.02) (exp re) (if (<= (exp re) 1.01) (cos im) (exp re))))
double code(double re, double im) {
double tmp;
if (exp(re) <= 0.02) {
tmp = exp(re);
} else if (exp(re) <= 1.01) {
tmp = cos(im);
} else {
tmp = exp(re);
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (exp(re) <= 0.02d0) then
tmp = exp(re)
else if (exp(re) <= 1.01d0) then
tmp = cos(im)
else
tmp = exp(re)
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (Math.exp(re) <= 0.02) {
tmp = Math.exp(re);
} else if (Math.exp(re) <= 1.01) {
tmp = Math.cos(im);
} else {
tmp = Math.exp(re);
}
return tmp;
}
def code(re, im): tmp = 0 if math.exp(re) <= 0.02: tmp = math.exp(re) elif math.exp(re) <= 1.01: tmp = math.cos(im) else: tmp = math.exp(re) return tmp
function code(re, im) tmp = 0.0 if (exp(re) <= 0.02) tmp = exp(re); elseif (exp(re) <= 1.01) tmp = cos(im); else tmp = exp(re); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (exp(re) <= 0.02) tmp = exp(re); elseif (exp(re) <= 1.01) tmp = cos(im); else tmp = exp(re); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[N[Exp[re], $MachinePrecision], 0.02], N[Exp[re], $MachinePrecision], If[LessEqual[N[Exp[re], $MachinePrecision], 1.01], N[Cos[im], $MachinePrecision], N[Exp[re], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;e^{re} \leq 0.02:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;e^{re} \leq 1.01:\\
\;\;\;\;\cos im\\
\mathbf{else}:\\
\;\;\;\;e^{re}\\
\end{array}
\end{array}
if (exp.f64 re) < 0.0200000000000000004 or 1.01000000000000001 < (exp.f64 re) Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6485.8%
Simplified85.8%
if 0.0200000000000000004 < (exp.f64 re) < 1.01000000000000001Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f6498.4%
Simplified98.4%
(FPCore (re im)
:precision binary64
(let* ((t_0 (+ 0.5 (* re 0.16666666666666666))))
(if (<= re -0.065)
(exp re)
(if (<= re 0.0126)
(* (cos im) (+ (+ re 1.0) (* t_0 (* re re))))
(if (<= re 1.05e+103)
(* (exp re) (+ 1.0 (* -0.5 (* im im))))
(* (cos im) (+ 1.0 (* re (+ 1.0 (* re t_0))))))))))
double code(double re, double im) {
double t_0 = 0.5 + (re * 0.16666666666666666);
double tmp;
if (re <= -0.065) {
tmp = exp(re);
} else if (re <= 0.0126) {
tmp = cos(im) * ((re + 1.0) + (t_0 * (re * re)));
} else if (re <= 1.05e+103) {
tmp = exp(re) * (1.0 + (-0.5 * (im * im)));
} else {
tmp = cos(im) * (1.0 + (re * (1.0 + (re * t_0))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 + (re * 0.16666666666666666d0)
if (re <= (-0.065d0)) then
tmp = exp(re)
else if (re <= 0.0126d0) then
tmp = cos(im) * ((re + 1.0d0) + (t_0 * (re * re)))
else if (re <= 1.05d+103) then
tmp = exp(re) * (1.0d0 + ((-0.5d0) * (im * im)))
else
tmp = cos(im) * (1.0d0 + (re * (1.0d0 + (re * t_0))))
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = 0.5 + (re * 0.16666666666666666);
double tmp;
if (re <= -0.065) {
tmp = Math.exp(re);
} else if (re <= 0.0126) {
tmp = Math.cos(im) * ((re + 1.0) + (t_0 * (re * re)));
} else if (re <= 1.05e+103) {
tmp = Math.exp(re) * (1.0 + (-0.5 * (im * im)));
} else {
tmp = Math.cos(im) * (1.0 + (re * (1.0 + (re * t_0))));
}
return tmp;
}
def code(re, im): t_0 = 0.5 + (re * 0.16666666666666666) tmp = 0 if re <= -0.065: tmp = math.exp(re) elif re <= 0.0126: tmp = math.cos(im) * ((re + 1.0) + (t_0 * (re * re))) elif re <= 1.05e+103: tmp = math.exp(re) * (1.0 + (-0.5 * (im * im))) else: tmp = math.cos(im) * (1.0 + (re * (1.0 + (re * t_0)))) return tmp
function code(re, im) t_0 = Float64(0.5 + Float64(re * 0.16666666666666666)) tmp = 0.0 if (re <= -0.065) tmp = exp(re); elseif (re <= 0.0126) tmp = Float64(cos(im) * Float64(Float64(re + 1.0) + Float64(t_0 * Float64(re * re)))); elseif (re <= 1.05e+103) tmp = Float64(exp(re) * Float64(1.0 + Float64(-0.5 * Float64(im * im)))); else tmp = Float64(cos(im) * Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * t_0))))); end return tmp end
function tmp_2 = code(re, im) t_0 = 0.5 + (re * 0.16666666666666666); tmp = 0.0; if (re <= -0.065) tmp = exp(re); elseif (re <= 0.0126) tmp = cos(im) * ((re + 1.0) + (t_0 * (re * re))); elseif (re <= 1.05e+103) tmp = exp(re) * (1.0 + (-0.5 * (im * im))); else tmp = cos(im) * (1.0 + (re * (1.0 + (re * t_0)))); end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[re, -0.065], N[Exp[re], $MachinePrecision], If[LessEqual[re, 0.0126], N[(N[Cos[im], $MachinePrecision] * N[(N[(re + 1.0), $MachinePrecision] + N[(t$95$0 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 1.05e+103], N[(N[Exp[re], $MachinePrecision] * N[(1.0 + N[(-0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Cos[im], $MachinePrecision] * N[(1.0 + N[(re * N[(1.0 + N[(re * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 + re \cdot 0.16666666666666666\\
\mathbf{if}\;re \leq -0.065:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;re \leq 0.0126:\\
\;\;\;\;\cos im \cdot \left(\left(re + 1\right) + t\_0 \cdot \left(re \cdot re\right)\right)\\
\mathbf{elif}\;re \leq 1.05 \cdot 10^{+103}:\\
\;\;\;\;e^{re} \cdot \left(1 + -0.5 \cdot \left(im \cdot im\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos im \cdot \left(1 + re \cdot \left(1 + re \cdot t\_0\right)\right)\\
\end{array}
\end{array}
if re < -0.065000000000000002Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f64100.0%
Simplified100.0%
if -0.065000000000000002 < re < 0.0126Initial program 100.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6499.5%
Simplified99.5%
distribute-rgt-inN/A
*-lft-identityN/A
associate-+r+N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6499.5%
Applied egg-rr99.5%
if 0.0126 < re < 1.0500000000000001e103Initial program 100.0%
Taylor expanded in im around 0
*-lft-identityN/A
associate-*r*N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6485.0%
Simplified85.0%
if 1.0500000000000001e103 < re Initial program 100.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64100.0%
Simplified100.0%
Final simplification98.6%
(FPCore (re im)
:precision binary64
(let* ((t_0
(*
(cos im)
(+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
(if (<= re -0.115)
(exp re)
(if (<= re 0.0126)
t_0
(if (<= re 1.02e+103) (* (exp re) (+ 1.0 (* -0.5 (* im im)))) t_0)))))
double code(double re, double im) {
double t_0 = cos(im) * (1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))));
double tmp;
if (re <= -0.115) {
tmp = exp(re);
} else if (re <= 0.0126) {
tmp = t_0;
} else if (re <= 1.02e+103) {
tmp = exp(re) * (1.0 + (-0.5 * (im * im)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: tmp
t_0 = cos(im) * (1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0))))))
if (re <= (-0.115d0)) then
tmp = exp(re)
else if (re <= 0.0126d0) then
tmp = t_0
else if (re <= 1.02d+103) then
tmp = exp(re) * (1.0d0 + ((-0.5d0) * (im * im)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = Math.cos(im) * (1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))));
double tmp;
if (re <= -0.115) {
tmp = Math.exp(re);
} else if (re <= 0.0126) {
tmp = t_0;
} else if (re <= 1.02e+103) {
tmp = Math.exp(re) * (1.0 + (-0.5 * (im * im)));
} else {
tmp = t_0;
}
return tmp;
}
def code(re, im): t_0 = math.cos(im) * (1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))))) tmp = 0 if re <= -0.115: tmp = math.exp(re) elif re <= 0.0126: tmp = t_0 elif re <= 1.02e+103: tmp = math.exp(re) * (1.0 + (-0.5 * (im * im))) else: tmp = t_0 return tmp
function code(re, im) t_0 = Float64(cos(im) * Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666))))))) tmp = 0.0 if (re <= -0.115) tmp = exp(re); elseif (re <= 0.0126) tmp = t_0; elseif (re <= 1.02e+103) tmp = Float64(exp(re) * Float64(1.0 + Float64(-0.5 * Float64(im * im)))); else tmp = t_0; end return tmp end
function tmp_2 = code(re, im) t_0 = cos(im) * (1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))))); tmp = 0.0; if (re <= -0.115) tmp = exp(re); elseif (re <= 0.0126) tmp = t_0; elseif (re <= 1.02e+103) tmp = exp(re) * (1.0 + (-0.5 * (im * im))); else tmp = t_0; end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(N[Cos[im], $MachinePrecision] * N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[re, -0.115], N[Exp[re], $MachinePrecision], If[LessEqual[re, 0.0126], t$95$0, If[LessEqual[re, 1.02e+103], N[(N[Exp[re], $MachinePrecision] * N[(1.0 + N[(-0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \cos im \cdot \left(1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\right)\\
\mathbf{if}\;re \leq -0.115:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;re \leq 0.0126:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;re \leq 1.02 \cdot 10^{+103}:\\
\;\;\;\;e^{re} \cdot \left(1 + -0.5 \cdot \left(im \cdot im\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if re < -0.115000000000000005Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f64100.0%
Simplified100.0%
if -0.115000000000000005 < re < 0.0126 or 1.01999999999999991e103 < re Initial program 100.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6499.6%
Simplified99.6%
if 0.0126 < re < 1.01999999999999991e103Initial program 100.0%
Taylor expanded in im around 0
*-lft-identityN/A
associate-*r*N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6485.0%
Simplified85.0%
Final simplification98.6%
(FPCore (re im)
:precision binary64
(let* ((t_0 (* (cos im) (+ 1.0 (* re (+ 1.0 (* re 0.5)))))))
(if (<= re -0.035)
(exp re)
(if (<= re 0.01) t_0 (if (<= re 1.85e+154) (exp re) t_0)))))
double code(double re, double im) {
double t_0 = cos(im) * (1.0 + (re * (1.0 + (re * 0.5))));
double tmp;
if (re <= -0.035) {
tmp = exp(re);
} else if (re <= 0.01) {
tmp = t_0;
} else if (re <= 1.85e+154) {
tmp = exp(re);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: tmp
t_0 = cos(im) * (1.0d0 + (re * (1.0d0 + (re * 0.5d0))))
if (re <= (-0.035d0)) then
tmp = exp(re)
else if (re <= 0.01d0) then
tmp = t_0
else if (re <= 1.85d+154) then
tmp = exp(re)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = Math.cos(im) * (1.0 + (re * (1.0 + (re * 0.5))));
double tmp;
if (re <= -0.035) {
tmp = Math.exp(re);
} else if (re <= 0.01) {
tmp = t_0;
} else if (re <= 1.85e+154) {
tmp = Math.exp(re);
} else {
tmp = t_0;
}
return tmp;
}
def code(re, im): t_0 = math.cos(im) * (1.0 + (re * (1.0 + (re * 0.5)))) tmp = 0 if re <= -0.035: tmp = math.exp(re) elif re <= 0.01: tmp = t_0 elif re <= 1.85e+154: tmp = math.exp(re) else: tmp = t_0 return tmp
function code(re, im) t_0 = Float64(cos(im) * Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * 0.5))))) tmp = 0.0 if (re <= -0.035) tmp = exp(re); elseif (re <= 0.01) tmp = t_0; elseif (re <= 1.85e+154) tmp = exp(re); else tmp = t_0; end return tmp end
function tmp_2 = code(re, im) t_0 = cos(im) * (1.0 + (re * (1.0 + (re * 0.5)))); tmp = 0.0; if (re <= -0.035) tmp = exp(re); elseif (re <= 0.01) tmp = t_0; elseif (re <= 1.85e+154) tmp = exp(re); else tmp = t_0; end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(N[Cos[im], $MachinePrecision] * N[(1.0 + N[(re * N[(1.0 + N[(re * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[re, -0.035], N[Exp[re], $MachinePrecision], If[LessEqual[re, 0.01], t$95$0, If[LessEqual[re, 1.85e+154], N[Exp[re], $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \cos im \cdot \left(1 + re \cdot \left(1 + re \cdot 0.5\right)\right)\\
\mathbf{if}\;re \leq -0.035:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;re \leq 0.01:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;re \leq 1.85 \cdot 10^{+154}:\\
\;\;\;\;e^{re}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if re < -0.035000000000000003 or 0.0100000000000000002 < re < 1.84999999999999997e154Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6496.2%
Simplified96.2%
if -0.035000000000000003 < re < 0.0100000000000000002 or 1.84999999999999997e154 < re Initial program 100.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6499.4%
Simplified99.4%
Final simplification98.1%
(FPCore (re im)
:precision binary64
(if (<= re -0.034)
(exp re)
(if (<= re 0.00185)
(* (cos im) (+ re 1.0))
(* (exp re) (+ 1.0 (* -0.5 (* im im)))))))
double code(double re, double im) {
double tmp;
if (re <= -0.034) {
tmp = exp(re);
} else if (re <= 0.00185) {
tmp = cos(im) * (re + 1.0);
} else {
tmp = exp(re) * (1.0 + (-0.5 * (im * im)));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-0.034d0)) then
tmp = exp(re)
else if (re <= 0.00185d0) then
tmp = cos(im) * (re + 1.0d0)
else
tmp = exp(re) * (1.0d0 + ((-0.5d0) * (im * im)))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -0.034) {
tmp = Math.exp(re);
} else if (re <= 0.00185) {
tmp = Math.cos(im) * (re + 1.0);
} else {
tmp = Math.exp(re) * (1.0 + (-0.5 * (im * im)));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -0.034: tmp = math.exp(re) elif re <= 0.00185: tmp = math.cos(im) * (re + 1.0) else: tmp = math.exp(re) * (1.0 + (-0.5 * (im * im))) return tmp
function code(re, im) tmp = 0.0 if (re <= -0.034) tmp = exp(re); elseif (re <= 0.00185) tmp = Float64(cos(im) * Float64(re + 1.0)); else tmp = Float64(exp(re) * Float64(1.0 + Float64(-0.5 * Float64(im * im)))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -0.034) tmp = exp(re); elseif (re <= 0.00185) tmp = cos(im) * (re + 1.0); else tmp = exp(re) * (1.0 + (-0.5 * (im * im))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -0.034], N[Exp[re], $MachinePrecision], If[LessEqual[re, 0.00185], N[(N[Cos[im], $MachinePrecision] * N[(re + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[Exp[re], $MachinePrecision] * N[(1.0 + N[(-0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -0.034:\\
\;\;\;\;e^{re}\\
\mathbf{elif}\;re \leq 0.00185:\\
\;\;\;\;\cos im \cdot \left(re + 1\right)\\
\mathbf{else}:\\
\;\;\;\;e^{re} \cdot \left(1 + -0.5 \cdot \left(im \cdot im\right)\right)\\
\end{array}
\end{array}
if re < -0.034000000000000002Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f64100.0%
Simplified100.0%
if -0.034000000000000002 < re < 0.0018500000000000001Initial program 100.0%
Taylor expanded in re around 0
+-commutativeN/A
+-lowering-+.f6499.0%
Simplified99.0%
if 0.0018500000000000001 < re Initial program 100.0%
Taylor expanded in im around 0
*-lft-identityN/A
associate-*r*N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
exp-lowering-exp.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6479.4%
Simplified79.4%
Final simplification94.1%
(FPCore (re im)
:precision binary64
(let* ((t_0 (* (* im im) (* im im))) (t_1 (/ -4.0 (* im im))))
(if (<= re -5.8e+202)
(/ 1.0 (/ (- (+ -2.0 t_1) (/ (+ 8.0 (/ 16.0 (* im im))) t_0)) (* im im)))
(if (<= re -350.0)
(/
1.0
(+
1.0
(* (* im im) (+ 0.5 (* im (* im (+ 0.25 (* (* im im) 0.125))))))))
(if (<= re 9000000.0)
(cos im)
(if (<= re 7.5e+82)
(*
(- 1.0 (* (* im im) (* (* im im) 0.25)))
(/ (+ (+ t_1 2.0) (/ 8.0 t_0)) (* im im)))
(* re (* 0.16666666666666666 (* re re)))))))))
double code(double re, double im) {
double t_0 = (im * im) * (im * im);
double t_1 = -4.0 / (im * im);
double tmp;
if (re <= -5.8e+202) {
tmp = 1.0 / (((-2.0 + t_1) - ((8.0 + (16.0 / (im * im))) / t_0)) / (im * im));
} else if (re <= -350.0) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else if (re <= 9000000.0) {
tmp = cos(im);
} else if (re <= 7.5e+82) {
tmp = (1.0 - ((im * im) * ((im * im) * 0.25))) * (((t_1 + 2.0) + (8.0 / t_0)) / (im * im));
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (im * im) * (im * im)
t_1 = (-4.0d0) / (im * im)
if (re <= (-5.8d+202)) then
tmp = 1.0d0 / ((((-2.0d0) + t_1) - ((8.0d0 + (16.0d0 / (im * im))) / t_0)) / (im * im))
else if (re <= (-350.0d0)) then
tmp = 1.0d0 / (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.25d0 + ((im * im) * 0.125d0)))))))
else if (re <= 9000000.0d0) then
tmp = cos(im)
else if (re <= 7.5d+82) then
tmp = (1.0d0 - ((im * im) * ((im * im) * 0.25d0))) * (((t_1 + 2.0d0) + (8.0d0 / t_0)) / (im * im))
else
tmp = re * (0.16666666666666666d0 * (re * re))
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = (im * im) * (im * im);
double t_1 = -4.0 / (im * im);
double tmp;
if (re <= -5.8e+202) {
tmp = 1.0 / (((-2.0 + t_1) - ((8.0 + (16.0 / (im * im))) / t_0)) / (im * im));
} else if (re <= -350.0) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else if (re <= 9000000.0) {
tmp = Math.cos(im);
} else if (re <= 7.5e+82) {
tmp = (1.0 - ((im * im) * ((im * im) * 0.25))) * (((t_1 + 2.0) + (8.0 / t_0)) / (im * im));
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
def code(re, im): t_0 = (im * im) * (im * im) t_1 = -4.0 / (im * im) tmp = 0 if re <= -5.8e+202: tmp = 1.0 / (((-2.0 + t_1) - ((8.0 + (16.0 / (im * im))) / t_0)) / (im * im)) elif re <= -350.0: tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))) elif re <= 9000000.0: tmp = math.cos(im) elif re <= 7.5e+82: tmp = (1.0 - ((im * im) * ((im * im) * 0.25))) * (((t_1 + 2.0) + (8.0 / t_0)) / (im * im)) else: tmp = re * (0.16666666666666666 * (re * re)) return tmp
function code(re, im) t_0 = Float64(Float64(im * im) * Float64(im * im)) t_1 = Float64(-4.0 / Float64(im * im)) tmp = 0.0 if (re <= -5.8e+202) tmp = Float64(1.0 / Float64(Float64(Float64(-2.0 + t_1) - Float64(Float64(8.0 + Float64(16.0 / Float64(im * im))) / t_0)) / Float64(im * im))); elseif (re <= -350.0) tmp = Float64(1.0 / Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.25 + Float64(Float64(im * im) * 0.125)))))))); elseif (re <= 9000000.0) tmp = cos(im); elseif (re <= 7.5e+82) tmp = Float64(Float64(1.0 - Float64(Float64(im * im) * Float64(Float64(im * im) * 0.25))) * Float64(Float64(Float64(t_1 + 2.0) + Float64(8.0 / t_0)) / Float64(im * im))); else tmp = Float64(re * Float64(0.16666666666666666 * Float64(re * re))); end return tmp end
function tmp_2 = code(re, im) t_0 = (im * im) * (im * im); t_1 = -4.0 / (im * im); tmp = 0.0; if (re <= -5.8e+202) tmp = 1.0 / (((-2.0 + t_1) - ((8.0 + (16.0 / (im * im))) / t_0)) / (im * im)); elseif (re <= -350.0) tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))); elseif (re <= 9000000.0) tmp = cos(im); elseif (re <= 7.5e+82) tmp = (1.0 - ((im * im) * ((im * im) * 0.25))) * (((t_1 + 2.0) + (8.0 / t_0)) / (im * im)); else tmp = re * (0.16666666666666666 * (re * re)); end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(N[(im * im), $MachinePrecision] * N[(im * im), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(-4.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[re, -5.8e+202], N[(1.0 / N[(N[(N[(-2.0 + t$95$1), $MachinePrecision] - N[(N[(8.0 + N[(16.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -350.0], N[(1.0 / N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.25 + N[(N[(im * im), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 9000000.0], N[Cos[im], $MachinePrecision], If[LessEqual[re, 7.5e+82], N[(N[(1.0 - N[(N[(im * im), $MachinePrecision] * N[(N[(im * im), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$1 + 2.0), $MachinePrecision] + N[(8.0 / t$95$0), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(im \cdot im\right) \cdot \left(im \cdot im\right)\\
t_1 := \frac{-4}{im \cdot im}\\
\mathbf{if}\;re \leq -5.8 \cdot 10^{+202}:\\
\;\;\;\;\frac{1}{\frac{\left(-2 + t\_1\right) - \frac{8 + \frac{16}{im \cdot im}}{t\_0}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -350:\\
\;\;\;\;\frac{1}{1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.25 + \left(im \cdot im\right) \cdot 0.125\right)\right)\right)}\\
\mathbf{elif}\;re \leq 9000000:\\
\;\;\;\;\cos im\\
\mathbf{elif}\;re \leq 7.5 \cdot 10^{+82}:\\
\;\;\;\;\left(1 - \left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.25\right)\right) \cdot \frac{\left(t\_1 + 2\right) + \frac{8}{t\_0}}{im \cdot im}\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
\end{array}
\end{array}
if re < -5.7999999999999999e202Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
Simplified59.6%
if -5.7999999999999999e202 < re < -350Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.4%
Simplified2.4%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.4%
Applied egg-rr2.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6450.6%
Simplified50.6%
if -350 < re < 9e6Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f6494.8%
Simplified94.8%
if 9e6 < re < 7.4999999999999999e82Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f643.2%
Simplified3.2%
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
Applied egg-rr9.6%
Taylor expanded in im around inf
/-lowering-/.f64N/A
Simplified57.1%
if 7.4999999999999999e82 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6464.0%
Simplified64.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6464.0%
Simplified64.0%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*r*N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6464.0%
Simplified64.0%
Final simplification75.3%
(FPCore (re im)
:precision binary64
(let* ((t_0 (+ 0.5 (* re 0.16666666666666666))) (t_1 (* re t_0)))
(if (<= re -1.25e+194)
(/
1.0
(/
(-
(+ -2.0 (/ -4.0 (* im im)))
(/ (+ 8.0 (/ 16.0 (* im im))) (* (* im im) (* im im))))
(* im im)))
(if (<= re -2.0)
(/
1.0
(+
1.0
(* (* im im) (+ 0.5 (* im (* im (+ 0.25 (* (* im im) 0.125))))))))
(if (<= re 2.8e+77)
(+
1.0
(/
(* re (+ 1.0 (* t_1 (* t_0 (* t_0 (* re re))))))
(+ 1.0 (* t_1 (+ t_1 -1.0)))))
(+
1.0
(*
re
(+
1.0
(/
(/ (* re (* re (+ (* (* re re) 0.027777777777777776) -0.25))) re)
(+ (* re 0.16666666666666666) -0.5))))))))))
double code(double re, double im) {
double t_0 = 0.5 + (re * 0.16666666666666666);
double t_1 = re * t_0;
double tmp;
if (re <= -1.25e+194) {
tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im));
} else if (re <= -2.0) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else if (re <= 2.8e+77) {
tmp = 1.0 + ((re * (1.0 + (t_1 * (t_0 * (t_0 * (re * re)))))) / (1.0 + (t_1 * (t_1 + -1.0))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 0.5d0 + (re * 0.16666666666666666d0)
t_1 = re * t_0
if (re <= (-1.25d+194)) then
tmp = 1.0d0 / ((((-2.0d0) + ((-4.0d0) / (im * im))) - ((8.0d0 + (16.0d0 / (im * im))) / ((im * im) * (im * im)))) / (im * im))
else if (re <= (-2.0d0)) then
tmp = 1.0d0 / (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.25d0 + ((im * im) * 0.125d0)))))))
else if (re <= 2.8d+77) then
tmp = 1.0d0 + ((re * (1.0d0 + (t_1 * (t_0 * (t_0 * (re * re)))))) / (1.0d0 + (t_1 * (t_1 + (-1.0d0)))))
else
tmp = 1.0d0 + (re * (1.0d0 + (((re * (re * (((re * re) * 0.027777777777777776d0) + (-0.25d0)))) / re) / ((re * 0.16666666666666666d0) + (-0.5d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = 0.5 + (re * 0.16666666666666666);
double t_1 = re * t_0;
double tmp;
if (re <= -1.25e+194) {
tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im));
} else if (re <= -2.0) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else if (re <= 2.8e+77) {
tmp = 1.0 + ((re * (1.0 + (t_1 * (t_0 * (t_0 * (re * re)))))) / (1.0 + (t_1 * (t_1 + -1.0))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
def code(re, im): t_0 = 0.5 + (re * 0.16666666666666666) t_1 = re * t_0 tmp = 0 if re <= -1.25e+194: tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im)) elif re <= -2.0: tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))) elif re <= 2.8e+77: tmp = 1.0 + ((re * (1.0 + (t_1 * (t_0 * (t_0 * (re * re)))))) / (1.0 + (t_1 * (t_1 + -1.0)))) else: tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))) return tmp
function code(re, im) t_0 = Float64(0.5 + Float64(re * 0.16666666666666666)) t_1 = Float64(re * t_0) tmp = 0.0 if (re <= -1.25e+194) tmp = Float64(1.0 / Float64(Float64(Float64(-2.0 + Float64(-4.0 / Float64(im * im))) - Float64(Float64(8.0 + Float64(16.0 / Float64(im * im))) / Float64(Float64(im * im) * Float64(im * im)))) / Float64(im * im))); elseif (re <= -2.0) tmp = Float64(1.0 / Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.25 + Float64(Float64(im * im) * 0.125)))))))); elseif (re <= 2.8e+77) tmp = Float64(1.0 + Float64(Float64(re * Float64(1.0 + Float64(t_1 * Float64(t_0 * Float64(t_0 * Float64(re * re)))))) / Float64(1.0 + Float64(t_1 * Float64(t_1 + -1.0))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(Float64(Float64(re * Float64(re * Float64(Float64(Float64(re * re) * 0.027777777777777776) + -0.25))) / re) / Float64(Float64(re * 0.16666666666666666) + -0.5))))); end return tmp end
function tmp_2 = code(re, im) t_0 = 0.5 + (re * 0.16666666666666666); t_1 = re * t_0; tmp = 0.0; if (re <= -1.25e+194) tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im)); elseif (re <= -2.0) tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))); elseif (re <= 2.8e+77) tmp = 1.0 + ((re * (1.0 + (t_1 * (t_0 * (t_0 * (re * re)))))) / (1.0 + (t_1 * (t_1 + -1.0)))); else tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))); end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(re * t$95$0), $MachinePrecision]}, If[LessEqual[re, -1.25e+194], N[(1.0 / N[(N[(N[(-2.0 + N[(-4.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(8.0 + N[(16.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(im * im), $MachinePrecision] * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -2.0], N[(1.0 / N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.25 + N[(N[(im * im), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 2.8e+77], N[(1.0 + N[(N[(re * N[(1.0 + N[(t$95$1 * N[(t$95$0 * N[(t$95$0 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(t$95$1 * N[(t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(N[(N[(re * N[(re * N[(N[(N[(re * re), $MachinePrecision] * 0.027777777777777776), $MachinePrecision] + -0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / re), $MachinePrecision] / N[(N[(re * 0.16666666666666666), $MachinePrecision] + -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 + re \cdot 0.16666666666666666\\
t_1 := re \cdot t\_0\\
\mathbf{if}\;re \leq -1.25 \cdot 10^{+194}:\\
\;\;\;\;\frac{1}{\frac{\left(-2 + \frac{-4}{im \cdot im}\right) - \frac{8 + \frac{16}{im \cdot im}}{\left(im \cdot im\right) \cdot \left(im \cdot im\right)}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -2:\\
\;\;\;\;\frac{1}{1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.25 + \left(im \cdot im\right) \cdot 0.125\right)\right)\right)}\\
\mathbf{elif}\;re \leq 2.8 \cdot 10^{+77}:\\
\;\;\;\;1 + \frac{re \cdot \left(1 + t\_1 \cdot \left(t\_0 \cdot \left(t\_0 \cdot \left(re \cdot re\right)\right)\right)\right)}{1 + t\_1 \cdot \left(t\_1 + -1\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + \frac{\frac{re \cdot \left(re \cdot \left(\left(re \cdot re\right) \cdot 0.027777777777777776 + -0.25\right)\right)}{re}}{re \cdot 0.16666666666666666 + -0.5}\right)\\
\end{array}
\end{array}
if re < -1.24999999999999997e194Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
Simplified59.6%
if -1.24999999999999997e194 < re < -2Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.8%
Simplified49.8%
if -2 < re < 2.8e77Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6456.0%
Simplified56.0%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6445.6%
Simplified45.6%
*-commutativeN/A
flip3-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr49.2%
if 2.8e77 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6464.7%
Simplified64.7%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6462.9%
Simplified62.9%
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
Applied egg-rr23.5%
distribute-lft-out--N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
distribute-rgt-out--N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
Applied egg-rr64.7%
Final simplification53.5%
(FPCore (re im)
:precision binary64
(if (<= re -4.8e+207)
(/
1.0
(/
(-
(+ -2.0 (/ -4.0 (* im im)))
(/ (+ 8.0 (/ 16.0 (* im im))) (* (* im im) (* im im))))
(* im im)))
(if (<= re -1.6)
(/
1.0
(+ 1.0 (* (* im im) (+ 0.5 (* im (* im (+ 0.25 (* (* im im) 0.125))))))))
(+
1.0
(*
re
(+
1.0
(/
(/ (* re (* re (+ (* (* re re) 0.027777777777777776) -0.25))) re)
(+ (* re 0.16666666666666666) -0.5))))))))
double code(double re, double im) {
double tmp;
if (re <= -4.8e+207) {
tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.8d+207)) then
tmp = 1.0d0 / ((((-2.0d0) + ((-4.0d0) / (im * im))) - ((8.0d0 + (16.0d0 / (im * im))) / ((im * im) * (im * im)))) / (im * im))
else if (re <= (-1.6d0)) then
tmp = 1.0d0 / (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.25d0 + ((im * im) * 0.125d0)))))))
else
tmp = 1.0d0 + (re * (1.0d0 + (((re * (re * (((re * re) * 0.027777777777777776d0) + (-0.25d0)))) / re) / ((re * 0.16666666666666666d0) + (-0.5d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -4.8e+207) {
tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -4.8e+207: tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im)) elif re <= -1.6: tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))) else: tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))) return tmp
function code(re, im) tmp = 0.0 if (re <= -4.8e+207) tmp = Float64(1.0 / Float64(Float64(Float64(-2.0 + Float64(-4.0 / Float64(im * im))) - Float64(Float64(8.0 + Float64(16.0 / Float64(im * im))) / Float64(Float64(im * im) * Float64(im * im)))) / Float64(im * im))); elseif (re <= -1.6) tmp = Float64(1.0 / Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.25 + Float64(Float64(im * im) * 0.125)))))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(Float64(Float64(re * Float64(re * Float64(Float64(Float64(re * re) * 0.027777777777777776) + -0.25))) / re) / Float64(Float64(re * 0.16666666666666666) + -0.5))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -4.8e+207) tmp = 1.0 / (((-2.0 + (-4.0 / (im * im))) - ((8.0 + (16.0 / (im * im))) / ((im * im) * (im * im)))) / (im * im)); elseif (re <= -1.6) tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))); else tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -4.8e+207], N[(1.0 / N[(N[(N[(-2.0 + N[(-4.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(8.0 + N[(16.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(im * im), $MachinePrecision] * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.6], N[(1.0 / N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.25 + N[(N[(im * im), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(N[(N[(re * N[(re * N[(N[(N[(re * re), $MachinePrecision] * 0.027777777777777776), $MachinePrecision] + -0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / re), $MachinePrecision] / N[(N[(re * 0.16666666666666666), $MachinePrecision] + -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -4.8 \cdot 10^{+207}:\\
\;\;\;\;\frac{1}{\frac{\left(-2 + \frac{-4}{im \cdot im}\right) - \frac{8 + \frac{16}{im \cdot im}}{\left(im \cdot im\right) \cdot \left(im \cdot im\right)}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.6:\\
\;\;\;\;\frac{1}{1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.25 + \left(im \cdot im\right) \cdot 0.125\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + \frac{\frac{re \cdot \left(re \cdot \left(\left(re \cdot re\right) \cdot 0.027777777777777776 + -0.25\right)\right)}{re}}{re \cdot 0.16666666666666666 + -0.5}\right)\\
\end{array}
\end{array}
if re < -4.8000000000000002e207Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
Simplified59.6%
if -4.8000000000000002e207 < re < -1.6000000000000001Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.8%
Simplified49.8%
if -1.6000000000000001 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
Applied egg-rr39.4%
distribute-lft-out--N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
distribute-rgt-out--N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
Applied egg-rr50.9%
(FPCore (re im)
:precision binary64
(if (<= re -2.25e+207)
(/ 1.0 (/ (- -2.0 (/ (+ 4.0 (/ 8.0 (* im im))) (* im im))) (* im im)))
(if (<= re -1.8)
(/
1.0
(+ 1.0 (* (* im im) (+ 0.5 (* im (* im (+ 0.25 (* (* im im) 0.125))))))))
(+
1.0
(*
re
(+
1.0
(/
(/ (* re (* re (+ (* (* re re) 0.027777777777777776) -0.25))) re)
(+ (* re 0.16666666666666666) -0.5))))))))
double code(double re, double im) {
double tmp;
if (re <= -2.25e+207) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.8) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-2.25d+207)) then
tmp = 1.0d0 / (((-2.0d0) - ((4.0d0 + (8.0d0 / (im * im))) / (im * im))) / (im * im))
else if (re <= (-1.8d0)) then
tmp = 1.0d0 / (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.25d0 + ((im * im) * 0.125d0)))))))
else
tmp = 1.0d0 + (re * (1.0d0 + (((re * (re * (((re * re) * 0.027777777777777776d0) + (-0.25d0)))) / re) / ((re * 0.16666666666666666d0) + (-0.5d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -2.25e+207) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.8) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -2.25e+207: tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)) elif re <= -1.8: tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))) else: tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))) return tmp
function code(re, im) tmp = 0.0 if (re <= -2.25e+207) tmp = Float64(1.0 / Float64(Float64(-2.0 - Float64(Float64(4.0 + Float64(8.0 / Float64(im * im))) / Float64(im * im))) / Float64(im * im))); elseif (re <= -1.8) tmp = Float64(1.0 / Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.25 + Float64(Float64(im * im) * 0.125)))))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(Float64(Float64(re * Float64(re * Float64(Float64(Float64(re * re) * 0.027777777777777776) + -0.25))) / re) / Float64(Float64(re * 0.16666666666666666) + -0.5))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -2.25e+207) tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)); elseif (re <= -1.8) tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))); else tmp = 1.0 + (re * (1.0 + (((re * (re * (((re * re) * 0.027777777777777776) + -0.25))) / re) / ((re * 0.16666666666666666) + -0.5)))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -2.25e+207], N[(1.0 / N[(N[(-2.0 - N[(N[(4.0 + N[(8.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.8], N[(1.0 / N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.25 + N[(N[(im * im), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(N[(N[(re * N[(re * N[(N[(N[(re * re), $MachinePrecision] * 0.027777777777777776), $MachinePrecision] + -0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / re), $MachinePrecision] / N[(N[(re * 0.16666666666666666), $MachinePrecision] + -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -2.25 \cdot 10^{+207}:\\
\;\;\;\;\frac{1}{\frac{-2 - \frac{4 + \frac{8}{im \cdot im}}{im \cdot im}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.8:\\
\;\;\;\;\frac{1}{1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.25 + \left(im \cdot im\right) \cdot 0.125\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + \frac{\frac{re \cdot \left(re \cdot \left(\left(re \cdot re\right) \cdot 0.027777777777777776 + -0.25\right)\right)}{re}}{re \cdot 0.16666666666666666 + -0.5}\right)\\
\end{array}
\end{array}
if re < -2.25000000000000002e207Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
Simplified56.4%
if -2.25000000000000002e207 < re < -1.80000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.8%
Simplified49.8%
if -1.80000000000000004 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
swap-sqrN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
Applied egg-rr39.4%
distribute-lft-out--N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
distribute-rgt-out--N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f64N/A
Applied egg-rr50.9%
(FPCore (re im)
:precision binary64
(if (<= re -8.6e+191)
(/ 1.0 (/ (- -2.0 (/ (+ 4.0 (/ 8.0 (* im im))) (* im im))) (* im im)))
(if (<= re -1.8)
(/
1.0
(+ 1.0 (* (* im im) (+ 0.5 (* im (* im (+ 0.25 (* (* im im) 0.125))))))))
(+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
double code(double re, double im) {
double tmp;
if (re <= -8.6e+191) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.8) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-8.6d+191)) then
tmp = 1.0d0 / (((-2.0d0) - ((4.0d0 + (8.0d0 / (im * im))) / (im * im))) / (im * im))
else if (re <= (-1.8d0)) then
tmp = 1.0d0 / (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.25d0 + ((im * im) * 0.125d0)))))))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -8.6e+191) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.8) {
tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125)))))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -8.6e+191: tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)) elif re <= -1.8: tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))) else: tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))) return tmp
function code(re, im) tmp = 0.0 if (re <= -8.6e+191) tmp = Float64(1.0 / Float64(Float64(-2.0 - Float64(Float64(4.0 + Float64(8.0 / Float64(im * im))) / Float64(im * im))) / Float64(im * im))); elseif (re <= -1.8) tmp = Float64(1.0 / Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.25 + Float64(Float64(im * im) * 0.125)))))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -8.6e+191) tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)); elseif (re <= -1.8) tmp = 1.0 / (1.0 + ((im * im) * (0.5 + (im * (im * (0.25 + ((im * im) * 0.125))))))); else tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -8.6e+191], N[(1.0 / N[(N[(-2.0 - N[(N[(4.0 + N[(8.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.8], N[(1.0 / N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.25 + N[(N[(im * im), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -8.6 \cdot 10^{+191}:\\
\;\;\;\;\frac{1}{\frac{-2 - \frac{4 + \frac{8}{im \cdot im}}{im \cdot im}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.8:\\
\;\;\;\;\frac{1}{1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.25 + \left(im \cdot im\right) \cdot 0.125\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -8.5999999999999995e191Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
Simplified56.4%
if -8.5999999999999995e191 < re < -1.80000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.8%
Simplified49.8%
if -1.80000000000000004 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
(FPCore (re im)
:precision binary64
(if (<= re -1.65e+207)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re -4.4)
(/ 1.0 (+ 1.0 (* 0.5 (* im im))))
(if (<= re 1.8)
(+ 1.0 (* re (+ 1.0 (* re 0.5))))
(* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
double code(double re, double im) {
double tmp;
if (re <= -1.65e+207) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -4.4) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else if (re <= 1.8) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-1.65d+207)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= (-4.4d0)) then
tmp = 1.0d0 / (1.0d0 + (0.5d0 * (im * im)))
else if (re <= 1.8d0) then
tmp = 1.0d0 + (re * (1.0d0 + (re * 0.5d0)))
else
tmp = re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -1.65e+207) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -4.4) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else if (re <= 1.8) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -1.65e+207: tmp = 1.0 / (-2.0 / (im * im)) elif re <= -4.4: tmp = 1.0 / (1.0 + (0.5 * (im * im))) elif re <= 1.8: tmp = 1.0 + (re * (1.0 + (re * 0.5))) else: tmp = re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))) return tmp
function code(re, im) tmp = 0.0 if (re <= -1.65e+207) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= -4.4) tmp = Float64(1.0 / Float64(1.0 + Float64(0.5 * Float64(im * im)))); elseif (re <= 1.8) tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * 0.5)))); else tmp = Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -1.65e+207) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= -4.4) tmp = 1.0 / (1.0 + (0.5 * (im * im))); elseif (re <= 1.8) tmp = 1.0 + (re * (1.0 + (re * 0.5))); else tmp = re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -1.65e+207], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -4.4], N[(1.0 / N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 1.8], N[(1.0 + N[(re * N[(1.0 + N[(re * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -1.65 \cdot 10^{+207}:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq -4.4:\\
\;\;\;\;\frac{1}{1 + 0.5 \cdot \left(im \cdot im\right)}\\
\mathbf{elif}\;re \leq 1.8:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -1.65e207Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6439.9%
Simplified39.9%
if -1.65e207 < re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.7%
Simplified32.7%
if -4.4000000000000004 < re < 1.80000000000000004Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6451.6%
Simplified51.6%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6451.2%
Simplified51.2%
if 1.80000000000000004 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
cube-multN/A
unpow2N/A
associate-*l*N/A
+-commutativeN/A
distribute-lft-inN/A
distribute-lft-inN/A
*-commutativeN/A
unpow2N/A
associate-*r*N/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-commutativeN/A
unpow2N/A
associate-*r*N/A
sum3-defineN/A
Simplified48.8%
(FPCore (re im)
:precision binary64
(if (<= re -6e+193)
(/ 1.0 (/ (- -2.0 (/ (+ 4.0 (/ 8.0 (* im im))) (* im im))) (* im im)))
(if (<= re -1.6)
(/ 1.0 (+ 1.0 (* im (* im (+ 0.5 (* (* im im) 0.25))))))
(+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
double code(double re, double im) {
double tmp;
if (re <= -6e+193) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25)))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-6d+193)) then
tmp = 1.0d0 / (((-2.0d0) - ((4.0d0 + (8.0d0 / (im * im))) / (im * im))) / (im * im))
else if (re <= (-1.6d0)) then
tmp = 1.0d0 / (1.0d0 + (im * (im * (0.5d0 + ((im * im) * 0.25d0)))))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -6e+193) {
tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25)))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -6e+193: tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)) elif re <= -1.6: tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25))))) else: tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))) return tmp
function code(re, im) tmp = 0.0 if (re <= -6e+193) tmp = Float64(1.0 / Float64(Float64(-2.0 - Float64(Float64(4.0 + Float64(8.0 / Float64(im * im))) / Float64(im * im))) / Float64(im * im))); elseif (re <= -1.6) tmp = Float64(1.0 / Float64(1.0 + Float64(im * Float64(im * Float64(0.5 + Float64(Float64(im * im) * 0.25)))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -6e+193) tmp = 1.0 / ((-2.0 - ((4.0 + (8.0 / (im * im))) / (im * im))) / (im * im)); elseif (re <= -1.6) tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25))))); else tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -6e+193], N[(1.0 / N[(N[(-2.0 - N[(N[(4.0 + N[(8.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.6], N[(1.0 / N[(1.0 + N[(im * N[(im * N[(0.5 + N[(N[(im * im), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -6 \cdot 10^{+193}:\\
\;\;\;\;\frac{1}{\frac{-2 - \frac{4 + \frac{8}{im \cdot im}}{im \cdot im}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.6:\\
\;\;\;\;\frac{1}{1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.25\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -6e193Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
Simplified56.4%
if -6e193 < re < -1.6000000000000001Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.7%
Simplified49.7%
if -1.6000000000000001 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
(FPCore (re im)
:precision binary64
(if (<= re -9.5e+202)
(/ 1.0 (/ (+ -2.0 (/ -4.0 (* im im))) (* im im)))
(if (<= re -1.6)
(/ 1.0 (+ 1.0 (* im (* im (+ 0.5 (* (* im im) 0.25))))))
(+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
double code(double re, double im) {
double tmp;
if (re <= -9.5e+202) {
tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25)))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-9.5d+202)) then
tmp = 1.0d0 / (((-2.0d0) + ((-4.0d0) / (im * im))) / (im * im))
else if (re <= (-1.6d0)) then
tmp = 1.0d0 / (1.0d0 + (im * (im * (0.5d0 + ((im * im) * 0.25d0)))))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -9.5e+202) {
tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im));
} else if (re <= -1.6) {
tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25)))));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -9.5e+202: tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im)) elif re <= -1.6: tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25))))) else: tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))) return tmp
function code(re, im) tmp = 0.0 if (re <= -9.5e+202) tmp = Float64(1.0 / Float64(Float64(-2.0 + Float64(-4.0 / Float64(im * im))) / Float64(im * im))); elseif (re <= -1.6) tmp = Float64(1.0 / Float64(1.0 + Float64(im * Float64(im * Float64(0.5 + Float64(Float64(im * im) * 0.25)))))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -9.5e+202) tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im)); elseif (re <= -1.6) tmp = 1.0 / (1.0 + (im * (im * (0.5 + ((im * im) * 0.25))))); else tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -9.5e+202], N[(1.0 / N[(N[(-2.0 + N[(-4.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.6], N[(1.0 / N[(1.0 + N[(im * N[(im * N[(0.5 + N[(N[(im * im), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -9.5 \cdot 10^{+202}:\\
\;\;\;\;\frac{1}{\frac{-2 + \frac{-4}{im \cdot im}}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.6:\\
\;\;\;\;\frac{1}{1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.25\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -9.50000000000000059e202Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
mul-1-negN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
distribute-neg-inN/A
metadata-evalN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.9%
Simplified49.9%
if -9.50000000000000059e202 < re < -1.6000000000000001Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.7%
Simplified49.7%
if -1.6000000000000001 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
(FPCore (re im)
:precision binary64
(if (<= re -5.5e+192)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re -4.4)
(/ 1.0 (+ 1.0 (* 0.5 (* im im))))
(if (<= re 2.8)
(+ 1.0 (* re (+ 1.0 (* re 0.5))))
(* re (* re (+ 0.5 (* re 0.16666666666666666))))))))
double code(double re, double im) {
double tmp;
if (re <= -5.5e+192) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -4.4) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else if (re <= 2.8) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-5.5d+192)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= (-4.4d0)) then
tmp = 1.0d0 / (1.0d0 + (0.5d0 * (im * im)))
else if (re <= 2.8d0) then
tmp = 1.0d0 + (re * (1.0d0 + (re * 0.5d0)))
else
tmp = re * (re * (0.5d0 + (re * 0.16666666666666666d0)))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -5.5e+192) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -4.4) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else if (re <= 2.8) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -5.5e+192: tmp = 1.0 / (-2.0 / (im * im)) elif re <= -4.4: tmp = 1.0 / (1.0 + (0.5 * (im * im))) elif re <= 2.8: tmp = 1.0 + (re * (1.0 + (re * 0.5))) else: tmp = re * (re * (0.5 + (re * 0.16666666666666666))) return tmp
function code(re, im) tmp = 0.0 if (re <= -5.5e+192) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= -4.4) tmp = Float64(1.0 / Float64(1.0 + Float64(0.5 * Float64(im * im)))); elseif (re <= 2.8) tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * 0.5)))); else tmp = Float64(re * Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -5.5e+192) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= -4.4) tmp = 1.0 / (1.0 + (0.5 * (im * im))); elseif (re <= 2.8) tmp = 1.0 + (re * (1.0 + (re * 0.5))); else tmp = re * (re * (0.5 + (re * 0.16666666666666666))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -5.5e+192], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -4.4], N[(1.0 / N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 2.8], N[(1.0 + N[(re * N[(1.0 + N[(re * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -5.5 \cdot 10^{+192}:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq -4.4:\\
\;\;\;\;\frac{1}{1 + 0.5 \cdot \left(im \cdot im\right)}\\
\mathbf{elif}\;re \leq 2.8:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -5.49999999999999966e192Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6439.9%
Simplified39.9%
if -5.49999999999999966e192 < re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.7%
Simplified32.7%
if -4.4000000000000004 < re < 2.7999999999999998Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6451.6%
Simplified51.6%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6451.2%
Simplified51.2%
if 2.7999999999999998 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
(FPCore (re im)
:precision binary64
(if (<= re -1.7e+195)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re -1.55)
(/ 1.0 (+ 1.0 (* 0.5 (* im im))))
(+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666)))))))))
double code(double re, double im) {
double tmp;
if (re <= -1.7e+195) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -1.55) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-1.7d+195)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= (-1.55d0)) then
tmp = 1.0d0 / (1.0d0 + (0.5d0 * (im * im)))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -1.7e+195) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -1.55) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -1.7e+195: tmp = 1.0 / (-2.0 / (im * im)) elif re <= -1.55: tmp = 1.0 / (1.0 + (0.5 * (im * im))) else: tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))) return tmp
function code(re, im) tmp = 0.0 if (re <= -1.7e+195) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= -1.55) tmp = Float64(1.0 / Float64(1.0 + Float64(0.5 * Float64(im * im)))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -1.7e+195) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= -1.55) tmp = 1.0 / (1.0 + (0.5 * (im * im))); else tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -1.7e+195], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.55], N[(1.0 / N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -1.7 \cdot 10^{+195}:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq -1.55:\\
\;\;\;\;\frac{1}{1 + 0.5 \cdot \left(im \cdot im\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -1.70000000000000005e195Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6439.9%
Simplified39.9%
if -1.70000000000000005e195 < re < -1.55000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.7%
Simplified32.7%
if -1.55000000000000004 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
(FPCore (re im)
:precision binary64
(if (<= re -3.1e+195)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re -0.9)
(/ 1.0 (+ 1.0 (* 0.5 (* im im))))
(+ 1.0 (* re (+ 1.0 (* re (* re 0.16666666666666666))))))))
double code(double re, double im) {
double tmp;
if (re <= -3.1e+195) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -0.9) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else {
tmp = 1.0 + (re * (1.0 + (re * (re * 0.16666666666666666))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-3.1d+195)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= (-0.9d0)) then
tmp = 1.0d0 / (1.0d0 + (0.5d0 * (im * im)))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (re * 0.16666666666666666d0))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -3.1e+195) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= -0.9) {
tmp = 1.0 / (1.0 + (0.5 * (im * im)));
} else {
tmp = 1.0 + (re * (1.0 + (re * (re * 0.16666666666666666))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -3.1e+195: tmp = 1.0 / (-2.0 / (im * im)) elif re <= -0.9: tmp = 1.0 / (1.0 + (0.5 * (im * im))) else: tmp = 1.0 + (re * (1.0 + (re * (re * 0.16666666666666666)))) return tmp
function code(re, im) tmp = 0.0 if (re <= -3.1e+195) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= -0.9) tmp = Float64(1.0 / Float64(1.0 + Float64(0.5 * Float64(im * im)))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(re * 0.16666666666666666))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -3.1e+195) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= -0.9) tmp = 1.0 / (1.0 + (0.5 * (im * im))); else tmp = 1.0 + (re * (1.0 + (re * (re * 0.16666666666666666)))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -3.1e+195], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -0.9], N[(1.0 / N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -3.1 \cdot 10^{+195}:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq -0.9:\\
\;\;\;\;\frac{1}{1 + 0.5 \cdot \left(im \cdot im\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -3.1000000000000002e195Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6439.9%
Simplified39.9%
if -3.1000000000000002e195 < re < -0.900000000000000022Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.4%
Simplified3.4%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.7%
Simplified32.7%
if -0.900000000000000022 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
Taylor expanded in re around inf
*-commutativeN/A
*-lowering-*.f6450.3%
Simplified50.3%
(FPCore (re im)
:precision binary64
(if (<= re -500.0)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re 3.1)
(+ 1.0 (* re (+ 1.0 (* re 0.5))))
(* re (* re (+ 0.5 (* re 0.16666666666666666)))))))
double code(double re, double im) {
double tmp;
if (re <= -500.0) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 3.1) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-500.0d0)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= 3.1d0) then
tmp = 1.0d0 + (re * (1.0d0 + (re * 0.5d0)))
else
tmp = re * (re * (0.5d0 + (re * 0.16666666666666666d0)))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -500.0) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 3.1) {
tmp = 1.0 + (re * (1.0 + (re * 0.5)));
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -500.0: tmp = 1.0 / (-2.0 / (im * im)) elif re <= 3.1: tmp = 1.0 + (re * (1.0 + (re * 0.5))) else: tmp = re * (re * (0.5 + (re * 0.16666666666666666))) return tmp
function code(re, im) tmp = 0.0 if (re <= -500.0) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= 3.1) tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * 0.5)))); else tmp = Float64(re * Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -500.0) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= 3.1) tmp = 1.0 + (re * (1.0 + (re * 0.5))); else tmp = re * (re * (0.5 + (re * 0.16666666666666666))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -500.0], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 3.1], N[(1.0 + N[(re * N[(1.0 + N[(re * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -500:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq 3.1:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -500Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.1%
Simplified3.1%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.5%
Simplified2.5%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.5%
Applied egg-rr2.5%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6430.0%
Simplified30.0%
if -500 < re < 3.10000000000000009Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6452.1%
Simplified52.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.9%
Simplified50.9%
if 3.10000000000000009 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
(FPCore (re im)
:precision binary64
(if (<= re -4.4)
(/ 1.0 (/ -2.0 (* im im)))
(if (<= re 1.9)
(+ re 1.0)
(* re (* re (+ 0.5 (* re 0.16666666666666666)))))))
double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 1.9) {
tmp = re + 1.0;
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.4d0)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= 1.9d0) then
tmp = re + 1.0d0
else
tmp = re * (re * (0.5d0 + (re * 0.16666666666666666d0)))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 1.9) {
tmp = re + 1.0;
} else {
tmp = re * (re * (0.5 + (re * 0.16666666666666666)));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -4.4: tmp = 1.0 / (-2.0 / (im * im)) elif re <= 1.9: tmp = re + 1.0 else: tmp = re * (re * (0.5 + (re * 0.16666666666666666))) return tmp
function code(re, im) tmp = 0.0 if (re <= -4.4) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= 1.9) tmp = Float64(re + 1.0); else tmp = Float64(re * Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -4.4) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= 1.9) tmp = re + 1.0; else tmp = re * (re * (0.5 + (re * 0.16666666666666666))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -4.4], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 1.9], N[(re + 1.0), $MachinePrecision], N[(re * N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -4.4:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq 1.9:\\
\;\;\;\;re + 1\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.3%
Simplified3.3%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6429.6%
Simplified29.6%
if -4.4000000000000004 < re < 1.8999999999999999Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6451.6%
Simplified51.6%
Taylor expanded in re around 0
+-lowering-+.f6451.1%
Simplified51.1%
if 1.8999999999999999 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*l*N/A
unpow2N/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Final simplification44.4%
(FPCore (re im) :precision binary64 (if (<= re -4.4) (/ 1.0 (/ (+ -2.0 (/ -4.0 (* im im))) (* im im))) (+ 1.0 (* re (+ 1.0 (* re (+ 0.5 (* re 0.16666666666666666))))))))
double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.4d0)) then
tmp = 1.0d0 / (((-2.0d0) + ((-4.0d0) / (im * im))) / (im * im))
else
tmp = 1.0d0 + (re * (1.0d0 + (re * (0.5d0 + (re * 0.16666666666666666d0)))))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im));
} else {
tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666)))));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -4.4: tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im)) else: tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))) return tmp
function code(re, im) tmp = 0.0 if (re <= -4.4) tmp = Float64(1.0 / Float64(Float64(-2.0 + Float64(-4.0 / Float64(im * im))) / Float64(im * im))); else tmp = Float64(1.0 + Float64(re * Float64(1.0 + Float64(re * Float64(0.5 + Float64(re * 0.16666666666666666)))))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -4.4) tmp = 1.0 / ((-2.0 + (-4.0 / (im * im))) / (im * im)); else tmp = 1.0 + (re * (1.0 + (re * (0.5 + (re * 0.16666666666666666))))); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -4.4], N[(1.0 / N[(N[(-2.0 + N[(-4.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(re * N[(1.0 + N[(re * N[(0.5 + N[(re * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -4.4:\\
\;\;\;\;\frac{1}{\frac{-2 + \frac{-4}{im \cdot im}}{im \cdot im}}\\
\mathbf{else}:\\
\;\;\;\;1 + re \cdot \left(1 + re \cdot \left(0.5 + re \cdot 0.16666666666666666\right)\right)\\
\end{array}
\end{array}
if re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.3%
Simplified3.3%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
mul-1-negN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
distribute-neg-inN/A
metadata-evalN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6440.1%
Simplified40.1%
if -4.4000000000000004 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6458.4%
Simplified58.4%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6450.4%
Simplified50.4%
(FPCore (re im) :precision binary64 (if (<= re -4.4) (/ 1.0 (/ -2.0 (* im im))) (if (<= re 2.9) (+ re 1.0) (* re (* 0.16666666666666666 (* re re))))))
double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 2.9) {
tmp = re + 1.0;
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.4d0)) then
tmp = 1.0d0 / ((-2.0d0) / (im * im))
else if (re <= 2.9d0) then
tmp = re + 1.0d0
else
tmp = re * (0.16666666666666666d0 * (re * re))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = 1.0 / (-2.0 / (im * im));
} else if (re <= 2.9) {
tmp = re + 1.0;
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -4.4: tmp = 1.0 / (-2.0 / (im * im)) elif re <= 2.9: tmp = re + 1.0 else: tmp = re * (0.16666666666666666 * (re * re)) return tmp
function code(re, im) tmp = 0.0 if (re <= -4.4) tmp = Float64(1.0 / Float64(-2.0 / Float64(im * im))); elseif (re <= 2.9) tmp = Float64(re + 1.0); else tmp = Float64(re * Float64(0.16666666666666666 * Float64(re * re))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -4.4) tmp = 1.0 / (-2.0 / (im * im)); elseif (re <= 2.9) tmp = re + 1.0; else tmp = re * (0.16666666666666666 * (re * re)); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -4.4], N[(1.0 / N[(-2.0 / N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 2.9], N[(re + 1.0), $MachinePrecision], N[(re * N[(0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -4.4:\\
\;\;\;\;\frac{1}{\frac{-2}{im \cdot im}}\\
\mathbf{elif}\;re \leq 2.9:\\
\;\;\;\;re + 1\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
\end{array}
\end{array}
if re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.3%
Simplified3.3%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
flip-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip-+N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f642.7%
Applied egg-rr2.7%
Taylor expanded in im around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6429.6%
Simplified29.6%
if -4.4000000000000004 < re < 2.89999999999999991Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6451.6%
Simplified51.6%
Taylor expanded in re around 0
+-lowering-+.f6451.1%
Simplified51.1%
if 2.89999999999999991 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*r*N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6448.8%
Simplified48.8%
Final simplification44.4%
(FPCore (re im) :precision binary64 (if (<= re -4.4) (* -0.5 (* im im)) (if (<= re 2.9) (+ re 1.0) (* re (* 0.16666666666666666 (* re re))))))
double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = -0.5 * (im * im);
} else if (re <= 2.9) {
tmp = re + 1.0;
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.4d0)) then
tmp = (-0.5d0) * (im * im)
else if (re <= 2.9d0) then
tmp = re + 1.0d0
else
tmp = re * (0.16666666666666666d0 * (re * re))
end if
code = tmp
end function
public static double code(double re, double im) {
double tmp;
if (re <= -4.4) {
tmp = -0.5 * (im * im);
} else if (re <= 2.9) {
tmp = re + 1.0;
} else {
tmp = re * (0.16666666666666666 * (re * re));
}
return tmp;
}
def code(re, im): tmp = 0 if re <= -4.4: tmp = -0.5 * (im * im) elif re <= 2.9: tmp = re + 1.0 else: tmp = re * (0.16666666666666666 * (re * re)) return tmp
function code(re, im) tmp = 0.0 if (re <= -4.4) tmp = Float64(-0.5 * Float64(im * im)); elseif (re <= 2.9) tmp = Float64(re + 1.0); else tmp = Float64(re * Float64(0.16666666666666666 * Float64(re * re))); end return tmp end
function tmp_2 = code(re, im) tmp = 0.0; if (re <= -4.4) tmp = -0.5 * (im * im); elseif (re <= 2.9) tmp = re + 1.0; else tmp = re * (0.16666666666666666 * (re * re)); end tmp_2 = tmp; end
code[re_, im_] := If[LessEqual[re, -4.4], N[(-0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, 2.9], N[(re + 1.0), $MachinePrecision], N[(re * N[(0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;re \leq -4.4:\\
\;\;\;\;-0.5 \cdot \left(im \cdot im\right)\\
\mathbf{elif}\;re \leq 2.9:\\
\;\;\;\;re + 1\\
\mathbf{else}:\\
\;\;\;\;re \cdot \left(0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
\end{array}
\end{array}
if re < -4.4000000000000004Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.3%
Simplified3.3%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f642.7%
Simplified2.7%
Taylor expanded in im around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.2%
Simplified28.2%
if -4.4000000000000004 < re < 2.89999999999999991Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6451.6%
Simplified51.6%
Taylor expanded in re around 0
+-lowering-+.f6451.1%
Simplified51.1%
if 2.89999999999999991 < re Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.1%
Simplified70.1%
Taylor expanded in re around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f6448.8%
Simplified48.8%
Taylor expanded in re around inf
unpow3N/A
unpow2N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*r*N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6448.8%
Simplified48.8%
Final simplification44.0%
(FPCore (re im) :precision binary64 (let* ((t_0 (* -0.5 (* im im)))) (if (<= re -4.4) t_0 (if (<= re 7000000.0) (+ re 1.0) t_0))))
double code(double re, double im) {
double t_0 = -0.5 * (im * im);
double tmp;
if (re <= -4.4) {
tmp = t_0;
} else if (re <= 7000000.0) {
tmp = re + 1.0;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: t_0
real(8) :: tmp
t_0 = (-0.5d0) * (im * im)
if (re <= (-4.4d0)) then
tmp = t_0
else if (re <= 7000000.0d0) then
tmp = re + 1.0d0
else
tmp = t_0
end if
code = tmp
end function
public static double code(double re, double im) {
double t_0 = -0.5 * (im * im);
double tmp;
if (re <= -4.4) {
tmp = t_0;
} else if (re <= 7000000.0) {
tmp = re + 1.0;
} else {
tmp = t_0;
}
return tmp;
}
def code(re, im): t_0 = -0.5 * (im * im) tmp = 0 if re <= -4.4: tmp = t_0 elif re <= 7000000.0: tmp = re + 1.0 else: tmp = t_0 return tmp
function code(re, im) t_0 = Float64(-0.5 * Float64(im * im)) tmp = 0.0 if (re <= -4.4) tmp = t_0; elseif (re <= 7000000.0) tmp = Float64(re + 1.0); else tmp = t_0; end return tmp end
function tmp_2 = code(re, im) t_0 = -0.5 * (im * im); tmp = 0.0; if (re <= -4.4) tmp = t_0; elseif (re <= 7000000.0) tmp = re + 1.0; else tmp = t_0; end tmp_2 = tmp; end
code[re_, im_] := Block[{t$95$0 = N[(-0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[re, -4.4], t$95$0, If[LessEqual[re, 7000000.0], N[(re + 1.0), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := -0.5 \cdot \left(im \cdot im\right)\\
\mathbf{if}\;re \leq -4.4:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;re \leq 7000000:\\
\;\;\;\;re + 1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if re < -4.4000000000000004 or 7e6 < re Initial program 100.0%
Taylor expanded in re around 0
cos-lowering-cos.f643.2%
Simplified3.2%
Taylor expanded in im around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6411.9%
Simplified11.9%
Taylor expanded in im around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6425.0%
Simplified25.0%
if -4.4000000000000004 < re < 7e6Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6452.5%
Simplified52.5%
Taylor expanded in re around 0
+-lowering-+.f6450.3%
Simplified50.3%
Final simplification36.6%
(FPCore (re im) :precision binary64 (+ re 1.0))
double code(double re, double im) {
return re + 1.0;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = re + 1.0d0
end function
public static double code(double re, double im) {
return re + 1.0;
}
def code(re, im): return re + 1.0
function code(re, im) return Float64(re + 1.0) end
function tmp = code(re, im) tmp = re + 1.0; end
code[re_, im_] := N[(re + 1.0), $MachinePrecision]
\begin{array}{l}
\\
re + 1
\end{array}
Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.3%
Simplified70.3%
Taylor expanded in re around 0
+-lowering-+.f6424.7%
Simplified24.7%
Final simplification24.7%
(FPCore (re im) :precision binary64 1.0)
double code(double re, double im) {
return 1.0;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = 1.0d0
end function
public static double code(double re, double im) {
return 1.0;
}
def code(re, im): return 1.0
function code(re, im) return 1.0 end
function tmp = code(re, im) tmp = 1.0; end
code[re_, im_] := 1.0
\begin{array}{l}
\\
1
\end{array}
Initial program 100.0%
Taylor expanded in im around 0
exp-lowering-exp.f6470.3%
Simplified70.3%
Taylor expanded in re around 0
Simplified24.6%
herbie shell --seed 2024150
(FPCore (re im)
:name "math.exp on complex, real part"
:precision binary64
(* (exp re) (cos im)))