
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (let* ((t_0 (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))) (* R (sqrt (+ (* t_0 t_0) (* (- phi1 phi2) (- phi1 phi2)))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0));
return R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: t_0
t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0d0))
code = r * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))))
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0));
return R * Math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
}
def code(R, lambda1, lambda2, phi1, phi2): t_0 = (lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0)) return R * math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))))
function code(R, lambda1, lambda2, phi1, phi2) t_0 = Float64(Float64(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0))) return Float64(R * sqrt(Float64(Float64(t_0 * t_0) + Float64(Float64(phi1 - phi2) * Float64(phi1 - phi2))))) end
function tmp = code(R, lambda1, lambda2, phi1, phi2) t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0)); tmp = R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2)))); end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(R * N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] + N[(N[(phi1 - phi2), $MachinePrecision] * N[(phi1 - phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\\
R \cdot \sqrt{t\_0 \cdot t\_0 + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 13 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (let* ((t_0 (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))) (* R (sqrt (+ (* t_0 t_0) (* (- phi1 phi2) (- phi1 phi2)))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0));
return R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: t_0
t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0d0))
code = r * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))))
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0));
return R * Math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
}
def code(R, lambda1, lambda2, phi1, phi2): t_0 = (lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0)) return R * math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))))
function code(R, lambda1, lambda2, phi1, phi2) t_0 = Float64(Float64(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0))) return Float64(R * sqrt(Float64(Float64(t_0 * t_0) + Float64(Float64(phi1 - phi2) * Float64(phi1 - phi2))))) end
function tmp = code(R, lambda1, lambda2, phi1, phi2) t_0 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0)); tmp = R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2)))); end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(R * N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] + N[(N[(phi1 - phi2), $MachinePrecision] * N[(phi1 - phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\\
R \cdot \sqrt{t\_0 \cdot t\_0 + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\end{array}
\end{array}
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (* R (hypot (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))) (- phi1 phi2))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * hypot(((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0))), (phi1 - phi2));
}
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * Math.hypot(((lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0))), (phi1 - phi2));
}
def code(R, lambda1, lambda2, phi1, phi2): return R * math.hypot(((lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0))), (phi1 - phi2))
function code(R, lambda1, lambda2, phi1, phi2) return Float64(R * hypot(Float64(Float64(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0))), Float64(phi1 - phi2))) end
function tmp = code(R, lambda1, lambda2, phi1, phi2) tmp = R * hypot(((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0))), (phi1 - phi2)); end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := N[(R * N[Sqrt[N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] ^ 2 + N[(phi1 - phi2), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
R \cdot \mathsf{hypot}\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right), \phi_1 - \phi_2\right)
\end{array}
Initial program 60.8%
hypot-define96.6%
Simplified96.6%
Final simplification96.6%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi2 8.5e+64)
(* R (hypot phi1 (* (- lambda1 lambda2) (cos (* phi1 0.5)))))
(if (<= phi2 5e+134)
(* phi2 (- R (* R (/ phi1 phi2))))
(* R (hypot phi2 (* (- lambda1 lambda2) (cos (* phi2 0.5))))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 8.5e+64) {
tmp = R * hypot(phi1, ((lambda1 - lambda2) * cos((phi1 * 0.5))));
} else if (phi2 <= 5e+134) {
tmp = phi2 * (R - (R * (phi1 / phi2)));
} else {
tmp = R * hypot(phi2, ((lambda1 - lambda2) * cos((phi2 * 0.5))));
}
return tmp;
}
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 8.5e+64) {
tmp = R * Math.hypot(phi1, ((lambda1 - lambda2) * Math.cos((phi1 * 0.5))));
} else if (phi2 <= 5e+134) {
tmp = phi2 * (R - (R * (phi1 / phi2)));
} else {
tmp = R * Math.hypot(phi2, ((lambda1 - lambda2) * Math.cos((phi2 * 0.5))));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi2 <= 8.5e+64: tmp = R * math.hypot(phi1, ((lambda1 - lambda2) * math.cos((phi1 * 0.5)))) elif phi2 <= 5e+134: tmp = phi2 * (R - (R * (phi1 / phi2))) else: tmp = R * math.hypot(phi2, ((lambda1 - lambda2) * math.cos((phi2 * 0.5)))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi2 <= 8.5e+64) tmp = Float64(R * hypot(phi1, Float64(Float64(lambda1 - lambda2) * cos(Float64(phi1 * 0.5))))); elseif (phi2 <= 5e+134) tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); else tmp = Float64(R * hypot(phi2, Float64(Float64(lambda1 - lambda2) * cos(Float64(phi2 * 0.5))))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi2 <= 8.5e+64) tmp = R * hypot(phi1, ((lambda1 - lambda2) * cos((phi1 * 0.5)))); elseif (phi2 <= 5e+134) tmp = phi2 * (R - (R * (phi1 / phi2))); else tmp = R * hypot(phi2, ((lambda1 - lambda2) * cos((phi2 * 0.5)))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 8.5e+64], N[(R * N[Sqrt[phi1 ^ 2 + N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(phi1 * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision], If[LessEqual[phi2, 5e+134], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(R * N[Sqrt[phi2 ^ 2 + N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(phi2 * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 8.5 \cdot 10^{+64}:\\
\;\;\;\;R \cdot \mathsf{hypot}\left(\phi_1, \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\phi_1 \cdot 0.5\right)\right)\\
\mathbf{elif}\;\phi_2 \leq 5 \cdot 10^{+134}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \mathsf{hypot}\left(\phi_2, \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\phi_2 \cdot 0.5\right)\right)\\
\end{array}
\end{array}
if phi2 < 8.4999999999999998e64Initial program 61.5%
hypot-define96.8%
Simplified96.8%
Taylor expanded in phi2 around 0 52.5%
+-commutative52.5%
unpow252.5%
unpow252.5%
unpow252.5%
unswap-sqr52.5%
hypot-define71.3%
Simplified71.3%
if 8.4999999999999998e64 < phi2 < 4.99999999999999981e134Initial program 93.5%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi1 around -inf 67.9%
associate-*r*67.9%
mul-1-neg67.9%
associate-*r/67.9%
mul-1-neg67.9%
*-commutative67.9%
Simplified67.9%
Taylor expanded in phi2 around inf 73.8%
mul-1-neg73.8%
unsub-neg73.8%
associate-/l*80.5%
Simplified80.5%
if 4.99999999999999981e134 < phi2 Initial program 48.5%
hypot-define95.1%
Simplified95.1%
Taylor expanded in phi1 around 0 48.5%
+-commutative48.5%
unpow248.5%
unpow248.5%
unpow248.5%
unswap-sqr48.5%
hypot-define95.1%
Simplified95.1%
Final simplification76.5%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (if (<= phi2 1.26e+65) (* R (hypot phi1 (* (- lambda1 lambda2) (cos (* phi1 0.5))))) (* phi2 (- R (* R (/ phi1 phi2))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 1.26e+65) {
tmp = R * hypot(phi1, ((lambda1 - lambda2) * cos((phi1 * 0.5))));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 1.26e+65) {
tmp = R * Math.hypot(phi1, ((lambda1 - lambda2) * Math.cos((phi1 * 0.5))));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi2 <= 1.26e+65: tmp = R * math.hypot(phi1, ((lambda1 - lambda2) * math.cos((phi1 * 0.5)))) else: tmp = phi2 * (R - (R * (phi1 / phi2))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi2 <= 1.26e+65) tmp = Float64(R * hypot(phi1, Float64(Float64(lambda1 - lambda2) * cos(Float64(phi1 * 0.5))))); else tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi2 <= 1.26e+65) tmp = R * hypot(phi1, ((lambda1 - lambda2) * cos((phi1 * 0.5)))); else tmp = phi2 * (R - (R * (phi1 / phi2))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 1.26e+65], N[(R * N[Sqrt[phi1 ^ 2 + N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(phi1 * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 1.26 \cdot 10^{+65}:\\
\;\;\;\;R \cdot \mathsf{hypot}\left(\phi_1, \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\phi_1 \cdot 0.5\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\end{array}
\end{array}
if phi2 < 1.2599999999999999e65Initial program 61.5%
hypot-define96.8%
Simplified96.8%
Taylor expanded in phi2 around 0 52.5%
+-commutative52.5%
unpow252.5%
unpow252.5%
unpow252.5%
unswap-sqr52.5%
hypot-define71.3%
Simplified71.3%
if 1.2599999999999999e65 < phi2 Initial program 58.9%
hypot-define96.2%
Simplified96.2%
Taylor expanded in phi1 around -inf 79.4%
associate-*r*79.4%
mul-1-neg79.4%
associate-*r/79.4%
mul-1-neg79.4%
*-commutative79.4%
Simplified79.4%
Taylor expanded in phi2 around inf 71.9%
mul-1-neg71.9%
unsub-neg71.9%
associate-/l*79.6%
Simplified79.6%
Final simplification73.4%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (if (<= phi2 4.5e+64) (* R (hypot phi1 (- lambda1 lambda2))) (* phi2 (- R (* R (/ phi1 phi2))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 4.5e+64) {
tmp = R * hypot(phi1, (lambda1 - lambda2));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 4.5e+64) {
tmp = R * Math.hypot(phi1, (lambda1 - lambda2));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi2 <= 4.5e+64: tmp = R * math.hypot(phi1, (lambda1 - lambda2)) else: tmp = phi2 * (R - (R * (phi1 / phi2))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi2 <= 4.5e+64) tmp = Float64(R * hypot(phi1, Float64(lambda1 - lambda2))); else tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi2 <= 4.5e+64) tmp = R * hypot(phi1, (lambda1 - lambda2)); else tmp = phi2 * (R - (R * (phi1 / phi2))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 4.5e+64], N[(R * N[Sqrt[phi1 ^ 2 + N[(lambda1 - lambda2), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 4.5 \cdot 10^{+64}:\\
\;\;\;\;R \cdot \mathsf{hypot}\left(\phi_1, \lambda_1 - \lambda_2\right)\\
\mathbf{else}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\end{array}
\end{array}
if phi2 < 4.49999999999999973e64Initial program 61.5%
hypot-define96.8%
Simplified96.8%
Taylor expanded in phi2 around 0 52.5%
+-commutative52.5%
unpow252.5%
unpow252.5%
unpow252.5%
unswap-sqr52.5%
hypot-define71.3%
Simplified71.3%
Taylor expanded in phi1 around 0 67.8%
if 4.49999999999999973e64 < phi2 Initial program 58.9%
hypot-define96.2%
Simplified96.2%
Taylor expanded in phi1 around -inf 79.4%
associate-*r*79.4%
mul-1-neg79.4%
associate-*r/79.4%
mul-1-neg79.4%
*-commutative79.4%
Simplified79.4%
Taylor expanded in phi2 around inf 71.9%
mul-1-neg71.9%
unsub-neg71.9%
associate-/l*79.6%
Simplified79.6%
Final simplification70.8%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi1 -1.35e-16)
(- (* R phi2) (* R phi1))
(if (<= phi1 7e-277)
(* lambda2 (- R (* R (/ lambda1 lambda2))))
(* R phi2))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.35e-16) {
tmp = (R * phi2) - (R * phi1);
} else if (phi1 <= 7e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = R * phi2;
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi1 <= (-1.35d-16)) then
tmp = (r * phi2) - (r * phi1)
else if (phi1 <= 7d-277) then
tmp = lambda2 * (r - (r * (lambda1 / lambda2)))
else
tmp = r * phi2
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.35e-16) {
tmp = (R * phi2) - (R * phi1);
} else if (phi1 <= 7e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = R * phi2;
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi1 <= -1.35e-16: tmp = (R * phi2) - (R * phi1) elif phi1 <= 7e-277: tmp = lambda2 * (R - (R * (lambda1 / lambda2))) else: tmp = R * phi2 return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi1 <= -1.35e-16) tmp = Float64(Float64(R * phi2) - Float64(R * phi1)); elseif (phi1 <= 7e-277) tmp = Float64(lambda2 * Float64(R - Float64(R * Float64(lambda1 / lambda2)))); else tmp = Float64(R * phi2); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi1 <= -1.35e-16) tmp = (R * phi2) - (R * phi1); elseif (phi1 <= 7e-277) tmp = lambda2 * (R - (R * (lambda1 / lambda2))); else tmp = R * phi2; end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi1, -1.35e-16], N[(N[(R * phi2), $MachinePrecision] - N[(R * phi1), $MachinePrecision]), $MachinePrecision], If[LessEqual[phi1, 7e-277], N[(lambda2 * N[(R - N[(R * N[(lambda1 / lambda2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(R * phi2), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -1.35 \cdot 10^{-16}:\\
\;\;\;\;R \cdot \phi_2 - R \cdot \phi_1\\
\mathbf{elif}\;\phi_1 \leq 7 \cdot 10^{-277}:\\
\;\;\;\;\lambda_2 \cdot \left(R - R \cdot \frac{\lambda_1}{\lambda_2}\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \phi_2\\
\end{array}
\end{array}
if phi1 < -1.35e-16Initial program 57.3%
hypot-define96.3%
Simplified96.3%
Taylor expanded in phi1 around -inf 66.5%
associate-*r*66.5%
mul-1-neg66.5%
associate-*r/66.5%
mul-1-neg66.5%
*-commutative66.5%
Simplified66.5%
Taylor expanded in phi1 around 0 66.5%
+-commutative66.5%
*-commutative66.5%
mul-1-neg66.5%
unsub-neg66.5%
*-commutative66.5%
Simplified66.5%
if -1.35e-16 < phi1 < 6.99999999999999966e-277Initial program 75.9%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi2 around 0 59.1%
+-commutative59.1%
unpow259.1%
unpow259.1%
unpow259.1%
unswap-sqr59.1%
hypot-define68.4%
Simplified68.4%
Taylor expanded in phi1 around 0 68.4%
Taylor expanded in lambda2 around inf 22.5%
mul-1-neg22.5%
unsub-neg22.5%
associate-/l*19.2%
Simplified19.2%
if 6.99999999999999966e-277 < phi1 Initial program 55.7%
hypot-define95.2%
Simplified95.2%
Taylor expanded in phi2 around inf 28.0%
*-commutative28.0%
Simplified28.0%
Final simplification37.1%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi1 -2.9e-16)
(- (* R phi2) (* R phi1))
(if (<= phi1 2.5e-278)
(* lambda2 (- R (* R (/ lambda1 lambda2))))
(* phi2 (- R (* R (/ phi1 phi2)))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -2.9e-16) {
tmp = (R * phi2) - (R * phi1);
} else if (phi1 <= 2.5e-278) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi1 <= (-2.9d-16)) then
tmp = (r * phi2) - (r * phi1)
else if (phi1 <= 2.5d-278) then
tmp = lambda2 * (r - (r * (lambda1 / lambda2)))
else
tmp = phi2 * (r - (r * (phi1 / phi2)))
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -2.9e-16) {
tmp = (R * phi2) - (R * phi1);
} else if (phi1 <= 2.5e-278) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi1 <= -2.9e-16: tmp = (R * phi2) - (R * phi1) elif phi1 <= 2.5e-278: tmp = lambda2 * (R - (R * (lambda1 / lambda2))) else: tmp = phi2 * (R - (R * (phi1 / phi2))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi1 <= -2.9e-16) tmp = Float64(Float64(R * phi2) - Float64(R * phi1)); elseif (phi1 <= 2.5e-278) tmp = Float64(lambda2 * Float64(R - Float64(R * Float64(lambda1 / lambda2)))); else tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi1 <= -2.9e-16) tmp = (R * phi2) - (R * phi1); elseif (phi1 <= 2.5e-278) tmp = lambda2 * (R - (R * (lambda1 / lambda2))); else tmp = phi2 * (R - (R * (phi1 / phi2))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi1, -2.9e-16], N[(N[(R * phi2), $MachinePrecision] - N[(R * phi1), $MachinePrecision]), $MachinePrecision], If[LessEqual[phi1, 2.5e-278], N[(lambda2 * N[(R - N[(R * N[(lambda1 / lambda2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -2.9 \cdot 10^{-16}:\\
\;\;\;\;R \cdot \phi_2 - R \cdot \phi_1\\
\mathbf{elif}\;\phi_1 \leq 2.5 \cdot 10^{-278}:\\
\;\;\;\;\lambda_2 \cdot \left(R - R \cdot \frac{\lambda_1}{\lambda_2}\right)\\
\mathbf{else}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\end{array}
\end{array}
if phi1 < -2.8999999999999998e-16Initial program 57.3%
hypot-define96.3%
Simplified96.3%
Taylor expanded in phi1 around -inf 66.5%
associate-*r*66.5%
mul-1-neg66.5%
associate-*r/66.5%
mul-1-neg66.5%
*-commutative66.5%
Simplified66.5%
Taylor expanded in phi1 around 0 66.5%
+-commutative66.5%
*-commutative66.5%
mul-1-neg66.5%
unsub-neg66.5%
*-commutative66.5%
Simplified66.5%
if -2.8999999999999998e-16 < phi1 < 2.49999999999999992e-278Initial program 75.9%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi2 around 0 59.1%
+-commutative59.1%
unpow259.1%
unpow259.1%
unpow259.1%
unswap-sqr59.1%
hypot-define68.4%
Simplified68.4%
Taylor expanded in phi1 around 0 68.4%
Taylor expanded in lambda2 around inf 22.5%
mul-1-neg22.5%
unsub-neg22.5%
associate-/l*19.2%
Simplified19.2%
if 2.49999999999999992e-278 < phi1 Initial program 55.7%
hypot-define95.2%
Simplified95.2%
Taylor expanded in phi1 around -inf 25.6%
associate-*r*25.6%
mul-1-neg25.6%
associate-*r/25.6%
mul-1-neg25.6%
*-commutative25.6%
Simplified25.6%
Taylor expanded in phi2 around inf 20.8%
mul-1-neg20.8%
unsub-neg20.8%
associate-/l*24.8%
Simplified24.8%
Final simplification35.6%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi1 -5e-17)
(* (* R phi1) (+ (/ phi2 phi1) -1.0))
(if (<= phi1 1.2e-277)
(* lambda2 (- R (* R (/ lambda1 lambda2))))
(* phi2 (- R (* R (/ phi1 phi2)))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -5e-17) {
tmp = (R * phi1) * ((phi2 / phi1) + -1.0);
} else if (phi1 <= 1.2e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi1 <= (-5d-17)) then
tmp = (r * phi1) * ((phi2 / phi1) + (-1.0d0))
else if (phi1 <= 1.2d-277) then
tmp = lambda2 * (r - (r * (lambda1 / lambda2)))
else
tmp = phi2 * (r - (r * (phi1 / phi2)))
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -5e-17) {
tmp = (R * phi1) * ((phi2 / phi1) + -1.0);
} else if (phi1 <= 1.2e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi1 <= -5e-17: tmp = (R * phi1) * ((phi2 / phi1) + -1.0) elif phi1 <= 1.2e-277: tmp = lambda2 * (R - (R * (lambda1 / lambda2))) else: tmp = phi2 * (R - (R * (phi1 / phi2))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi1 <= -5e-17) tmp = Float64(Float64(R * phi1) * Float64(Float64(phi2 / phi1) + -1.0)); elseif (phi1 <= 1.2e-277) tmp = Float64(lambda2 * Float64(R - Float64(R * Float64(lambda1 / lambda2)))); else tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi1 <= -5e-17) tmp = (R * phi1) * ((phi2 / phi1) + -1.0); elseif (phi1 <= 1.2e-277) tmp = lambda2 * (R - (R * (lambda1 / lambda2))); else tmp = phi2 * (R - (R * (phi1 / phi2))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi1, -5e-17], N[(N[(R * phi1), $MachinePrecision] * N[(N[(phi2 / phi1), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[phi1, 1.2e-277], N[(lambda2 * N[(R - N[(R * N[(lambda1 / lambda2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -5 \cdot 10^{-17}:\\
\;\;\;\;\left(R \cdot \phi_1\right) \cdot \left(\frac{\phi_2}{\phi_1} + -1\right)\\
\mathbf{elif}\;\phi_1 \leq 1.2 \cdot 10^{-277}:\\
\;\;\;\;\lambda_2 \cdot \left(R - R \cdot \frac{\lambda_1}{\lambda_2}\right)\\
\mathbf{else}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\end{array}
\end{array}
if phi1 < -4.9999999999999999e-17Initial program 57.3%
hypot-define96.3%
Simplified96.3%
Taylor expanded in phi1 around -inf 66.5%
associate-*r*66.5%
mul-1-neg66.5%
associate-*r/66.5%
mul-1-neg66.5%
*-commutative66.5%
Simplified66.5%
Taylor expanded in R around -inf 67.8%
associate-*r*67.8%
*-commutative67.8%
sub-neg67.8%
metadata-eval67.8%
Simplified67.8%
if -4.9999999999999999e-17 < phi1 < 1.2e-277Initial program 75.9%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi2 around 0 59.1%
+-commutative59.1%
unpow259.1%
unpow259.1%
unpow259.1%
unswap-sqr59.1%
hypot-define68.4%
Simplified68.4%
Taylor expanded in phi1 around 0 68.4%
Taylor expanded in lambda2 around inf 22.5%
mul-1-neg22.5%
unsub-neg22.5%
associate-/l*19.2%
Simplified19.2%
if 1.2e-277 < phi1 Initial program 55.7%
hypot-define95.2%
Simplified95.2%
Taylor expanded in phi1 around -inf 25.6%
associate-*r*25.6%
mul-1-neg25.6%
associate-*r/25.6%
mul-1-neg25.6%
*-commutative25.6%
Simplified25.6%
Taylor expanded in phi2 around inf 20.8%
mul-1-neg20.8%
unsub-neg20.8%
associate-/l*24.8%
Simplified24.8%
Final simplification36.0%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi1 -1.85e-16)
(* phi1 (- (* R (/ phi2 phi1)) R))
(if (<= phi1 4e-277)
(* lambda2 (- R (* R (/ lambda1 lambda2))))
(* phi2 (- R (* R (/ phi1 phi2)))))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.85e-16) {
tmp = phi1 * ((R * (phi2 / phi1)) - R);
} else if (phi1 <= 4e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi1 <= (-1.85d-16)) then
tmp = phi1 * ((r * (phi2 / phi1)) - r)
else if (phi1 <= 4d-277) then
tmp = lambda2 * (r - (r * (lambda1 / lambda2)))
else
tmp = phi2 * (r - (r * (phi1 / phi2)))
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.85e-16) {
tmp = phi1 * ((R * (phi2 / phi1)) - R);
} else if (phi1 <= 4e-277) {
tmp = lambda2 * (R - (R * (lambda1 / lambda2)));
} else {
tmp = phi2 * (R - (R * (phi1 / phi2)));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi1 <= -1.85e-16: tmp = phi1 * ((R * (phi2 / phi1)) - R) elif phi1 <= 4e-277: tmp = lambda2 * (R - (R * (lambda1 / lambda2))) else: tmp = phi2 * (R - (R * (phi1 / phi2))) return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi1 <= -1.85e-16) tmp = Float64(phi1 * Float64(Float64(R * Float64(phi2 / phi1)) - R)); elseif (phi1 <= 4e-277) tmp = Float64(lambda2 * Float64(R - Float64(R * Float64(lambda1 / lambda2)))); else tmp = Float64(phi2 * Float64(R - Float64(R * Float64(phi1 / phi2)))); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi1 <= -1.85e-16) tmp = phi1 * ((R * (phi2 / phi1)) - R); elseif (phi1 <= 4e-277) tmp = lambda2 * (R - (R * (lambda1 / lambda2))); else tmp = phi2 * (R - (R * (phi1 / phi2))); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi1, -1.85e-16], N[(phi1 * N[(N[(R * N[(phi2 / phi1), $MachinePrecision]), $MachinePrecision] - R), $MachinePrecision]), $MachinePrecision], If[LessEqual[phi1, 4e-277], N[(lambda2 * N[(R - N[(R * N[(lambda1 / lambda2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(phi2 * N[(R - N[(R * N[(phi1 / phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -1.85 \cdot 10^{-16}:\\
\;\;\;\;\phi_1 \cdot \left(R \cdot \frac{\phi_2}{\phi_1} - R\right)\\
\mathbf{elif}\;\phi_1 \leq 4 \cdot 10^{-277}:\\
\;\;\;\;\lambda_2 \cdot \left(R - R \cdot \frac{\lambda_1}{\lambda_2}\right)\\
\mathbf{else}:\\
\;\;\;\;\phi_2 \cdot \left(R - R \cdot \frac{\phi_1}{\phi_2}\right)\\
\end{array}
\end{array}
if phi1 < -1.85e-16Initial program 57.3%
hypot-define96.3%
Simplified96.3%
Taylor expanded in phi1 around -inf 66.5%
mul-1-neg66.5%
distribute-rgt-neg-in66.5%
mul-1-neg66.5%
unsub-neg66.5%
associate-/l*67.8%
Simplified67.8%
if -1.85e-16 < phi1 < 3.99999999999999988e-277Initial program 75.9%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi2 around 0 59.1%
+-commutative59.1%
unpow259.1%
unpow259.1%
unpow259.1%
unswap-sqr59.1%
hypot-define68.4%
Simplified68.4%
Taylor expanded in phi1 around 0 68.4%
Taylor expanded in lambda2 around inf 22.5%
mul-1-neg22.5%
unsub-neg22.5%
associate-/l*19.2%
Simplified19.2%
if 3.99999999999999988e-277 < phi1 Initial program 55.7%
hypot-define95.2%
Simplified95.2%
Taylor expanded in phi1 around -inf 25.6%
associate-*r*25.6%
mul-1-neg25.6%
associate-*r/25.6%
mul-1-neg25.6%
*-commutative25.6%
Simplified25.6%
Taylor expanded in phi2 around inf 20.8%
mul-1-neg20.8%
unsub-neg20.8%
associate-/l*24.8%
Simplified24.8%
Final simplification36.0%
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(if (<= phi1 -1.95e-15)
(* R (- phi1))
(if (<= phi1 -3.5e-264)
(* R (- lambda1))
(if (<= phi1 3e-281) (* R lambda2) (* R phi2)))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.95e-15) {
tmp = R * -phi1;
} else if (phi1 <= -3.5e-264) {
tmp = R * -lambda1;
} else if (phi1 <= 3e-281) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi1 <= (-1.95d-15)) then
tmp = r * -phi1
else if (phi1 <= (-3.5d-264)) then
tmp = r * -lambda1
else if (phi1 <= 3d-281) then
tmp = r * lambda2
else
tmp = r * phi2
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi1 <= -1.95e-15) {
tmp = R * -phi1;
} else if (phi1 <= -3.5e-264) {
tmp = R * -lambda1;
} else if (phi1 <= 3e-281) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi1 <= -1.95e-15: tmp = R * -phi1 elif phi1 <= -3.5e-264: tmp = R * -lambda1 elif phi1 <= 3e-281: tmp = R * lambda2 else: tmp = R * phi2 return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi1 <= -1.95e-15) tmp = Float64(R * Float64(-phi1)); elseif (phi1 <= -3.5e-264) tmp = Float64(R * Float64(-lambda1)); elseif (phi1 <= 3e-281) tmp = Float64(R * lambda2); else tmp = Float64(R * phi2); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi1 <= -1.95e-15) tmp = R * -phi1; elseif (phi1 <= -3.5e-264) tmp = R * -lambda1; elseif (phi1 <= 3e-281) tmp = R * lambda2; else tmp = R * phi2; end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi1, -1.95e-15], N[(R * (-phi1)), $MachinePrecision], If[LessEqual[phi1, -3.5e-264], N[(R * (-lambda1)), $MachinePrecision], If[LessEqual[phi1, 3e-281], N[(R * lambda2), $MachinePrecision], N[(R * phi2), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_1 \leq -1.95 \cdot 10^{-15}:\\
\;\;\;\;R \cdot \left(-\phi_1\right)\\
\mathbf{elif}\;\phi_1 \leq -3.5 \cdot 10^{-264}:\\
\;\;\;\;R \cdot \left(-\lambda_1\right)\\
\mathbf{elif}\;\phi_1 \leq 3 \cdot 10^{-281}:\\
\;\;\;\;R \cdot \lambda_2\\
\mathbf{else}:\\
\;\;\;\;R \cdot \phi_2\\
\end{array}
\end{array}
if phi1 < -1.95000000000000013e-15Initial program 56.8%
hypot-define96.2%
Simplified96.2%
Taylor expanded in phi1 around -inf 56.9%
mul-1-neg56.9%
*-commutative56.9%
distribute-rgt-neg-in56.9%
Simplified56.9%
if -1.95000000000000013e-15 < phi1 < -3.5e-264Initial program 72.3%
hypot-define100.0%
Simplified100.0%
Taylor expanded in phi2 around 0 52.7%
+-commutative52.7%
unpow252.7%
unpow252.7%
unpow252.7%
unswap-sqr52.7%
hypot-define63.4%
Simplified63.4%
Taylor expanded in phi1 around 0 63.4%
Taylor expanded in lambda1 around -inf 15.8%
mul-1-neg15.8%
distribute-rgt-neg-in15.8%
Simplified15.8%
if -3.5e-264 < phi1 < 2.99999999999999975e-281Initial program 85.0%
hypot-define99.9%
Simplified99.9%
Taylor expanded in phi2 around 0 70.3%
+-commutative70.3%
unpow270.3%
unpow270.3%
unpow270.3%
unswap-sqr70.3%
hypot-define76.0%
Simplified76.0%
Taylor expanded in phi1 around 0 76.0%
Taylor expanded in lambda2 around inf 19.1%
if 2.99999999999999975e-281 < phi1 Initial program 55.7%
hypot-define95.2%
Simplified95.2%
Taylor expanded in phi2 around inf 28.0%
*-commutative28.0%
Simplified28.0%
Final simplification33.6%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (if (<= lambda2 -6e-43) (* R (- lambda1)) (if (<= lambda2 1.15e+108) (- (* R phi2) (* R phi1)) (* R lambda2))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (lambda2 <= -6e-43) {
tmp = R * -lambda1;
} else if (lambda2 <= 1.15e+108) {
tmp = (R * phi2) - (R * phi1);
} else {
tmp = R * lambda2;
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (lambda2 <= (-6d-43)) then
tmp = r * -lambda1
else if (lambda2 <= 1.15d+108) then
tmp = (r * phi2) - (r * phi1)
else
tmp = r * lambda2
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (lambda2 <= -6e-43) {
tmp = R * -lambda1;
} else if (lambda2 <= 1.15e+108) {
tmp = (R * phi2) - (R * phi1);
} else {
tmp = R * lambda2;
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if lambda2 <= -6e-43: tmp = R * -lambda1 elif lambda2 <= 1.15e+108: tmp = (R * phi2) - (R * phi1) else: tmp = R * lambda2 return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (lambda2 <= -6e-43) tmp = Float64(R * Float64(-lambda1)); elseif (lambda2 <= 1.15e+108) tmp = Float64(Float64(R * phi2) - Float64(R * phi1)); else tmp = Float64(R * lambda2); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (lambda2 <= -6e-43) tmp = R * -lambda1; elseif (lambda2 <= 1.15e+108) tmp = (R * phi2) - (R * phi1); else tmp = R * lambda2; end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[lambda2, -6e-43], N[(R * (-lambda1)), $MachinePrecision], If[LessEqual[lambda2, 1.15e+108], N[(N[(R * phi2), $MachinePrecision] - N[(R * phi1), $MachinePrecision]), $MachinePrecision], N[(R * lambda2), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\lambda_2 \leq -6 \cdot 10^{-43}:\\
\;\;\;\;R \cdot \left(-\lambda_1\right)\\
\mathbf{elif}\;\lambda_2 \leq 1.15 \cdot 10^{+108}:\\
\;\;\;\;R \cdot \phi_2 - R \cdot \phi_1\\
\mathbf{else}:\\
\;\;\;\;R \cdot \lambda_2\\
\end{array}
\end{array}
if lambda2 < -6.00000000000000007e-43Initial program 56.0%
hypot-define92.9%
Simplified92.9%
Taylor expanded in phi2 around 0 49.0%
+-commutative49.0%
unpow249.0%
unpow249.0%
unpow249.0%
unswap-sqr49.0%
hypot-define68.2%
Simplified68.2%
Taylor expanded in phi1 around 0 67.3%
Taylor expanded in lambda1 around -inf 7.4%
mul-1-neg7.4%
distribute-rgt-neg-in7.4%
Simplified7.4%
if -6.00000000000000007e-43 < lambda2 < 1.1499999999999999e108Initial program 63.9%
hypot-define98.9%
Simplified98.9%
Taylor expanded in phi1 around -inf 42.9%
associate-*r*42.9%
mul-1-neg42.9%
associate-*r/42.9%
mul-1-neg42.9%
*-commutative42.9%
Simplified42.9%
Taylor expanded in phi1 around 0 44.1%
+-commutative44.1%
*-commutative44.1%
mul-1-neg44.1%
unsub-neg44.1%
*-commutative44.1%
Simplified44.1%
if 1.1499999999999999e108 < lambda2 Initial program 57.1%
hypot-define94.2%
Simplified94.2%
Taylor expanded in phi2 around 0 50.7%
+-commutative50.7%
unpow250.7%
unpow250.7%
unpow250.7%
unswap-sqr50.7%
hypot-define66.8%
Simplified66.8%
Taylor expanded in phi1 around 0 58.4%
Taylor expanded in lambda2 around inf 52.6%
Final simplification35.7%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (if (<= phi2 5.5e-255) (* R (- lambda1)) (if (<= phi2 1.22e+29) (* R lambda2) (* R phi2))))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 5.5e-255) {
tmp = R * -lambda1;
} else if (phi2 <= 1.22e+29) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi2 <= 5.5d-255) then
tmp = r * -lambda1
else if (phi2 <= 1.22d+29) then
tmp = r * lambda2
else
tmp = r * phi2
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 5.5e-255) {
tmp = R * -lambda1;
} else if (phi2 <= 1.22e+29) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi2 <= 5.5e-255: tmp = R * -lambda1 elif phi2 <= 1.22e+29: tmp = R * lambda2 else: tmp = R * phi2 return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi2 <= 5.5e-255) tmp = Float64(R * Float64(-lambda1)); elseif (phi2 <= 1.22e+29) tmp = Float64(R * lambda2); else tmp = Float64(R * phi2); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi2 <= 5.5e-255) tmp = R * -lambda1; elseif (phi2 <= 1.22e+29) tmp = R * lambda2; else tmp = R * phi2; end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 5.5e-255], N[(R * (-lambda1)), $MachinePrecision], If[LessEqual[phi2, 1.22e+29], N[(R * lambda2), $MachinePrecision], N[(R * phi2), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 5.5 \cdot 10^{-255}:\\
\;\;\;\;R \cdot \left(-\lambda_1\right)\\
\mathbf{elif}\;\phi_2 \leq 1.22 \cdot 10^{+29}:\\
\;\;\;\;R \cdot \lambda_2\\
\mathbf{else}:\\
\;\;\;\;R \cdot \phi_2\\
\end{array}
\end{array}
if phi2 < 5.5000000000000003e-255Initial program 53.3%
hypot-define96.4%
Simplified96.4%
Taylor expanded in phi2 around 0 43.1%
+-commutative43.1%
unpow243.1%
unpow243.1%
unpow243.1%
unswap-sqr43.1%
hypot-define61.5%
Simplified61.5%
Taylor expanded in phi1 around 0 58.4%
Taylor expanded in lambda1 around -inf 10.3%
mul-1-neg10.3%
distribute-rgt-neg-in10.3%
Simplified10.3%
if 5.5000000000000003e-255 < phi2 < 1.22e29Initial program 76.3%
hypot-define98.4%
Simplified98.4%
Taylor expanded in phi2 around 0 72.6%
+-commutative72.6%
unpow272.6%
unpow272.6%
unpow272.6%
unswap-sqr72.6%
hypot-define94.8%
Simplified94.8%
Taylor expanded in phi1 around 0 89.2%
Taylor expanded in lambda2 around inf 16.7%
if 1.22e29 < phi2 Initial program 62.8%
hypot-define95.9%
Simplified95.9%
Taylor expanded in phi2 around inf 68.3%
*-commutative68.3%
Simplified68.3%
Final simplification29.1%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (if (<= phi2 2.8e+27) (* R lambda2) (* R phi2)))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 2.8e+27) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
real(8) :: tmp
if (phi2 <= 2.8d+27) then
tmp = r * lambda2
else
tmp = r * phi2
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double tmp;
if (phi2 <= 2.8e+27) {
tmp = R * lambda2;
} else {
tmp = R * phi2;
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): tmp = 0 if phi2 <= 2.8e+27: tmp = R * lambda2 else: tmp = R * phi2 return tmp
function code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0 if (phi2 <= 2.8e+27) tmp = Float64(R * lambda2); else tmp = Float64(R * phi2); end return tmp end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) tmp = 0.0; if (phi2 <= 2.8e+27) tmp = R * lambda2; else tmp = R * phi2; end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 2.8e+27], N[(R * lambda2), $MachinePrecision], N[(R * phi2), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 2.8 \cdot 10^{+27}:\\
\;\;\;\;R \cdot \lambda_2\\
\mathbf{else}:\\
\;\;\;\;R \cdot \phi_2\\
\end{array}
\end{array}
if phi2 < 2.7999999999999999e27Initial program 60.0%
hypot-define97.0%
Simplified97.0%
Taylor expanded in phi2 around 0 51.7%
+-commutative51.7%
unpow251.7%
unpow251.7%
unpow251.7%
unswap-sqr51.7%
hypot-define71.2%
Simplified71.2%
Taylor expanded in phi1 around 0 67.4%
Taylor expanded in lambda2 around inf 11.8%
if 2.7999999999999999e27 < phi2 Initial program 62.8%
hypot-define95.9%
Simplified95.9%
Taylor expanded in phi2 around inf 68.3%
*-commutative68.3%
Simplified68.3%
Final simplification28.8%
(FPCore (R lambda1 lambda2 phi1 phi2) :precision binary64 (* R lambda2))
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * lambda2;
}
real(8) function code(r, lambda1, lambda2, phi1, phi2)
real(8), intent (in) :: r
real(8), intent (in) :: lambda1
real(8), intent (in) :: lambda2
real(8), intent (in) :: phi1
real(8), intent (in) :: phi2
code = r * lambda2
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * lambda2;
}
def code(R, lambda1, lambda2, phi1, phi2): return R * lambda2
function code(R, lambda1, lambda2, phi1, phi2) return Float64(R * lambda2) end
function tmp = code(R, lambda1, lambda2, phi1, phi2) tmp = R * lambda2; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := N[(R * lambda2), $MachinePrecision]
\begin{array}{l}
\\
R \cdot \lambda_2
\end{array}
Initial program 60.8%
hypot-define96.6%
Simplified96.6%
Taylor expanded in phi2 around 0 48.0%
+-commutative48.0%
unpow248.0%
unpow248.0%
unpow248.0%
unswap-sqr48.0%
hypot-define62.9%
Simplified62.9%
Taylor expanded in phi1 around 0 60.2%
Taylor expanded in lambda2 around inf 11.7%
Final simplification11.7%
herbie shell --seed 2024080
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Equirectangular approximation to distance on a great circle"
:precision binary64
(* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0)))) (* (- phi1 phi2) (- phi1 phi2))))))