Bearing on a great circle

?

Percentage Accurate: 16.5% → 18.9%
Time: 31.5s
Precision: binary64
Cost: 73165

?

\[\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} lambda2 = |lambda2|\\ phi1 = |phi1|\\ phi2 = |phi2|\\ [lambda1, lambda2, phi1, phi2] = \mathsf{sort}([lambda1, lambda2, phi1, phi2])\\ \\ \begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := t_0 \cdot \phi_2\\ t_2 := \log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_0 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66} \lor \neg \left(\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-168}\right) \land \lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\left(\left(-\sin \left(\lambda_1 - \lambda_2\right)\right) - t_1\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}{t_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{t_1}{-2}}{t_2}\\ \end{array} \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))))))
NOTE: lambda2 should be positive before calling this function
NOTE: phi1 should be positive before calling this function
NOTE: phi2 should be positive before calling this function
NOTE: lambda1, lambda2, phi1, and phi2 should be sorted in increasing order before calling this function.
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (cos (- lambda1 lambda2)))
        (t_1 (* t_0 phi2))
        (t_2
         (-
          (log (+ (expm1 (* (cos phi1) (sin phi2))) 1.0))
          (* t_0 (* (sin phi1) (cos phi2))))))
   (if (or (<= (- lambda1 lambda2) -2e-66)
           (and (not (<= (- lambda1 lambda2) -4e-168))
                (<= (- lambda1 lambda2) -5e-225)))
     (atan2
      (/
       (-
        (- (- (sin (- lambda1 lambda2))) t_1)
        (sin (- lambda1 (+ lambda2 phi2))))
       -2.0)
      t_2)
     (atan2 (/ t_1 -2.0) 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)))));
}
lambda2 = abs(lambda2);
phi1 = abs(phi1);
phi2 = abs(phi2);
assert(lambda1 < lambda2 && lambda2 < phi1 && phi1 < phi2);
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = cos((lambda1 - lambda2));
	double t_1 = t_0 * phi2;
	double t_2 = log((expm1((cos(phi1) * sin(phi2))) + 1.0)) - (t_0 * (sin(phi1) * cos(phi2)));
	double tmp;
	if (((lambda1 - lambda2) <= -2e-66) || (!((lambda1 - lambda2) <= -4e-168) && ((lambda1 - lambda2) <= -5e-225))) {
		tmp = atan2((((-sin((lambda1 - lambda2)) - t_1) - sin((lambda1 - (lambda2 + phi2)))) / -2.0), t_2);
	} else {
		tmp = atan2((t_1 / -2.0), t_2);
	}
	return tmp;
}
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)))));
}
lambda2 = Math.abs(lambda2);
phi1 = Math.abs(phi1);
phi2 = Math.abs(phi2);
assert lambda1 < lambda2 && lambda2 < phi1 && phi1 < phi2;
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = Math.cos((lambda1 - lambda2));
	double t_1 = t_0 * phi2;
	double t_2 = Math.log((Math.expm1((Math.cos(phi1) * Math.sin(phi2))) + 1.0)) - (t_0 * (Math.sin(phi1) * Math.cos(phi2)));
	double tmp;
	if (((lambda1 - lambda2) <= -2e-66) || (!((lambda1 - lambda2) <= -4e-168) && ((lambda1 - lambda2) <= -5e-225))) {
		tmp = Math.atan2((((-Math.sin((lambda1 - lambda2)) - t_1) - Math.sin((lambda1 - (lambda2 + phi2)))) / -2.0), t_2);
	} else {
		tmp = Math.atan2((t_1 / -2.0), 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)))))
