?

Average Error: 13.2 → 7.0
Time: 41.4s
Precision: binary64
Cost: 72008

?

\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \lambda_2 \cdot \left(-\cos \lambda_1\right)\\ t_2 := \tan^{-1}_* \frac{\left(t_1 + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \mathbf{if}\;\lambda_2 \leq -1800000:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\lambda_2 \leq 0.00023:\\ \;\;\;\;\tan^{-1}_* \frac{\left(t_1 + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (* (sin (- lambda1 lambda2)) (cos phi2))
  (-
   (* (cos phi1) (sin phi2))
   (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (* (cos phi1) (sin phi2)))
        (t_1 (* (sin lambda2) (- (cos lambda1))))
        (t_2
         (atan2
          (* (+ t_1 (* (cos lambda2) (sin lambda1))) (cos phi2))
          (- t_0 (* (sin phi1) (* (cos phi2) (cos lambda2)))))))
   (if (<= lambda2 -1800000.0)
     t_2
     (if (<= lambda2 0.00023)
       (atan2
        (* (+ t_1 (sin lambda1)) (cos phi2))
        (-
         t_0
         (*
          (sin phi1)
          (* (cos phi2) (+ (* lambda2 (sin lambda1)) (cos lambda1))))))
       t_2))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((sin((lambda1 - lambda2)) * cos(phi2)), ((cos(phi1) * sin(phi2)) - ((sin(phi1) * cos(phi2)) * cos((lambda1 - lambda2)))));
}
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = cos(phi1) * sin(phi2);
	double t_1 = sin(lambda2) * -cos(lambda1);
	double t_2 = atan2(((t_1 + (cos(lambda2) * sin(lambda1))) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * cos(lambda2)))));
	double tmp;
	if (lambda2 <= -1800000.0) {
		tmp = t_2;
	} else if (lambda2 <= 0.00023) {
		tmp = atan2(((t_1 + sin(lambda1)) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * ((lambda2 * sin(lambda1)) + cos(lambda1))))));
	} else {
		tmp = t_2;
	}
	return tmp;
}
real(8) function code(lambda1, lambda2, phi1, phi2)
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    code = atan2((sin((lambda1 - lambda2)) * cos(phi2)), ((cos(phi1) * sin(phi2)) - ((sin(phi1) * cos(phi2)) * cos((lambda1 - lambda2)))))
end function
real(8) function code(lambda1, lambda2, phi1, phi2)
    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) :: t_2
    real(8) :: tmp
    t_0 = cos(phi1) * sin(phi2)
    t_1 = sin(lambda2) * -cos(lambda1)
    t_2 = atan2(((t_1 + (cos(lambda2) * sin(lambda1))) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * cos(lambda2)))))
    if (lambda2 <= (-1800000.0d0)) then
        tmp = t_2
    else if (lambda2 <= 0.00023d0) then
        tmp = atan2(((t_1 + sin(lambda1)) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * ((lambda2 * sin(lambda1)) + cos(lambda1))))))
    else
        tmp = t_2
    end if
    code = tmp
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return Math.atan2((Math.sin((lambda1 - lambda2)) * Math.cos(phi2)), ((Math.cos(phi1) * Math.sin(phi2)) - ((Math.sin(phi1) * Math.cos(phi2)) * Math.cos((lambda1 - lambda2)))));
}
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = Math.cos(phi1) * Math.sin(phi2);
	double t_1 = Math.sin(lambda2) * -Math.cos(lambda1);
	double t_2 = Math.atan2(((t_1 + (Math.cos(lambda2) * Math.sin(lambda1))) * Math.cos(phi2)), (t_0 - (Math.sin(phi1) * (Math.cos(phi2) * Math.cos(lambda2)))));
	double tmp;
	if (lambda2 <= -1800000.0) {
		tmp = t_2;
	} else if (lambda2 <= 0.00023) {
		tmp = Math.atan2(((t_1 + Math.sin(lambda1)) * Math.cos(phi2)), (t_0 - (Math.sin(phi1) * (Math.cos(phi2) * ((lambda2 * Math.sin(lambda1)) + Math.cos(lambda1))))));
	} else {
		tmp = t_2;
	}
	return tmp;
}
def code(lambda1, lambda2, phi1, phi2):
	return math.atan2((math.sin((lambda1 - lambda2)) * math.cos(phi2)), ((math.cos(phi1) * math.sin(phi2)) - ((math.sin(phi1) * math.cos(phi2)) * math.cos((lambda1 - lambda2)))))
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.cos(phi1) * math.sin(phi2)
	t_1 = math.sin(lambda2) * -math.cos(lambda1)
	t_2 = math.atan2(((t_1 + (math.cos(lambda2) * math.sin(lambda1))) * math.cos(phi2)), (t_0 - (math.sin(phi1) * (math.cos(phi2) * math.cos(lambda2)))))
	tmp = 0
	if lambda2 <= -1800000.0:
		tmp = t_2
	elif lambda2 <= 0.00023:
		tmp = math.atan2(((t_1 + math.sin(lambda1)) * math.cos(phi2)), (t_0 - (math.sin(phi1) * (math.cos(phi2) * ((lambda2 * math.sin(lambda1)) + math.cos(lambda1))))))
	else:
		tmp = t_2
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(Float64(sin(phi1) * cos(phi2)) * cos(Float64(lambda1 - lambda2)))))
end
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(cos(phi1) * sin(phi2))
	t_1 = Float64(sin(lambda2) * Float64(-cos(lambda1)))
	t_2 = atan(Float64(Float64(t_1 + Float64(cos(lambda2) * sin(lambda1))) * cos(phi2)), Float64(t_0 - Float64(sin(phi1) * Float64(cos(phi2) * cos(lambda2)))))
	tmp = 0.0
	if (lambda2 <= -1800000.0)
		tmp = t_2;
	elseif (lambda2 <= 0.00023)
		tmp = atan(Float64(Float64(t_1 + sin(lambda1)) * cos(phi2)), Float64(t_0 - Float64(sin(phi1) * Float64(cos(phi2) * Float64(Float64(lambda2 * sin(lambda1)) + cos(lambda1))))));
	else
		tmp = t_2;
	end
	return tmp
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), ((cos(phi1) * sin(phi2)) - ((sin(phi1) * cos(phi2)) * cos((lambda1 - lambda2)))));
end
function tmp_2 = code(lambda1, lambda2, phi1, phi2)
	t_0 = cos(phi1) * sin(phi2);
	t_1 = sin(lambda2) * -cos(lambda1);
	t_2 = atan2(((t_1 + (cos(lambda2) * sin(lambda1))) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * cos(lambda2)))));
	tmp = 0.0;
	if (lambda2 <= -1800000.0)
		tmp = t_2;
	elseif (lambda2 <= 0.00023)
		tmp = atan2(((t_1 + sin(lambda1)) * cos(phi2)), (t_0 - (sin(phi1) * (cos(phi2) * ((lambda2 * sin(lambda1)) + cos(lambda1))))));
	else
		tmp = t_2;
	end
	tmp_2 = tmp;
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision])), $MachinePrecision]}, Block[{t$95$2 = N[ArcTan[N[(N[(t$95$1 + N[(N[Cos[lambda2], $MachinePrecision] * N[Sin[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Sin[phi1], $MachinePrecision] * N[(N[Cos[phi2], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda2, -1800000.0], t$95$2, If[LessEqual[lambda2, 0.00023], N[ArcTan[N[(N[(t$95$1 + N[Sin[lambda1], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Sin[phi1], $MachinePrecision] * N[(N[Cos[phi2], $MachinePrecision] * N[(N[(lambda2 * N[Sin[lambda1], $MachinePrecision]), $MachinePrecision] + N[Cos[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$2]]]]]
\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\begin{array}{l}
t_0 := \cos \phi_1 \cdot \sin \phi_2\\
t_1 := \sin \lambda_2 \cdot \left(-\cos \lambda_1\right)\\
t_2 := \tan^{-1}_* \frac{\left(t_1 + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\
\mathbf{if}\;\lambda_2 \leq -1800000:\\
\;\;\;\;t_2\\

\mathbf{elif}\;\lambda_2 \leq 0.00023:\\
\;\;\;\;\tan^{-1}_* \frac{\left(t_1 + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;t_2\\


\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation?

  1. Split input into 2 regimes
  2. if lambda2 < -1.8e6 or 2.3000000000000001e-4 < lambda2

    1. Initial program 25.6

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Simplified25.6

      \[\leadsto \color{blue}{\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
      Proof

      [Start]25.6

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]

      rational_best.json-simplify-2 [=>]25.6

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}} \]

      rational_best.json-simplify-44 [=>]25.6

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)}} \]

      rational_best.json-simplify-2 [=>]25.6

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
    3. Applied egg-rr31.1

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_2 \cdot \cos \left(\pi - \lambda_1\right) + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
    4. Simplified13.1

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
      Proof

      [Start]31.1

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \cos \left(\pi - \lambda_1\right) + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]

      trig.json-simplify-23 [=>]25.4

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \color{blue}{\left(-\cos \lambda_1\right)} + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]

      trig.json-simplify-24 [=>]13.1

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
    5. Taylor expanded in lambda1 around 0 13.2

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \color{blue}{\cos \left(-\lambda_2\right)}\right)} \]
    6. Simplified13.2

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \color{blue}{\cos \lambda_2}\right)} \]
      Proof

      [Start]13.2

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(-\lambda_2\right)\right)} \]

      trig.json-simplify-32 [=>]13.2

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \color{blue}{\cos \lambda_2}\right)} \]

    if -1.8e6 < lambda2 < 2.3000000000000001e-4

    1. Initial program 0.8

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Simplified0.8

      \[\leadsto \color{blue}{\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
      Proof

      [Start]0.8

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]

      rational_best.json-simplify-2 [=>]0.8

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}} \]

      rational_best.json-simplify-44 [=>]0.8

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)}} \]

      rational_best.json-simplify-2 [=>]0.8

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
    3. Applied egg-rr51.9

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_2 \cdot \cos \left(\pi - \lambda_1\right) + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
    4. Simplified0.5

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
      Proof

      [Start]51.9

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \cos \left(\pi - \lambda_1\right) + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]

      trig.json-simplify-23 [=>]51.8

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \color{blue}{\left(-\cos \lambda_1\right)} + \cos \lambda_2 \cdot \sin \left(\pi - \lambda_1\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]

      trig.json-simplify-24 [=>]0.5

      \[ \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
    5. Taylor expanded in lambda2 around 0 0.7

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \color{blue}{\sin \lambda_1}\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
    6. Taylor expanded in lambda2 around 0 0.7

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \color{blue}{\left(\lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1\right)}\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification7.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_2 \leq -1800000:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \mathbf{elif}\;\lambda_2 \leq 0.00023:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \end{array} \]

