| Alternative 1 | |
|---|---|
| Error | 19.7 |
| Cost | 33796 |
(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 (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))
(t_1 (* R (- phi2 phi1))))
(if (<= (- lambda1 lambda2) -1e+121)
(*
R
(+
(- (* lambda1 (sqrt (* 0.5 (+ 1.0 (cos (+ phi1 phi2)))))))
(*
(sqrt (- (+ 1.0 (* (cos phi1) (cos phi2))) (* (sin phi1) (sin phi2))))
(* (/ lambda2 (sqrt 0.5)) 0.5))))
(if (<= (- lambda1 lambda2) -4e+102)
t_1
(if (<= (- lambda1 lambda2) -5e+79)
(*
R
(sqrt
(+
(pow phi1 2.0)
(* (pow (cos (* 0.5 phi1)) 2.0) (pow (- lambda1 lambda2) 2.0)))))
(if (<= (- lambda1 lambda2) -5e+75)
t_1
(if (<= (- lambda1 lambda2) -2e+51)
(* R (sqrt (+ (* t_0 t_0) (* (- phi1 phi2) (- phi1 phi2)))))
t_1)))))))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 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0));
double t_1 = R * (phi2 - phi1);
double tmp;
if ((lambda1 - lambda2) <= -1e+121) {
tmp = R * (-(lambda1 * sqrt((0.5 * (1.0 + cos((phi1 + phi2)))))) + (sqrt(((1.0 + (cos(phi1) * cos(phi2))) - (sin(phi1) * sin(phi2)))) * ((lambda2 / sqrt(0.5)) * 0.5)));
} else if ((lambda1 - lambda2) <= -4e+102) {
tmp = t_1;
} else if ((lambda1 - lambda2) <= -5e+79) {
tmp = R * sqrt((pow(phi1, 2.0) + (pow(cos((0.5 * phi1)), 2.0) * pow((lambda1 - lambda2), 2.0))));
} else if ((lambda1 - lambda2) <= -5e+75) {
tmp = t_1;
} else if ((lambda1 - lambda2) <= -2e+51) {
tmp = R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
} else {
tmp = t_1;
}
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 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0d0))
t_1 = r * (phi2 - phi1)
if ((lambda1 - lambda2) <= (-1d+121)) then
tmp = r * (-(lambda1 * sqrt((0.5d0 * (1.0d0 + cos((phi1 + phi2)))))) + (sqrt(((1.0d0 + (cos(phi1) * cos(phi2))) - (sin(phi1) * sin(phi2)))) * ((lambda2 / sqrt(0.5d0)) * 0.5d0)))
else if ((lambda1 - lambda2) <= (-4d+102)) then
tmp = t_1
else if ((lambda1 - lambda2) <= (-5d+79)) then
tmp = r * sqrt(((phi1 ** 2.0d0) + ((cos((0.5d0 * phi1)) ** 2.0d0) * ((lambda1 - lambda2) ** 2.0d0))))
else if ((lambda1 - lambda2) <= (-5d+75)) then
tmp = t_1
else if ((lambda1 - lambda2) <= (-2d+51)) then
tmp = r * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))))
else
tmp = t_1
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 = (lambda1 - lambda2) * Math.cos(((phi1 + phi2) / 2.0));
double t_1 = R * (phi2 - phi1);
double tmp;
if ((lambda1 - lambda2) <= -1e+121) {
tmp = R * (-(lambda1 * Math.sqrt((0.5 * (1.0 + Math.cos((phi1 + phi2)))))) + (Math.sqrt(((1.0 + (Math.cos(phi1) * Math.cos(phi2))) - (Math.sin(phi1) * Math.sin(phi2)))) * ((lambda2 / Math.sqrt(0.5)) * 0.5)));
} else if ((lambda1 - lambda2) <= -4e+102) {
tmp = t_1;
} else if ((lambda1 - lambda2) <= -5e+79) {
tmp = R * Math.sqrt((Math.pow(phi1, 2.0) + (Math.pow(Math.cos((0.5 * phi1)), 2.0) * Math.pow((lambda1 - lambda2), 2.0))));
} else if ((lambda1 - lambda2) <= -5e+75) {
tmp = t_1;
} else if ((lambda1 - lambda2) <= -2e+51) {
tmp = R * Math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2))));
} else {
tmp = t_1;
}
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 = (lambda1 - lambda2) * math.cos(((phi1 + phi2) / 2.0)) t_1 = R * (phi2 - phi1) tmp = 0 if (lambda1 - lambda2) <= -1e+121: tmp = R * (-(lambda1 * math.sqrt((0.5 * (1.0 + math.cos((phi1 + phi2)))))) + (math.sqrt(((1.0 + (math.cos(phi1) * math.cos(phi2))) - (math.sin(phi1) * math.sin(phi2)))) * ((lambda2 / math.sqrt(0.5)) * 0.5))) elif (lambda1 - lambda2) <= -4e+102: tmp = t_1 elif (lambda1 - lambda2) <= -5e+79: tmp = R * math.sqrt((math.pow(phi1, 2.0) + (math.pow(math.cos((0.5 * phi1)), 2.0) * math.pow((lambda1 - lambda2), 2.0)))) elif (lambda1 - lambda2) <= -5e+75: tmp = t_1 elif (lambda1 - lambda2) <= -2e+51: tmp = R * math.sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2)))) else: tmp = t_1 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(lambda1 - lambda2) * cos(Float64(Float64(phi1 + phi2) / 2.0))) t_1 = Float64(R * Float64(phi2 - phi1)) tmp = 0.0 if (Float64(lambda1 - lambda2) <= -1e+121) tmp = Float64(R * Float64(Float64(-Float64(lambda1 * sqrt(Float64(0.5 * Float64(1.0 + cos(Float64(phi1 + phi2))))))) + Float64(sqrt(Float64(Float64(1.0 + Float64(cos(phi1) * cos(phi2))) - Float64(sin(phi1) * sin(phi2)))) * Float64(Float64(lambda2 / sqrt(0.5)) * 0.5)))); elseif (Float64(lambda1 - lambda2) <= -4e+102) tmp = t_1; elseif (Float64(lambda1 - lambda2) <= -5e+79) tmp = Float64(R * sqrt(Float64((phi1 ^ 2.0) + Float64((cos(Float64(0.5 * phi1)) ^ 2.0) * (Float64(lambda1 - lambda2) ^ 2.0))))); elseif (Float64(lambda1 - lambda2) <= -5e+75) tmp = t_1; elseif (Float64(lambda1 - lambda2) <= -2e+51) tmp = Float64(R * sqrt(Float64(Float64(t_0 * t_0) + Float64(Float64(phi1 - phi2) * Float64(phi1 - phi2))))); else tmp = t_1; 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 = (lambda1 - lambda2) * cos(((phi1 + phi2) / 2.0)); t_1 = R * (phi2 - phi1); tmp = 0.0; if ((lambda1 - lambda2) <= -1e+121) tmp = R * (-(lambda1 * sqrt((0.5 * (1.0 + cos((phi1 + phi2)))))) + (sqrt(((1.0 + (cos(phi1) * cos(phi2))) - (sin(phi1) * sin(phi2)))) * ((lambda2 / sqrt(0.5)) * 0.5))); elseif ((lambda1 - lambda2) <= -4e+102) tmp = t_1; elseif ((lambda1 - lambda2) <= -5e+79) tmp = R * sqrt(((phi1 ^ 2.0) + ((cos((0.5 * phi1)) ^ 2.0) * ((lambda1 - lambda2) ^ 2.0)))); elseif ((lambda1 - lambda2) <= -5e+75) tmp = t_1; elseif ((lambda1 - lambda2) <= -2e+51) tmp = R * sqrt(((t_0 * t_0) + ((phi1 - phi2) * (phi1 - phi2)))); else tmp = t_1; 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[(lambda1 - lambda2), $MachinePrecision] * N[Cos[N[(N[(phi1 + phi2), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(R * N[(phi2 - phi1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -1e+121], N[(R * N[((-N[(lambda1 * N[Sqrt[N[(0.5 * N[(1.0 + N[Cos[N[(phi1 + phi2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]) + N[(N[Sqrt[N[(N[(1.0 + N[(N[Cos[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(lambda2 / N[Sqrt[0.5], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -4e+102], t$95$1, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -5e+79], N[(R * N[Sqrt[N[(N[Power[phi1, 2.0], $MachinePrecision] + N[(N[Power[N[Cos[N[(0.5 * phi1), $MachinePrecision]], $MachinePrecision], 2.0], $MachinePrecision] * N[Power[N[(lambda1 - lambda2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -5e+75], t$95$1, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -2e+51], 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], t$95$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)}
\begin{array}{l}
t_0 := \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\\
t_1 := R \cdot \left(\phi_2 - \phi_1\right)\\
\mathbf{if}\;\lambda_1 - \lambda_2 \leq -1 \cdot 10^{+121}:\\
\;\;\;\;R \cdot \left(\left(-\lambda_1 \cdot \sqrt{0.5 \cdot \left(1 + \cos \left(\phi_1 + \phi_2\right)\right)}\right) + \sqrt{\left(1 + \cos \phi_1 \cdot \cos \phi_2\right) - \sin \phi_1 \cdot \sin \phi_2} \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot 0.5\right)\right)\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -4 \cdot 10^{+102}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -5 \cdot 10^{+79}:\\
\;\;\;\;R \cdot \sqrt{{\phi_1}^{2} + {\cos \left(0.5 \cdot \phi_1\right)}^{2} \cdot {\left(\lambda_1 - \lambda_2\right)}^{2}}\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -5 \cdot 10^{+75}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{+51}:\\
\;\;\;\;R \cdot \sqrt{t_0 \cdot t_0 + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
Results
if (-.f64 lambda1 lambda2) < -1.00000000000000004e121Initial program 57.4
Simplified57.4
[Start]57.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)}
\] |
|---|
Taylor expanded in lambda1 around -inf 22.7
Simplified22.6
[Start]22.7 | \[ R \cdot \left(-1 \cdot \left(\left(\sqrt{0.5} \cdot \lambda_1\right) \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
|---|---|
rational.json-simplify-2 [=>]22.7 | \[ R \cdot \left(\color{blue}{\left(\left(\sqrt{0.5} \cdot \lambda_1\right) \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right) \cdot -1} + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-9 [=>]22.7 | \[ R \cdot \left(\color{blue}{\left(-\left(\sqrt{0.5} \cdot \lambda_1\right) \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)} + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-2 [=>]22.7 | \[ R \cdot \left(\left(-\color{blue}{\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(\sqrt{0.5} \cdot \lambda_1\right)}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-2 [=>]22.7 | \[ R \cdot \left(\left(-\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \color{blue}{\left(\lambda_1 \cdot \sqrt{0.5}\right)}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-43 [=>]22.8 | \[ R \cdot \left(\left(-\color{blue}{\lambda_1 \cdot \left(\sqrt{0.5} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
exponential.json-simplify-20 [=>]22.6 | \[ R \cdot \left(\left(-\lambda_1 \cdot \color{blue}{\sqrt{\left(1 + \cos \left(\phi_1 + \phi_2\right)\right) \cdot 0.5}}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-2 [<=]22.6 | \[ R \cdot \left(\left(-\lambda_1 \cdot \sqrt{\color{blue}{0.5 \cdot \left(1 + \cos \left(\phi_1 + \phi_2\right)\right)}}\right) + 0.5 \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot \sqrt{1 + \cos \left(\phi_1 + \phi_2\right)}\right)\right)
\] |
rational.json-simplify-2 [=>]22.6 | \[ R \cdot \left(\left(-\lambda_1 \cdot \sqrt{0.5 \cdot \left(1 + \cos \left(\phi_1 + \phi_2\right)\right)}\right) + 0.5 \cdot \color{blue}{\left(\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \frac{\lambda_2}{\sqrt{0.5}}\right)}\right)
\] |
rational.json-simplify-43 [=>]22.6 | \[ R \cdot \left(\left(-\lambda_1 \cdot \sqrt{0.5 \cdot \left(1 + \cos \left(\phi_1 + \phi_2\right)\right)}\right) + \color{blue}{\sqrt{1 + \cos \left(\phi_1 + \phi_2\right)} \cdot \left(\frac{\lambda_2}{\sqrt{0.5}} \cdot 0.5\right)}\right)
\] |
Applied egg-rr19.1
if -1.00000000000000004e121 < (-.f64 lambda1 lambda2) < -3.99999999999999991e102 or -5e79 < (-.f64 lambda1 lambda2) < -5.0000000000000002e75 or -2e51 < (-.f64 lambda1 lambda2) Initial program 22.7
Simplified22.7
[Start]22.7 | \[ 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.json-simplify-43 [=>]22.7 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \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.json-simplify-43 [=>]22.7 | \[ 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 14.6
Simplified14.6
[Start]14.6 | \[ R \cdot \left(-1 \cdot \phi_1 + \phi_2\right)
\] |
|---|---|
rational.json-simplify-1 [=>]14.6 | \[ R \cdot \color{blue}{\left(\phi_2 + -1 \cdot \phi_1\right)}
\] |
rational.json-simplify-2 [=>]14.6 | \[ R \cdot \left(\phi_2 + \color{blue}{\phi_1 \cdot -1}\right)
\] |
rational.json-simplify-9 [=>]14.6 | \[ R \cdot \left(\phi_2 + \color{blue}{\left(-\phi_1\right)}\right)
\] |
Taylor expanded in R around 0 14.6
if -3.99999999999999991e102 < (-.f64 lambda1 lambda2) < -5e79Initial program 25.6
Simplified25.6
[Start]25.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.json-simplify-43 [=>]25.6 | \[ R \cdot \sqrt{\color{blue}{\left(\lambda_1 - \lambda_2\right) \cdot \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.json-simplify-43 [=>]25.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)}
\] |
Taylor expanded in phi2 around 0 34.6
if -5.0000000000000002e75 < (-.f64 lambda1 lambda2) < -2e51Initial program 22.4
Final simplification18.1
| Alternative 1 | |
|---|---|
| Error | 19.7 |
| Cost | 33796 |
| Alternative 2 | |
|---|---|
| Error | 19.7 |
| Cost | 33676 |
| Alternative 3 | |
|---|---|
| Error | 19.7 |
| Cost | 27468 |
| Alternative 4 | |
|---|---|
| Error | 24.5 |
| Cost | 21320 |
| Alternative 5 | |
|---|---|
| Error | 25.2 |
| Cost | 14668 |
| Alternative 6 | |
|---|---|
| Error | 24.5 |
| Cost | 14536 |
| Alternative 7 | |
|---|---|
| Error | 25.0 |
| Cost | 13640 |
| Alternative 8 | |
|---|---|
| Error | 24.6 |
| Cost | 7696 |
| Alternative 9 | |
|---|---|
| Error | 32.6 |
| Cost | 7572 |
| Alternative 10 | |
|---|---|
| Error | 30.7 |
| Cost | 7440 |
| Alternative 11 | |
|---|---|
| Error | 27.4 |
| Cost | 7240 |
| Alternative 12 | |
|---|---|
| Error | 30.9 |
| Cost | 848 |
| Alternative 13 | |
|---|---|
| Error | 34.1 |
| Cost | 784 |
| Alternative 14 | |
|---|---|
| Error | 39.1 |
| Cost | 388 |
| Alternative 15 | |
|---|---|
| Error | 45.8 |
| Cost | 192 |
herbie shell --seed 2023077
(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))))))