| Alternative 1 | |
|---|---|
| Error | 24.6 |
| Cost | 27084 |
(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(*
R
(sqrt
(+
(*
(* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0)))
(* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))
(* (- phi1 phi2) (- phi1 phi2))))))(FPCore (R lambda1 lambda2 phi1 phi2)
:precision binary64
(let* ((t_0 (* (- phi1 phi2) (- phi1 phi2)))
(t_1 (* (- lambda1 lambda2) (- lambda1 lambda2))))
(if (<= (- lambda1 lambda2) -3e+127)
(*
R
(*
(sqrt (+ 1.0 (- (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))))
(+ (* lambda2 (sqrt 0.5)) (* -0.5 (/ lambda1 (sqrt 0.5))))))
(if (<= (- lambda1 lambda2) -1e-152)
(*
R
(sqrt
(+ (* (/ (+ 1.0 (cos (* 2.0 (/ (+ phi1 phi2) 2.0)))) 2.0) t_1) t_0)))
(if (<= (- lambda1 lambda2) -4e-210)
(* R (+ phi1 (- phi2)))
(* R (sqrt (+ (* 1.0 t_1) t_0))))))))double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * sqrt(((((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0))) * ((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0)))) + ((phi1 - phi2) * (phi1 - phi2))));
}
double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (phi1 - phi2) * (phi1 - phi2);
double t_1 = (lambda1 - lambda2) * (lambda1 - lambda2);
double tmp;
if ((lambda1 - lambda2) <= -3e+127) {
tmp = R * (sqrt((1.0 + ((cos(phi2) * cos(phi1)) - (sin(phi2) * sin(phi1))))) * ((lambda2 * sqrt(0.5)) + (-0.5 * (lambda1 / sqrt(0.5)))));
} else if ((lambda1 - lambda2) <= -1e-152) {
tmp = R * sqrt(((((1.0 + cos((2.0 * ((phi1 + phi2) / 2.0)))) / 2.0) * t_1) + t_0));
} else if ((lambda1 - lambda2) <= -4e-210) {
tmp = R * (phi1 + -phi2);
} else {
tmp = R * sqrt(((1.0 * t_1) + t_0));
}
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
code = r * sqrt(((((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0d0))) * ((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0d0)))) + ((phi1 - phi2) * (phi1 - phi2))))
end function
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
real(8) :: t_1
real(8) :: tmp
t_0 = (phi1 - phi2) * (phi1 - phi2)
t_1 = (lambda1 - lambda2) * (lambda1 - lambda2)
if ((lambda1 - lambda2) <= (-3d+127)) then
tmp = r * (sqrt((1.0d0 + ((cos(phi2) * cos(phi1)) - (sin(phi2) * sin(phi1))))) * ((lambda2 * sqrt(0.5d0)) + ((-0.5d0) * (lambda1 / sqrt(0.5d0)))))
else if ((lambda1 - lambda2) <= (-1d-152)) then
tmp = r * sqrt(((((1.0d0 + cos((2.0d0 * ((phi1 + phi2) / 2.0d0)))) / 2.0d0) * t_1) + t_0))
else if ((lambda1 - lambda2) <= (-4d-210)) then
tmp = r * (phi1 + -phi2)
else
tmp = r * sqrt(((1.0d0 * t_1) + t_0))
end if
code = tmp
end function
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
return R * Math.sqrt(((((lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0))) * ((lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0)))) + ((phi1 - phi2) * (phi1 - phi2))));
}
public static double code(double R, double lambda1, double lambda2, double phi1, double phi2) {
double t_0 = (phi1 - phi2) * (phi1 - phi2);
double t_1 = (lambda1 - lambda2) * (lambda1 - lambda2);
double tmp;
if ((lambda1 - lambda2) <= -3e+127) {
tmp = R * (Math.sqrt((1.0 + ((Math.cos(phi2) * Math.cos(phi1)) - (Math.sin(phi2) * Math.sin(phi1))))) * ((lambda2 * Math.sqrt(0.5)) + (-0.5 * (lambda1 / Math.sqrt(0.5)))));
} else if ((lambda1 - lambda2) <= -1e-152) {
tmp = R * Math.sqrt(((((1.0 + Math.cos((2.0 * ((phi1 + phi2) / 2.0)))) / 2.0) * t_1) + t_0));
} else if ((lambda1 - lambda2) <= -4e-210) {
tmp = R * (phi1 + -phi2);
} else {
tmp = R * Math.sqrt(((1.0 * t_1) + t_0));
}
return tmp;
}
def code(R, lambda1, lambda2, phi1, phi2): return R * math.sqrt(((((lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0))) * ((lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0)))) + ((phi1 - phi2) * (phi1 - phi2))))
def code(R, lambda1, lambda2, phi1, phi2): t_0 = (phi1 - phi2) * (phi1 - phi2) t_1 = (lambda1 - lambda2) * (lambda1 - lambda2) tmp = 0 if (lambda1 - lambda2) <= -3e+127: tmp = R * (math.sqrt((1.0 + ((math.cos(phi2) * math.cos(phi1)) - (math.sin(phi2) * math.sin(phi1))))) * ((lambda2 * math.sqrt(0.5)) + (-0.5 * (lambda1 / math.sqrt(0.5))))) elif (lambda1 - lambda2) <= -1e-152: tmp = R * math.sqrt(((((1.0 + math.cos((2.0 * ((phi1 + phi2) / 2.0)))) / 2.0) * t_1) + t_0)) elif (lambda1 - lambda2) <= -4e-210: tmp = R * (phi1 + -phi2) else: tmp = R * math.sqrt(((1.0 * t_1) + t_0)) return tmp
function code(R, lambda1, lambda2, phi1, phi2) return Float64(R * sqrt(Float64(Float64(Float64(Float64(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0))) * Float64(Float64(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0)))) + Float64(Float64(phi1 - phi2) * Float64(phi1 - phi2))))) end
function code(R, lambda1, lambda2, phi1, phi2) t_0 = Float64(Float64(phi1 - phi2) * Float64(phi1 - phi2)) t_1 = Float64(Float64(lambda1 - lambda2) * Float64(lambda1 - lambda2)) tmp = 0.0 if (Float64(lambda1 - lambda2) <= -3e+127) tmp = Float64(R * Float64(sqrt(Float64(1.0 + Float64(Float64(cos(phi2) * cos(phi1)) - Float64(sin(phi2) * sin(phi1))))) * Float64(Float64(lambda2 * sqrt(0.5)) + Float64(-0.5 * Float64(lambda1 / sqrt(0.5)))))); elseif (Float64(lambda1 - lambda2) <= -1e-152) tmp = Float64(R * sqrt(Float64(Float64(Float64(Float64(1.0 + cos(Float64(2.0 * Float64(Float64(phi1 + phi2) / 2.0)))) / 2.0) * t_1) + t_0))); elseif (Float64(lambda1 - lambda2) <= -4e-210) tmp = Float64(R * Float64(phi1 + Float64(-phi2))); else tmp = Float64(R * sqrt(Float64(Float64(1.0 * t_1) + t_0))); end return tmp end
function tmp = code(R, lambda1, lambda2, phi1, phi2) tmp = R * sqrt(((((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0))) * ((lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0)))) + ((phi1 - phi2) * (phi1 - phi2)))); end
function tmp_2 = code(R, lambda1, lambda2, phi1, phi2) t_0 = (phi1 - phi2) * (phi1 - phi2); t_1 = (lambda1 - lambda2) * (lambda1 - lambda2); tmp = 0.0; if ((lambda1 - lambda2) <= -3e+127) tmp = R * (sqrt((1.0 + ((cos(phi2) * cos(phi1)) - (sin(phi2) * sin(phi1))))) * ((lambda2 * sqrt(0.5)) + (-0.5 * (lambda1 / sqrt(0.5))))); elseif ((lambda1 - lambda2) <= -1e-152) tmp = R * sqrt(((((1.0 + cos((2.0 * ((phi1 + phi2) / 2.0)))) / 2.0) * t_1) + t_0)); elseif ((lambda1 - lambda2) <= -4e-210) tmp = R * (phi1 + -phi2); else tmp = R * sqrt(((1.0 * t_1) + t_0)); end tmp_2 = tmp; end
code[R_, lambda1_, lambda2_, phi1_, phi2_] := N[(R * N[Sqrt[N[(N[(N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(phi1 - phi2), $MachinePrecision] * N[(phi1 - phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[R_, lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[(phi1 - phi2), $MachinePrecision] * N[(phi1 - phi2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(lambda1 - lambda2), $MachinePrecision] * N[(lambda1 - lambda2), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -3e+127], N[(R * N[(N[Sqrt[N[(1.0 + N[(N[(N[Cos[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(lambda2 * N[Sqrt[0.5], $MachinePrecision]), $MachinePrecision] + N[(-0.5 * N[(lambda1 / N[Sqrt[0.5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -1e-152], N[(R * N[Sqrt[N[(N[(N[(N[(1.0 + N[Cos[N[(2.0 * N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision] * t$95$1), $MachinePrecision] + t$95$0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -4e-210], N[(R * N[(phi1 + (-phi2)), $MachinePrecision]), $MachinePrecision], N[(R * N[Sqrt[N[(N[(1.0 * t$95$1), $MachinePrecision] + t$95$0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]
R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\begin{array}{l}
t_0 := \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)\\
t_1 := \left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\lambda_1 - \lambda_2 \leq -3 \cdot 10^{+127}:\\
\;\;\;\;R \cdot \left(\sqrt{1 + \left(\cos \phi_2 \cdot \cos \phi_1 - \sin \phi_2 \cdot \sin \phi_1\right)} \cdot \left(\lambda_2 \cdot \sqrt{0.5} + -0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}}\right)\right)\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -1 \cdot 10^{-152}:\\
\;\;\;\;R \cdot \sqrt{\frac{1 + \cos \left(2 \cdot \frac{\phi_1 + \phi_2}{2}\right)}{2} \cdot t_1 + t_0}\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-210}:\\
\;\;\;\;R \cdot \left(\phi_1 + \left(-\phi_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;R \cdot \sqrt{1 \cdot t_1 + t_0}\\
\end{array}
Results
if (-.f64 lambda1 lambda2) < -3.0000000000000002e127Initial program 58.5
Simplified58.6
[Start]58.5 | \[ R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
|---|---|
rational_best-simplify-44 [=>]58.5 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]58.5 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]58.5 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]58.5 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]58.6 | \[ R \cdot \sqrt{\color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
trig-simplify-6 [=>]58.6 | \[ R \cdot \sqrt{\color{blue}{\frac{1 + \cos \left(2 \cdot \frac{\phi_1 + \phi_2}{2}\right)}{2}} \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
Taylor expanded in lambda2 around inf 22.1
Simplified22.1
[Start]22.1 | \[ R \cdot \left(\left(\sqrt{0.5} \cdot \lambda_2\right) \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} + -0.5 \cdot \left(\frac{\lambda_1}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
|---|---|
rational_best-simplify-2 [=>]22.1 | \[ R \cdot \left(\color{blue}{\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(\sqrt{0.5} \cdot \lambda_2\right)} + -0.5 \cdot \left(\frac{\lambda_1}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational_best-simplify-2 [=>]22.1 | \[ R \cdot \left(\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(\sqrt{0.5} \cdot \lambda_2\right) + -0.5 \cdot \color{blue}{\left(\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \frac{\lambda_1}{\sqrt{0.5}}\right)}\right)
\] |
rational_best-simplify-44 [=>]22.1 | \[ R \cdot \left(\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(\sqrt{0.5} \cdot \lambda_2\right) + \color{blue}{\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(-0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}}\right)}\right)
\] |
rational_best-simplify-47 [=>]22.1 | \[ R \cdot \color{blue}{\left(\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(-0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}} + \sqrt{0.5} \cdot \lambda_2\right)\right)}
\] |
rational_best-simplify-1 [=>]22.1 | \[ R \cdot \left(\sqrt{1 + \cos \color{blue}{\left(\phi_2 + \phi_1\right)}} \cdot \left(-0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}} + \sqrt{0.5} \cdot \lambda_2\right)\right)
\] |
rational_best-simplify-1 [<=]22.1 | \[ R \cdot \left(\sqrt{1 + \cos \left(\phi_2 + \phi_1\right)} \cdot \color{blue}{\left(\sqrt{0.5} \cdot \lambda_2 + -0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}}\right)}\right)
\] |
rational_best-simplify-2 [=>]22.1 | \[ R \cdot \left(\sqrt{1 + \cos \left(\phi_2 + \phi_1\right)} \cdot \left(\color{blue}{\lambda_2 \cdot \sqrt{0.5}} + -0.5 \cdot \frac{\lambda_1}{\sqrt{0.5}}\right)\right)
\] |
Applied egg-rr15.6
if -3.0000000000000002e127 < (-.f64 lambda1 lambda2) < -1.00000000000000007e-152Initial program 24.4
Simplified24.4
[Start]24.4 | \[ R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
|---|---|
rational_best-simplify-44 [=>]24.4 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]24.4 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]24.4 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]24.4 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]24.4 | \[ R \cdot \sqrt{\color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
trig-simplify-6 [=>]24.4 | \[ R \cdot \sqrt{\color{blue}{\frac{1 + \cos \left(2 \cdot \frac{\phi_1 + \phi_2}{2}\right)}{2}} \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
if -1.00000000000000007e-152 < (-.f64 lambda1 lambda2) < -4.0000000000000002e-210Initial program 24.1
Simplified24.1
[Start]24.1 | \[ R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
|---|---|
rational_best-simplify-44 [=>]24.1 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]24.1 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]24.1 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
Taylor expanded in phi1 around inf 31.7
Simplified31.7
[Start]31.7 | \[ R \cdot \left(-1 \cdot \phi_2 + \phi_1\right)
\] |
|---|---|
rational_best-simplify-1 [=>]31.7 | \[ R \cdot \color{blue}{\left(\phi_1 + -1 \cdot \phi_2\right)}
\] |
rational_best-simplify-2 [=>]31.7 | \[ R \cdot \left(\phi_1 + \color{blue}{\phi_2 \cdot -1}\right)
\] |
rational_best-simplify-12 [=>]31.7 | \[ R \cdot \left(\phi_1 + \color{blue}{\left(-\phi_2\right)}\right)
\] |
if -4.0000000000000002e-210 < (-.f64 lambda1 lambda2) Initial program 24.6
Simplified24.6
[Start]24.6 | \[ R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
|---|---|
rational_best-simplify-44 [=>]24.6 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]24.6 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]24.6 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-2 [=>]24.6 | \[ R \cdot \sqrt{\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
rational_best-simplify-44 [=>]24.6 | \[ R \cdot \sqrt{\color{blue}{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
trig-simplify-6 [=>]24.6 | \[ R \cdot \sqrt{\color{blue}{\frac{1 + \cos \left(2 \cdot \frac{\phi_1 + \phi_2}{2}\right)}{2}} \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\] |
Taylor expanded in phi2 around 0 24.6
Taylor expanded in phi1 around 0 24.6
Final simplification20.9
| Alternative 1 | |
|---|---|
| Error | 24.6 |
| Cost | 27084 |
| Alternative 2 | |
|---|---|
| Error | 24.8 |
| Cost | 26956 |
| Alternative 3 | |
|---|---|
| Error | 27.3 |
| Cost | 14920 |
| Alternative 4 | |
|---|---|
| Error | 27.2 |
| Cost | 14920 |
| Alternative 5 | |
|---|---|
| Error | 27.7 |
| Cost | 14536 |
| Alternative 6 | |
|---|---|
| Error | 36.9 |
| Cost | 7504 |
| Alternative 7 | |
|---|---|
| Error | 36.1 |
| Cost | 7504 |
| Alternative 8 | |
|---|---|
| Error | 27.5 |
| Cost | 7432 |
| Alternative 9 | |
|---|---|
| Error | 40.1 |
| Cost | 516 |
| Alternative 10 | |
|---|---|
| Error | 38.0 |
| Cost | 516 |
| Alternative 11 | |
|---|---|
| Error | 41.3 |
| Cost | 456 |
| Alternative 12 | |
|---|---|
| Error | 41.8 |
| Cost | 456 |
| Alternative 13 | |
|---|---|
| Error | 47.4 |
| Cost | 324 |
| Alternative 14 | |
|---|---|
| Error | 61.9 |
| Cost | 192 |
| Alternative 15 | |
|---|---|
| Error | 53.8 |
| Cost | 192 |
herbie shell --seed 2023092
(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))))))