Bearing on a great circle

Percentage Accurate: 79.2% → 99.7%
Time: 31.6s
Alternatives: 39
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 39 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.2% 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.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 2: 99.7% accurate, 0.5× speedup?

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

\\
\begin{array}{l}
t_0 := \cos \phi_2 \cdot \sin \phi_1\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \mathsf{fma}\left(t\_0, \cos \lambda_2 \cdot \cos \lambda_1, \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot t\_0\right)}
\end{array}
\end{array}
Derivation
  1. Initial program 80.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. 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)} \]
    2. lower--.f64N/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)} \]
    3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
    6. lower-*.f64N/A

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

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

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
  4. Applied egg-rr89.7%

    \[\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)} \]
  5. Step-by-step derivation
    1. lift-sin.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\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 - \mathsf{fma}\left(\cos \phi_2 \cdot \sin \phi_1, \cos \lambda_2 \cdot \cos \lambda_1, \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \color{blue}{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}\right)} \]
  6. Applied egg-rr99.8%

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

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

Alternative 3: 99.7% accurate, 0.6× speedup?

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

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \mathsf{fma}\left(\sin \lambda_2, \sin \lambda_1, \cos \lambda_2 \cdot \cos \lambda_1\right)}
\end{array}
Derivation
  1. Initial program 80.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. 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)} \]
    2. lower--.f64N/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)} \]
    3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
    6. lower-*.f64N/A

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

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

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
  4. Applied egg-rr89.7%

    \[\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)} \]
  5. Step-by-step derivation
    1. cos-diffN/A

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 4: 99.7% accurate, 0.6× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 5: 93.0% accurate, 0.6× speedup?

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

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

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_1}{\mathsf{fma}\left(t\_2, -t\_3, t\_0\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi2 < -1.8500000000000001e-6

    1. Initial program 80.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr89.0%

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

    if -1.8500000000000001e-6 < phi2 < 1.41999999999999999e53

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr90.7%

      \[\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)} \]
    5. Step-by-step derivation
      1. lift-sin.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 1.41999999999999999e53 < phi2

    1. Initial program 69.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr88.0%

      \[\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)} \]
    5. Step-by-step derivation
      1. lift-cos.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\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)} \]
      2. lift-sin.f64N/A

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

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

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

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\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}} \]
      12. lift-*.f64N/A

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

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

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

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

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

Alternative 6: 88.8% accurate, 0.7× speedup?

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

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

\mathbf{elif}\;\lambda_2 \leq 5 \cdot 10^{-23}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 + \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{-1}{t\_1}}}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if lambda2 < -3100

    1. Initial program 55.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr74.0%

      \[\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)} \]
    5. Taylor expanded in lambda1 around 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -3100 < lambda2 < 5.0000000000000002e-23

    1. Initial program 99.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. sin-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{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}} \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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      3. 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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      4. 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(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}{2}}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right)}}{2}} \]
      6. associate-*r/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}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}} \]
      7. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{1}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      8. un-div-invN/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(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      10. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\frac{1}{\frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}}}} \]
      11. sin-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      12. lift-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1} \cdot \cos \phi_2}}} \]
      13. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\sin \phi_1 \cdot \color{blue}{\cos \phi_2}}}} \]
      14. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      15. lower-/.f6499.8

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
    4. Applied egg-rr99.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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\cos \phi_2 \cdot \sin \phi_1}}}} \]

    if 5.0000000000000002e-23 < lambda2

    1. Initial program 58.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 7: 88.8% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\mathsf{fma}\left(\cos \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \left(-\sin \phi_1\right)\right)\right)}\\ \mathbf{if}\;\lambda_2 \leq -3100:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\lambda_2 \leq 5 \cdot 10^{-23}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 + \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{-1}{\cos \phi_2 \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)
           (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
          (fma
           (cos phi1)
           (sin phi2)
           (* (cos phi2) (* (cos lambda2) (- (sin phi1))))))))
   (if (<= lambda2 -3100.0)
     t_0
     (if (<= lambda2 5e-23)
       (atan2
        (* (cos phi2) (sin (- lambda1 lambda2)))
        (+
         (* (cos phi1) (sin phi2))
         (/ (cos (- lambda1 lambda2)) (/ -1.0 (* (cos phi2) (sin phi1))))))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), fma(cos(phi1), sin(phi2), (cos(phi2) * (cos(lambda2) * -sin(phi1)))));
	double tmp;
	if (lambda2 <= -3100.0) {
		tmp = t_0;
	} else if (lambda2 <= 5e-23) {
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) + (cos((lambda1 - lambda2)) / (-1.0 / (cos(phi2) * sin(phi1))))));
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), fma(cos(phi1), sin(phi2), Float64(cos(phi2) * Float64(cos(lambda2) * Float64(-sin(phi1))))))
	tmp = 0.0
	if (lambda2 <= -3100.0)
		tmp = t_0;
	elseif (lambda2 <= 5e-23)
		tmp = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(Float64(cos(phi1) * sin(phi2)) + Float64(cos(Float64(lambda1 - lambda2)) / Float64(-1.0 / Float64(cos(phi2) * 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[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[(N[Cos[lambda2], $MachinePrecision] * (-N[Sin[phi1], $MachinePrecision])), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda2, -3100.0], t$95$0, If[LessEqual[lambda2, 5e-23], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] + N[(N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(-1.0 / N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda2 < -3100 or 5.0000000000000002e-23 < lambda2

    1. Initial program 57.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr77.6%

      \[\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)} \]
    5. Taylor expanded in lambda1 around 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -3100 < lambda2 < 5.0000000000000002e-23

    1. Initial program 99.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. sin-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{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}} \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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      3. 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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      4. 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(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}{2}}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right)}}{2}} \]
      6. associate-*r/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}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}} \]
      7. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{1}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      8. un-div-invN/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(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      10. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\frac{1}{\frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}}}} \]
      11. sin-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      12. lift-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1} \cdot \cos \phi_2}}} \]
      13. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\sin \phi_1 \cdot \color{blue}{\cos \phi_2}}}} \]
      14. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      15. lower-/.f6499.8

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
    4. Applied egg-rr99.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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification89.8%

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

Alternative 8: 88.9% accurate, 0.7× speedup?

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -0.320000000000000007 or 3.4e-16 < lambda1

    1. Initial program 60.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\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 \color{blue}{\cos \lambda_1}} \]
    6. Step-by-step derivation
      1. lower-cos.f6479.8

        \[\leadsto \tan^{-1}_* \frac{\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 \color{blue}{\cos \lambda_1}} \]
    7. Simplified79.8%

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

    if -0.320000000000000007 < lambda1 < 3.4e-16

    1. Initial program 98.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 \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\frac{-1}{2} \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{6} \cdot \left(\lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\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 \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\frac{-1}{2} \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{6} \cdot \left(\lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\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. sin-negN/A

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\lambda_1 \cdot \mathsf{fma}\left(\mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.16666666666666666, 1\right), \cos \lambda_2, \lambda_1 \cdot \left(\sin \lambda_2 \cdot 0.5\right)\right) - \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 lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\lambda_1 \cdot \left(1 + \frac{-1}{6} \cdot {\lambda_1}^{2}\right)} - \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)} \]
    7. Step-by-step derivation
      1. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\lambda_1 \cdot \color{blue}{\mathsf{fma}\left(\frac{-1}{6}, {\lambda_1}^{2}, 1\right)} - \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. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\left(\lambda_1 \cdot \mathsf{fma}\left(\frac{-1}{6}, \color{blue}{\lambda_1 \cdot \lambda_1}, 1\right) - \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. lower-*.f6498.6

        \[\leadsto \tan^{-1}_* \frac{\left(\lambda_1 \cdot \mathsf{fma}\left(-0.16666666666666666, \color{blue}{\lambda_1 \cdot \lambda_1}, 1\right) - \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. Simplified98.6%

      \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\lambda_1 \cdot \mathsf{fma}\left(-0.16666666666666666, \lambda_1 \cdot \lambda_1, 1\right)} - \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)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification89.7%

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

Alternative 9: 89.2% accurate, 0.7× speedup?

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

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\mathsf{fma}\left(\cos \phi_2 \cdot \sin \phi_1, -\cos \left(\lambda_1 - \lambda_2\right), \cos \phi_1 \cdot \sin \phi_2\right)}
\end{array}
Derivation
  1. Initial program 80.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. 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)} \]
    2. lower--.f64N/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)} \]
    3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
    6. lower-*.f64N/A

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

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

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
  4. Applied egg-rr89.7%

    \[\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)} \]
  5. Step-by-step derivation
    1. lift-cos.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\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)} \]
    2. lift-sin.f64N/A

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

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

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

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

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

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\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}} \]
    12. lift-*.f64N/A

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

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

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

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

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

Alternative 10: 89.2% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (*
   (cos phi2)
   (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
  (-
   (* (cos phi1) (sin phi2))
   (* (* (cos phi2) (sin phi1)) (cos (- lambda1 lambda2))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * 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((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))))
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return Math.atan2((Math.cos(phi2) * ((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2)))), ((Math.cos(phi1) * Math.sin(phi2)) - ((Math.cos(phi2) * Math.sin(phi1)) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return math.atan2((math.cos(phi2) * ((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2)))), ((math.cos(phi1) * math.sin(phi2)) - ((math.cos(phi2) * math.sin(phi1)) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(Float64(cos(phi2) * sin(phi1)) * cos(Float64(lambda1 - lambda2)))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\end{array}
Derivation
  1. Initial program 80.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. 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)} \]
    2. lower--.f64N/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)} \]
    3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
    6. lower-*.f64N/A

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

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

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
  4. Applied egg-rr89.7%

    \[\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)} \]
  5. Final simplification89.7%

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