lambda2 = abs(lambda2)
phi1 = abs(phi1)
phi2 = abs(phi2)
[lambda1, lambda2, phi1, phi2] = sort([lambda1, lambda2, phi1, phi2])
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.cos((lambda1 - lambda2))
	t_1 = t_0 * phi2
	t_2 = math.log((math.expm1((math.cos(phi1) * math.sin(phi2))) + 1.0)) - (t_0 * (math.sin(phi1) * math.cos(phi2)))
	tmp = 0
	if ((lambda1 - lambda2) <= -2e-66) or (not ((lambda1 - lambda2) <= -4e-168) and ((lambda1 - lambda2) <= -5e-225)):
		tmp = math.atan2((((-math.sin((lambda1 - lambda2)) - t_1) - math.sin((lambda1 - (lambda2 + phi2)))) / -2.0), t_2)
	else:
		tmp = math.atan2((t_1 / -2.0), 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
lambda2 = abs(lambda2)
phi1 = abs(phi1)
phi2 = abs(phi2)
lambda1, lambda2, phi1, phi2 = sort([lambda1, lambda2, phi1, phi2])
function code(lambda1, lambda2, phi1, phi2)
	t_0 = cos(Float64(lambda1 - lambda2))
	t_1 = Float64(t_0 * phi2)
	t_2 = Float64(log(Float64(expm1(Float64(cos(phi1) * sin(phi2))) + 1.0)) - Float64(t_0 * Float64(sin(phi1) * cos(phi2))))
	tmp = 0.0
	if ((Float64(lambda1 - lambda2) <= -2e-66) || (!(Float64(lambda1 - lambda2) <= -4e-168) && (Float64(lambda1 - lambda2) <= -5e-225)))
		tmp = atan(Float64(Float64(Float64(Float64(-sin(Float64(lambda1 - lambda2))) - t_1) - sin(Float64(lambda1 - Float64(lambda2 + phi2)))) / -2.0), t_2);
	else
		tmp = atan(Float64(t_1 / -2.0), t_2);
	end
	return 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]
