Bearing on a great circle

Percentage Accurate: 79.6% → 99.7%
Time: 24.8s
Alternatives: 25
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ \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)} \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))))))
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)))));
}
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
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)))));
}
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)))))
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 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
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]
\begin{array}{l}

\\
\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)}
\end{array}

Sampling outcomes in binary64 precision:

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.

Accuracy vs Speed?

Herbie found 25 alternatives:

AlternativeAccuracySpeedup
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.

Initial Program: 79.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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)} \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))))))
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)))));
}
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
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)))));
}
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)))))
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 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
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]
\begin{array}{l}

\\
\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)}
\end{array}

Alternative 1: 99.7% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \cos \lambda_2 \cdot \cos \lambda_1\\ t_1 := \sin \lambda_1 \cdot \sin \lambda_2\\ \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{t\_1}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{{t\_0}^{2} - \left(t\_0 \cdot t\_1 - {t\_1}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (* (cos lambda2) (cos lambda1)))
        (t_1 (* (sin lambda1) (sin lambda2))))
   (atan2
    (*
     (cos phi2)
     (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
    (-
     (* (sin phi2) (cos phi1))
     (*
      (/
       (+ (pow t_1 3.0) (* (pow (cos lambda1) 3.0) (pow (cos lambda2) 3.0)))
       (- (pow t_0 2.0) (- (* t_0 t_1) (pow t_1 2.0))))
      (* (sin phi1) (cos phi2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = cos(lambda2) * cos(lambda1);
	double t_1 = sin(lambda1) * sin(lambda2);
	return atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), ((sin(phi2) * cos(phi1)) - (((pow(t_1, 3.0) + (pow(cos(lambda1), 3.0) * pow(cos(lambda2), 3.0))) / (pow(t_0, 2.0) - ((t_0 * t_1) - pow(t_1, 2.0)))) * (sin(phi1) * cos(phi2)))));
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(cos(lambda2) * cos(lambda1))
	t_1 = Float64(sin(lambda1) * sin(lambda2))
	return atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(Float64(Float64((t_1 ^ 3.0) + Float64((cos(lambda1) ^ 3.0) * (cos(lambda2) ^ 3.0))) / Float64((t_0 ^ 2.0) - Float64(Float64(t_0 * t_1) - (t_1 ^ 2.0)))) * Float64(sin(phi1) * cos(phi2)))))
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Cos[lambda2], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]}, N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[(N[(N[Power[t$95$1, 3.0], $MachinePrecision] + N[(N[Power[N[Cos[lambda1], $MachinePrecision], 3.0], $MachinePrecision] * N[Power[N[Cos[lambda2], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Power[t$95$0, 2.0], $MachinePrecision] - N[(N[(t$95$0 * t$95$1), $MachinePrecision] - N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \cos \lambda_2 \cdot \cos \lambda_1\\
t_1 := \sin \lambda_1 \cdot \sin \lambda_2\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{t\_1}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{{t\_0}^{2} - \left(t\_0 \cdot t\_1 - {t\_1}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}
\end{array}
\end{array}
Derivation
  1. Initial program 84.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)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
    3. sin-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
    4. sub-negN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
    5. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    7. distribute-rgt-neg-inN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
    8. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    9. lower-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    10. lower-neg.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    11. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    12. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    13. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    14. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
    15. lower-sin.f6492.3

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
  4. Applied rewrites92.3%

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
  5. Step-by-step derivation
    1. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
    2. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
    3. cos-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}} \]
    4. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_1} \cdot \sin \lambda_2\right)} \]
    5. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    7. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    8. flip3-+N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)}}} \]
    9. lower-/.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)}}} \]
  6. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}} \]
  7. Step-by-step derivation
    1. lift-pow.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    2. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\color{blue}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    3. unpow-prod-downN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    4. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    5. lower-pow.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3}} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    6. lower-pow.f6499.8

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot \color{blue}{{\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
  8. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
  9. Final simplification99.8%

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right) - {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \]
  10. Add Preprocessing

Alternative 2: 99.7% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \lambda_1 \cdot \sin \lambda_2\\ t_1 := -\cos \lambda_1\\ \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{t\_0}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{\mathsf{fma}\left(t\_0, \mathsf{fma}\left(\sin \lambda_2, \sin \lambda_1, \cos \lambda_2 \cdot t\_1\right), {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (* (sin lambda1) (sin lambda2))) (t_1 (- (cos lambda1))))
   (atan2
    (* (cos phi2) (fma (sin lambda2) t_1 (* (sin lambda1) (cos lambda2))))
    (-
     (* (sin phi2) (cos phi1))
     (*
      (/
       (+ (pow t_0 3.0) (* (pow (cos lambda1) 3.0) (pow (cos lambda2) 3.0)))
       (fma
        t_0
        (fma (sin lambda2) (sin lambda1) (* (cos lambda2) t_1))
        (pow (* (cos lambda2) (cos lambda1)) 2.0)))
      (* (sin phi1) (cos phi2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = sin(lambda1) * sin(lambda2);
	double t_1 = -cos(lambda1);
	return atan2((cos(phi2) * fma(sin(lambda2), t_1, (sin(lambda1) * cos(lambda2)))), ((sin(phi2) * cos(phi1)) - (((pow(t_0, 3.0) + (pow(cos(lambda1), 3.0) * pow(cos(lambda2), 3.0))) / fma(t_0, fma(sin(lambda2), sin(lambda1), (cos(lambda2) * t_1)), pow((cos(lambda2) * cos(lambda1)), 2.0))) * (sin(phi1) * cos(phi2)))));
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(sin(lambda1) * sin(lambda2))
	t_1 = Float64(-cos(lambda1))
	return atan(Float64(cos(phi2) * fma(sin(lambda2), t_1, Float64(sin(lambda1) * cos(lambda2)))), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(Float64(Float64((t_0 ^ 3.0) + Float64((cos(lambda1) ^ 3.0) * (cos(lambda2) ^ 3.0))) / fma(t_0, fma(sin(lambda2), sin(lambda1), Float64(cos(lambda2) * t_1)), (Float64(cos(lambda2) * cos(lambda1)) ^ 2.0))) * Float64(sin(phi1) * cos(phi2)))))
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = (-N[Cos[lambda1], $MachinePrecision])}, N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * t$95$1 + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[(N[(N[Power[t$95$0, 3.0], $MachinePrecision] + N[(N[Power[N[Cos[lambda1], $MachinePrecision], 3.0], $MachinePrecision] * N[Power[N[Cos[lambda2], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 * N[(N[Sin[lambda2], $MachinePrecision] * N[Sin[lambda1], $MachinePrecision] + N[(N[Cos[lambda2], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision] + N[Power[N[(N[Cos[lambda2], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \lambda_1 \cdot \sin \lambda_2\\
t_1 := -\cos \lambda_1\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{t\_0}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{\mathsf{fma}\left(t\_0, \mathsf{fma}\left(\sin \lambda_2, \sin \lambda_1, \cos \lambda_2 \cdot t\_1\right), {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}
\end{array}
\end{array}
Derivation
  1. Initial program 84.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)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
    3. sin-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
    4. sub-negN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
    5. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    7. distribute-rgt-neg-inN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
    8. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    9. lower-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    10. lower-neg.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    11. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    12. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    13. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    14. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
    15. lower-sin.f6492.3

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
  4. Applied rewrites92.3%

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
  5. Step-by-step derivation
    1. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
    2. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
    3. cos-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}} \]
    4. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_1} \cdot \sin \lambda_2\right)} \]
    5. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    7. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    8. flip3-+N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)}}} \]
    9. lower-/.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} + {\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)}}} \]
  6. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}} \]
  7. Step-by-step derivation
    1. lift-pow.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    2. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\color{blue}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    3. unpow-prod-downN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    4. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    5. lower-pow.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3}} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
    6. lower-pow.f6499.8

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot \color{blue}{{\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
  8. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{\color{blue}{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3}} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}} \]
  9. Step-by-step derivation
    1. lift-+.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{{\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2} + \left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}} \]
    2. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}}} \]
    3. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)} + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    4. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} - \color{blue}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}\right) + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    5. cancel-sign-sub-invN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\left({\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2} + \left(\mathsf{neg}\left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)} + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    6. lift-pow.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\left(\color{blue}{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{2}} + \left(\mathsf{neg}\left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    7. unpow2N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\left(\color{blue}{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)} + \left(\mathsf{neg}\left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    8. distribute-rgt-outN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)\right)} + {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}}} \]
    9. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\mathsf{fma}\left(\sin \lambda_1 \cdot \sin \lambda_2, \sin \lambda_1 \cdot \sin \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right), {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}\right)}}} \]
  10. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \frac{{\cos \lambda_2}^{3} \cdot {\cos \lambda_1}^{3} + {\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}{\color{blue}{\mathsf{fma}\left(\sin \lambda_2 \cdot \sin \lambda_1, \mathsf{fma}\left(\sin \lambda_2, \sin \lambda_1, \left(-\cos \lambda_1\right) \cdot \cos \lambda_2\right), {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{2}\right)}}} \]
  11. Final simplification99.8%

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \frac{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3} + {\cos \lambda_1}^{3} \cdot {\cos \lambda_2}^{3}}{\mathsf{fma}\left(\sin \lambda_1 \cdot \sin \lambda_2, \mathsf{fma}\left(\sin \lambda_2, \sin \lambda_1, \cos \lambda_2 \cdot \left(-\cos \lambda_1\right)\right), {\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \]
  12. Add Preprocessing

Alternative 3: 99.7% accurate, 0.6× speedup?

\[\begin{array}{l} \\ \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (*
   (cos phi2)
   (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
  (-
   (* (sin phi2) (cos phi1))
   (*
    (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2)))
    (* (sin phi1) (cos phi2))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), ((sin(phi2) * cos(phi1)) - (fma(cos(lambda2), cos(lambda1), (sin(lambda1) * sin(lambda2))) * (sin(phi1) * cos(phi2)))));
}
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(fma(cos(lambda2), cos(lambda1), Float64(sin(lambda1) * sin(lambda2))) * Float64(sin(phi1) * cos(phi2)))))
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[(N[Cos[lambda2], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision] + N[(N[Sin[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}
\end{array}
Derivation
  1. Initial program 84.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)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
    3. sin-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
    4. sub-negN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
    5. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    7. distribute-rgt-neg-inN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
    8. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    9. lower-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    10. lower-neg.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    11. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    12. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    13. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    14. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
    15. lower-sin.f6492.3

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
  4. Applied rewrites92.3%

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
  5. Step-by-step derivation
    1. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
    2. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
    3. cos-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}} \]
    4. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_1} \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)} \]
    5. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \color{blue}{\cos \lambda_2} + \sin \lambda_1 \cdot \sin \lambda_2\right)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_2 \cdot \cos \lambda_1} + \sin \lambda_1 \cdot \sin \lambda_2\right)} \]
    7. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \color{blue}{\sin \lambda_1} \cdot \sin \lambda_2\right)} \]
    8. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right)} \]
    9. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    10. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    11. lower-fma.f6499.8

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_2 \cdot \sin \lambda_1\right)}} \]
    12. lift-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \color{blue}{\sin \lambda_2 \cdot \sin \lambda_1}\right)} \]
    13. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \color{blue}{\sin \lambda_1 \cdot \sin \lambda_2}\right)} \]
    14. lower-*.f6499.8

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \color{blue}{\sin \lambda_1 \cdot \sin \lambda_2}\right)} \]
  6. Applied rewrites99.8%

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right)}} \]
  7. Final simplification99.8%

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \]
  8. Add Preprocessing