Alternative 11: 87.5% accurate, 0.8× speedup?

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

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

\mathbf{elif}\;\phi_1 \leq 9500000000:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - t\_2\right)}{\sin \phi_2 - t\_0}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{1}{\frac{1}{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}}}{t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -0.104999999999999996

    1. Initial program 71.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. Step-by-step derivation
      1. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr75.1%

      \[\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)} \]
    5. Taylor expanded in lambda2 around 0

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

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

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

    if -0.104999999999999996 < phi1 < 9.5e9

    1. Initial program 82.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr97.8%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\color{blue}{\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.f6497.8

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

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

    if 9.5e9 < phi1

    1. Initial program 88.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 \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)} \]
      2. sin-cos-multN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)}{2}}}{\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. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. lower-/.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. clear-numN/A

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\frac{1}{\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)} \]
      10. lower-/.f6488.3

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\color{blue}{\frac{1}{\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)} \]
    4. Applied egg-rr88.3%

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

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

Alternative 12: 87.7% accurate, 0.8× speedup?

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

\\
\begin{array}{l}
t_0 := \cos \phi_2 \cdot \sin \phi_1\\
t_1 := \cos \phi_1 \cdot \sin \phi_2 - t\_0 \cdot \cos \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -7.4 \cdot 10^{-6}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{t\_1}\\

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{1}{\frac{1}{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}}}{t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -7.4000000000000003e-6

    1. Initial program 71.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. Step-by-step derivation
      1. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr75.1%

      \[\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)} \]
    5. Taylor expanded in lambda2 around 0

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

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

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

    if -7.4000000000000003e-6 < phi1 < 2.40000000000000006e-4

    1. Initial program 83.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 2.40000000000000006e-4 < phi1

    1. Initial program 86.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{\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)} \]
      2. sin-cos-multN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)}{2}}}{\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. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. lower-/.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. clear-numN/A

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\frac{1}{\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)} \]
      10. lower-/.f6486.6

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\color{blue}{\frac{1}{\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)} \]
    4. Applied egg-rr86.6%

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

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

Alternative 13: 87.4% accurate, 0.8× speedup?

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

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

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{1}{\frac{1}{t\_3}}}{t\_0 - t\_2 \cdot t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -1.1e-5

    1. Initial program 71.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. Step-by-step derivation
      1. sin-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{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}} \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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      3. 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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      4. 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(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}{2}}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right)}}{2}} \]
      6. associate-*r/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}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}} \]
      7. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{1}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      8. un-div-invN/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(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      10. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\frac{1}{\frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}}}} \]
      11. sin-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      12. lift-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1} \cdot \cos \phi_2}}} \]
      13. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\sin \phi_1 \cdot \color{blue}{\cos \phi_2}}}} \]
      14. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      15. lower-/.f6471.1

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
    4. Applied egg-rr71.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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\cos \phi_2 \cdot \sin \phi_1}}}} \]

    if -1.1e-5 < phi1 < 2.40000000000000006e-4

    1. Initial program 83.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 2.40000000000000006e-4 < phi1

    1. Initial program 86.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{\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)} \]
      2. sin-cos-multN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)}{2}}}{\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. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. lower-/.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. clear-numN/A

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\frac{1}{\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)} \]
      10. lower-/.f6486.6

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\color{blue}{\frac{1}{\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)} \]
    4. Applied egg-rr86.6%

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

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

Alternative 14: 86.0% accurate, 1.0× speedup?

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

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

\mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\frac{1}{\frac{1}{t\_3}}}{t\_0 - t\_2 \cdot t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -2.79999999999999995e-22

    1. Initial program 71.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. sin-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{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}} \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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      3. 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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      4. 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(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}{2}}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right)}}{2}} \]
      6. associate-*r/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}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}} \]
      7. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{1}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      8. un-div-invN/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(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      10. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\frac{1}{\frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}}}} \]
      11. sin-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      12. lift-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1} \cdot \cos \phi_2}}} \]
      13. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\sin \phi_1 \cdot \color{blue}{\cos \phi_2}}}} \]
      14. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      15. lower-/.f6471.3

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
    4. Applied egg-rr71.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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\cos \phi_2 \cdot \sin \phi_1}}}} \]

    if -2.79999999999999995e-22 < phi1 < 9.79999999999999976e-43

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if 9.79999999999999976e-43 < phi1

    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 \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)} \]
      2. sin-cos-multN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_2\right)}{2}}}{\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. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. lower-/.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\frac{1}{\frac{2}{\sin \left(\left(\lambda_1 - \lambda_2\right) - \phi_2\right) + \sin \left(\left(\lambda_1 - \lambda_2\right) + \phi_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. clear-numN/A

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\frac{1}{\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)} \]
      10. lower-/.f6485.2

        \[\leadsto \tan^{-1}_* \frac{\frac{1}{\color{blue}{\frac{1}{\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)} \]
    4. Applied egg-rr85.2%

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

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

Alternative 15: 86.0% accurate, 1.0× speedup?

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

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

\mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_3}{t\_0 - t\_2 \cdot t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -2.79999999999999995e-22

    1. Initial program 71.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. sin-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{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}} \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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      3. 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 - \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2} \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      4. 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(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}{2}}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\color{blue}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)\right)}}{2}} \]
      6. associate-*r/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}{\cos \left(\lambda_1 - \lambda_2\right) \cdot \frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}} \]
      7. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{1}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      8. un-div-invN/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(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{2}{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}}}} \]
      10. clear-numN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\frac{1}{\frac{\sin \left(\phi_1 - \phi_2\right) + \sin \left(\phi_1 + \phi_2\right)}{2}}}}} \]
      11. sin-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      12. lift-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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1} \cdot \cos \phi_2}}} \]
      13. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\sin \phi_1 \cdot \color{blue}{\cos \phi_2}}}} \]
      14. 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 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\sin \phi_1 \cdot \cos \phi_2}}}} \]
      15. lower-/.f6471.3

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\color{blue}{\cos \phi_2 \cdot \sin \phi_1}}}} \]
    4. Applied egg-rr71.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{\cos \left(\lambda_1 - \lambda_2\right)}{\frac{1}{\cos \phi_2 \cdot \sin \phi_1}}}} \]

    if -2.79999999999999995e-22 < phi1 < 9.79999999999999976e-43

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if 9.79999999999999976e-43 < phi1

    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. Recombined 3 regimes into one program.
  4. Final simplification86.9%

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

Alternative 16: 70.5% accurate, 1.0× speedup?

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