Alternatives

Alternative 1
Error7.1
Cost71880
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{if}\;\lambda_1 \leq -9.2 \cdot 10^{-5}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\lambda_1 \leq 1.55 \cdot 10^{-19}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 2
Error7.1
Cost71880
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := -\cos \lambda_1\\ t_2 := \tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot t_1 + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \mathbf{if}\;\lambda_2 \leq -82000:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\lambda_2 \leq 0.0054:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_1 + \lambda_2 \cdot t_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 3
Error6.9
Cost71744
\[\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
Alternative 4
Error7.8
Cost65480
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \lambda_2 \cdot \left(-\cos \lambda_1\right)\\ t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_3 := \tan^{-1}_* \frac{\left(t_1 + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot t_2\right)}\\ \mathbf{if}\;\phi_1 \leq -2.8 \cdot 10^{-10}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;\phi_1 \leq 6.6 \cdot 10^{-31}:\\ \;\;\;\;\tan^{-1}_* \frac{\left(t_1 + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - t_2 \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_3\\ \end{array} \]
Alternative 5
Error8.0
Cost65480
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \lambda_2 \cdot \left(-\cos \lambda_1\right)\\ t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_3 := \tan^{-1}_* \frac{\left(t_1 + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot t_2\right)}\\ \mathbf{if}\;\phi_1 \leq -0.038:\\ \;\;\;\;t_3\\ \mathbf{elif}\;\phi_1 \leq 10^{-41}:\\ \;\;\;\;\tan^{-1}_* \frac{\left(t_1 + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - t_2 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_3\\ \end{array} \]
Alternative 6
Error8.3
Cost59080
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_2 := \tan^{-1}_* \frac{\left(\left(-\sin \lambda_2\right) + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot t_1\right)}\\ \mathbf{if}\;\phi_1 \leq -3.95 \cdot 10^{-10}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\phi_1 \leq 5100000:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - t_1 \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 7
Error13.1
Cost58952
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_2 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot t_1\right)}\\ \mathbf{if}\;\phi_2 \leq 2.6 \cdot 10^{-300}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\phi_2 \leq 1.75 \cdot 10^{-153}:\\ \;\;\;\;\tan^{-1}_* \frac{\left(\sin \lambda_2 \cdot \left(-\cos \lambda_1\right) + \sin \lambda_1\right) \cdot \cos \phi_2}{t_0 - t_1 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 8
Error17.8
Cost52560
\[\begin{array}{l} t_0 := \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\ t_2 := \cos \phi_1 \cdot \sin \phi_2\\ t_3 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(-\lambda_2\right)}{t_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \mathbf{if}\;\lambda_2 \leq -4.6 \cdot 10^{+91}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;\lambda_2 \leq -2 \cdot 10^{-206}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{t_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_2 \leq 2.05 \cdot 10^{-237}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t_2 - t_0}\\ \mathbf{elif}\;\lambda_2 \leq 2.4 \cdot 10^{-6}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{\sin \phi_2 - t_0}\\ \mathbf{else}:\\ \;\;\;\;t_3\\ \end{array} \]
Alternative 9
Error13.5
Cost52424
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\\ \mathbf{if}\;\lambda_2 \leq -2300000:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\lambda_2 \leq 0.205:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 10
Error14.3
Cost52360
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{if}\;\lambda_1 \leq -1.06 \cdot 10^{-7}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\lambda_1 \leq 2.25 \cdot 10^{+85}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \cos \phi_2 \cdot \left(\sin \phi_1 \cdot \cos \lambda_2\right)}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 11
Error13.5
Cost52360
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(-\lambda_2\right)}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \mathbf{if}\;\lambda_2 \leq -1800000:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\lambda_2 \leq 0.225:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 12
Error19.2
Cost52232
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{if}\;\lambda_1 \leq -2.4 \cdot 10^{+51}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\lambda_1 \leq 3.5 \cdot 10^{+86}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 13
Error13.2
Cost52224
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
Alternative 14
Error19.8
Cost46216
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\ t_2 := \tan^{-1}_* \frac{t_1}{t_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -10000000:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq 10^{-88}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{t_0 - \sin \phi_1 \cdot \cos \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 15
Error21.7
Cost45832
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \tan^{-1}_* \frac{t_0 \cdot \cos \phi_2}{\sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right)}\\ \mathbf{if}\;\phi_2 \leq -0.0135:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\phi_2 \leq 0.00018:\\ \;\;\;\;\tan^{-1}_* \frac{t_0}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 16
Error21.5
Cost45832
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_2 := \tan^{-1}_* \frac{t_1 \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \cos \lambda_1}\\ \mathbf{if}\;\phi_2 \leq -0.014:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\phi_2 \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{t_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 17
Error21.7
Cost45832
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\ t_1 := \cos \phi_1 \cdot \sin \phi_2\\ \mathbf{if}\;\lambda_1 \leq -1.06 \cdot 10^{-7}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 1.55 \cdot 10^{-19}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0}{t_1 - \sin \phi_1 \cdot \cos \lambda_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0}{t_1 - \sin \phi_1 \cdot \cos \lambda_1}\\ \end{array} \]
Alternative 18
Error19.2
Cost45832
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_2 := \tan^{-1}_* \frac{t_1 \cdot \cos \phi_2}{t_0 - \sin \phi_1 \cdot \cos \phi_2}\\ \mathbf{if}\;\phi_2 \leq -0.0135:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\phi_2 \leq 0.00016:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{t_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 19
Error22.7
Cost39560
\[\begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_2 := \cos \phi_1 \cdot \sin \phi_2\\ t_3 := \tan^{-1}_* \frac{t_1}{t_2 - t_0 \cdot \sin \phi_1}\\ \mathbf{if}\;\phi_1 \leq -7 \cdot 10^{-5}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;\phi_1 \leq 3.8 \cdot 10^{-13}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1 \cdot \cos \phi_2}{t_2 - t_0 \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_3\\ \end{array} \]
Alternative 20
Error28.6
Cost39432
\[\begin{array}{l} t_0 := \cos \phi_1 \cdot \sin \phi_2\\ t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t_0 - \cos \lambda_1 \cdot \phi_1}\\ \mathbf{if}\;\phi_2 \leq -1.3:\\ \;\;\;\;t_1\\ \mathbf{elif}\;\phi_2 \leq 0.75:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{t_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 21
Error22.8
Cost39432
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \cos \phi_1 \cdot \sin \phi_2\\ t_2 := \tan^{-1}_* \frac{t_0}{t_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}\\ \mathbf{if}\;\phi_1 \leq -1.32 \cdot 10^{-5}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;\phi_1 \leq 3.8 \cdot 10^{-13}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0 \cdot \cos \phi_2}{t_1 - \cos \lambda_1 \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 22
Error43.8
Cost39040
\[\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \phi_1} \]
Alternative 23
Error43.7
Cost32640
\[\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \phi_1} \]

Error

Reproduce?

herbie shell --seed 2023089 
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Bearing on a great circle"
  :precision binary64
  (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))