Alternative 4: 89.0% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_2 \cdot \cos \phi_1\\ t_1 := \sin \phi_1 \cdot \cos \phi_2\\ t_2 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_0 - \cos \lambda_1 \cdot t\_1}\\ \mathbf{if}\;\lambda_1 \leq -0.00037:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \mathsf{fma}\left(\sin \lambda_2, \lambda_1, \cos \lambda_2\right) \cdot t\_1}\\ \mathbf{else}:\\ \;\;\;\;t\_2\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (* (sin phi2) (cos phi1)))
        (t_1 (* (sin phi1) (cos phi2)))
        (t_2
         (atan2
          (*
           (cos phi2)
           (fma
            (sin lambda2)
            (- (cos lambda1))
            (* (sin lambda1) (cos lambda2))))
          (- t_0 (* (cos lambda1) t_1)))))
   (if (<= lambda1 -0.00037)
     t_2
     (if (<= lambda1 2.9e-18)
       (atan2
        (* (fma (cos lambda2) lambda1 (- (sin lambda2))) (cos phi2))
        (- t_0 (* (fma (sin lambda2) lambda1 (cos lambda2)) t_1)))
       t_2))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = sin(phi2) * cos(phi1);
	double t_1 = sin(phi1) * cos(phi2);
	double t_2 = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), (t_0 - (cos(lambda1) * t_1)));
	double tmp;
	if (lambda1 <= -0.00037) {
		tmp = t_2;
	} else if (lambda1 <= 2.9e-18) {
		tmp = atan2((fma(cos(lambda2), lambda1, -sin(lambda2)) * cos(phi2)), (t_0 - (fma(sin(lambda2), lambda1, cos(lambda2)) * t_1)));
	} else {
		tmp = t_2;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(sin(phi2) * cos(phi1))
	t_1 = Float64(sin(phi1) * cos(phi2))
	t_2 = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), Float64(t_0 - Float64(cos(lambda1) * t_1)))
	tmp = 0.0
	if (lambda1 <= -0.00037)
		tmp = t_2;
	elseif (lambda1 <= 2.9e-18)
		tmp = atan(Float64(fma(cos(lambda2), lambda1, Float64(-sin(lambda2))) * cos(phi2)), Float64(t_0 - Float64(fma(sin(lambda2), lambda1, cos(lambda2)) * t_1)));
	else
		tmp = t_2;
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[lambda1], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -0.00037], t$95$2, If[LessEqual[lambda1, 2.9e-18], N[ArcTan[N[(N[(N[Cos[lambda2], $MachinePrecision] * lambda1 + (-N[Sin[lambda2], $MachinePrecision])), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[(N[Sin[lambda2], $MachinePrecision] * lambda1 + N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$2]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \phi_2 \cdot \cos \phi_1\\
t_1 := \sin \phi_1 \cdot \cos \phi_2\\
t_2 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_0 - \cos \lambda_1 \cdot t\_1}\\
\mathbf{if}\;\lambda_1 \leq -0.00037:\\
\;\;\;\;t\_2\\

\mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\
\;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \mathsf{fma}\left(\sin \lambda_2, \lambda_1, \cos \lambda_2\right) \cdot t\_1}\\

\mathbf{else}:\\
\;\;\;\;t\_2\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -3.6999999999999999e-4 or 2.9e-18 < lambda1

    1. Initial program 66.4%

      \[\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. Add Preprocessing
    3. Step-by-step derivation
      1. lift-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
      3. sin-diffN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
      4. sub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
      5. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      6. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      7. distribute-rgt-neg-inN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
      8. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      9. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      10. lower-neg.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      11. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      12. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      13. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      14. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
      15. lower-sin.f6483.9

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
    4. Applied rewrites83.9%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
    5. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \lambda_1}} \]
    6. Step-by-step derivation
      1. lower-cos.f6483.8

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \lambda_1}} \]
    7. Applied rewrites83.8%

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

    if -3.6999999999999999e-4 < lambda1 < 2.9e-18

    1. Initial program 99.5%

      \[\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. Add Preprocessing
    3. Taylor expanded in lambda1 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right)\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)} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\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. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \lambda_1} + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\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)} \]
      3. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right), \lambda_1, \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\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)} \]
      4. cos-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\cos \lambda_2}, \lambda_1, \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\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)} \]
      5. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\cos \lambda_2}, \lambda_1, \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\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)} \]
      6. sin-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, \color{blue}{\mathsf{neg}\left(\sin \lambda_2\right)}\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)} \]
      7. lower-neg.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, \color{blue}{-\sin \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)} \]
      8. lower-sin.f6499.5

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\color{blue}{\sin \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)} \]
    5. Applied rewrites99.5%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \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)} \]
    6. Taylor expanded in lambda1 around 0

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + -1 \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right)}} \]
    7. Step-by-step derivation
      1. cos-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_2} + -1 \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right)} \]
      2. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(-1 \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right) + \cos \lambda_2\right)}} \]
      3. mul-1-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\left(\mathsf{neg}\left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right)} + \cos \lambda_2\right)} \]
      4. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\mathsf{neg}\left(\color{blue}{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \lambda_1}\right)\right) + \cos \lambda_2\right)} \]
      5. distribute-lft-neg-inN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\left(\mathsf{neg}\left(\sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) \cdot \lambda_1} + \cos \lambda_2\right)} \]
      6. sin-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\mathsf{neg}\left(\color{blue}{\left(\mathsf{neg}\left(\sin \lambda_2\right)\right)}\right)\right) \cdot \lambda_1 + \cos \lambda_2\right)} \]
      7. remove-double-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\sin \lambda_2} \cdot \lambda_1 + \cos \lambda_2\right)} \]
      8. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\mathsf{fma}\left(\sin \lambda_2, \lambda_1, \cos \lambda_2\right)}} \]
      9. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \lambda_1, \cos \lambda_2\right)} \]
      10. lower-cos.f6499.8

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\sin \lambda_2, \lambda_1, \color{blue}{\cos \lambda_2}\right)} \]
    8. Applied rewrites99.8%

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -0.00037:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\cos \lambda_2, \lambda_1, -\sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \mathsf{fma}\left(\sin \lambda_2, \lambda_1, \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 89.2% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (*
   (cos phi2)
   (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
  (-
   (* (sin phi2) (cos phi1))
   (* (cos (- lambda1 lambda2)) (* (sin phi1) (cos phi2))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), ((sin(phi2) * cos(phi1)) - (cos((lambda1 - lambda2)) * (sin(phi1) * cos(phi2)))));
}
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(cos(Float64(lambda1 - lambda2)) * Float64(sin(phi1) * cos(phi2)))))
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}
\end{array}
Derivation
  1. Initial program 84.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)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
    3. sin-diffN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
    4. sub-negN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
    5. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    6. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
    7. distribute-rgt-neg-inN/A

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
    8. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    9. lower-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
    10. lower-neg.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    11. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
    12. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    13. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
    14. lower-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
    15. lower-sin.f6492.3

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
  4. Applied rewrites92.3%

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
  5. Final simplification92.3%

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)} \]
  6. Add Preprocessing