\\
\begin{array}{l}
t_0 := \cos \phi_1 \cdot \sin \phi_2\\
t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\
\mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{elif}\;\lambda_1 \leq -4.4 \cdot 10^{-248}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if lambda1 < -1.14999999999999998e226 or 3.50000000000000017e-16 < lambda1

    1. Initial program 68.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\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 \lambda_1} \]
    10. Simplified71.5%

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

    if -1.14999999999999998e226 < lambda1 < -4.60000000000000024e39

    1. Initial program 34.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr66.2%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if -4.60000000000000024e39 < lambda1 < -4.39999999999999999e-248

    1. Initial program 96.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 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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6488.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified88.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]

    if -4.39999999999999999e-248 < lambda1 < 3.50000000000000017e-16

    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{\color{blue}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6486.8

        \[\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. Simplified86.8%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\ \mathbf{elif}\;\lambda_1 \leq -4.4 \cdot 10^{-248}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 3.5 \cdot 10^{-16}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\cos \lambda_2 \cdot \left(-\cos \phi_2\right), \sin \phi_1, \cos \phi_1 \cdot \sin \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 17: 70.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \cos \phi_2 \cdot \sin \phi_1\\ t_1 := \cos \phi_1 \cdot \sin \phi_2\\ t_2 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \cos \lambda_1 \cdot t\_0}\\ \mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\ \mathbf{elif}\;\lambda_1 \leq -4.4 \cdot 10^{-248}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_1 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 3.5 \cdot 10^{-16}:\\ \;\;\;\;\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 (* (cos phi2) (sin phi1)))
        (t_1 (* (cos phi1) (sin phi2)))
        (t_2
         (atan2 (* (sin lambda1) (cos phi2)) (- t_1 (* (cos lambda1) t_0)))))
   (if (<= lambda1 -1.15e+226)
     t_2
     (if (<= lambda1 -4.6e+39)
       (atan2
        (*
         (cos phi2)
         (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
        (sin phi2))
       (if (<= lambda1 -4.4e-248)
         (atan2
          (* (cos phi2) (sin (- lambda1 lambda2)))
          (- t_1 (* (sin phi1) (cos (- lambda1 lambda2)))))
         (if (<= lambda1 3.5e-16)
           (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 = cos(phi2) * sin(phi1);
	double t_1 = cos(phi1) * sin(phi2);
	double t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos(lambda1) * t_0)));
	double tmp;
	if (lambda1 <= -1.15e+226) {
		tmp = t_2;
	} else if (lambda1 <= -4.6e+39) {
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), sin(phi2));
	} else if (lambda1 <= -4.4e-248) {
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 - (sin(phi1) * cos((lambda1 - lambda2)))));
	} else if (lambda1 <= 3.5e-16) {
		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 = cos(phi2) * sin(phi1)
    t_1 = cos(phi1) * sin(phi2)
    t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos(lambda1) * t_0)))
    if (lambda1 <= (-1.15d+226)) then
        tmp = t_2
    else if (lambda1 <= (-4.6d+39)) then
        tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), sin(phi2))
    else if (lambda1 <= (-4.4d-248)) then
        tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 - (sin(phi1) * cos((lambda1 - lambda2)))))
    else if (lambda1 <= 3.5d-16) 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.cos(phi2) * Math.sin(phi1);
	double t_1 = Math.cos(phi1) * Math.sin(phi2);
	double t_2 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_1 - (Math.cos(lambda1) * t_0)));
	double tmp;
	if (lambda1 <= -1.15e+226) {
		tmp = t_2;
	} else if (lambda1 <= -4.6e+39) {
		tmp = Math.atan2((Math.cos(phi2) * ((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2)))), Math.sin(phi2));
	} else if (lambda1 <= -4.4e-248) {
		tmp = Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (t_1 - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
	} else if (lambda1 <= 3.5e-16) {
		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.cos(phi2) * math.sin(phi1)
	t_1 = math.cos(phi1) * math.sin(phi2)
	t_2 = math.atan2((math.sin(lambda1) * math.cos(phi2)), (t_1 - (math.cos(lambda1) * t_0)))
	tmp = 0
	if lambda1 <= -1.15e+226:
		tmp = t_2
	elif lambda1 <= -4.6e+39:
		tmp = math.atan2((math.cos(phi2) * ((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2)))), math.sin(phi2))
	elif lambda1 <= -4.4e-248:
		tmp = math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (t_1 - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
	elif lambda1 <= 3.5e-16:
		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(cos(phi2) * sin(phi1))
	t_1 = Float64(cos(phi1) * sin(phi2))
	t_2 = atan(Float64(sin(lambda1) * cos(phi2)), Float64(t_1 - Float64(cos(lambda1) * t_0)))
	tmp = 0.0
	if (lambda1 <= -1.15e+226)
		tmp = t_2;
	elseif (lambda1 <= -4.6e+39)
		tmp = atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), sin(phi2));
	elseif (lambda1 <= -4.4e-248)
		tmp = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(t_1 - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))));
	elseif (lambda1 <= 3.5e-16)
		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 = cos(phi2) * sin(phi1);
	t_1 = cos(phi1) * sin(phi2);
	t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - (cos(lambda1) * t_0)));
	tmp = 0.0;
	if (lambda1 <= -1.15e+226)
		tmp = t_2;
	elseif (lambda1 <= -4.6e+39)
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), sin(phi2));
	elseif (lambda1 <= -4.4e-248)
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 - (sin(phi1) * cos((lambda1 - lambda2)))));
	elseif (lambda1 <= 3.5e-16)
		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[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $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[lambda1], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -1.15e+226], t$95$2, If[LessEqual[lambda1, -4.6e+39], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], If[LessEqual[lambda1, -4.4e-248], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[lambda1, 3.5e-16], 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 := \cos \phi_2 \cdot \sin \phi_1\\
t_1 := \cos \phi_1 \cdot \sin \phi_2\\
t_2 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \cos \lambda_1 \cdot t\_0}\\
\mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\
\;\;\;\;t\_2\\

\mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{elif}\;\lambda_1 \leq -4.4 \cdot 10^{-248}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_1 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\

\mathbf{elif}\;\lambda_1 \leq 3.5 \cdot 10^{-16}:\\
\;\;\;\;\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 4 regimes
  2. if lambda1 < -1.14999999999999998e226 or 3.50000000000000017e-16 < lambda1

    1. Initial program 68.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\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 \lambda_1} \]
    10. Simplified71.5%

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

    if -1.14999999999999998e226 < lambda1 < -4.60000000000000024e39

    1. Initial program 34.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr66.2%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if -4.60000000000000024e39 < lambda1 < -4.39999999999999999e-248

    1. Initial program 96.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 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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6488.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified88.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]

    if -4.39999999999999999e-248 < lambda1 < 3.50000000000000017e-16

    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{\color{blue}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6486.8

        \[\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. Simplified86.8%

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \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 \color{blue}{\cos \lambda_2}} \]
      2. lower-cos.f6486.8

        \[\leadsto \tan^{-1}_* \frac{\sin \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 \color{blue}{\cos \lambda_2}} \]
    8. Simplified86.8%

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\ \mathbf{elif}\;\lambda_1 \leq -4.4 \cdot 10^{-248}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{elif}\;\lambda_1 \leq 3.5 \cdot 10^{-16}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_2 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 18: 78.6% accurate, 1.0× speedup?

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

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

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

\mathbf{elif}\;\lambda_1 \leq 3.9 \cdot 10^{-16}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \cos \lambda_2 \cdot t\_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \cos \lambda_1 \cdot t\_2}\\


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if lambda1 < -1.2e226

    1. Initial program 87.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -1.2e226 < lambda1 < -1.05e9

    1. Initial program 41.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. Step-by-step derivation
      1. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr69.7%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if -1.05e9 < lambda1 < 3.89999999999999977e-16

    1. Initial program 98.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.f6498.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. Simplified98.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}} \]

    if 3.89999999999999977e-16 < lambda1

    1. Initial program 64.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \lambda_1, \cos \lambda_2, \cos \lambda_1 \cdot \sin \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 \color{blue}{\cos \lambda_1}} \]
    8. 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 \lambda_1} \]
    9. Step-by-step derivation
      1. lower-sin.f6468.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 \lambda_1} \]
    10. Simplified68.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 \lambda_1} \]
  3. Recombined 4 regimes into one program.
  4. Final simplification83.8%

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

Alternative 19: 70.2% accurate, 1.0× speedup?

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

\\
\begin{array}{l}
t_0 := \cos \phi_1 \cdot \sin \phi_2\\
t_1 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\
\mathbf{if}\;\lambda_1 \leq -1.15 \cdot 10^{+226}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;\lambda_1 \leq -4.6 \cdot 10^{+39}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{elif}\;\lambda_1 \leq 0.32:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if lambda1 < -1.14999999999999998e226 or 0.320000000000000007 < lambda1

    1. Initial program 68.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\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 \lambda_1} \]
    10. Simplified71.7%

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

    if -1.14999999999999998e226 < lambda1 < -4.60000000000000024e39

    1. Initial program 34.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr66.2%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if -4.60000000000000024e39 < lambda1 < 0.320000000000000007

    1. Initial program 98.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{\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. Step-by-step derivation
      1. lower-sin.f6483.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified83.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification76.7%

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

Alternative 20: 86.1% accurate, 1.0× speedup?

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

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

\mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_2}{t\_1 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot t\_0}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi1 < -2.79999999999999995e-22

    1. Initial program 71.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 \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)} \]
      2. 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)} \]
      3. lift-cos.f64N/A

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\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)} \]
      6. lift-sin.f64N/A

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\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)} \]
      8. lift-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 \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      9. 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(\sin \phi_1 \cdot \color{blue}{\cos \phi_2}\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      10. 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 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 - \lambda_2\right)}} \]
      11. 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(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\cos \left(\lambda_1 - \lambda_2\right)}} \]
      12. 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)} \]
      13. 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)}} \]
      14. lift--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\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)}} \]
    4. Applied egg-rr71.3%

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

    if -2.79999999999999995e-22 < phi1 < 9.79999999999999976e-43

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

    if 9.79999999999999976e-43 < phi1

    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. Recombined 3 regimes into one program.
  4. Final simplification86.9%

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

Alternative 21: 86.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{if}\;\phi_1 \leq -2.8 \cdot 10^{-22}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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
          (* (cos phi2) (sin (- lambda1 lambda2)))
          (-
           (* (cos phi1) (sin phi2))
           (* (* (cos phi2) (sin phi1)) (cos (- lambda1 lambda2)))))))
   (if (<= phi1 -2.8e-22)
     t_0
     (if (<= phi1 9.8e-43)
       (atan2
        (*
         (cos phi2)
         (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
        (sin phi2))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -2.8e-22) {
		tmp = t_0;
	} else if (phi1 <= 9.8e-43) {
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))))
    if (phi1 <= (-2.8d-22)) then
        tmp = t_0
    else if (phi1 <= 9.8d-43) then
        tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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.cos(phi2) * Math.sin((lambda1 - lambda2))), ((Math.cos(phi1) * Math.sin(phi2)) - ((Math.cos(phi2) * Math.sin(phi1)) * Math.cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -2.8e-22) {
		tmp = t_0;
	} else if (phi1 <= 9.8e-43) {
		tmp = Math.atan2((Math.cos(phi2) * ((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2)))), Math.sin(phi2));
	} else {
		tmp = t_0;
	}
	return tmp;
}
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), ((math.cos(phi1) * math.sin(phi2)) - ((math.cos(phi2) * math.sin(phi1)) * math.cos((lambda1 - lambda2)))))
	tmp = 0
	if phi1 <= -2.8e-22:
		tmp = t_0
	elif phi1 <= 9.8e-43:
		tmp = math.atan2((math.cos(phi2) * ((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2)))), math.sin(phi2))
	else:
		tmp = t_0
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(Float64(cos(phi2) * sin(phi1)) * cos(Float64(lambda1 - lambda2)))))
	tmp = 0.0
	if (phi1 <= -2.8e-22)
		tmp = t_0;
	elseif (phi1 <= 9.8e-43)
		tmp = atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), sin(phi2));
	else
		tmp = t_0;
	end
	return tmp