NOTE: lambda2 should be positive before calling this function
NOTE: phi1 should be positive before calling this function
NOTE: phi2 should be positive before calling this function
NOTE: lambda1, lambda2, phi1, and phi2 should be sorted in increasing order before calling this function.
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * phi2), $MachinePrecision]}, Block[{t$95$2 = N[(N[Log[N[(N[(Exp[N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] - N[(t$95$0 * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -2e-66], And[N[Not[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -4e-168]], $MachinePrecision], LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -5e-225]]], N[ArcTan[N[(N[(N[((-N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]) - t$95$1), $MachinePrecision] - N[Sin[N[(lambda1 - N[(lambda2 + phi2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / -2.0), $MachinePrecision] / t$95$2], $MachinePrecision], N[ArcTan[N[(t$95$1 / -2.0), $MachinePrecision] / t$95$2], $MachinePrecision]]]]]
\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}
lambda2 = |lambda2|\\
phi1 = |phi1|\\
phi2 = |phi2|\\
[lambda1, lambda2, phi1, phi2] = \mathsf{sort}([lambda1, lambda2, phi1, phi2])\\
\\
\begin{array}{l}
t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\
t_1 := t_0 \cdot \phi_2\\
t_2 := \log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_0 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\\
\mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66} \lor \neg \left(\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-168}\right) \land \lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{\left(\left(-\sin \left(\lambda_1 - \lambda_2\right)\right) - t_1\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}{t_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{t_1}{-2}}{t_2}\\


\end{array}
\end{array}

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Herbie found 10 alternatives:

AlternativeAccuracySpeedup

Accuracy vs Speed

The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Bogosity?

Bogosity

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation?

  1. Split input into 2 regimes
  2. if (-.f64 lambda1 lambda2) < -2e-66 or -4.0000000000000002e-168 < (-.f64 lambda1 lambda2) < -5.0000000000000001e-225

    1. Initial program 73.7%

      \[\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. Applied egg-rr73.1%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right)} - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]73.7%

      \[ \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)} \]

      log1p-expm1-u [=>]73.8%

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

      log1p-udef [=>]73.1%

      \[ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right)} - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    3. Applied egg-rr46.2%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{-\left(\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)\right)}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]73.1%

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

      sin-cos-mult [=>]46.2%

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

      frac-2neg [=>]46.2%

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

      metadata-eval [=>]46.2%

      \[ \tan^{-1}_* \frac{\frac{-\left(\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)\right)}{\color{blue}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Simplified46.1%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]46.2%

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

      neg-sub0 [=>]46.1%

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

      +-commutative [=>]46.1%

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

      associate--r+ [=>]46.1%

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

      neg-sub0 [<=]46.1%

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

      +-commutative [=>]46.1%

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

      associate--l- [=>]46.1%

      \[ \tan^{-1}_* \frac{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \sin \color{blue}{\left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}}{-2}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Taylor expanded in phi2 around 0 44.4%

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

    if -2e-66 < (-.f64 lambda1 lambda2) < -4.0000000000000002e-168 or -5.0000000000000001e-225 < (-.f64 lambda1 lambda2)

    1. Initial program 77.0%

      \[\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. Applied egg-rr76.2%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right)} - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]77.0%

      \[ \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)} \]

      log1p-expm1-u [=>]77.0%

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

      log1p-udef [=>]76.2%

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{-\left(\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)\right)}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]76.2%

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

      sin-cos-mult [=>]42.1%

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

      frac-2neg [=>]42.1%

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

      metadata-eval [=>]42.1%

      \[ \tan^{-1}_* \frac{\frac{-\left(\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)\right)}{\color{blue}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Simplified47.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]42.1%

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

      neg-sub0 [=>]47.8%

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

      +-commutative [=>]47.8%

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

      associate--r+ [=>]47.8%

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

      neg-sub0 [<=]47.8%

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

      +-commutative [=>]47.8%

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

      associate--l- [=>]47.8%

      \[ \tan^{-1}_* \frac{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \sin \color{blue}{\left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}}{-2}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Taylor expanded in phi2 around 0 39.6%

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

      \[\leadsto \tan^{-1}_* \frac{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \color{blue}{\left(\sin \left(\lambda_1 - \lambda_2\right) - \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}}{-2}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      Step-by-step derivation

      [Start]39.6%

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

      +-commutative [=>]39.6%

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

      mul-1-neg [=>]39.6%

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

      unsub-neg [=>]39.6%

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

      *-commutative [=>]39.6%

      \[ \tan^{-1}_* \frac{\frac{\left(-\sin \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right)\right) - \left(\sin \left(\lambda_1 - \lambda_2\right) - \color{blue}{\phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}{-2}}{\log \left(1 + \mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right)\right) - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Taylor expanded in phi2 around inf 12.6%

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66} \lor \neg \left(\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-168}\right) \land \lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\left(\left(-\sin \left(\lambda_1 - \lambda_2\right)\right) - \cos \left(\lambda_1 - \lambda_2\right) \cdot \phi_2\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}{\log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\cos \left(\lambda_1 - \lambda_2\right) \cdot \phi_2}{-2}}{\log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]

Alternatives

Alternative 1
Accuracy18.9%
Cost73165
\[\begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := t_0 \cdot \phi_2\\ t_2 := \log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_0 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66} \lor \neg \left(\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-168}\right) \land \lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\left(\left(-\sin \left(\lambda_1 - \lambda_2\right)\right) - t_1\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}{t_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{t_1}{-2}}{t_2}\\ \end{array} \]
Alternative 2
Accuracy19.7%
Cost105096
\[\begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := t_0 \cdot \phi_2\\ t_2 := \sin \left(-\lambda_2\right)\\ t_3 := \log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_0 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\\ t_4 := {\left(\frac{1}{{t_2}^{2}}\right)}^{0.05555555555555555}\\ t_5 := \sin \left(\lambda_1 - \lambda_2\right)\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\left(\left(-t_5\right) - t_1\right) - \sin \left(\lambda_1 - \left(\lambda_2 + \phi_2\right)\right)}{-2}}{t_3}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq -1 \cdot 10^{-191}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\left(t_1 - t_5\right) - \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)}{-2}}{t_3}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot {\left(\sqrt[3]{t_2} + 0.3333333333333333 \cdot \left(\left(\lambda_1 \cdot \cos \lambda_2\right) \cdot \left(t_4 \cdot t_4\right)\right)\right)}^{3}}{\sin \phi_2 - \sin \phi_1 \cdot \left(t_0 \cdot \cos \phi_2\right)}\\ \end{array} \]
Alternative 3
Accuracy18.3%
Cost72973
\[\begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_2 := \log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_0 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\\ t_3 := t_1 \cdot \left(\phi_2 \cdot \phi_2\right)\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1 + -0.5 \cdot t_3}{\sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \mathsf{fma}\left(\lambda_2, \sin \lambda_1, \left(-0.5 \cdot \left(\lambda_2 \cdot \lambda_2\right) + 1\right) \cdot \cos \lambda_1\right)\right)}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq -4 \cdot 10^{-168} \lor \neg \left(\lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}\right):\\ \;\;\;\;\tan^{-1}_* \frac{\frac{t_0 \cdot \phi_2}{-2}}{t_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\frac{\mathsf{fma}\left(0.5, t_3, t_1 \cdot -2\right)}{-2}}{t_2}\\ \end{array} \]
Alternative 4
Accuracy18.4%
Cost59780
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := t_0 + -0.5 \cdot \left(t_0 \cdot \left(\phi_2 \cdot \phi_2\right)\right)\\ t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{\sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \mathsf{fma}\left(\lambda_2, \sin \lambda_1, \left(-0.5 \cdot \left(\lambda_2 \cdot \lambda_2\right) + 1\right) \cdot \cos \lambda_1\right)\right)}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq -5 \cdot 10^{-192} \lor \neg \left(\lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}\right):\\ \;\;\;\;\tan^{-1}_* \frac{\frac{t_2 \cdot \phi_2}{-2}}{\log \left(\mathsf{expm1}\left(\cos \phi_1 \cdot \sin \phi_2\right) + 1\right) - t_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t_1}{\sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \end{array} \]
Alternative 5
Accuracy14.9%
Cost59661
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \cos \phi_1 \cdot \sin \phi_2\\ t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_3 := \sin \phi_1 \cdot \cos \phi_2\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -2 \cdot 10^{-66}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \left(-0.5 \cdot \left(\phi_2 \cdot \phi_2\right) + 1\right)}{t_1 - t_3 \cdot \cos \lambda_2}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq -5 \cdot 10^{-192} \lor \neg \left(\lambda_1 - \lambda_2 \leq -5 \cdot 10^{-225}\right):\\ \;\;\;\;\tan^{-1}_* \frac{\frac{t_2 \cdot \phi_2}{-2}}{\log \left(\mathsf{expm1}\left(t_1\right) + 1\right) - t_2 \cdot t_3}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0 + -0.5 \cdot \left(t_0 \cdot \left(\phi_2 \cdot \phi_2\right)\right)}{\sin \phi_2 - \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}\\ \end{array} \]
Alternative 6
Accuracy18.1%
Cost52100
\[\begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ \mathbf{if}\;\phi_2 \leq 5 \cdot 10^{+62}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0 \cdot \cos \phi_2}{\log \left(e^{\sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 - \lambda_1\right)}\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t_0 \cdot \left(-0.5 \cdot \left(\phi_2 \cdot \phi_2\right) + 1\right)}{\sin \phi_2}\\ \end{array} \]
Alternative 7
Accuracy17.4%
Cost19968
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \left(-0.5 \cdot \left(\phi_2 \cdot \phi_2\right) + 1\right)}{\sin \phi_2} \]
Alternative 8
Accuracy14.1%
Cost19456
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2} \]
Alternative 9
Accuracy9.3%
Cost19392
\[\tan^{-1}_* \frac{\sin \left(-\lambda_2\right)}{\sin \phi_2} \]
Alternative 10
Accuracy13.4%
Cost19328
\[\tan^{-1}_* \frac{\sin \lambda_1}{\sin \phi_2} \]

Reproduce?

herbie shell --seed 2023171 
(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))))))