Alternative 6: 87.8% accurate, 0.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_2 \cdot \cos \phi_1\\ t_1 := -\cos \lambda_1\\ t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_3 := \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1\right) \cdot \cos \phi_2}{t\_0 - t\_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{if}\;\phi_1 \leq -1.75 \cdot 10^{-12}:\\ \;\;\;\;t\_3\\ \mathbf{elif}\;\phi_1 \leq 5 \cdot 10^{-38}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_0 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot t\_2\right) \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t\_3\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0 (* (sin phi2) (cos phi1)))
        (t_1 (- (cos lambda1)))
        (t_2 (cos (- lambda1 lambda2)))
        (t_3
         (atan2
          (* (fma (sin lambda2) t_1 (sin lambda1)) (cos phi2))
          (- t_0 (* t_2 (* (sin phi1) (cos phi2)))))))
   (if (<= phi1 -1.75e-12)
     t_3
     (if (<= phi1 5e-38)
       (atan2
        (* (cos phi2) (fma (sin lambda2) t_1 (* (sin lambda1) (cos lambda2))))
        (- t_0 (* (* (fma (* phi1 phi1) -0.16666666666666666 1.0) t_2) phi1)))
       t_3))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = sin(phi2) * cos(phi1);
	double t_1 = -cos(lambda1);
	double t_2 = cos((lambda1 - lambda2));
	double t_3 = atan2((fma(sin(lambda2), t_1, sin(lambda1)) * cos(phi2)), (t_0 - (t_2 * (sin(phi1) * cos(phi2)))));
	double tmp;
	if (phi1 <= -1.75e-12) {
		tmp = t_3;
	} else if (phi1 <= 5e-38) {
		tmp = atan2((cos(phi2) * fma(sin(lambda2), t_1, (sin(lambda1) * cos(lambda2)))), (t_0 - ((fma((phi1 * phi1), -0.16666666666666666, 1.0) * t_2) * phi1)));
	} else {
		tmp = t_3;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(sin(phi2) * cos(phi1))
	t_1 = Float64(-cos(lambda1))
	t_2 = cos(Float64(lambda1 - lambda2))
	t_3 = atan(Float64(fma(sin(lambda2), t_1, sin(lambda1)) * cos(phi2)), Float64(t_0 - Float64(t_2 * Float64(sin(phi1) * cos(phi2)))))
	tmp = 0.0
	if (phi1 <= -1.75e-12)
		tmp = t_3;
	elseif (phi1 <= 5e-38)
		tmp = atan(Float64(cos(phi2) * fma(sin(lambda2), t_1, Float64(sin(lambda1) * cos(lambda2)))), Float64(t_0 - Float64(Float64(fma(Float64(phi1 * phi1), -0.16666666666666666, 1.0) * t_2) * phi1)));
	else
		tmp = t_3;
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = (-N[Cos[lambda1], $MachinePrecision])}, Block[{t$95$2 = N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[ArcTan[N[(N[(N[Sin[lambda2], $MachinePrecision] * t$95$1 + N[Sin[lambda1], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(t$95$2 * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -1.75e-12], t$95$3, If[LessEqual[phi1, 5e-38], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * t$95$1 + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[(N[(N[(phi1 * phi1), $MachinePrecision] * -0.16666666666666666 + 1.0), $MachinePrecision] * t$95$2), $MachinePrecision] * phi1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$3]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \phi_2 \cdot \cos \phi_1\\
t_1 := -\cos \lambda_1\\
t_2 := \cos \left(\lambda_1 - \lambda_2\right)\\
t_3 := \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1\right) \cdot \cos \phi_2}{t\_0 - t\_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\
\mathbf{if}\;\phi_1 \leq -1.75 \cdot 10^{-12}:\\
\;\;\;\;t\_3\\

\mathbf{elif}\;\phi_1 \leq 5 \cdot 10^{-38}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, t\_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_0 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot t\_2\right) \cdot \phi_1}\\

\mathbf{else}:\\
\;\;\;\;t\_3\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi1 < -1.75e-12 or 5.00000000000000033e-38 < phi1

    1. Initial program 84.5%

      \[\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. Add Preprocessing
    3. Step-by-step derivation
      1. lift-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
      3. sin-diffN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
      4. sub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
      5. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      6. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      7. distribute-rgt-neg-inN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
      8. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      9. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      10. lower-neg.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      11. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      12. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      13. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      14. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
      15. lower-sin.f6486.5

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
    4. Applied rewrites86.5%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
    5. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\sin \lambda_1}\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)} \]
    6. Step-by-step derivation
      1. lower-sin.f6485.5

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\sin \lambda_1}\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)} \]
    7. Applied rewrites85.5%

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\sin \lambda_1}\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)} \]

    if -1.75e-12 < phi1 < 5.00000000000000033e-38

    1. Initial program 83.9%

      \[\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. Add Preprocessing
    3. Step-by-step derivation
      1. lift-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
      3. sin-diffN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
      4. sub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
      5. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      6. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
      7. distribute-rgt-neg-inN/A

        \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
      8. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      9. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
      10. lower-neg.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      11. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
      12. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      13. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
      14. lower-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
      15. lower-sin.f6499.9

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
    4. Applied rewrites99.9%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
    5. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\phi_1 \cdot \left(\frac{-1}{6} \cdot \left({\phi_1}^{2} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
    6. Step-by-step derivation
      1. *-commutativeN/A

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

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\frac{-1}{6} \cdot \color{blue}{\left(\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot {\phi_1}^{2}\right)} + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1} \]
      3. associate-*r*N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\color{blue}{\left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}} + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1} \]
      4. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}\right)} \cdot \phi_1} \]
      5. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}\right) \cdot \phi_1}} \]
    7. Applied rewrites99.9%

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \cos \phi_2\right)\right) \cdot \phi_1}} \]
    8. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \phi_1 \cdot \color{blue}{\left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \left(1 + \frac{-1}{6} \cdot {\phi_1}^{2}\right)\right)}} \]
    9. Step-by-step derivation
      1. Applied rewrites99.9%

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right)\right) \cdot \color{blue}{\phi_1}} \]
    10. Recombined 2 regimes into one program.
    11. Final simplification91.7%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -1.75 \cdot 10^{-12}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\phi_1 \leq 5 \cdot 10^{-38}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
    12. Add Preprocessing

    Alternative 7: 87.2% accurate, 0.9× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\ t_1 := \sin \phi_2 \cdot \cos \phi_1\\ t_2 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\ \mathbf{if}\;\phi_1 \leq -6 \cdot 10^{-11}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot t\_0, \cos \phi_2, t\_1\right)}\\ \mathbf{elif}\;\phi_1 \leq 9.6 \cdot 10^{-37}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_1 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot t\_0\right) \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_2}{t\_1 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\ \end{array} \end{array} \]
    (FPCore (lambda1 lambda2 phi1 phi2)
     :precision binary64
     (let* ((t_0 (cos (- lambda1 lambda2)))
            (t_1 (* (sin phi2) (cos phi1)))
            (t_2 (* (sin (- lambda1 lambda2)) (cos phi2))))
       (if (<= phi1 -6e-11)
         (atan2 t_2 (fma (* (- (sin phi1)) t_0) (cos phi2) t_1))
         (if (<= phi1 9.6e-37)
           (atan2
            (*
             (cos phi2)
             (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
            (- t_1 (* (* (fma (* phi1 phi1) -0.16666666666666666 1.0) t_0) phi1)))
           (atan2
            t_2
            (- t_1 (* (* (cos (- lambda2 lambda1)) (sin phi1)) (cos phi2))))))))
    double code(double lambda1, double lambda2, double phi1, double phi2) {
    	double t_0 = cos((lambda1 - lambda2));
    	double t_1 = sin(phi2) * cos(phi1);
    	double t_2 = sin((lambda1 - lambda2)) * cos(phi2);
    	double tmp;
    	if (phi1 <= -6e-11) {
    		tmp = atan2(t_2, fma((-sin(phi1) * t_0), cos(phi2), t_1));
    	} else if (phi1 <= 9.6e-37) {
    		tmp = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), (t_1 - ((fma((phi1 * phi1), -0.16666666666666666, 1.0) * t_0) * phi1)));
    	} else {
    		tmp = atan2(t_2, (t_1 - ((cos((lambda2 - lambda1)) * sin(phi1)) * cos(phi2))));
    	}
    	return tmp;
    }
    
    function code(lambda1, lambda2, phi1, phi2)
    	t_0 = cos(Float64(lambda1 - lambda2))
    	t_1 = Float64(sin(phi2) * cos(phi1))
    	t_2 = Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2))
    	tmp = 0.0
    	if (phi1 <= -6e-11)
    		tmp = atan(t_2, fma(Float64(Float64(-sin(phi1)) * t_0), cos(phi2), t_1));
    	elseif (phi1 <= 9.6e-37)
    		tmp = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), Float64(t_1 - Float64(Float64(fma(Float64(phi1 * phi1), -0.16666666666666666, 1.0) * t_0) * phi1)));
    	else
    		tmp = atan(t_2, Float64(t_1 - Float64(Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1)) * cos(phi2))));
    	end
    	return tmp
    end
    
    code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[phi1, -6e-11], N[ArcTan[t$95$2 / N[(N[((-N[Sin[phi1], $MachinePrecision]) * t$95$0), $MachinePrecision] * N[Cos[phi2], $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision], If[LessEqual[phi1, 9.6e-37], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[(N[(N[(phi1 * phi1), $MachinePrecision] * -0.16666666666666666 + 1.0), $MachinePrecision] * t$95$0), $MachinePrecision] * phi1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[t$95$2 / N[(t$95$1 - N[(N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \cos \left(\lambda_1 - \lambda_2\right)\\
    t_1 := \sin \phi_2 \cdot \cos \phi_1\\
    t_2 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\
    \mathbf{if}\;\phi_1 \leq -6 \cdot 10^{-11}:\\
    \;\;\;\;\tan^{-1}_* \frac{t\_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot t\_0, \cos \phi_2, t\_1\right)}\\
    
    \mathbf{elif}\;\phi_1 \leq 9.6 \cdot 10^{-37}:\\
    \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{t\_1 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot t\_0\right) \cdot \phi_1}\\
    
    \mathbf{else}:\\
    \;\;\;\;\tan^{-1}_* \frac{t\_2}{t\_1 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if phi1 < -6e-11

      1. Initial program 76.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. Add Preprocessing
      3. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. *-commutativeN/A

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

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

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
        5. sub-negN/A

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

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2}} \]
        7. lift-*.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
        8. lift-*.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
        9. associate-*l*N/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
        10. distribute-lft-neg-inN/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
        11. *-commutativeN/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \color{blue}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
        12. associate-*r*N/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \phi_2} + \cos \phi_1 \cdot \sin \phi_2} \]
        13. lower-fma.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \cos \phi_1 \cdot \sin \phi_2\right)}} \]
      4. Applied rewrites76.6%

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

      if -6e-11 < phi1 < 9.59999999999999963e-37

      1. Initial program 83.9%

        \[\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. Add Preprocessing
      3. Step-by-step derivation
        1. lift-sin.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. lift--.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\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)} \]
        3. sin-diffN/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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)} \]
        4. sub-negN/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right)\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)} \]
        5. +-commutativeN/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\left(\mathsf{neg}\left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
        6. *-commutativeN/A

          \[\leadsto \tan^{-1}_* \frac{\left(\left(\mathsf{neg}\left(\color{blue}{\sin \lambda_2 \cdot \cos \lambda_1}\right)\right) + \sin \lambda_1 \cdot \cos \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)} \]
        7. distribute-rgt-neg-inN/A

          \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_2 \cdot \left(\mathsf{neg}\left(\cos \lambda_1\right)\right)} + \sin \lambda_1 \cdot \cos \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)} \]
        8. lower-fma.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
        9. lower-sin.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\color{blue}{\sin \lambda_2}, \mathsf{neg}\left(\cos \lambda_1\right), \sin \lambda_1 \cdot \cos \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)} \]
        10. lower-neg.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, \color{blue}{-\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
        11. lower-cos.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\color{blue}{\cos \lambda_1}, \sin \lambda_1 \cdot \cos \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)} \]
        12. *-commutativeN/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
        13. lower-*.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2 \cdot \sin \lambda_1}\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)} \]
        14. lower-cos.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \color{blue}{\cos \lambda_2} \cdot \sin \lambda_1\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)} \]
        15. lower-sin.f6499.9

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \color{blue}{\sin \lambda_1}\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)} \]
      4. Applied rewrites99.9%

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\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)} \]
      5. Taylor expanded in phi1 around 0

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\phi_1 \cdot \left(\frac{-1}{6} \cdot \left({\phi_1}^{2} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
      6. Step-by-step derivation
        1. *-commutativeN/A

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

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\frac{-1}{6} \cdot \color{blue}{\left(\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot {\phi_1}^{2}\right)} + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1} \]
        3. associate-*r*N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\color{blue}{\left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}} + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1} \]
        4. +-commutativeN/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}\right)} \cdot \phi_1} \]
        5. lower-*.f64N/A

          \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \left(\frac{-1}{6} \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) \cdot {\phi_1}^{2}\right) \cdot \phi_1}} \]
      7. Applied rewrites99.9%

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \cos \phi_2\right)\right) \cdot \phi_1}} \]
      8. Taylor expanded in phi2 around 0

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \phi_1 \cdot \color{blue}{\left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \left(1 + \frac{-1}{6} \cdot {\phi_1}^{2}\right)\right)}} \]
      9. Step-by-step derivation
        1. Applied rewrites99.9%

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

        if 9.59999999999999963e-37 < phi1

        1. Initial program 92.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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \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 \color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right)}} \]
        4. Step-by-step derivation
          1. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
          2. lower-cos.f6469.0

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        5. Applied rewrites69.0%

          \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        6. Taylor expanded in lambda1 around inf

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \phi_2 \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1\right)}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \cdot \cos \phi_2} \]
          5. lower-sin.f64N/A

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

            \[\leadsto \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 \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}\right) \cdot \cos \phi_2} \]
          7. remove-double-negN/A

            \[\leadsto \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 \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) \cdot \cos \phi_2} \]
          8. mul-1-negN/A

            \[\leadsto \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 \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) \cdot \cos \phi_2} \]
          9. distribute-neg-inN/A

            \[\leadsto \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 \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}\right) \cdot \cos \phi_2} \]
          10. +-commutativeN/A

            \[\leadsto \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 \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)\right) \cdot \cos \phi_2} \]
          11. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          12. lower-cos.f64N/A

            \[\leadsto \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 \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          13. mul-1-negN/A

            \[\leadsto \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 \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)\right) \cdot \cos \phi_2} \]
          14. unsub-negN/A

            \[\leadsto \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 \color{blue}{\left(\lambda_2 - \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          15. lower--.f64N/A

            \[\leadsto \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 \color{blue}{\left(\lambda_2 - \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          16. lower-cos.f6492.7

            \[\leadsto \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 \left(\lambda_2 - \lambda_1\right)\right) \cdot \color{blue}{\cos \phi_2}} \]
        8. Applied rewrites92.7%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -6 \cdot 10^{-11}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\ \mathbf{elif}\;\phi_1 \leq 9.6 \cdot 10^{-37}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \left(\mathsf{fma}\left(\phi_1 \cdot \phi_1, -0.16666666666666666, 1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\ \end{array} \]
      12. Add Preprocessing

      Alternative 8: 70.9% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_1 \cdot \cos \phi_2\\ t_1 := \sin \phi_2 \cdot \cos \phi_1\\ t_2 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot t\_0}\\ \mathbf{if}\;\lambda_1 \leq -4 \cdot 10^{+39}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 8.5 \cdot 10^{-36}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{t\_1 - \cos \lambda_2 \cdot t\_0}\\ \mathbf{else}:\\ \;\;\;\;t\_2\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (* (sin phi1) (cos phi2)))
              (t_1 (* (sin phi2) (cos phi1)))
              (t_2
               (atan2
                (* (sin lambda1) (cos phi2))
                (- t_1 (* (cos (- lambda1 lambda2)) t_0)))))
         (if (<= lambda1 -4e+39)
           t_2
           (if (<= lambda1 -7.6e-193)
             (atan2
              (* (sin (- lambda1 lambda2)) (cos phi2))
              (- t_1 (* (cos (- lambda2 lambda1)) (sin phi1))))
             (if (<= lambda1 8.5e-36)
               (atan2 (* (sin (- lambda2)) (cos phi2)) (- t_1 (* (cos lambda2) t_0)))
               t_2)))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin(phi1) * cos(phi2);
      	double t_1 = sin(phi2) * cos(phi1);
      	double t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos((lambda1 - lambda2)) * t_0)));
      	double tmp;
      	if (lambda1 <= -4e+39) {
      		tmp = t_2;
      	} else if (lambda1 <= -7.6e-193) {
      		tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_1 - (cos((lambda2 - lambda1)) * sin(phi1))));
      	} else if (lambda1 <= 8.5e-36) {
      		tmp = atan2((sin(-lambda2) * cos(phi2)), (t_1 - (cos(lambda2) * t_0)));
      	} 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
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: t_2
          real(8) :: tmp
          t_0 = sin(phi1) * cos(phi2)
          t_1 = sin(phi2) * cos(phi1)
          t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos((lambda1 - lambda2)) * t_0)))
          if (lambda1 <= (-4d+39)) then
              tmp = t_2
          else if (lambda1 <= (-7.6d-193)) then
              tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_1 - (cos((lambda2 - lambda1)) * sin(phi1))))
          else if (lambda1 <= 8.5d-36) then
              tmp = atan2((sin(-lambda2) * cos(phi2)), (t_1 - (cos(lambda2) * t_0)))
          else
              tmp = t_2
          end if
          code = tmp
      end function
      
      public static double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = Math.sin(phi1) * Math.cos(phi2);
      	double t_1 = Math.sin(phi2) * Math.cos(phi1);
      	double t_2 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_1 - (Math.cos((lambda1 - lambda2)) * t_0)));
      	double tmp;
      	if (lambda1 <= -4e+39) {
      		tmp = t_2;
      	} else if (lambda1 <= -7.6e-193) {
      		tmp = Math.atan2((Math.sin((lambda1 - lambda2)) * Math.cos(phi2)), (t_1 - (Math.cos((lambda2 - lambda1)) * Math.sin(phi1))));
      	} else if (lambda1 <= 8.5e-36) {
      		tmp = Math.atan2((Math.sin(-lambda2) * Math.cos(phi2)), (t_1 - (Math.cos(lambda2) * t_0)));
      	} else {
      		tmp = t_2;
      	}
      	return tmp;
      }
      
      def code(lambda1, lambda2, phi1, phi2):
      	t_0 = math.sin(phi1) * math.cos(phi2)
      	t_1 = math.sin(phi2) * math.cos(phi1)
      	t_2 = math.atan2((math.sin(lambda1) * math.cos(phi2)), (t_1 - (math.cos((lambda1 - lambda2)) * t_0)))
      	tmp = 0
      	if lambda1 <= -4e+39:
      		tmp = t_2
      	elif lambda1 <= -7.6e-193:
      		tmp = math.atan2((math.sin((lambda1 - lambda2)) * math.cos(phi2)), (t_1 - (math.cos((lambda2 - lambda1)) * math.sin(phi1))))
      	elif lambda1 <= 8.5e-36:
      		tmp = math.atan2((math.sin(-lambda2) * math.cos(phi2)), (t_1 - (math.cos(lambda2) * t_0)))
      	else:
      		tmp = t_2
      	return tmp
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = Float64(sin(phi1) * cos(phi2))
      	t_1 = Float64(sin(phi2) * cos(phi1))
      	t_2 = atan(Float64(sin(lambda1) * cos(phi2)), Float64(t_1 - Float64(cos(Float64(lambda1 - lambda2)) * t_0)))
      	tmp = 0.0
      	if (lambda1 <= -4e+39)
      		tmp = t_2;
      	elseif (lambda1 <= -7.6e-193)
      		tmp = atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), Float64(t_1 - Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1))));
      	elseif (lambda1 <= 8.5e-36)
      		tmp = atan(Float64(sin(Float64(-lambda2)) * cos(phi2)), Float64(t_1 - Float64(cos(lambda2) * t_0)));
      	else
      		tmp = t_2;
      	end
      	return tmp
      end
      
      function tmp_2 = code(lambda1, lambda2, phi1, phi2)
      	t_0 = sin(phi1) * cos(phi2);
      	t_1 = sin(phi2) * cos(phi1);
      	t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos((lambda1 - lambda2)) * t_0)));
      	tmp = 0.0;
      	if (lambda1 <= -4e+39)
      		tmp = t_2;
      	elseif (lambda1 <= -7.6e-193)
      		tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_1 - (cos((lambda2 - lambda1)) * sin(phi1))));
      	elseif (lambda1 <= 8.5e-36)
      		tmp = atan2((sin(-lambda2) * cos(phi2)), (t_1 - (cos(lambda2) * t_0)));
      	else
      		tmp = t_2;
      	end
      	tmp_2 = tmp;
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -4e+39], t$95$2, If[LessEqual[lambda1, -7.6e-193], N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[lambda1, 8.5e-36], N[ArcTan[N[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[Cos[lambda2], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$2]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \phi_1 \cdot \cos \phi_2\\
      t_1 := \sin \phi_2 \cdot \cos \phi_1\\
      t_2 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot t\_0}\\
      \mathbf{if}\;\lambda_1 \leq -4 \cdot 10^{+39}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\
      \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\
      
      \mathbf{elif}\;\lambda_1 \leq 8.5 \cdot 10^{-36}:\\
      \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{t\_1 - \cos \lambda_2 \cdot t\_0}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_2\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if lambda1 < -3.99999999999999976e39 or 8.5000000000000007e-36 < lambda1

        1. Initial program 65.5%

          \[\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. Add Preprocessing
        3. Taylor expanded in lambda2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]
        4. Step-by-step derivation
          1. lower-sin.f6467.1

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]
        5. Applied rewrites67.1%

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]

        if -3.99999999999999976e39 < lambda1 < -7.60000000000000007e-193

        1. Initial program 99.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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \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 \sin \phi_1}} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          2. lower-*.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)} \]
          4. sub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \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 \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \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 \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \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 \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \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 \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \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 \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
          13. lower--.f6483.5

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
        5. Applied rewrites83.5%

          \[\leadsto \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 \cos \left(\lambda_2 - \lambda_1\right)}} \]

        if -7.60000000000000007e-193 < lambda1 < 8.5000000000000007e-36

        1. Initial program 99.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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \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 \color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right)}} \]
        4. Step-by-step derivation
          1. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
          2. lower-cos.f6499.7

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        5. Applied rewrites99.7%

          \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        6. Taylor expanded in lambda1 around 0

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-1 \cdot \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 \lambda_2} \]
        7. Step-by-step derivation
          1. neg-mul-1N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]
        8. Applied rewrites95.6%

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]
      3. Recombined 3 regimes into one program.
      4. Final simplification80.4%

        \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -4 \cdot 10^{+39}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 8.5 \cdot 10^{-36}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 9: 70.2% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_2 \cdot \cos \phi_1\\ t_1 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ t_2 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{if}\;\lambda_1 \leq -6.2 \cdot 10^{+48}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_1 \leq 1.7 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 1.75 \cdot 10^{+135}:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (* (sin phi2) (cos phi1)))
              (t_1
               (atan2
                (*
                 (cos phi2)
                 (fma
                  (sin lambda2)
                  (- (cos lambda1))
                  (* (sin lambda1) (cos lambda2))))
                (sin phi2)))
              (t_2
               (atan2
                (* (sin (- lambda1 lambda2)) (cos phi2))
                (- t_0 (* (cos (- lambda2 lambda1)) (sin phi1))))))
         (if (<= lambda1 -6.2e+48)
           t_1
           (if (<= lambda1 -7.6e-193)
             t_2
             (if (<= lambda1 1.7e-60)
               (atan2
                (* (sin (- lambda2)) (cos phi2))
                (- t_0 (* (cos lambda2) (* (sin phi1) (cos phi2)))))
               (if (<= lambda1 1.75e+135) t_2 t_1))))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin(phi2) * cos(phi1);
      	double t_1 = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), sin(phi2));
      	double t_2 = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_0 - (cos((lambda2 - lambda1)) * sin(phi1))));
      	double tmp;
      	if (lambda1 <= -6.2e+48) {
      		tmp = t_1;
      	} else if (lambda1 <= -7.6e-193) {
      		tmp = t_2;
      	} else if (lambda1 <= 1.7e-60) {
      		tmp = atan2((sin(-lambda2) * cos(phi2)), (t_0 - (cos(lambda2) * (sin(phi1) * cos(phi2)))));
      	} else if (lambda1 <= 1.75e+135) {
      		tmp = t_2;
      	} else {
      		tmp = t_1;
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = Float64(sin(phi2) * cos(phi1))
      	t_1 = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), sin(phi2))
      	t_2 = atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), Float64(t_0 - Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1))))
      	tmp = 0.0
      	if (lambda1 <= -6.2e+48)
      		tmp = t_1;
      	elseif (lambda1 <= -7.6e-193)
      		tmp = t_2;
      	elseif (lambda1 <= 1.7e-60)
      		tmp = atan(Float64(sin(Float64(-lambda2)) * cos(phi2)), Float64(t_0 - Float64(cos(lambda2) * Float64(sin(phi1) * cos(phi2)))));
      	elseif (lambda1 <= 1.75e+135)
      		tmp = t_2;
      	else
      		tmp = t_1;
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -6.2e+48], t$95$1, If[LessEqual[lambda1, -7.6e-193], t$95$2, If[LessEqual[lambda1, 1.7e-60], N[ArcTan[N[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[lambda2], $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[lambda1, 1.75e+135], t$95$2, t$95$1]]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \phi_2 \cdot \cos \phi_1\\
      t_1 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\
      t_2 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\
      \mathbf{if}\;\lambda_1 \leq -6.2 \cdot 10^{+48}:\\
      \;\;\;\;t\_1\\
      
      \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{elif}\;\lambda_1 \leq 1.7 \cdot 10^{-60}:\\
      \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\
      
      \mathbf{elif}\;\lambda_1 \leq 1.75 \cdot 10^{+135}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_1\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if lambda1 < -6.20000000000000011e48 or 1.7500000000000001e135 < lambda1

        1. Initial program 59.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6436.5

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites36.5%

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        8. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          2. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          3. sin-diffN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          4. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1} \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          5. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \color{blue}{\cos \lambda_2} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          6. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          8. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \color{blue}{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          9. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          10. cancel-sign-sub-invN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \left(\mathsf{neg}\left(\cos \lambda_1\right)\right) \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          11. lift-neg.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\left(-\cos \lambda_1\right)} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          12. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \left(-\cos \lambda_1\right)}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          13. +-commutativeN/A

            \[\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}{\sin \phi_2} \]
          14. lift-fma.f6458.6

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
        9. Applied rewrites58.6%

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

        if -6.20000000000000011e48 < lambda1 < -7.60000000000000007e-193 or 1.70000000000000003e-60 < lambda1 < 1.7500000000000001e135

        1. Initial program 92.4%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \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 \sin \phi_1}} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          2. lower-*.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)} \]
          4. sub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \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 \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \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 \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \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 \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \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 \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \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 \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
          13. lower--.f6479.5

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
        5. Applied rewrites79.5%

          \[\leadsto \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 \cos \left(\lambda_2 - \lambda_1\right)}} \]

        if -7.60000000000000007e-193 < lambda1 < 1.70000000000000003e-60

        1. Initial program 99.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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \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 \color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right)}} \]
        4. Step-by-step derivation
          1. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
          2. lower-cos.f6499.7

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        5. Applied rewrites99.7%

          \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        6. Taylor expanded in lambda1 around 0

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-1 \cdot \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 \lambda_2} \]
        7. Step-by-step derivation
          1. neg-mul-1N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\mathsf{neg}\left(\lambda_2\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2} \]
          2. lower-neg.f6495.4

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]
        8. Applied rewrites95.4%

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]
      3. Recombined 3 regimes into one program.
      4. Final simplification77.9%

        \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -6.2 \cdot 10^{+48}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{elif}\;\lambda_1 \leq -7.6 \cdot 10^{-193}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 1.7 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 1.75 \cdot 10^{+135}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 10: 85.1% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_2 \cdot \cos \phi_1\\ t_1 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\ \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, t\_0\right)}\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (* (sin phi2) (cos phi1)))
              (t_1 (* (sin (- lambda1 lambda2)) (cos phi2))))
         (if (<= phi1 -4e-60)
           (atan2
            t_1
            (fma (* (- (sin phi1)) (cos (- lambda1 lambda2))) (cos phi2) t_0))
           (if (<= phi1 1e-117)
             (atan2
              (*
               (cos phi2)
               (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
              (sin phi2))
             (atan2
              t_1
              (- t_0 (* (* (cos (- lambda2 lambda1)) (sin phi1)) (cos phi2))))))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin(phi2) * cos(phi1);
      	double t_1 = sin((lambda1 - lambda2)) * cos(phi2);
      	double tmp;
      	if (phi1 <= -4e-60) {
      		tmp = atan2(t_1, fma((-sin(phi1) * cos((lambda1 - lambda2))), cos(phi2), t_0));
      	} else if (phi1 <= 1e-117) {
      		tmp = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), sin(phi2));
      	} else {
      		tmp = atan2(t_1, (t_0 - ((cos((lambda2 - lambda1)) * sin(phi1)) * cos(phi2))));
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = Float64(sin(phi2) * cos(phi1))
      	t_1 = Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2))
      	tmp = 0.0
      	if (phi1 <= -4e-60)
      		tmp = atan(t_1, fma(Float64(Float64(-sin(phi1)) * cos(Float64(lambda1 - lambda2))), cos(phi2), t_0));
      	elseif (phi1 <= 1e-117)
      		tmp = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), sin(phi2));
      	else
      		tmp = atan(t_1, Float64(t_0 - Float64(Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1)) * cos(phi2))));
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[phi1, -4e-60], N[ArcTan[t$95$1 / N[(N[((-N[Sin[phi1], $MachinePrecision]) * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision] + t$95$0), $MachinePrecision]], $MachinePrecision], If[LessEqual[phi1, 1e-117], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], N[ArcTan[t$95$1 / N[(t$95$0 - N[(N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \phi_2 \cdot \cos \phi_1\\
      t_1 := \sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\\
      \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\
      \;\;\;\;\tan^{-1}_* \frac{t\_1}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, t\_0\right)}\\
      
      \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\
      \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\
      
      \mathbf{else}:\\
      \;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if phi1 < -3.9999999999999999e-60

        1. Initial program 79.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. *-commutativeN/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          5. sub-negN/A

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

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2}} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          8. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          9. associate-*l*N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          10. distribute-lft-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
          11. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \color{blue}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
          12. associate-*r*N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \phi_2} + \cos \phi_1 \cdot \sin \phi_2} \]
          13. lower-fma.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \cos \phi_1 \cdot \sin \phi_2\right)}} \]
        4. Applied rewrites79.6%

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

        if -3.9999999999999999e-60 < phi1 < 1.00000000000000003e-117

        1. Initial program 81.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6480.8

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites80.8%

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        8. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          2. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          3. sin-diffN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          4. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1} \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          5. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \color{blue}{\cos \lambda_2} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          6. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          8. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \color{blue}{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          9. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          10. cancel-sign-sub-invN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \left(\mathsf{neg}\left(\cos \lambda_1\right)\right) \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          11. lift-neg.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\left(-\cos \lambda_1\right)} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          12. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \left(-\cos \lambda_1\right)}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          13. +-commutativeN/A

            \[\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}{\sin \phi_2} \]
          14. lift-fma.f6498.8

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
        9. Applied rewrites98.8%

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

        if 1.00000000000000003e-117 < phi1

        1. Initial program 91.5%

          \[\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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \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 \color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right)}} \]
        4. Step-by-step derivation
          1. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
          2. lower-cos.f6471.1

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        5. Applied rewrites71.1%

          \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        6. Taylor expanded in lambda1 around inf

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \phi_2 \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1\right)}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \cdot \cos \phi_2} \]
          5. lower-sin.f64N/A

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

            \[\leadsto \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 \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}\right) \cdot \cos \phi_2} \]
          7. remove-double-negN/A

            \[\leadsto \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 \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) \cdot \cos \phi_2} \]
          8. mul-1-negN/A

            \[\leadsto \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 \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) \cdot \cos \phi_2} \]
          9. distribute-neg-inN/A

            \[\leadsto \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 \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}\right) \cdot \cos \phi_2} \]
          10. +-commutativeN/A

            \[\leadsto \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 \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)\right) \cdot \cos \phi_2} \]
          11. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          12. lower-cos.f64N/A

            \[\leadsto \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 \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          13. mul-1-negN/A

            \[\leadsto \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 \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)\right) \cdot \cos \phi_2} \]
          14. unsub-negN/A

            \[\leadsto \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 \color{blue}{\left(\lambda_2 - \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          15. lower--.f64N/A

            \[\leadsto \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 \color{blue}{\left(\lambda_2 - \lambda_1\right)}\right) \cdot \cos \phi_2} \]
          16. lower-cos.f6491.6

            \[\leadsto \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 \left(\lambda_2 - \lambda_1\right)\right) \cdot \color{blue}{\cos \phi_2}} \]
        8. Applied rewrites91.6%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 11: 85.1% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\ \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0
               (atan2
                (* (sin (- lambda1 lambda2)) (cos phi2))
                (fma
                 (* (- (sin phi1)) (cos (- lambda1 lambda2)))
                 (cos phi2)
                 (* (sin phi2) (cos phi1))))))
         (if (<= phi1 -4e-60)
           t_0
           (if (<= phi1 1e-117)
             (atan2
              (*
               (cos phi2)
               (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
              (sin phi2))
             t_0))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = atan2((sin((lambda1 - lambda2)) * cos(phi2)), fma((-sin(phi1) * cos((lambda1 - lambda2))), cos(phi2), (sin(phi2) * cos(phi1))));
      	double tmp;
      	if (phi1 <= -4e-60) {
      		tmp = t_0;
      	} else if (phi1 <= 1e-117) {
      		tmp = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), sin(phi2));
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), fma(Float64(Float64(-sin(phi1)) * cos(Float64(lambda1 - lambda2))), cos(phi2), Float64(sin(phi2) * cos(phi1))))
      	tmp = 0.0
      	if (phi1 <= -4e-60)
      		tmp = t_0;
      	elseif (phi1 <= 1e-117)
      		tmp = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), sin(phi2));
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(N[((-N[Sin[phi1], $MachinePrecision]) * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision] + N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -4e-60], t$95$0, If[LessEqual[phi1, 1e-117], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\
      \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\
      \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if phi1 < -3.9999999999999999e-60 or 1.00000000000000003e-117 < phi1

        1. Initial program 85.5%

          \[\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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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. *-commutativeN/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          5. sub-negN/A

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

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2}} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          8. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          9. associate-*l*N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\color{blue}{\sin \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\right)\right) + \cos \phi_1 \cdot \sin \phi_2} \]
          10. distribute-lft-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
          11. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \color{blue}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)} + \cos \phi_1 \cdot \sin \phi_2} \]
          12. associate-*r*N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \phi_2} + \cos \phi_1 \cdot \sin \phi_2} \]
          13. lower-fma.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\left(\mathsf{neg}\left(\sin \phi_1\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \cos \phi_1 \cdot \sin \phi_2\right)}} \]
        4. Applied rewrites85.5%

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

        if -3.9999999999999999e-60 < phi1 < 1.00000000000000003e-117

        1. Initial program 81.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6480.8

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites80.8%

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        8. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          2. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          3. sin-diffN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          4. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1} \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          5. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \color{blue}{\cos \lambda_2} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          6. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          8. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \color{blue}{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          9. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          10. cancel-sign-sub-invN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \left(\mathsf{neg}\left(\cos \lambda_1\right)\right) \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          11. lift-neg.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\left(-\cos \lambda_1\right)} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          12. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \left(-\cos \lambda_1\right)}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          13. +-commutativeN/A

            \[\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}{\sin \phi_2} \]
          14. lift-fma.f6498.8

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
        9. Applied rewrites98.8%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\left(-\sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_2, \sin \phi_2 \cdot \cos \phi_1\right)}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 12: 79.3% accurate, 1.0× speedup?

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

        1. Initial program 67.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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-1 \cdot \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)} \]
        4. Step-by-step derivation
          1. neg-mul-1N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\mathsf{neg}\left(\lambda_2\right)\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. lower-neg.f6469.2

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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)} \]
        5. Applied rewrites69.2%

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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)} \]

        if -5e7 < lambda2 < 4.2000000000000002e-4

        1. Initial program 98.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in lambda2 around 0

          \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
        4. Step-by-step derivation
          1. lower-cos.f6498.9

            \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
        5. Applied rewrites98.9%

          \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
      3. Recombined 2 regimes into one program.
      4. Final simplification84.9%

        \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_2 \leq -50000000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_2 \leq 0.00042:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 13: 79.3% accurate, 1.0× speedup?

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

        1. Initial program 67.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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \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 \color{blue}{\cos \left(\mathsf{neg}\left(\lambda_2\right)\right)}} \]
        4. Step-by-step derivation
          1. cos-negN/A

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
          2. lower-cos.f6467.7

            \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        5. Applied rewrites67.7%

          \[\leadsto \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 \color{blue}{\cos \lambda_2}} \]
        6. Taylor expanded in lambda1 around 0

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-1 \cdot \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 \lambda_2} \]
        7. Step-by-step derivation
          1. neg-mul-1N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\mathsf{neg}\left(\lambda_2\right)\right)} \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2} \]
          2. lower-neg.f6469.2

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]
        8. Applied rewrites69.2%

          \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\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 \lambda_2} \]

        if -5e7 < lambda2 < 4.2000000000000002e-4

        1. Initial program 98.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in lambda2 around 0

          \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
        4. Step-by-step derivation
          1. lower-cos.f6498.9

            \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
        5. Applied rewrites98.9%

          \[\leadsto \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 \color{blue}{\cos \lambda_1}} \]
      3. Recombined 2 regimes into one program.
      4. Final simplification84.9%

        \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_2 \leq -50000000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_2 \leq 0.00042:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_2 \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 14: 78.9% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \phi_2 \cdot \cos \phi_1\\ t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{if}\;\lambda_1 \leq -1500000000:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \left(\sin \phi_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (* (sin phi2) (cos phi1)))
              (t_1
               (atan2
                (* (sin lambda1) (cos phi2))
                (- t_0 (* (cos (- lambda1 lambda2)) (* (sin phi1) (cos phi2)))))))
         (if (<= lambda1 -1500000000.0)
           t_1
           (if (<= lambda1 2.9e-18)
             (atan2
              (* (sin (- lambda1 lambda2)) (cos phi2))
              (- t_0 (* (* (sin phi1) (cos lambda2)) (cos phi2))))
             t_1))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin(phi2) * cos(phi1);
      	double t_1 = atan2((sin(lambda1) * cos(phi2)), (t_0 - (cos((lambda1 - lambda2)) * (sin(phi1) * cos(phi2)))));
      	double tmp;
      	if (lambda1 <= -1500000000.0) {
      		tmp = t_1;
      	} else if (lambda1 <= 2.9e-18) {
      		tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_0 - ((sin(phi1) * cos(lambda2)) * cos(phi2))));
      	} else {
      		tmp = t_1;
      	}
      	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
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: tmp
          t_0 = sin(phi2) * cos(phi1)
          t_1 = atan2((sin(lambda1) * cos(phi2)), (t_0 - (cos((lambda1 - lambda2)) * (sin(phi1) * cos(phi2)))))
          if (lambda1 <= (-1500000000.0d0)) then
              tmp = t_1
          else if (lambda1 <= 2.9d-18) then
              tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_0 - ((sin(phi1) * cos(lambda2)) * cos(phi2))))
          else
              tmp = t_1
          end if
          code = tmp
      end function
      
      public static double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = Math.sin(phi2) * Math.cos(phi1);
      	double t_1 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_0 - (Math.cos((lambda1 - lambda2)) * (Math.sin(phi1) * Math.cos(phi2)))));
      	double tmp;
      	if (lambda1 <= -1500000000.0) {
      		tmp = t_1;
      	} else if (lambda1 <= 2.9e-18) {
      		tmp = Math.atan2((Math.sin((lambda1 - lambda2)) * Math.cos(phi2)), (t_0 - ((Math.sin(phi1) * Math.cos(lambda2)) * Math.cos(phi2))));
      	} else {
      		tmp = t_1;
      	}
      	return tmp;
      }
      
      def code(lambda1, lambda2, phi1, phi2):
      	t_0 = math.sin(phi2) * math.cos(phi1)
      	t_1 = math.atan2((math.sin(lambda1) * math.cos(phi2)), (t_0 - (math.cos((lambda1 - lambda2)) * (math.sin(phi1) * math.cos(phi2)))))
      	tmp = 0
      	if lambda1 <= -1500000000.0:
      		tmp = t_1
      	elif lambda1 <= 2.9e-18:
      		tmp = math.atan2((math.sin((lambda1 - lambda2)) * math.cos(phi2)), (t_0 - ((math.sin(phi1) * math.cos(lambda2)) * math.cos(phi2))))
      	else:
      		tmp = t_1
      	return tmp
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = Float64(sin(phi2) * cos(phi1))
      	t_1 = atan(Float64(sin(lambda1) * cos(phi2)), Float64(t_0 - Float64(cos(Float64(lambda1 - lambda2)) * Float64(sin(phi1) * cos(phi2)))))
      	tmp = 0.0
      	if (lambda1 <= -1500000000.0)
      		tmp = t_1;
      	elseif (lambda1 <= 2.9e-18)
      		tmp = atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), Float64(t_0 - Float64(Float64(sin(phi1) * cos(lambda2)) * cos(phi2))));
      	else
      		tmp = t_1;
      	end
      	return tmp
      end
      
      function tmp_2 = code(lambda1, lambda2, phi1, phi2)
      	t_0 = sin(phi2) * cos(phi1);
      	t_1 = atan2((sin(lambda1) * cos(phi2)), (t_0 - (cos((lambda1 - lambda2)) * (sin(phi1) * cos(phi2)))));
      	tmp = 0.0;
      	if (lambda1 <= -1500000000.0)
      		tmp = t_1;
      	elseif (lambda1 <= 2.9e-18)
      		tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), (t_0 - ((sin(phi1) * cos(lambda2)) * cos(phi2))));
      	else
      		tmp = t_1;
      	end
      	tmp_2 = tmp;
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[(N[Sin[phi1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -1500000000.0], t$95$1, If[LessEqual[lambda1, 2.9e-18], N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[(N[Sin[phi1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$1]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \phi_2 \cdot \cos \phi_1\\
      t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\
      \mathbf{if}\;\lambda_1 \leq -1500000000:\\
      \;\;\;\;t\_1\\
      
      \mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\
      \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \left(\sin \phi_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_1\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if lambda1 < -1.5e9 or 2.9e-18 < lambda1

        1. Initial program 65.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. Add Preprocessing
        3. Taylor expanded in lambda2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]
        4. Step-by-step derivation
          1. lower-sin.f6467.2

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]
        5. Applied rewrites67.2%

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \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)} \]

        if -1.5e9 < lambda1 < 2.9e-18

        1. Initial program 99.5%

          \[\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. Add Preprocessing
        3. Taylor expanded in lambda1 around 0

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \phi_2 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \sin \phi_1\right)}} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}} \]
          2. lower-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2}} \]
          3. lower-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \sin \phi_1\right)} \cdot \cos \phi_2} \]
          4. cos-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\color{blue}{\cos \lambda_2} \cdot \sin \phi_1\right) \cdot \cos \phi_2} \]
          5. lower-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \lambda_2 \cdot \sin \phi_1\right) \cdot \color{blue}{\cos \phi_2}} \]
        5. Applied rewrites99.0%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -1500000000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 2.9 \cdot 10^{-18}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\sin \phi_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 15: 71.3% accurate, 1.1× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0
               (atan2
                (* (sin (- lambda1 lambda2)) (cos phi2))
                (-
                 (* (sin phi2) (cos phi1))
                 (* (cos (- lambda2 lambda1)) (sin phi1))))))
         (if (<= phi1 -4e-60)
           t_0
           (if (<= phi1 1e-117)
             (atan2
              (*
               (cos phi2)
               (fma (sin lambda2) (- (cos lambda1)) (* (sin lambda1) (cos lambda2))))
              (sin phi2))
             t_0))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = atan2((sin((lambda1 - lambda2)) * cos(phi2)), ((sin(phi2) * cos(phi1)) - (cos((lambda2 - lambda1)) * sin(phi1))));
      	double tmp;
      	if (phi1 <= -4e-60) {
      		tmp = t_0;
      	} else if (phi1 <= 1e-117) {
      		tmp = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), sin(phi2));
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1))))
      	tmp = 0.0
      	if (phi1 <= -4e-60)
      		tmp = t_0;
      	elseif (phi1 <= 1e-117)
      		tmp = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), sin(phi2));
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -4e-60], t$95$0, If[LessEqual[phi1, 1e-117], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\
      \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\
      \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if phi1 < -3.9999999999999999e-60 or 1.00000000000000003e-117 < phi1

        1. Initial program 85.5%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \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 \sin \phi_1}} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          2. lower-*.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

            \[\leadsto \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 \cos \left(\lambda_1 - \lambda_2\right)} \]
          4. sub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \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 \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \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 \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \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 \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \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 \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \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}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \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 \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
          13. lower--.f6459.7

            \[\leadsto \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 \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
        5. Applied rewrites59.7%

          \[\leadsto \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 \cos \left(\lambda_2 - \lambda_1\right)}} \]

        if -3.9999999999999999e-60 < phi1 < 1.00000000000000003e-117

        1. Initial program 81.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6480.8

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites80.8%

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        8. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          2. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          3. sin-diffN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          4. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1} \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          5. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \color{blue}{\cos \lambda_2} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          6. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          8. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \color{blue}{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          9. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          10. cancel-sign-sub-invN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \left(\mathsf{neg}\left(\cos \lambda_1\right)\right) \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          11. lift-neg.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\left(-\cos \lambda_1\right)} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          12. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \left(-\cos \lambda_1\right)}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          13. +-commutativeN/A

            \[\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}{\sin \phi_2} \]
          14. lift-fma.f6498.8

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
        9. Applied rewrites98.8%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -4 \cdot 10^{-60}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\phi_1 \leq 10^{-117}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 16: 69.1% accurate, 1.1× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{if}\;\phi_2 \leq -3.9 \cdot 10^{-84}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0
               (atan2
                (*
                 (cos phi2)
                 (fma
                  (sin lambda2)
                  (- (cos lambda1))
                  (* (sin lambda1) (cos lambda2))))
                (sin phi2))))
         (if (<= phi2 -3.9e-84)
           t_0
           (if (<= phi2 33000.0)
             (atan2
              (sin (- lambda1 lambda2))
              (- (* (sin phi2) (cos phi1)) (* (cos (- lambda2 lambda1)) (sin phi1))))
             t_0))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = atan2((cos(phi2) * fma(sin(lambda2), -cos(lambda1), (sin(lambda1) * cos(lambda2)))), sin(phi2));
      	double tmp;
      	if (phi2 <= -3.9e-84) {
      		tmp = t_0;
      	} else if (phi2 <= 33000.0) {
      		tmp = atan2(sin((lambda1 - lambda2)), ((sin(phi2) * cos(phi1)) - (cos((lambda2 - lambda1)) * sin(phi1))));
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = atan(Float64(cos(phi2) * fma(sin(lambda2), Float64(-cos(lambda1)), Float64(sin(lambda1) * cos(lambda2)))), sin(phi2))
      	tmp = 0.0
      	if (phi2 <= -3.9e-84)
      		tmp = t_0;
      	elseif (phi2 <= 33000.0)
      		tmp = atan(sin(Float64(lambda1 - lambda2)), Float64(Float64(sin(phi2) * cos(phi1)) - Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1))));
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda2], $MachinePrecision] * (-N[Cos[lambda1], $MachinePrecision]) + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi2, -3.9e-84], t$95$0, If[LessEqual[phi2, 33000.0], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\
      \mathbf{if}\;\phi_2 \leq -3.9 \cdot 10^{-84}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;\phi_2 \leq 33000:\\
      \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if phi2 < -3.90000000000000023e-84 or 33000 < phi2

        1. Initial program 82.4%

          \[\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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6447.4

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites47.4%

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        8. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          2. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          3. sin-diffN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          4. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1} \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          5. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \color{blue}{\cos \lambda_2} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          6. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          7. lift-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\cos \lambda_2 \cdot \sin \lambda_1} - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          8. lift-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \color{blue}{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          9. lift-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \color{blue}{\sin \lambda_2}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          10. cancel-sign-sub-invN/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \left(\mathsf{neg}\left(\cos \lambda_1\right)\right) \cdot \sin \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
          11. lift-neg.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\left(-\cos \lambda_1\right)} \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          12. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 + \color{blue}{\sin \lambda_2 \cdot \left(-\cos \lambda_1\right)}\right) \cdot \cos \phi_2}{\sin \phi_2} \]
          13. +-commutativeN/A

            \[\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}{\sin \phi_2} \]
          14. lift-fma.f6458.2

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \cos \lambda_2 \cdot \sin \lambda_1\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
        9. Applied rewrites58.2%

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

        if -3.90000000000000023e-84 < phi2 < 33000

        1. Initial program 86.1%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
        4. Step-by-step derivation
          1. lower-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6485.0

            \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
        5. Applied rewrites85.0%

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_2 - \lambda_1\right)}} \]
        8. Applied rewrites85.0%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -3.9 \cdot 10^{-84}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \lambda_2, -\cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right)}{\sin \phi_2}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 17: 63.8% accurate, 1.3× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := t\_0 \cdot \cos \phi_2\\ \mathbf{if}\;\phi_2 \leq -0.0077:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{\mathsf{fma}\left(-0.5 \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_1\right) - \lambda_2\right) + \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right), \sin \phi_2\right)}\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{\sin \phi_2}\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (sin (- lambda1 lambda2))) (t_1 (* t_0 (cos phi2))))
         (if (<= phi2 -0.0077)
           (atan2
            t_1
            (fma
             (* -0.5 phi1)
             (+
              (cos (- (+ phi2 lambda1) lambda2))
              (cos (- (+ phi2 lambda2) lambda1)))
             (sin phi2)))
           (if (<= phi2 33000.0)
             (atan2
              t_0
              (- (* (sin phi2) (cos phi1)) (* (cos (- lambda2 lambda1)) (sin phi1))))
             (atan2 t_1 (sin phi2))))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin((lambda1 - lambda2));
      	double t_1 = t_0 * cos(phi2);
      	double tmp;
      	if (phi2 <= -0.0077) {
      		tmp = atan2(t_1, fma((-0.5 * phi1), (cos(((phi2 + lambda1) - lambda2)) + cos(((phi2 + lambda2) - lambda1))), sin(phi2)));
      	} else if (phi2 <= 33000.0) {
      		tmp = atan2(t_0, ((sin(phi2) * cos(phi1)) - (cos((lambda2 - lambda1)) * sin(phi1))));
      	} else {
      		tmp = atan2(t_1, sin(phi2));
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = sin(Float64(lambda1 - lambda2))
      	t_1 = Float64(t_0 * cos(phi2))
      	tmp = 0.0
      	if (phi2 <= -0.0077)
      		tmp = atan(t_1, fma(Float64(-0.5 * phi1), Float64(cos(Float64(Float64(phi2 + lambda1) - lambda2)) + cos(Float64(Float64(phi2 + lambda2) - lambda1))), sin(phi2)));
      	elseif (phi2 <= 33000.0)
      		tmp = atan(t_0, Float64(Float64(sin(phi2) * cos(phi1)) - Float64(cos(Float64(lambda2 - lambda1)) * sin(phi1))));
      	else
      		tmp = atan(t_1, sin(phi2));
      	end
      	return tmp
      end
      
      code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * N[Cos[phi2], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[phi2, -0.0077], N[ArcTan[t$95$1 / N[(N[(-0.5 * phi1), $MachinePrecision] * N[(N[Cos[N[(N[(phi2 + lambda1), $MachinePrecision] - lambda2), $MachinePrecision]], $MachinePrecision] + N[Cos[N[(N[(phi2 + lambda2), $MachinePrecision] - lambda1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] + N[Sin[phi2], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[phi2, 33000.0], N[ArcTan[t$95$0 / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[t$95$1 / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\
      t_1 := t\_0 \cdot \cos \phi_2\\
      \mathbf{if}\;\phi_2 \leq -0.0077:\\
      \;\;\;\;\tan^{-1}_* \frac{t\_1}{\mathsf{fma}\left(-0.5 \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_1\right) - \lambda_2\right) + \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right), \sin \phi_2\right)}\\
      
      \mathbf{elif}\;\phi_2 \leq 33000:\\
      \;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\
      
      \mathbf{else}:\\
      \;\;\;\;\tan^{-1}_* \frac{t\_1}{\sin \phi_2}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if phi2 < -0.0077000000000000002

        1. Initial program 80.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\left(\frac{-1}{2} \cdot \phi_1\right) \cdot \left(\cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right) + \cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right)\right)} + \sin \phi_2} \]
          3. lower-fma.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right) + \cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right), \sin \phi_2\right)}} \]
          4. lower-*.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\color{blue}{\frac{-1}{2} \cdot \phi_1}, \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right) + \cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right), \sin \phi_2\right)} \]
          5. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \color{blue}{\cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right) + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right)}, \sin \phi_2\right)} \]
          6. lower-+.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \color{blue}{\cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right) + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right)}, \sin \phi_2\right)} \]
          7. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \color{blue}{\cos \left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right)} + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right), \sin \phi_2\right)} \]
          8. lower--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \color{blue}{\left(\left(\lambda_2 + \phi_2\right) - \lambda_1\right)} + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right), \sin \phi_2\right)} \]
          9. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\color{blue}{\left(\phi_2 + \lambda_2\right)} - \lambda_1\right) + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right), \sin \phi_2\right)} \]
          10. lower-+.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\color{blue}{\left(\phi_2 + \lambda_2\right)} - \lambda_1\right) + \cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right), \sin \phi_2\right)} \]
          11. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right) + \color{blue}{\cos \left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right)}, \sin \phi_2\right)} \]
          12. lower--.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right) + \cos \color{blue}{\left(\left(\lambda_1 + \phi_2\right) - \lambda_2\right)}, \sin \phi_2\right)} \]
          13. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right) + \cos \left(\color{blue}{\left(\phi_2 + \lambda_1\right)} - \lambda_2\right), \sin \phi_2\right)} \]
          14. lower-+.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\frac{-1}{2} \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right) + \cos \left(\color{blue}{\left(\phi_2 + \lambda_1\right)} - \lambda_2\right), \sin \phi_2\right)} \]
          15. lower-sin.f6440.7

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(-0.5 \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right) + \cos \left(\left(\phi_2 + \lambda_1\right) - \lambda_2\right), \color{blue}{\sin \phi_2}\right)} \]
        7. Applied rewrites40.7%

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

        if -0.0077000000000000002 < phi2 < 33000

        1. Initial program 83.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
        4. Step-by-step derivation
          1. lower-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6482.6

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

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

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

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

        if 33000 < phi2

        1. Initial program 88.1%

          \[\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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6455.0

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites55.0%

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -0.0077:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(-0.5 \cdot \phi_1, \cos \left(\left(\phi_2 + \lambda_1\right) - \lambda_2\right) + \cos \left(\left(\phi_2 + \lambda_2\right) - \lambda_1\right), \sin \phi_2\right)}\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 18: 64.5% accurate, 1.3× speedup?

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

        1. Initial program 84.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6448.3

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites48.3%

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

        if -0.00700000000000000015 < phi2 < 33000

        1. Initial program 83.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
        4. Step-by-step derivation
          1. lower-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6482.6

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

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

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

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

        \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -0.007:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \end{array} \]
      5. Add Preprocessing

      Alternative 19: 59.7% accurate, 1.3× speedup?

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

        1. Initial program 84.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. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          3. associate-*l*N/A

            \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
          4. *-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
          5. lift-cos.f64N/A

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
          8. associate-*l/N/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        6. Step-by-step derivation
          1. lower-sin.f6448.3

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
        7. Applied rewrites48.3%

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

        if -0.00339999999999999981 < phi2 < 33000

        1. Initial program 83.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in phi2 around 0

          \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
        4. Step-by-step derivation
          1. lower-sin.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6482.6

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
          3. lower-sin.f64N/A

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
          5. remove-double-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          6. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
          7. distribute-neg-inN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
          8. +-commutativeN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
          9. cos-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          10. lower-cos.f64N/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
          11. mul-1-negN/A

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
          12. unsub-negN/A

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

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

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

          \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \lambda_2} \]
        10. Step-by-step derivation
          1. Applied rewrites74.6%

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \lambda_2} \]
        11. Recombined 2 regimes into one program.
        12. Final simplification62.9%

          \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -0.0034:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{elif}\;\phi_2 \leq 33000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_2 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \end{array} \]
        13. Add Preprocessing

        Alternative 20: 59.7% accurate, 1.3× speedup?

        \[\begin{array}{l} \\ \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}\\ \mathbf{if}\;\phi_2 \leq -8.2 \cdot 10^{-5}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;\phi_2 \leq 1.25 \cdot 10^{-12}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
        (FPCore (lambda1 lambda2 phi1 phi2)
         :precision binary64
         (let* ((t_0 (sin (- lambda1 lambda2)))
                (t_1 (atan2 (* t_0 (cos phi2)) (sin phi2))))
           (if (<= phi2 -8.2e-5)
             t_1
             (if (<= phi2 1.25e-12)
               (atan2 t_0 (- (* (sin phi2) (cos phi1)) (* (cos lambda1) (sin phi1))))
               t_1))))
        double code(double lambda1, double lambda2, double phi1, double phi2) {
        	double t_0 = sin((lambda1 - lambda2));
        	double t_1 = atan2((t_0 * cos(phi2)), sin(phi2));
        	double tmp;
        	if (phi2 <= -8.2e-5) {
        		tmp = t_1;
        	} else if (phi2 <= 1.25e-12) {
        		tmp = atan2(t_0, ((sin(phi2) * cos(phi1)) - (cos(lambda1) * sin(phi1))));
        	} else {
        		tmp = t_1;
        	}
        	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
            real(8) :: t_0
            real(8) :: t_1
            real(8) :: tmp
            t_0 = sin((lambda1 - lambda2))
            t_1 = atan2((t_0 * cos(phi2)), sin(phi2))
            if (phi2 <= (-8.2d-5)) then
                tmp = t_1
            else if (phi2 <= 1.25d-12) then
                tmp = atan2(t_0, ((sin(phi2) * cos(phi1)) - (cos(lambda1) * sin(phi1))))
            else
                tmp = t_1
            end if
            code = tmp
        end function
        
        public static double code(double lambda1, double lambda2, double phi1, double phi2) {
        	double t_0 = Math.sin((lambda1 - lambda2));
        	double t_1 = Math.atan2((t_0 * Math.cos(phi2)), Math.sin(phi2));
        	double tmp;
        	if (phi2 <= -8.2e-5) {
        		tmp = t_1;
        	} else if (phi2 <= 1.25e-12) {
        		tmp = Math.atan2(t_0, ((Math.sin(phi2) * Math.cos(phi1)) - (Math.cos(lambda1) * Math.sin(phi1))));
        	} else {
        		tmp = t_1;
        	}
        	return tmp;
        }
        
        def code(lambda1, lambda2, phi1, phi2):
        	t_0 = math.sin((lambda1 - lambda2))
        	t_1 = math.atan2((t_0 * math.cos(phi2)), math.sin(phi2))
        	tmp = 0
        	if phi2 <= -8.2e-5:
        		tmp = t_1
        	elif phi2 <= 1.25e-12:
        		tmp = math.atan2(t_0, ((math.sin(phi2) * math.cos(phi1)) - (math.cos(lambda1) * math.sin(phi1))))
        	else:
        		tmp = t_1
        	return tmp
        
        function code(lambda1, lambda2, phi1, phi2)
        	t_0 = sin(Float64(lambda1 - lambda2))
        	t_1 = atan(Float64(t_0 * cos(phi2)), sin(phi2))
        	tmp = 0.0
        	if (phi2 <= -8.2e-5)
        		tmp = t_1;
        	elseif (phi2 <= 1.25e-12)
        		tmp = atan(t_0, Float64(Float64(sin(phi2) * cos(phi1)) - Float64(cos(lambda1) * sin(phi1))));
        	else
        		tmp = t_1;
        	end
        	return tmp
        end
        
        function tmp_2 = code(lambda1, lambda2, phi1, phi2)
        	t_0 = sin((lambda1 - lambda2));
        	t_1 = atan2((t_0 * cos(phi2)), sin(phi2));
        	tmp = 0.0;
        	if (phi2 <= -8.2e-5)
        		tmp = t_1;
        	elseif (phi2 <= 1.25e-12)
        		tmp = atan2(t_0, ((sin(phi2) * cos(phi1)) - (cos(lambda1) * sin(phi1))));
        	else
        		tmp = t_1;
        	end
        	tmp_2 = tmp;
        end
        
        code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[ArcTan[N[(t$95$0 * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi2, -8.2e-5], t$95$1, If[LessEqual[phi2, 1.25e-12], N[ArcTan[t$95$0 / N[(N[(N[Sin[phi2], $MachinePrecision] * N[Cos[phi1], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$1]]]]
        
        \begin{array}{l}
        
        \\
        \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}\\
        \mathbf{if}\;\phi_2 \leq -8.2 \cdot 10^{-5}:\\
        \;\;\;\;t\_1\\
        
        \mathbf{elif}\;\phi_2 \leq 1.25 \cdot 10^{-12}:\\
        \;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \sin \phi_1}\\
        
        \mathbf{else}:\\
        \;\;\;\;t\_1\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if phi2 < -8.20000000000000009e-5 or 1.24999999999999992e-12 < phi2

          1. Initial program 85.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)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. lift-*.f64N/A

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
            3. associate-*l*N/A

              \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
            4. *-commutativeN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
            5. lift-cos.f64N/A

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

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
            8. associate-*l/N/A

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

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
          6. Step-by-step derivation
            1. lower-sin.f6447.5

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
          7. Applied rewrites47.5%

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

          if -8.20000000000000009e-5 < phi2 < 1.24999999999999992e-12

          1. Initial program 83.4%

            \[\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. Add Preprocessing
          3. Taylor expanded in phi2 around 0

            \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
          4. Step-by-step derivation
            1. lower-sin.f64N/A

              \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6483.3

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
          7. Step-by-step derivation
            1. *-commutativeN/A

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
            3. lower-sin.f64N/A

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
            5. remove-double-negN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
            6. mul-1-negN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
            7. distribute-neg-inN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
            8. +-commutativeN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
            9. cos-negN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
            10. lower-cos.f64N/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
            11. mul-1-negN/A

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
            12. unsub-negN/A

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

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

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

            \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_1\right)\right)} \]
          10. Step-by-step derivation
            1. Applied rewrites70.9%

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \lambda_1} \]
          11. Recombined 2 regimes into one program.
          12. Final simplification60.1%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -8.2 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{elif}\;\phi_2 \leq 1.25 \cdot 10^{-12}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2 \cdot \cos \phi_1 - \cos \lambda_1 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \end{array} \]
          13. Add Preprocessing

          Alternative 21: 52.9% accurate, 1.3× speedup?

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

            1. Initial program 82.9%

              \[\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. Add Preprocessing
            3. Taylor expanded in phi2 around 0

              \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
            4. Step-by-step derivation
              1. lower-sin.f64N/A

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\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. lower--.f6448.6

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

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
            7. Step-by-step derivation
              1. *-commutativeN/A

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}} \]
              3. lower-sin.f64N/A

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\lambda_1 + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)}} \]
              5. remove-double-negN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\lambda_1\right)\right)\right)\right)} + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
              6. mul-1-negN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\left(\mathsf{neg}\left(\color{blue}{-1 \cdot \lambda_1}\right)\right) + \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)} \]
              7. distribute-neg-inN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \color{blue}{\left(\mathsf{neg}\left(\left(-1 \cdot \lambda_1 + \lambda_2\right)\right)\right)}} \]
              8. +-commutativeN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\mathsf{neg}\left(\color{blue}{\left(\lambda_2 + -1 \cdot \lambda_1\right)}\right)\right)} \]
              9. cos-negN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
              10. lower-cos.f64N/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \left(\lambda_2 + -1 \cdot \lambda_1\right)}} \]
              11. mul-1-negN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 + \color{blue}{\left(\mathsf{neg}\left(\lambda_1\right)\right)}\right)} \]
              12. unsub-negN/A

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

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

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

              \[\leadsto \tan^{-1}_* \frac{\sin \lambda_1}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_2 - \lambda_1\right)} \]
            10. Step-by-step derivation
              1. Applied rewrites30.0%

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

              if -130 < phi1 < 2.68000000000000011e78

              1. Initial program 85.3%

                \[\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. Add Preprocessing
              3. Step-by-step derivation
                1. lift-*.f64N/A

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
                3. associate-*l*N/A

                  \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
                5. lift-cos.f64N/A

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

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
                8. associate-*l/N/A

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

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              6. Step-by-step derivation
                1. lower-sin.f6469.4

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              7. Applied rewrites69.4%

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
            11. Recombined 2 regimes into one program.
            12. Final simplification52.0%

              \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -130:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \mathbf{elif}\;\phi_1 \leq 2.68 \cdot 10^{+78}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\sin \phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_2 - \lambda_1\right) \cdot \sin \phi_1}\\ \end{array} \]
            13. Add Preprocessing

            Alternative 22: 44.3% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{if}\;\lambda_2 \leq -7.4 \cdot 10^{-27}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\lambda_2 \leq 9.5 \cdot 10^{-56}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
            (FPCore (lambda1 lambda2 phi1 phi2)
             :precision binary64
             (let* ((t_0 (atan2 (* (sin (- lambda2)) (cos phi2)) (sin phi2))))
               (if (<= lambda2 -7.4e-27)
                 t_0
                 (if (<= lambda2 9.5e-56)
                   (atan2 (* (sin lambda1) (cos phi2)) (sin phi2))
                   t_0))))
            double code(double lambda1, double lambda2, double phi1, double phi2) {
            	double t_0 = atan2((sin(-lambda2) * cos(phi2)), sin(phi2));
            	double tmp;
            	if (lambda2 <= -7.4e-27) {
            		tmp = t_0;
            	} else if (lambda2 <= 9.5e-56) {
            		tmp = atan2((sin(lambda1) * cos(phi2)), sin(phi2));
            	} else {
            		tmp = t_0;
            	}
            	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
                real(8) :: t_0
                real(8) :: tmp
                t_0 = atan2((sin(-lambda2) * cos(phi2)), sin(phi2))
                if (lambda2 <= (-7.4d-27)) then
                    tmp = t_0
                else if (lambda2 <= 9.5d-56) then
                    tmp = atan2((sin(lambda1) * cos(phi2)), sin(phi2))
                else
                    tmp = t_0
                end if
                code = tmp
            end function
            
            public static double code(double lambda1, double lambda2, double phi1, double phi2) {
            	double t_0 = Math.atan2((Math.sin(-lambda2) * Math.cos(phi2)), Math.sin(phi2));
            	double tmp;
            	if (lambda2 <= -7.4e-27) {
            		tmp = t_0;
            	} else if (lambda2 <= 9.5e-56) {
            		tmp = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), Math.sin(phi2));
            	} else {
            		tmp = t_0;
            	}
            	return tmp;
            }
            
            def code(lambda1, lambda2, phi1, phi2):
            	t_0 = math.atan2((math.sin(-lambda2) * math.cos(phi2)), math.sin(phi2))
            	tmp = 0
            	if lambda2 <= -7.4e-27:
            		tmp = t_0
            	elif lambda2 <= 9.5e-56:
            		tmp = math.atan2((math.sin(lambda1) * math.cos(phi2)), math.sin(phi2))
            	else:
            		tmp = t_0
            	return tmp
            
            function code(lambda1, lambda2, phi1, phi2)
            	t_0 = atan(Float64(sin(Float64(-lambda2)) * cos(phi2)), sin(phi2))
            	tmp = 0.0
            	if (lambda2 <= -7.4e-27)
            		tmp = t_0;
            	elseif (lambda2 <= 9.5e-56)
            		tmp = atan(Float64(sin(lambda1) * cos(phi2)), sin(phi2));
            	else
            		tmp = t_0;
            	end
            	return tmp
            end
            
            function tmp_2 = code(lambda1, lambda2, phi1, phi2)
            	t_0 = atan2((sin(-lambda2) * cos(phi2)), sin(phi2));
            	tmp = 0.0;
            	if (lambda2 <= -7.4e-27)
            		tmp = t_0;
            	elseif (lambda2 <= 9.5e-56)
            		tmp = atan2((sin(lambda1) * cos(phi2)), sin(phi2));
            	else
            		tmp = t_0;
            	end
            	tmp_2 = tmp;
            end
            
            code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda2, -7.4e-27], t$95$0, If[LessEqual[lambda2, 9.5e-56], N[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            t_0 := \tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\
            \mathbf{if}\;\lambda_2 \leq -7.4 \cdot 10^{-27}:\\
            \;\;\;\;t\_0\\
            
            \mathbf{elif}\;\lambda_2 \leq 9.5 \cdot 10^{-56}:\\
            \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2}\\
            
            \mathbf{else}:\\
            \;\;\;\;t\_0\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if lambda2 < -7.40000000000000057e-27 or 9.4999999999999991e-56 < lambda2

              1. Initial program 70.9%

                \[\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. Add Preprocessing
              3. Step-by-step derivation
                1. lift-*.f64N/A

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
                3. associate-*l*N/A

                  \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
                5. lift-cos.f64N/A

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

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
                8. associate-*l/N/A

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

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              6. Step-by-step derivation
                1. lower-sin.f6443.8

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              7. Applied rewrites43.8%

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

                \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-1 \cdot \lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
              9. Step-by-step derivation
                1. neg-mul-1N/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\mathsf{neg}\left(\lambda_2\right)\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
                2. lower-neg.f6444.7

                  \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\lambda_2\right)} \cdot \cos \phi_2}{\sin \phi_2} \]
              10. Applied rewrites44.7%

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

              if -7.40000000000000057e-27 < lambda2 < 9.4999999999999991e-56

              1. Initial program 99.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. Add Preprocessing
              3. Step-by-step derivation
                1. lift-*.f64N/A

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
                3. associate-*l*N/A

                  \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
                5. lift-cos.f64N/A

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

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
                8. associate-*l/N/A

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

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              6. Step-by-step derivation
                1. lower-sin.f6451.2

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              7. Applied rewrites51.2%

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

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]
              9. Step-by-step derivation
                1. lower-sin.f6447.7

                  \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]
              10. Applied rewrites47.7%

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]
            3. Recombined 2 regimes into one program.
            4. Add Preprocessing

            Alternative 23: 38.0% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2}\\ \mathbf{if}\;\phi_2 \leq -4.4 \cdot 10^{-140}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 45000:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
            (FPCore (lambda1 lambda2 phi1 phi2)
             :precision binary64
             (let* ((t_0 (atan2 (* (sin lambda1) (cos phi2)) (sin phi2))))
               (if (<= phi2 -4.4e-140)
                 t_0
                 (if (<= phi2 45000.0) (atan2 (sin (- lambda1 lambda2)) (sin phi2)) t_0))))
            double code(double lambda1, double lambda2, double phi1, double phi2) {
            	double t_0 = atan2((sin(lambda1) * cos(phi2)), sin(phi2));
            	double tmp;
            	if (phi2 <= -4.4e-140) {
            		tmp = t_0;
            	} else if (phi2 <= 45000.0) {
            		tmp = atan2(sin((lambda1 - lambda2)), sin(phi2));
            	} else {
            		tmp = t_0;
            	}
            	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
                real(8) :: t_0
                real(8) :: tmp
                t_0 = atan2((sin(lambda1) * cos(phi2)), sin(phi2))
                if (phi2 <= (-4.4d-140)) then
                    tmp = t_0
                else if (phi2 <= 45000.0d0) then
                    tmp = atan2(sin((lambda1 - lambda2)), sin(phi2))
                else
                    tmp = t_0
                end if
                code = tmp
            end function
            
            public static double code(double lambda1, double lambda2, double phi1, double phi2) {
            	double t_0 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), Math.sin(phi2));
            	double tmp;
            	if (phi2 <= -4.4e-140) {
            		tmp = t_0;
            	} else if (phi2 <= 45000.0) {
            		tmp = Math.atan2(Math.sin((lambda1 - lambda2)), Math.sin(phi2));
            	} else {
            		tmp = t_0;
            	}
            	return tmp;
            }
            
            def code(lambda1, lambda2, phi1, phi2):
            	t_0 = math.atan2((math.sin(lambda1) * math.cos(phi2)), math.sin(phi2))
            	tmp = 0
            	if phi2 <= -4.4e-140:
            		tmp = t_0
            	elif phi2 <= 45000.0:
            		tmp = math.atan2(math.sin((lambda1 - lambda2)), math.sin(phi2))
            	else:
            		tmp = t_0
            	return tmp
            
            function code(lambda1, lambda2, phi1, phi2)
            	t_0 = atan(Float64(sin(lambda1) * cos(phi2)), sin(phi2))
            	tmp = 0.0
            	if (phi2 <= -4.4e-140)
            		tmp = t_0;
            	elseif (phi2 <= 45000.0)
            		tmp = atan(sin(Float64(lambda1 - lambda2)), sin(phi2));
            	else
            		tmp = t_0;
            	end
            	return tmp
            end
            
            function tmp_2 = code(lambda1, lambda2, phi1, phi2)
            	t_0 = atan2((sin(lambda1) * cos(phi2)), sin(phi2));
            	tmp = 0.0;
            	if (phi2 <= -4.4e-140)
            		tmp = t_0;
            	elseif (phi2 <= 45000.0)
            		tmp = atan2(sin((lambda1 - lambda2)), sin(phi2));
            	else
            		tmp = t_0;
            	end
            	tmp_2 = tmp;
            end
            
            code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi2, -4.4e-140], t$95$0, If[LessEqual[phi2, 45000.0], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            t_0 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\sin \phi_2}\\
            \mathbf{if}\;\phi_2 \leq -4.4 \cdot 10^{-140}:\\
            \;\;\;\;t\_0\\
            
            \mathbf{elif}\;\phi_2 \leq 45000:\\
            \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2}\\
            
            \mathbf{else}:\\
            \;\;\;\;t\_0\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if phi2 < -4.3999999999999998e-140 or 45000 < phi2

              1. Initial program 82.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. Add Preprocessing
              3. Step-by-step derivation
                1. lift-*.f64N/A

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
                3. associate-*l*N/A

                  \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
                5. lift-cos.f64N/A

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

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
                8. associate-*l/N/A

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

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              6. Step-by-step derivation
                1. lower-sin.f6446.7

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              7. Applied rewrites46.7%

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

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]
              9. Step-by-step derivation
                1. lower-sin.f6434.5

                  \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]
              10. Applied rewrites34.5%

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1} \cdot \cos \phi_2}{\sin \phi_2} \]

              if -4.3999999999999998e-140 < phi2 < 45000

              1. Initial program 85.9%

                \[\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. Add Preprocessing
              3. Step-by-step derivation
                1. lift-*.f64N/A

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
                3. associate-*l*N/A

                  \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
                5. lift-cos.f64N/A

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

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

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
                8. associate-*l/N/A

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

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              6. Step-by-step derivation
                1. lower-sin.f6447.8

                  \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
              7. Applied rewrites47.8%

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

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
              9. Step-by-step derivation
                1. lower-sin.f64N/A

                  \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
                2. lower--.f6447.8

                  \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
              10. Applied rewrites47.8%

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
            3. Recombined 2 regimes into one program.
            4. Add Preprocessing

            Alternative 24: 49.0% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2} \end{array} \]
            (FPCore (lambda1 lambda2 phi1 phi2)
             :precision binary64
             (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (sin phi2)))
            double code(double lambda1, double lambda2, double phi1, double phi2) {
            	return atan2((sin((lambda1 - lambda2)) * cos(phi2)), sin(phi2));
            }
            
            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)), sin(phi2))
            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.sin(phi2));
            }
            
            def code(lambda1, lambda2, phi1, phi2):
            	return math.atan2((math.sin((lambda1 - lambda2)) * math.cos(phi2)), math.sin(phi2))
            
            function code(lambda1, lambda2, phi1, phi2)
            	return atan(Float64(sin(Float64(lambda1 - lambda2)) * cos(phi2)), sin(phi2))
            end
            
            function tmp = code(lambda1, lambda2, phi1, phi2)
            	tmp = atan2((sin((lambda1 - lambda2)) * cos(phi2)), sin(phi2));
            end
            
            code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}
            \end{array}
            
            Derivation
            1. Initial program 84.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)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-*.f64N/A

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
              3. associate-*l*N/A

                \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
              4. *-commutativeN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
              5. lift-cos.f64N/A

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
              8. associate-*l/N/A

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

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

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
            6. Step-by-step derivation
              1. lower-sin.f6447.2

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
            7. Applied rewrites47.2%

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

            Alternative 25: 31.9% accurate, 2.7× speedup?

            \[\begin{array}{l} \\ \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2} \end{array} \]
            (FPCore (lambda1 lambda2 phi1 phi2)
             :precision binary64
             (atan2 (sin (- lambda1 lambda2)) (sin phi2)))
            double code(double lambda1, double lambda2, double phi1, double phi2) {
            	return atan2(sin((lambda1 - lambda2)), sin(phi2));
            }
            
            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)), sin(phi2))
            end function
            
            public static double code(double lambda1, double lambda2, double phi1, double phi2) {
            	return Math.atan2(Math.sin((lambda1 - lambda2)), Math.sin(phi2));
            }
            
            def code(lambda1, lambda2, phi1, phi2):
            	return math.atan2(math.sin((lambda1 - lambda2)), math.sin(phi2))
            
            function code(lambda1, lambda2, phi1, phi2)
            	return atan(sin(Float64(lambda1 - lambda2)), sin(phi2))
            end
            
            function tmp = code(lambda1, lambda2, phi1, phi2)
            	tmp = atan2(sin((lambda1 - lambda2)), sin(phi2));
            end
            
            code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2}
            \end{array}
            
            Derivation
            1. Initial program 84.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)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-*.f64N/A

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\sin \phi_1 \cdot \cos \phi_2\right)} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
              3. associate-*l*N/A

                \[\leadsto \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 \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}} \]
              4. *-commutativeN/A

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\left(\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot \sin \phi_1}} \]
              5. lift-cos.f64N/A

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

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

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\frac{\cos \left(\phi_2 + \left(\lambda_1 - \lambda_2\right)\right) + \cos \left(\phi_2 - \left(\lambda_1 - \lambda_2\right)\right)}{2}} \cdot \sin \phi_1} \]
              8. associate-*l/N/A

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

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

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

              \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
            6. Step-by-step derivation
              1. lower-sin.f6447.2

                \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
            7. Applied rewrites47.2%

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

              \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
            9. Step-by-step derivation
              1. lower-sin.f64N/A

                \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
              2. lower--.f6431.5

                \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
            10. Applied rewrites31.5%

              \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\lambda_1 - \lambda_2\right)}}{\sin \phi_2} \]
            11. Add Preprocessing

            Reproduce

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