end
function tmp_2 = code(lambda1, lambda2, phi1, phi2)
	t_0 = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
	tmp = 0.0;
	if (phi1 <= -2.8e-22)
		tmp = t_0;
	elseif (phi1 <= 9.8e-43)
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -2.8e-22], t$95$0, If[LessEqual[phi1, 9.8e-43], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\
\mathbf{if}\;\phi_1 \leq -2.8 \cdot 10^{-22}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi1 < -2.79999999999999995e-22 or 9.79999999999999976e-43 < phi1

    1. Initial program 77.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

    if -2.79999999999999995e-22 < phi1 < 9.79999999999999976e-43

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

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

Alternative 22: 79.2% accurate, 1.0× speedup?

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

\\
\begin{array}{l}
\mathbf{if}\;\lambda_2 \leq -0.00018:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\mathsf{fma}\left(\cos \phi_1, \sin \phi_2, \cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \left(-\sin \phi_1\right)\right)\right)}\\

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if lambda2 < -1.80000000000000011e-4

    1. Initial program 56.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}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6457.5

        \[\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. Simplified57.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -1.80000000000000011e-4 < lambda2 < 29500

    1. Initial program 99.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. 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)} \]
      2. 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)} \]
      3. lower-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 29500 < lambda2

    1. Initial program 56.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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr79.8%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

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

Alternative 23: 72.9% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{if}\;\phi_1 \leq -2.8 \cdot 10^{-22}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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
          (* (cos phi2) (sin (- lambda1 lambda2)))
          (-
           (* (cos phi1) (sin phi2))
           (* (sin phi1) (cos (- lambda1 lambda2)))))))
   (if (<= phi1 -2.8e-22)
     t_0
     (if (<= phi1 9.8e-43)
       (atan2
        (*
         (cos phi2)
         (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
        (sin phi2))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -2.8e-22) {
		tmp = t_0;
	} else if (phi1 <= 9.8e-43) {
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))))
    if (phi1 <= (-2.8d-22)) then
        tmp = t_0
    else if (phi1 <= 9.8d-43) then
        tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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.cos(phi2) * Math.sin((lambda1 - lambda2))), ((Math.cos(phi1) * Math.sin(phi2)) - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -2.8e-22) {
		tmp = t_0;
	} else if (phi1 <= 9.8e-43) {
		tmp = Math.atan2((Math.cos(phi2) * ((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2)))), Math.sin(phi2));
	} else {
		tmp = t_0;
	}
	return tmp;
}
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), ((math.cos(phi1) * math.sin(phi2)) - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
	tmp = 0
	if phi1 <= -2.8e-22:
		tmp = t_0
	elif phi1 <= 9.8e-43:
		tmp = math.atan2((math.cos(phi2) * ((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2)))), math.sin(phi2))
	else:
		tmp = t_0
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))))
	tmp = 0.0
	if (phi1 <= -2.8e-22)
		tmp = t_0;
	elseif (phi1 <= 9.8e-43)
		tmp = atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), sin(phi2));
	else
		tmp = t_0;
	end
	return tmp
end
function tmp_2 = code(lambda1, lambda2, phi1, phi2)
	t_0 = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	tmp = 0.0;
	if (phi1 <= -2.8e-22)
		tmp = t_0;
	elseif (phi1 <= 9.8e-43)
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -2.8e-22], t$95$0, If[LessEqual[phi1, 9.8e-43], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\
\mathbf{if}\;\phi_1 \leq -2.8 \cdot 10^{-22}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_1 \leq 9.8 \cdot 10^{-43}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\sin \phi_2}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi1 < -2.79999999999999995e-22 or 9.79999999999999976e-43 < phi1

    1. Initial program 77.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 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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6454.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified54.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]

    if -2.79999999999999995e-22 < phi1 < 9.79999999999999976e-43

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

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

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

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

Alternative 24: 69.2% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{if}\;\phi_1 \leq -3.6 \cdot 10^{+22}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_1 \leq 2.4 \cdot 10^{-42}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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 phi1) (sin phi2))
           (* (sin phi1) (cos (- lambda1 lambda2)))))))
   (if (<= phi1 -3.6e+22)
     t_0
     (if (<= phi1 2.4e-42)
       (atan2
        (*
         (cos phi2)
         (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2))))
        (sin phi2))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -3.6e+22) {
		tmp = t_0;
	} else if (phi1 <= 2.4e-42) {
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))))
    if (phi1 <= (-3.6d+22)) then
        tmp = t_0
    else if (phi1 <= 2.4d-42) then
        tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(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 - lambda2)), ((Math.cos(phi1) * Math.sin(phi2)) - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
	double tmp;
	if (phi1 <= -3.6e+22) {
		tmp = t_0;
	} else if (phi1 <= 2.4e-42) {
		tmp = Math.atan2((Math.cos(phi2) * ((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2)))), Math.sin(phi2));
	} else {
		tmp = t_0;
	}
	return tmp;
}
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.atan2(math.sin((lambda1 - lambda2)), ((math.cos(phi1) * math.sin(phi2)) - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
	tmp = 0
	if phi1 <= -3.6e+22:
		tmp = t_0
	elif phi1 <= 2.4e-42:
		tmp = math.atan2((math.cos(phi2) * ((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2)))), math.sin(phi2))
	else:
		tmp = t_0
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(sin(Float64(lambda1 - lambda2)), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))))
	tmp = 0.0
	if (phi1 <= -3.6e+22)
		tmp = t_0;
	elseif (phi1 <= 2.4e-42)
		tmp = atan(Float64(cos(phi2) * Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2)))), sin(phi2));
	else
		tmp = t_0;
	end
	return tmp
end
function tmp_2 = code(lambda1, lambda2, phi1, phi2)
	t_0 = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	tmp = 0.0;
	if (phi1 <= -3.6e+22)
		tmp = t_0;
	elseif (phi1 <= 2.4e-42)
		tmp = atan2((cos(phi2) * ((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2)))), sin(phi2));
	else
		tmp = t_0;
	end
	tmp_2 = tmp;
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi1, -3.6e+22], t$95$0, If[LessEqual[phi1, 2.4e-42], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[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)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\
\mathbf{if}\;\phi_1 \leq -3.6 \cdot 10^{+22}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_1 \leq 2.4 \cdot 10^{-42}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \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.6e22 or 2.40000000000000003e-42 < phi1

    1. Initial program 78.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 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--.f6451.5

        \[\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. Simplified51.5%

      \[\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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6451.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_1 - \lambda_2\right)} \]
    8. Simplified51.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_1 - \lambda_2\right)} \]

    if -3.6e22 < phi1 < 2.40000000000000003e-42

    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. 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)} \]
      2. lower--.f64N/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)} \]
      3. lower-*.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}{\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. lower-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}{\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{\left(\sin \lambda_1 \cdot \color{blue}{\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)} \]
      6. lower-*.f64N/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \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)} \]
    4. Applied egg-rr98.0%

      \[\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)} \]
    5. Taylor expanded in phi1 around 0

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

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

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

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

Alternative 25: 58.7% accurate, 1.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\lambda_1 \cdot \mathsf{fma}\left(\mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.16666666666666666, 1\right), \cos \lambda_2, \lambda_1 \cdot \left(\sin \lambda_2 \cdot 0.5\right)\right) - \sin \lambda_2\right)}{\sin \phi_2}\\ \mathbf{if}\;\phi_2 \leq -5.8 \cdot 10^{+14}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 0.0077:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (let* ((t_0
         (atan2
          (*
           (cos phi2)
           (-
            (*
             lambda1
             (fma
              (fma lambda1 (* lambda1 -0.16666666666666666) 1.0)
              (cos lambda2)
              (* lambda1 (* (sin lambda2) 0.5))))
            (sin lambda2)))
          (sin phi2))))
   (if (<= phi2 -5.8e+14)
     t_0
     (if (<= phi2 0.0077)
       (atan2
        (sin (- lambda1 lambda2))
        (- (* (cos phi1) (sin phi2)) (* (sin phi1) (cos (- lambda1 lambda2)))))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2((cos(phi2) * ((lambda1 * fma(fma(lambda1, (lambda1 * -0.16666666666666666), 1.0), cos(lambda2), (lambda1 * (sin(lambda2) * 0.5)))) - sin(lambda2))), sin(phi2));
	double tmp;
	if (phi2 <= -5.8e+14) {
		tmp = t_0;
	} else if (phi2 <= 0.0077) {
		tmp = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(Float64(cos(phi2) * Float64(Float64(lambda1 * fma(fma(lambda1, Float64(lambda1 * -0.16666666666666666), 1.0), cos(lambda2), Float64(lambda1 * Float64(sin(lambda2) * 0.5)))) - sin(lambda2))), sin(phi2))
	tmp = 0.0
	if (phi2 <= -5.8e+14)
		tmp = t_0;
	elseif (phi2 <= 0.0077)
		tmp = atan(sin(Float64(lambda1 - lambda2)), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))));
	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[(lambda1 * N[(N[(lambda1 * N[(lambda1 * -0.16666666666666666), $MachinePrecision] + 1.0), $MachinePrecision] * N[Cos[lambda2], $MachinePrecision] + N[(lambda1 * N[(N[Sin[lambda2], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi2, -5.8e+14], t$95$0, If[LessEqual[phi2, 0.0077], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\lambda_1 \cdot \mathsf{fma}\left(\mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.16666666666666666, 1\right), \cos \lambda_2, \lambda_1 \cdot \left(\sin \lambda_2 \cdot 0.5\right)\right) - \sin \lambda_2\right)}{\sin \phi_2}\\
\mathbf{if}\;\phi_2 \leq -5.8 \cdot 10^{+14}:\\
\;\;\;\;t\_0\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -5.8e14 or 0.0077000000000000002 < phi2

    1. Initial program 73.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{\color{blue}{\left(\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\frac{-1}{2} \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{6} \cdot \left(\lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\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 \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\frac{-1}{2} \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{6} \cdot \left(\lambda_1 \cdot \cos \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\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. sin-negN/A

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\lambda_1 \cdot \mathsf{fma}\left(\mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.16666666666666666, 1\right), \cos \lambda_2, \lambda_1 \cdot \left(\sin \lambda_2 \cdot 0.5\right)\right) - \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 phi1 around 0

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

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

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

    if -5.8e14 < phi2 < 0.0077000000000000002

    1. Initial program 86.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. 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--.f6484.1

        \[\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. Simplified84.1%

      \[\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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6484.3

        \[\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)} \]
    8. Simplified84.3%

      \[\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. Recombined 2 regimes into one program.
  4. Final simplification60.6%

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

Alternative 26: 54.5% accurate, 1.3× speedup?

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

\\
\begin{array}{l}
t_0 := \sin \left(-\lambda_2\right) \cdot \cos \phi_2\\
\mathbf{if}\;\phi_2 \leq -2.8 \cdot 10^{+62}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2}\\

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 - \left(\cos \phi_2 \cdot \phi_1\right) \cdot \cos \left(\lambda_2 - \lambda_1\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi2 < -2.80000000000000014e62

    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. Taylor expanded in lambda1 around 0

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

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

        \[\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. Simplified47.7%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6430.9

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

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

    if -2.80000000000000014e62 < phi2 < 3.7e15

    1. Initial program 83.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--.f6479.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. Simplified79.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6479.3

        \[\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)} \]
    8. Simplified79.3%

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

    if 3.7e15 < phi2

    1. Initial program 67.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{\color{blue}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6440.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 \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified40.4%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\sin \phi_2 - \left(\cos \phi_2 \cdot \phi_1\right) \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)} \]
      12. mul-1-negN/A

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

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

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

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

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

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

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

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

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

Alternative 27: 54.4% accurate, 1.3× speedup?

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

\\
\begin{array}{l}
t_0 := \sin \left(-\lambda_2\right) \cdot \cos \phi_2\\
\mathbf{if}\;\phi_2 \leq -2.8 \cdot 10^{+62}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2}\\

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_0}{\sin \phi_2 - \cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \phi_1\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if phi2 < -2.80000000000000014e62

    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. Taylor expanded in lambda1 around 0

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

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

        \[\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. Simplified47.7%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6430.9

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

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

    if -2.80000000000000014e62 < phi2 < 3.7e15

    1. Initial program 83.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--.f6479.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. Simplified79.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6479.3

        \[\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)} \]
    8. Simplified79.3%

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

    if 3.7e15 < phi2

    1. Initial program 67.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{\color{blue}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6440.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 \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified40.4%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 28: 54.7% accurate, 1.3× 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}\;\phi_2 \leq -2.8 \cdot 10^{+62}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 6.8 \cdot 10^{+14}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \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 (<= phi2 -2.8e+62)
     t_0
     (if (<= phi2 6.8e+14)
       (atan2
        (sin (- lambda1 lambda2))
        (- (* (cos phi1) (sin phi2)) (* (sin phi1) (cos (- lambda1 lambda2)))))
       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 (phi2 <= -2.8e+62) {
		tmp = t_0;
	} else if (phi2 <= 6.8e+14) {
		tmp = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	} 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 (phi2 <= (-2.8d+62)) then
        tmp = t_0
    else if (phi2 <= 6.8d+14) then
        tmp = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))))
    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 (phi2 <= -2.8e+62) {
		tmp = t_0;
	} else if (phi2 <= 6.8e+14) {
		tmp = Math.atan2(Math.sin((lambda1 - lambda2)), ((Math.cos(phi1) * Math.sin(phi2)) - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
	} 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 phi2 <= -2.8e+62:
		tmp = t_0
	elif phi2 <= 6.8e+14:
		tmp = math.atan2(math.sin((lambda1 - lambda2)), ((math.cos(phi1) * math.sin(phi2)) - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
	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 (phi2 <= -2.8e+62)
		tmp = t_0;
	elseif (phi2 <= 6.8e+14)
		tmp = atan(sin(Float64(lambda1 - lambda2)), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))));
	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 (phi2 <= -2.8e+62)
		tmp = t_0;
	elseif (phi2 <= 6.8e+14)
		tmp = atan2(sin((lambda1 - lambda2)), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
	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[phi2, -2.8e+62], t$95$0, If[LessEqual[phi2, 6.8e+14], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[(N[Cos[phi1], $MachinePrecision] * N[Sin[phi2], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $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}\;\phi_2 \leq -2.8 \cdot 10^{+62}:\\
\;\;\;\;t\_0\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -2.80000000000000014e62 or 6.8e14 < phi2

    1. Initial program 76.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. Taylor expanded in lambda1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6443.8

        \[\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. Simplified43.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6427.7

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

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

    if -2.80000000000000014e62 < phi2 < 6.8e14

    1. Initial program 83.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{\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--.f6479.4

        \[\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. Simplified79.4%

      \[\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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6479.7

        \[\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)} \]
    8. Simplified79.7%

      \[\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. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 29: 55.4% accurate, 1.6× 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}\;\phi_2 \leq -102:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 3.1 \cdot 10^{+14}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\cos \left(\lambda_2 - \lambda_1\right), -\sin \phi_1, \phi_2 \cdot \cos \phi_1\right)}\\ \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 (<= phi2 -102.0)
     t_0
     (if (<= phi2 3.1e+14)
       (atan2
        (sin (- lambda1 lambda2))
        (fma (cos (- lambda2 lambda1)) (- (sin phi1)) (* phi2 (cos phi1))))
       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 (phi2 <= -102.0) {
		tmp = t_0;
	} else if (phi2 <= 3.1e+14) {
		tmp = atan2(sin((lambda1 - lambda2)), fma(cos((lambda2 - lambda1)), -sin(phi1), (phi2 * cos(phi1))));
	} 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 (phi2 <= -102.0)
		tmp = t_0;
	elseif (phi2 <= 3.1e+14)
		tmp = atan(sin(Float64(lambda1 - lambda2)), fma(cos(Float64(lambda2 - lambda1)), Float64(-sin(phi1)), Float64(phi2 * cos(phi1))));
	else
		tmp = t_0;
	end
	return 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[phi2, -102.0], t$95$0, If[LessEqual[phi2, 3.1e+14], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * (-N[Sin[phi1], $MachinePrecision]) + N[(phi2 * N[Cos[phi1], $MachinePrecision]), $MachinePrecision]), $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}\;\phi_2 \leq -102:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_2 \leq 3.1 \cdot 10^{+14}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\cos \left(\lambda_2 - \lambda_1\right), -\sin \phi_1, \phi_2 \cdot \cos \phi_1\right)}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -102 or 3.1e14 < phi2

    1. Initial program 73.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{\color{blue}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6443.0

        \[\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. Simplified43.0%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

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

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

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

    if -102 < phi2 < 3.1e14

    1. Initial program 86.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. 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--.f6484.4

        \[\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. Simplified84.4%

      \[\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)}{\color{blue}{\phi_2 \cdot \cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1}} \]
    7. Step-by-step derivation
      1. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 30: 54.0% accurate, 1.9× 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}\;\phi_2 \leq -0.00062:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 7.2 \cdot 10^{-12}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{-\sin \phi_1 \cdot \cos \left(\lambda_2 - \lambda_1\right)}\\ \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 (<= phi2 -0.00062)
     t_0
     (if (<= phi2 7.2e-12)
       (atan2
        (sin (- lambda1 lambda2))
        (- (* (sin phi1) (cos (- lambda2 lambda1)))))
       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 (phi2 <= -0.00062) {
		tmp = t_0;
	} else if (phi2 <= 7.2e-12) {
		tmp = atan2(sin((lambda1 - lambda2)), -(sin(phi1) * cos((lambda2 - lambda1))));
	} 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 (phi2 <= (-0.00062d0)) then
        tmp = t_0
    else if (phi2 <= 7.2d-12) then
        tmp = atan2(sin((lambda1 - lambda2)), -(sin(phi1) * cos((lambda2 - lambda1))))
    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 (phi2 <= -0.00062) {
		tmp = t_0;
	} else if (phi2 <= 7.2e-12) {
		tmp = Math.atan2(Math.sin((lambda1 - lambda2)), -(Math.sin(phi1) * Math.cos((lambda2 - lambda1))));
	} 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 phi2 <= -0.00062:
		tmp = t_0
	elif phi2 <= 7.2e-12:
		tmp = math.atan2(math.sin((lambda1 - lambda2)), -(math.sin(phi1) * math.cos((lambda2 - lambda1))))
	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 (phi2 <= -0.00062)
		tmp = t_0;
	elseif (phi2 <= 7.2e-12)
		tmp = atan(sin(Float64(lambda1 - lambda2)), Float64(-Float64(sin(phi1) * cos(Float64(lambda2 - lambda1)))));
	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 (phi2 <= -0.00062)
		tmp = t_0;
	elseif (phi2 <= 7.2e-12)
		tmp = atan2(sin((lambda1 - lambda2)), -(sin(phi1) * cos((lambda2 - lambda1))));
	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[phi2, -0.00062], t$95$0, If[LessEqual[phi2, 7.2e-12], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / (-N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision]), $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}\;\phi_2 \leq -0.00062:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_2 \leq 7.2 \cdot 10^{-12}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{-\sin \phi_1 \cdot \cos \left(\lambda_2 - \lambda_1\right)}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -6.2e-4 or 7.2e-12 < phi2

    1. Initial program 75.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 lambda1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6442.8

        \[\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. Simplified42.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6426.9

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

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

    if -6.2e-4 < phi2 < 7.2e-12

    1. Initial program 85.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 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.4

        \[\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. Simplified85.4%

      \[\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)}{\color{blue}{-1 \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \sin \phi_1\right)}} \]
    7. Step-by-step derivation
      1. mul-1-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 31: 49.4% 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}\;\phi_2 \leq -0.00062:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 7.2 \cdot 10^{-12}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \lambda_2 \cdot \left(-\sin \phi_1\right)}\\ \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 (<= phi2 -0.00062)
     t_0
     (if (<= phi2 7.2e-12)
       (atan2 (sin (- lambda1 lambda2)) (* (cos lambda2) (- (sin phi1))))
       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 (phi2 <= -0.00062) {
		tmp = t_0;
	} else if (phi2 <= 7.2e-12) {
		tmp = atan2(sin((lambda1 - lambda2)), (cos(lambda2) * -sin(phi1)));
	} 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 (phi2 <= (-0.00062d0)) then
        tmp = t_0
    else if (phi2 <= 7.2d-12) then
        tmp = atan2(sin((lambda1 - lambda2)), (cos(lambda2) * -sin(phi1)))
    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 (phi2 <= -0.00062) {
		tmp = t_0;
	} else if (phi2 <= 7.2e-12) {
		tmp = Math.atan2(Math.sin((lambda1 - lambda2)), (Math.cos(lambda2) * -Math.sin(phi1)));
	} 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 phi2 <= -0.00062:
		tmp = t_0
	elif phi2 <= 7.2e-12:
		tmp = math.atan2(math.sin((lambda1 - lambda2)), (math.cos(lambda2) * -math.sin(phi1)))
	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 (phi2 <= -0.00062)
		tmp = t_0;
	elseif (phi2 <= 7.2e-12)
		tmp = atan(sin(Float64(lambda1 - lambda2)), Float64(cos(lambda2) * Float64(-sin(phi1))));
	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 (phi2 <= -0.00062)
		tmp = t_0;
	elseif (phi2 <= 7.2e-12)
		tmp = atan2(sin((lambda1 - lambda2)), (cos(lambda2) * -sin(phi1)));
	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[phi2, -0.00062], t$95$0, If[LessEqual[phi2, 7.2e-12], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(N[Cos[lambda2], $MachinePrecision] * (-N[Sin[phi1], $MachinePrecision])), $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}\;\phi_2 \leq -0.00062:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_2 \leq 7.2 \cdot 10^{-12}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \lambda_2 \cdot \left(-\sin \phi_1\right)}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -6.2e-4 or 7.2e-12 < phi2

    1. Initial program 75.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 lambda1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6442.8

        \[\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. Simplified42.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6426.9

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

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

    if -6.2e-4 < phi2 < 7.2e-12

    1. Initial program 85.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 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.4

        \[\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. Simplified85.4%

      \[\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 lambda1 around 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 32: 39.2% 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}\;\phi_2 \leq -5.9 \cdot 10^{+29}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\phi_2 \leq 6.8 \cdot 10^{+14}:\\ \;\;\;\;\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 (- lambda2)) (cos phi2)) (sin phi2))))
   (if (<= phi2 -5.9e+29)
     t_0
     (if (<= phi2 6.8e+14) (atan2 (sin (- lambda1 lambda2)) (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 (phi2 <= -5.9e+29) {
		tmp = t_0;
	} else if (phi2 <= 6.8e+14) {
		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(-lambda2) * cos(phi2)), sin(phi2))
    if (phi2 <= (-5.9d+29)) then
        tmp = t_0
    else if (phi2 <= 6.8d+14) 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(-lambda2) * Math.cos(phi2)), Math.sin(phi2));
	double tmp;
	if (phi2 <= -5.9e+29) {
		tmp = t_0;
	} else if (phi2 <= 6.8e+14) {
		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(-lambda2) * math.cos(phi2)), math.sin(phi2))
	tmp = 0
	if phi2 <= -5.9e+29:
		tmp = t_0
	elif phi2 <= 6.8e+14:
		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(Float64(-lambda2)) * cos(phi2)), sin(phi2))
	tmp = 0.0
	if (phi2 <= -5.9e+29)
		tmp = t_0;
	elseif (phi2 <= 6.8e+14)
		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(-lambda2) * cos(phi2)), sin(phi2));
	tmp = 0.0;
	if (phi2 <= -5.9e+29)
		tmp = t_0;
	elseif (phi2 <= 6.8e+14)
		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[(-lambda2)], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[phi2, -5.9e+29], t$95$0, If[LessEqual[phi2, 6.8e+14], 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 \left(-\lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2}\\
\mathbf{if}\;\phi_2 \leq -5.9 \cdot 10^{+29}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\phi_2 \leq 6.8 \cdot 10^{+14}:\\
\;\;\;\;\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 < -5.8999999999999999e29 or 6.8e14 < phi2

    1. Initial program 75.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}{\sin \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)} \]
    4. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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.f6444.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. Simplified44.2%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \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)} \]
    6. Taylor expanded in phi1 around 0

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

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

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

    if -5.8999999999999999e29 < phi2 < 6.8e14

    1. Initial program 84.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. 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--.f6481.1

        \[\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. Simplified81.1%

      \[\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 phi1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified49.4%

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

Alternative 33: 31.5% accurate, 2.7× speedup?

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

\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq -18.5:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -18.5

    1. Initial program 80.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--.f6416.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. Simplified16.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 phi1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified13.5%

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]
    10. Step-by-step derivation
      1. lower-sin.f6415.0

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]
    11. Simplified15.0%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]

    if -18.5 < phi2

    1. Initial program 80.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 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--.f6465.1

        \[\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. Simplified65.1%

      \[\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 phi1 around 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 34: 32.0% 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 80.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{\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--.f6452.5

      \[\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. Simplified52.5%

    \[\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 phi1 around 0

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

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

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
  9. Add Preprocessing

Alternative 35: 29.4% accurate, 3.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{-0.16666666666666666 \cdot \left(\phi_2 \cdot \left(\phi_2 \cdot \phi_2\right)\right)}\\ \mathbf{if}\;\lambda_1 - \lambda_2 \leq -20000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \leq 2 \cdot 10^{-102}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\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))
          (* -0.16666666666666666 (* phi2 (* phi2 phi2))))))
   (if (<= (- lambda1 lambda2) -20000.0)
     t_0
     (if (<= (- lambda1 lambda2) 2e-102)
       (atan2
        (fma lambda2 (fma (* lambda1 lambda1) 0.5 -1.0) lambda1)
        (sin phi2))
       t_0))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = atan2(sin((lambda1 - lambda2)), (-0.16666666666666666 * (phi2 * (phi2 * phi2))));
	double tmp;
	if ((lambda1 - lambda2) <= -20000.0) {
		tmp = t_0;
	} else if ((lambda1 - lambda2) <= 2e-102) {
		tmp = atan2(fma(lambda2, fma((lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = atan(sin(Float64(lambda1 - lambda2)), Float64(-0.16666666666666666 * Float64(phi2 * Float64(phi2 * phi2))))
	tmp = 0.0
	if (Float64(lambda1 - lambda2) <= -20000.0)
		tmp = t_0;
	elseif (Float64(lambda1 - lambda2) <= 2e-102)
		tmp = atan(fma(lambda2, fma(Float64(lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	else
		tmp = t_0;
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := Block[{t$95$0 = N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(-0.16666666666666666 * N[(phi2 * N[(phi2 * phi2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], -20000.0], t$95$0, If[LessEqual[N[(lambda1 - lambda2), $MachinePrecision], 2e-102], N[ArcTan[N[(lambda2 * N[(N[(lambda1 * lambda1), $MachinePrecision] * 0.5 + -1.0), $MachinePrecision] + lambda1), $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)}{-0.16666666666666666 \cdot \left(\phi_2 \cdot \left(\phi_2 \cdot \phi_2\right)\right)}\\
\mathbf{if}\;\lambda_1 - \lambda_2 \leq -20000:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;\lambda_1 - \lambda_2 \leq 2 \cdot 10^{-102}:\\
\;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (-.f64 lambda1 lambda2) < -2e4 or 1.99999999999999987e-102 < (-.f64 lambda1 lambda2)

    1. Initial program 74.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. 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--.f6446.8

        \[\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. Simplified46.8%

      \[\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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6431.2

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified31.2%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{-0.16666666666666666 \cdot \left(\phi_2 \cdot \color{blue}{\left(\phi_2 \cdot \phi_2\right)}\right)} \]
    14. Simplified28.8%

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

    if -2e4 < (-.f64 lambda1 lambda2) < 1.99999999999999987e-102

    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 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--.f6469.8

        \[\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. Simplified69.8%

      \[\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 phi1 around 0

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified41.5%

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) - \sin \lambda_2}}{\sin \phi_2} \]
    11. Simplified41.5%

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

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

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

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\color{blue}{\lambda_1 \cdot \lambda_1}, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2} \]
    14. Simplified41.5%

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

Alternative 36: 31.8% accurate, 3.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\phi_2 \leq 3.1 \cdot 10^{+14}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \mathsf{fma}\left(\phi_2 \cdot \phi_2, 0.008333333333333333, -0.16666666666666666\right), \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (if (<= phi2 3.1e+14)
   (atan2
    (sin (- lambda1 lambda2))
    (fma
     phi2
     (*
      (* phi2 phi2)
      (fma (* phi2 phi2) 0.008333333333333333 -0.16666666666666666))
     phi2))
   (atan2
    (sin (- lambda2))
    (fma phi2 (* -0.16666666666666666 (* phi2 phi2)) phi2))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double tmp;
	if (phi2 <= 3.1e+14) {
		tmp = atan2(sin((lambda1 - lambda2)), fma(phi2, ((phi2 * phi2) * fma((phi2 * phi2), 0.008333333333333333, -0.16666666666666666)), phi2));
	} else {
		tmp = atan2(sin(-lambda2), fma(phi2, (-0.16666666666666666 * (phi2 * phi2)), phi2));
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	tmp = 0.0
	if (phi2 <= 3.1e+14)
		tmp = atan(sin(Float64(lambda1 - lambda2)), fma(phi2, Float64(Float64(phi2 * phi2) * fma(Float64(phi2 * phi2), 0.008333333333333333, -0.16666666666666666)), phi2));
	else
		tmp = atan(sin(Float64(-lambda2)), fma(phi2, Float64(-0.16666666666666666 * Float64(phi2 * phi2)), phi2));
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, 3.1e+14], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(phi2 * N[(N[(phi2 * phi2), $MachinePrecision] * N[(N[(phi2 * phi2), $MachinePrecision] * 0.008333333333333333 + -0.16666666666666666), $MachinePrecision]), $MachinePrecision] + phi2), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[Sin[(-lambda2)], $MachinePrecision] / N[(phi2 * N[(-0.16666666666666666 * N[(phi2 * phi2), $MachinePrecision]), $MachinePrecision] + phi2), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq 3.1 \cdot 10^{+14}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \mathsf{fma}\left(\phi_2 \cdot \phi_2, 0.008333333333333333, -0.16666666666666666\right), \phi_2\right)}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < 3.1e14

    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. 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--.f6462.4

        \[\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. Simplified62.4%

      \[\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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6438.9

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified38.9%

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \color{blue}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} \cdot {\phi_2}^{2} - \frac{1}{6}\right) + 1\right)}} \]
      2. distribute-lft-inN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left({\phi_2}^{2} \cdot \left(\frac{1}{120} \cdot {\phi_2}^{2} - \frac{1}{6}\right)\right) + \phi_2 \cdot 1}} \]
      3. *-rgt-identityN/A

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

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

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

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \mathsf{fma}\left(\color{blue}{\phi_2 \cdot \phi_2}, \frac{1}{120}, \frac{-1}{6}\right), \phi_2\right)} \]
      13. lower-*.f6438.8

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \mathsf{fma}\left(\color{blue}{\phi_2 \cdot \phi_2}, 0.008333333333333333, -0.16666666666666666\right), \phi_2\right)} \]
    11. Simplified38.8%

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

    if 3.1e14 < phi2

    1. Initial program 66.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 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--.f6415.5

        \[\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. Simplified15.5%

      \[\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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6414.2

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified14.2%

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

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(1 + \frac{-1}{6} \cdot {\phi_2}^{2}\right)}} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \color{blue}{\left(\frac{-1}{6} \cdot {\phi_2}^{2} + 1\right)}} \]
      2. distribute-lft-inN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \phi_2 \cdot 1}} \]
      3. *-rgt-identityN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \color{blue}{\phi_2}} \]
      4. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \frac{-1}{6} \cdot {\phi_2}^{2}, \phi_2\right)}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      6. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      7. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot \frac{-1}{6}, \phi_2\right)} \]
      8. lower-*.f6412.7

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot -0.16666666666666666, \phi_2\right)} \]
    11. Simplified12.7%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)}} \]
    12. Taylor expanded in lambda1 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \frac{-1}{6}, \phi_2\right)} \]
    13. Step-by-step derivation
      1. lower-sin.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \frac{-1}{6}, \phi_2\right)} \]
      2. lower-neg.f6414.8

        \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\lambda_2\right)}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]
    14. Simplified14.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(-\lambda_2\right)}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification33.7%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq 3.1 \cdot 10^{+14}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \mathsf{fma}\left(\phi_2 \cdot \phi_2, 0.008333333333333333, -0.16666666666666666\right), \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 37: 31.5% accurate, 3.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\phi_2 \leq -2.4 \cdot 10^{+18}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (if (<= phi2 -2.4e+18)
   (atan2 (fma lambda2 (fma (* lambda1 lambda1) 0.5 -1.0) lambda1) (sin phi2))
   (atan2
    (sin (- lambda1 lambda2))
    (fma phi2 (* -0.16666666666666666 (* phi2 phi2)) phi2))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double tmp;
	if (phi2 <= -2.4e+18) {
		tmp = atan2(fma(lambda2, fma((lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	} else {
		tmp = atan2(sin((lambda1 - lambda2)), fma(phi2, (-0.16666666666666666 * (phi2 * phi2)), phi2));
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	tmp = 0.0
	if (phi2 <= -2.4e+18)
		tmp = atan(fma(lambda2, fma(Float64(lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	else
		tmp = atan(sin(Float64(lambda1 - lambda2)), fma(phi2, Float64(-0.16666666666666666 * Float64(phi2 * phi2)), phi2));
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[phi2, -2.4e+18], N[ArcTan[N[(lambda2 * N[(N[(lambda1 * lambda1), $MachinePrecision] * 0.5 + -1.0), $MachinePrecision] + lambda1), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision], N[ArcTan[N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision] / N[(phi2 * N[(-0.16666666666666666 * N[(phi2 * phi2), $MachinePrecision]), $MachinePrecision] + phi2), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq -2.4 \cdot 10^{+18}:\\
\;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -2.4e18

    1. Initial program 78.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 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--.f6415.8

        \[\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. Simplified15.8%

      \[\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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6413.2

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified13.2%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    9. Taylor expanded in lambda1 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right)}}{\sin \phi_2} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}}{\sin \phi_2} \]
      2. cos-negN/A

        \[\leadsto \tan^{-1}_* \frac{\lambda_1 \cdot \left(\color{blue}{\cos \lambda_2} + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}{\sin \phi_2} \]
      3. sin-negN/A

        \[\leadsto \tan^{-1}_* \frac{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \color{blue}{\left(\mathsf{neg}\left(\sin \lambda_2\right)\right)}}{\sin \phi_2} \]
      4. unsub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) - \sin \lambda_2}}{\sin \phi_2} \]
      5. lower--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) - \sin \lambda_2}}{\sin \phi_2} \]
    11. Simplified12.7%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 - \left(-0.5 \cdot \lambda_1\right) \cdot \sin \lambda_2\right) - \sin \lambda_2}}{\sin \phi_2} \]
    12. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 + \lambda_2 \cdot \left(\frac{1}{2} \cdot {\lambda_1}^{2} - 1\right)}}{\sin \phi_2} \]
    13. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_2 \cdot \left(\frac{1}{2} \cdot {\lambda_1}^{2} - 1\right) + \lambda_1}}{\sin \phi_2} \]
      2. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\lambda_2, \frac{1}{2} \cdot {\lambda_1}^{2} - 1, \lambda_1\right)}}{\sin \phi_2} \]
      3. sub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{\frac{1}{2} \cdot {\lambda_1}^{2} + \left(\mathsf{neg}\left(1\right)\right)}, \lambda_1\right)}{\sin \phi_2} \]
      4. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{{\lambda_1}^{2} \cdot \frac{1}{2}} + \left(\mathsf{neg}\left(1\right)\right), \lambda_1\right)}{\sin \phi_2} \]
      5. metadata-evalN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, {\lambda_1}^{2} \cdot \frac{1}{2} + \color{blue}{-1}, \lambda_1\right)}{\sin \phi_2} \]
      6. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{\mathsf{fma}\left({\lambda_1}^{2}, \frac{1}{2}, -1\right)}, \lambda_1\right)}{\sin \phi_2} \]
      7. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\color{blue}{\lambda_1 \cdot \lambda_1}, \frac{1}{2}, -1\right), \lambda_1\right)}{\sin \phi_2} \]
      8. lower-*.f6411.8

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\color{blue}{\lambda_1 \cdot \lambda_1}, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2} \]
    14. Simplified11.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}}{\sin \phi_2} \]

    if -2.4e18 < phi2

    1. Initial program 81.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{\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--.f6464.2

        \[\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. Simplified64.2%

      \[\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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6440.3

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified40.3%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    9. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(1 + \frac{-1}{6} \cdot {\phi_2}^{2}\right)}} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \color{blue}{\left(\frac{-1}{6} \cdot {\phi_2}^{2} + 1\right)}} \]
      2. distribute-lft-inN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \phi_2 \cdot 1}} \]
      3. *-rgt-identityN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \color{blue}{\phi_2}} \]
      4. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \frac{-1}{6} \cdot {\phi_2}^{2}, \phi_2\right)}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      6. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      7. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot \frac{-1}{6}, \phi_2\right)} \]
      8. lower-*.f6439.6

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot -0.16666666666666666, \phi_2\right)} \]
    11. Simplified39.6%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification32.9%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -2.4 \cdot 10^{+18}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 38: 25.7% accurate, 3.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -0.78:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\ \end{array} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (if (<= lambda1 -0.78)
   (atan2 (sin lambda1) (fma phi2 (* -0.16666666666666666 (* phi2 phi2)) phi2))
   (atan2
    (fma lambda2 (fma (* lambda1 lambda1) 0.5 -1.0) lambda1)
    (sin phi2))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	double tmp;
	if (lambda1 <= -0.78) {
		tmp = atan2(sin(lambda1), fma(phi2, (-0.16666666666666666 * (phi2 * phi2)), phi2));
	} else {
		tmp = atan2(fma(lambda2, fma((lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	tmp = 0.0
	if (lambda1 <= -0.78)
		tmp = atan(sin(lambda1), fma(phi2, Float64(-0.16666666666666666 * Float64(phi2 * phi2)), phi2));
	else
		tmp = atan(fma(lambda2, fma(Float64(lambda1 * lambda1), 0.5, -1.0), lambda1), sin(phi2));
	end
	return tmp
end
code[lambda1_, lambda2_, phi1_, phi2_] := If[LessEqual[lambda1, -0.78], N[ArcTan[N[Sin[lambda1], $MachinePrecision] / N[(phi2 * N[(-0.16666666666666666 * N[(phi2 * phi2), $MachinePrecision]), $MachinePrecision] + phi2), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(lambda2 * N[(N[(lambda1 * lambda1), $MachinePrecision] * 0.5 + -1.0), $MachinePrecision] + lambda1), $MachinePrecision] / N[Sin[phi2], $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;\lambda_1 \leq -0.78:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -0.78000000000000003

    1. Initial program 54.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. 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--.f6441.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. Simplified41.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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6428.1

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified28.1%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    9. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(1 + \frac{-1}{6} \cdot {\phi_2}^{2}\right)}} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \color{blue}{\left(\frac{-1}{6} \cdot {\phi_2}^{2} + 1\right)}} \]
      2. distribute-lft-inN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \phi_2 \cdot 1}} \]
      3. *-rgt-identityN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \color{blue}{\phi_2}} \]
      4. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \frac{-1}{6} \cdot {\phi_2}^{2}, \phi_2\right)}} \]
      5. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      6. lower-*.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
      7. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot \frac{-1}{6}, \phi_2\right)} \]
      8. lower-*.f6426.0

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot -0.16666666666666666, \phi_2\right)} \]
    11. Simplified26.0%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)}} \]
    12. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \frac{-1}{6}, \phi_2\right)} \]
    13. Step-by-step derivation
      1. lower-sin.f6426.1

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]
    14. Simplified26.1%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]

    if -0.78000000000000003 < lambda1

    1. Initial program 87.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. 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--.f6455.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. Simplified55.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 phi1 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    7. Step-by-step derivation
      1. lower-sin.f6435.2

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    8. Simplified35.2%

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    9. Taylor expanded in lambda1 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \left(\mathsf{neg}\left(\lambda_2\right)\right) + \lambda_1 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right)}}{\sin \phi_2} \]
    10. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \left(\mathsf{neg}\left(\lambda_2\right)\right) + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}}{\sin \phi_2} \]
      2. cos-negN/A

        \[\leadsto \tan^{-1}_* \frac{\lambda_1 \cdot \left(\color{blue}{\cos \lambda_2} + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)}{\sin \phi_2} \]
      3. sin-negN/A

        \[\leadsto \tan^{-1}_* \frac{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) + \color{blue}{\left(\mathsf{neg}\left(\sin \lambda_2\right)\right)}}{\sin \phi_2} \]
      4. unsub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) - \sin \lambda_2}}{\sin \phi_2} \]
      5. lower--.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\right)\right)\right)\right) - \sin \lambda_2}}{\sin \phi_2} \]
    11. Simplified34.1%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 \cdot \left(\cos \lambda_2 - \left(-0.5 \cdot \lambda_1\right) \cdot \sin \lambda_2\right) - \sin \lambda_2}}{\sin \phi_2} \]
    12. Taylor expanded in lambda2 around 0

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_1 + \lambda_2 \cdot \left(\frac{1}{2} \cdot {\lambda_1}^{2} - 1\right)}}{\sin \phi_2} \]
    13. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\lambda_2 \cdot \left(\frac{1}{2} \cdot {\lambda_1}^{2} - 1\right) + \lambda_1}}{\sin \phi_2} \]
      2. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\lambda_2, \frac{1}{2} \cdot {\lambda_1}^{2} - 1, \lambda_1\right)}}{\sin \phi_2} \]
      3. sub-negN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{\frac{1}{2} \cdot {\lambda_1}^{2} + \left(\mathsf{neg}\left(1\right)\right)}, \lambda_1\right)}{\sin \phi_2} \]
      4. *-commutativeN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{{\lambda_1}^{2} \cdot \frac{1}{2}} + \left(\mathsf{neg}\left(1\right)\right), \lambda_1\right)}{\sin \phi_2} \]
      5. metadata-evalN/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, {\lambda_1}^{2} \cdot \frac{1}{2} + \color{blue}{-1}, \lambda_1\right)}{\sin \phi_2} \]
      6. lower-fma.f64N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \color{blue}{\mathsf{fma}\left({\lambda_1}^{2}, \frac{1}{2}, -1\right)}, \lambda_1\right)}{\sin \phi_2} \]
      7. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\color{blue}{\lambda_1 \cdot \lambda_1}, \frac{1}{2}, -1\right), \lambda_1\right)}{\sin \phi_2} \]
      8. lower-*.f6429.4

        \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\color{blue}{\lambda_1 \cdot \lambda_1}, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2} \]
    14. Simplified29.4%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}}{\sin \phi_2} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification28.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -0.78:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\lambda_2, \mathsf{fma}\left(\lambda_1 \cdot \lambda_1, 0.5, -1\right), \lambda_1\right)}{\sin \phi_2}\\ \end{array} \]
  5. Add Preprocessing

Alternative 39: 22.0% accurate, 3.8× speedup?

\[\begin{array}{l} \\ \tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2 (sin lambda1) (fma phi2 (* -0.16666666666666666 (* phi2 phi2)) phi2)))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2(sin(lambda1), fma(phi2, (-0.16666666666666666 * (phi2 * phi2)), phi2));
}
function code(lambda1, lambda2, phi1, phi2)
	return atan(sin(lambda1), fma(phi2, Float64(-0.16666666666666666 * Float64(phi2 * phi2)), phi2))
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[Sin[lambda1], $MachinePrecision] / N[(phi2 * N[(-0.16666666666666666 * N[(phi2 * phi2), $MachinePrecision]), $MachinePrecision] + phi2), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
\tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}
\end{array}
Derivation
  1. Initial program 80.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{\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--.f6452.5

      \[\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. Simplified52.5%

    \[\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 phi1 around 0

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
  7. Step-by-step derivation
    1. lower-sin.f6433.7

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
  8. Simplified33.7%

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
  9. Taylor expanded in phi2 around 0

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(1 + \frac{-1}{6} \cdot {\phi_2}^{2}\right)}} \]
  10. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \color{blue}{\left(\frac{-1}{6} \cdot {\phi_2}^{2} + 1\right)}} \]
    2. distribute-lft-inN/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \phi_2 \cdot 1}} \]
    3. *-rgt-identityN/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\phi_2 \cdot \left(\frac{-1}{6} \cdot {\phi_2}^{2}\right) + \color{blue}{\phi_2}} \]
    4. lower-fma.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \frac{-1}{6} \cdot {\phi_2}^{2}, \phi_2\right)}} \]
    5. *-commutativeN/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
    6. lower-*.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{{\phi_2}^{2} \cdot \frac{-1}{6}}, \phi_2\right)} \]
    7. unpow2N/A

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot \frac{-1}{6}, \phi_2\right)} \]
    8. lower-*.f6430.9

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\phi_2, \color{blue}{\left(\phi_2 \cdot \phi_2\right)} \cdot -0.16666666666666666, \phi_2\right)} \]
  11. Simplified30.9%

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)}} \]
  12. Taylor expanded in lambda2 around 0

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot \frac{-1}{6}, \phi_2\right)} \]
  13. Step-by-step derivation
    1. lower-sin.f6423.1

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]
  14. Simplified23.1%

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\mathsf{fma}\left(\phi_2, \left(\phi_2 \cdot \phi_2\right) \cdot -0.16666666666666666, \phi_2\right)} \]
  15. Final simplification23.1%

    \[\leadsto \tan^{-1}_* \frac{\sin \lambda_1}{\mathsf{fma}\left(\phi_2, -0.16666666666666666 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)} \]
  16. Add Preprocessing

Reproduce

?
herbie shell --seed 2024210 
(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))))))