Bearing on a great circle

Percentage Accurate: 79.0% → 99.7%
Time: 24.4s
Alternatives: 27
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 27 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.0% 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.6× speedup?

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

\\
\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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_1 \cdot \cos \lambda_2\right)}
\end{array}
Derivation
  1. Initial program 74.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 2: 99.7% accurate, 0.6× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 3: 94.3% accurate, 0.6× speedup?

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

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

\mathbf{elif}\;\phi_2 \leq 6 \cdot 10^{-17}:\\
\;\;\;\;\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}:\\
\;\;\;\;t\_2\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -1.2500000000000001e-6 or 6.00000000000000012e-17 < phi2

    1. Initial program 71.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -1.2500000000000001e-6 < phi2 < 6.00000000000000012e-17

    1. Initial program 78.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -1.25 \cdot 10^{-6}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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 6 \cdot 10^{-17}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \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 \sin \lambda_2\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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 4: 89.3% 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{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_2 \cdot t\_1}\\ \mathbf{if}\;\lambda_2 \leq -0.0007:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_2 \leq 4.2 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 - \lambda_2 \cdot \cos \lambda_1\right)}{t\_0 - t\_1 \cdot \mathsf{fma}\left(\lambda_2, \sin \lambda_1, \cos \lambda_1\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
          (*
           (fma
            (sin (- lambda2))
            (cos lambda1)
            (* (sin lambda1) (cos lambda2)))
           (cos phi2))
          (- t_0 (* (cos lambda2) t_1)))))
   (if (<= lambda2 -0.0007)
     t_2
     (if (<= lambda2 4.2e-5)
       (atan2
        (* (cos phi2) (- (sin lambda1) (* lambda2 (cos lambda1))))
        (- t_0 (* t_1 (fma lambda2 (sin lambda1) (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(phi1);
	double t_2 = atan2((fma(sin(-lambda2), cos(lambda1), (sin(lambda1) * cos(lambda2))) * cos(phi2)), (t_0 - (cos(lambda2) * t_1)));
	double tmp;
	if (lambda2 <= -0.0007) {
		tmp = t_2;
	} else if (lambda2 <= 4.2e-5) {
		tmp = atan2((cos(phi2) * (sin(lambda1) - (lambda2 * cos(lambda1)))), (t_0 - (t_1 * fma(lambda2, sin(lambda1), cos(lambda1)))));
	} 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(fma(sin(Float64(-lambda2)), cos(lambda1), Float64(sin(lambda1) * cos(lambda2))) * cos(phi2)), Float64(t_0 - Float64(cos(lambda2) * t_1)))
	tmp = 0.0
	if (lambda2 <= -0.0007)
		tmp = t_2;
	elseif (lambda2 <= 4.2e-5)
		tmp = atan(Float64(cos(phi2) * Float64(sin(lambda1) - Float64(lambda2 * cos(lambda1)))), Float64(t_0 - Float64(t_1 * fma(lambda2, sin(lambda1), cos(lambda1)))));
	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[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision] + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[lambda2], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda2, -0.0007], t$95$2, If[LessEqual[lambda2, 4.2e-5], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda1], $MachinePrecision] - N[(lambda2 * N[Cos[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(t$95$1 * N[(lambda2 * N[Sin[lambda1], $MachinePrecision] + N[Cos[lambda1], $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{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_2 \cdot t\_1}\\
\mathbf{if}\;\lambda_2 \leq -0.0007:\\
\;\;\;\;t\_2\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda2 < -6.99999999999999993e-4 or 4.19999999999999977e-5 < lambda2

    1. Initial program 54.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -6.99999999999999993e-4 < lambda2 < 4.19999999999999977e-5

    1. Initial program 98.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 lambda2 around 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_2 \leq -0.0007:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \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{elif}\;\lambda_2 \leq 4.2 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 - \lambda_2 \cdot \cos \lambda_1\right)}{\cos \phi_1 \cdot \sin \phi_2 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \mathsf{fma}\left(\lambda_2, \sin \lambda_1, \cos \lambda_1\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \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)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 89.0% 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 := \sin \left(-\lambda_2\right)\\ t_3 := \tan^{-1}_* \frac{\mathsf{fma}\left(t\_2, \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_1 \cdot t\_1}\\ \mathbf{if}\;\lambda_1 \leq -6800:\\ \;\;\;\;t\_3\\ \mathbf{elif}\;\lambda_1 \leq 0.082:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\cos \lambda_2, \lambda_1, t\_2 \cdot \mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.5, 1\right)\right)}{t\_0 - t\_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{else}:\\ \;\;\;\;t\_3\\ \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 (sin (- lambda2)))
        (t_3
         (atan2
          (*
           (fma t_2 (cos lambda1) (* (sin lambda1) (cos lambda2)))
           (cos phi2))
          (- t_0 (* (cos lambda1) t_1)))))
   (if (<= lambda1 -6800.0)
     t_3
     (if (<= lambda1 0.082)
       (atan2
        (*
         (cos phi2)
         (fma
          (cos lambda2)
          lambda1
          (* t_2 (fma lambda1 (* lambda1 -0.5) 1.0))))
        (- t_0 (* t_1 (cos (- lambda1 lambda2)))))
       t_3))))
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 = sin(-lambda2);
	double t_3 = atan2((fma(t_2, cos(lambda1), (sin(lambda1) * cos(lambda2))) * cos(phi2)), (t_0 - (cos(lambda1) * t_1)));
	double tmp;
	if (lambda1 <= -6800.0) {
		tmp = t_3;
	} else if (lambda1 <= 0.082) {
		tmp = atan2((cos(phi2) * fma(cos(lambda2), lambda1, (t_2 * fma(lambda1, (lambda1 * -0.5), 1.0)))), (t_0 - (t_1 * cos((lambda1 - lambda2)))));
	} else {
		tmp = t_3;
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(cos(phi1) * sin(phi2))
	t_1 = Float64(cos(phi2) * sin(phi1))
	t_2 = sin(Float64(-lambda2))
	t_3 = atan(Float64(fma(t_2, cos(lambda1), Float64(sin(lambda1) * cos(lambda2))) * cos(phi2)), Float64(t_0 - Float64(cos(lambda1) * t_1)))
	tmp = 0.0
	if (lambda1 <= -6800.0)
		tmp = t_3;
	elseif (lambda1 <= 0.082)
		tmp = atan(Float64(cos(phi2) * fma(cos(lambda2), lambda1, Float64(t_2 * fma(lambda1, Float64(lambda1 * -0.5), 1.0)))), Float64(t_0 - Float64(t_1 * cos(Float64(lambda1 - lambda2)))));
	else
		tmp = t_3;
	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[Sin[(-lambda2)], $MachinePrecision]}, Block[{t$95$3 = N[ArcTan[N[(N[(t$95$2 * N[Cos[lambda1], $MachinePrecision] + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[lambda1], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -6800.0], t$95$3, If[LessEqual[lambda1, 0.082], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Cos[lambda2], $MachinePrecision] * lambda1 + N[(t$95$2 * N[(lambda1 * N[(lambda1 * -0.5), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(t$95$1 * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$3]]]]]]
\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 := \sin \left(-\lambda_2\right)\\
t_3 := \tan^{-1}_* \frac{\mathsf{fma}\left(t\_2, \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \cos \lambda_1 \cdot t\_1}\\
\mathbf{if}\;\lambda_1 \leq -6800:\\
\;\;\;\;t\_3\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -6800 or 0.0820000000000000034 < lambda1

    1. Initial program 55.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -6800 < lambda1 < 0.0820000000000000034

    1. Initial program 97.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) + \frac{-1}{2} \cdot \left(\lambda_1 \cdot \sin \left(\mathsf{neg}\left(\lambda_2\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) + \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)\right)} \cdot \cos \phi_2}{\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. distribute-lft-inN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -6800:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \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 0.082:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\cos \lambda_2, \lambda_1, \sin \left(-\lambda_2\right) \cdot \mathsf{fma}\left(\lambda_1, \lambda_1 \cdot -0.5, 1\right)\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{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \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 6: 31.9% accurate, 0.7× speedup?

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))) < -3.02000000000000002

    1. Initial program 81.4%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6471.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. Simplified71.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6448.0

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

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(-\lambda_2\right)}}{\sin \phi_2} \]
    14. Simplified34.9%

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

    if -3.02000000000000002 < (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))

    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 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.f6462.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified62.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6445.6

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\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)} \leq -3.02:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right)}{\sin \phi_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2}\\ \end{array} \]
  5. Add Preprocessing

Alternative 7: 89.3% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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
  (*
   (fma (sin (- lambda2)) (cos lambda1) (* (sin lambda1) (cos lambda2)))
   (cos phi2))
  (-
   (* (cos phi1) (sin phi2))
   (* (* (cos phi2) (sin phi1)) (cos (- lambda1 lambda2))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((fma(sin(-lambda2), cos(lambda1), (sin(lambda1) * cos(lambda2))) * cos(phi2)), ((cos(phi1) * sin(phi2)) - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
}
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(fma(sin(Float64(-lambda2)), cos(lambda1), Float64(sin(lambda1) * cos(lambda2))) * cos(phi2)), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(Float64(cos(phi2) * sin(phi1)) * cos(Float64(lambda1 - lambda2)))))
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[ArcTan[N[(N[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision] + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $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{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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 74.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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 8: 87.1% 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 := t\_0 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot t\_1\\ t_3 := \sin \left(-\lambda_2\right)\\ \mathbf{if}\;\phi_1 \leq -4.9 \cdot 10^{+54}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(t\_3, \cos \lambda_1, \sin \lambda_1\right)}{t\_2}\\ \mathbf{elif}\;\phi_1 \leq 3.1 \cdot 10^{-9}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(t\_3, \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{t\_0 - \sin \phi_1 \cdot t\_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(t\_3, \cos \lambda_1, \frac{1}{\frac{1}{\sin \lambda_1}}\right)}{t\_2}\\ \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 (- t_0 (* (* (cos phi2) (sin phi1)) t_1)))
        (t_3 (sin (- lambda2))))
   (if (<= phi1 -4.9e+54)
     (atan2 (* (cos phi2) (fma t_3 (cos lambda1) (sin lambda1))) t_2)
     (if (<= phi1 3.1e-9)
       (atan2
        (* (fma t_3 (cos lambda1) (* (sin lambda1) (cos lambda2))) (cos phi2))
        (- t_0 (* (sin phi1) t_1)))
       (atan2
        (* (cos phi2) (fma t_3 (cos lambda1) (/ 1.0 (/ 1.0 (sin lambda1)))))
        t_2)))))
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 = t_0 - ((cos(phi2) * sin(phi1)) * t_1);
	double t_3 = sin(-lambda2);
	double tmp;
	if (phi1 <= -4.9e+54) {
		tmp = atan2((cos(phi2) * fma(t_3, cos(lambda1), sin(lambda1))), t_2);
	} else if (phi1 <= 3.1e-9) {
		tmp = atan2((fma(t_3, cos(lambda1), (sin(lambda1) * cos(lambda2))) * cos(phi2)), (t_0 - (sin(phi1) * t_1)));
	} else {
		tmp = atan2((cos(phi2) * fma(t_3, cos(lambda1), (1.0 / (1.0 / sin(lambda1))))), t_2);
	}
	return tmp;
}
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(cos(phi1) * sin(phi2))
	t_1 = cos(Float64(lambda1 - lambda2))
	t_2 = Float64(t_0 - Float64(Float64(cos(phi2) * sin(phi1)) * t_1))
	t_3 = sin(Float64(-lambda2))
	tmp = 0.0
	if (phi1 <= -4.9e+54)
		tmp = atan(Float64(cos(phi2) * fma(t_3, cos(lambda1), sin(lambda1))), t_2);
	elseif (phi1 <= 3.1e-9)
		tmp = atan(Float64(fma(t_3, cos(lambda1), Float64(sin(lambda1) * cos(lambda2))) * cos(phi2)), Float64(t_0 - Float64(sin(phi1) * t_1)));
	else
		tmp = atan(Float64(cos(phi2) * fma(t_3, cos(lambda1), Float64(1.0 / Float64(1.0 / sin(lambda1))))), 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[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Sin[(-lambda2)], $MachinePrecision]}, If[LessEqual[phi1, -4.9e+54], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(t$95$3 * N[Cos[lambda1], $MachinePrecision] + N[Sin[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2], $MachinePrecision], If[LessEqual[phi1, 3.1e-9], N[ArcTan[N[(N[(t$95$3 * N[Cos[lambda1], $MachinePrecision] + N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Sin[phi1], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(t$95$3 * N[Cos[lambda1], $MachinePrecision] + N[(1.0 / N[(1.0 / N[Sin[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2], $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 := t\_0 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot t\_1\\
t_3 := \sin \left(-\lambda_2\right)\\
\mathbf{if}\;\phi_1 \leq -4.9 \cdot 10^{+54}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(t\_3, \cos \lambda_1, \sin \lambda_1\right)}{t\_2}\\

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

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


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

    1. Initial program 76.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -4.90000000000000001e54 < phi1 < 3.10000000000000005e-9

    1. Initial program 78.5%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6478.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. Simplified78.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)} \]
    6. Step-by-step derivation
      1. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 3.10000000000000005e-9 < phi1

    1. Initial program 65.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi1 < -4.90000000000000001e54 or 3.10000000000000005e-9 < phi1

    1. Initial program 70.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -4.90000000000000001e54 < phi1 < 3.10000000000000005e-9

    1. Initial program 78.5%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6478.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. Simplified78.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)} \]
    6. Step-by-step derivation
      1. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \leq -4.9 \cdot 10^{+54}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1\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 3.1 \cdot 10^{-9}:\\ \;\;\;\;\tan^{-1}_* \frac{\mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\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 \mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1\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 10: 83.2% 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 := \sin \phi_1 \cdot t\_1\\ \mathbf{if}\;\phi_2 \leq -7.5 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 - \cos \phi_2 \cdot t\_2}\\ \mathbf{elif}\;\phi_2 \leq 1.9 \cdot 10^{-9}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2}{t\_0 - t\_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1\right)}{t\_0 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \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 (* (sin phi1) t_1)))
   (if (<= phi2 -7.5e-5)
     (atan2
      (* (cos phi2) (sin (- lambda1 lambda2)))
      (- t_0 (* (cos phi2) t_2)))
     (if (<= phi2 1.9e-9)
       (atan2
        (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2)))
        (- t_0 t_2))
       (atan2
        (* (cos phi2) (fma (sin (- lambda2)) (cos lambda1) (sin lambda1)))
        (- t_0 (* (* (cos phi2) (sin phi1)) 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 = sin(phi1) * t_1;
	double tmp;
	if (phi2 <= -7.5e-5) {
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_0 - (cos(phi2) * t_2)));
	} else if (phi2 <= 1.9e-9) {
		tmp = atan2(((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2))), (t_0 - t_2));
	} else {
		tmp = atan2((cos(phi2) * fma(sin(-lambda2), cos(lambda1), sin(lambda1))), (t_0 - ((cos(phi2) * sin(phi1)) * 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(sin(phi1) * t_1)
	tmp = 0.0
	if (phi2 <= -7.5e-5)
		tmp = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(t_0 - Float64(cos(phi2) * t_2)));
	elseif (phi2 <= 1.9e-9)
		tmp = atan(Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2))), Float64(t_0 - t_2));
	else
		tmp = atan(Float64(cos(phi2) * fma(sin(Float64(-lambda2)), cos(lambda1), sin(lambda1))), Float64(t_0 - Float64(Float64(cos(phi2) * sin(phi1)) * 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[Sin[phi1], $MachinePrecision] * t$95$1), $MachinePrecision]}, If[LessEqual[phi2, -7.5e-5], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[phi2], $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[phi2, 1.9e-9], N[ArcTan[N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - t$95$2), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[(-lambda2)], $MachinePrecision] * N[Cos[lambda1], $MachinePrecision] + N[Sin[lambda1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $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 \left(\lambda_1 - \lambda_2\right)\\
t_2 := \sin \phi_1 \cdot t\_1\\
\mathbf{if}\;\phi_2 \leq -7.5 \cdot 10^{-5}:\\
\;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 - \cos \phi_2 \cdot t\_2}\\

\mathbf{elif}\;\phi_2 \leq 1.9 \cdot 10^{-9}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2}{t\_0 - t\_2}\\

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


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

    1. Initial program 73.1%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-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)} \]
      2. 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)} \]
      3. 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)}} \]
      4. 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)}} \]
      5. associate-*l*N/A

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

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

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

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

    if -7.49999999999999934e-5 < phi2 < 1.90000000000000006e-9

    1. Initial program 78.0%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6478.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)} \]
    5. Simplified78.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.0

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

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

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

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

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

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

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

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

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

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

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

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

    if 1.90000000000000006e-9 < phi2

    1. Initial program 69.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. sub-negN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -7.5 \cdot 10^{-5}:\\ \;\;\;\;\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(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}\\ \mathbf{elif}\;\phi_2 \leq 1.9 \cdot 10^{-9}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2}{\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 \mathsf{fma}\left(\sin \left(-\lambda_2\right), \cos \lambda_1, \sin \lambda_1\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 11: 82.8% accurate, 0.9× 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 := \sin \phi_1 \cdot t\_1\\ t_3 := \cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)\\ \mathbf{if}\;\phi_2 \leq -7.5 \cdot 10^{-5}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_3}{t\_0 - \cos \phi_2 \cdot t\_2}\\ \mathbf{elif}\;\phi_2 \leq 1.9 \cdot 10^{-9}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2}{t\_0 - t\_2}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{t\_3}{t\_0 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \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 (* (sin phi1) t_1))
        (t_3 (* (cos phi2) (sin (- lambda1 lambda2)))))
   (if (<= phi2 -7.5e-5)
     (atan2 t_3 (- t_0 (* (cos phi2) t_2)))
     (if (<= phi2 1.9e-9)
       (atan2
        (- (* (sin lambda1) (cos lambda2)) (* (cos lambda1) (sin lambda2)))
        (- t_0 t_2))
       (atan2 t_3 (- t_0 (* (* (cos phi2) (sin phi1)) 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 = sin(phi1) * t_1;
	double t_3 = cos(phi2) * sin((lambda1 - lambda2));
	double tmp;
	if (phi2 <= -7.5e-5) {
		tmp = atan2(t_3, (t_0 - (cos(phi2) * t_2)));
	} else if (phi2 <= 1.9e-9) {
		tmp = atan2(((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2))), (t_0 - t_2));
	} else {
		tmp = atan2(t_3, (t_0 - ((cos(phi2) * sin(phi1)) * 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 = sin(phi1) * t_1
    t_3 = cos(phi2) * sin((lambda1 - lambda2))
    if (phi2 <= (-7.5d-5)) then
        tmp = atan2(t_3, (t_0 - (cos(phi2) * t_2)))
    else if (phi2 <= 1.9d-9) then
        tmp = atan2(((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2))), (t_0 - t_2))
    else
        tmp = atan2(t_3, (t_0 - ((cos(phi2) * sin(phi1)) * 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.sin(phi1) * t_1;
	double t_3 = Math.cos(phi2) * Math.sin((lambda1 - lambda2));
	double tmp;
	if (phi2 <= -7.5e-5) {
		tmp = Math.atan2(t_3, (t_0 - (Math.cos(phi2) * t_2)));
	} else if (phi2 <= 1.9e-9) {
		tmp = Math.atan2(((Math.sin(lambda1) * Math.cos(lambda2)) - (Math.cos(lambda1) * Math.sin(lambda2))), (t_0 - t_2));
	} else {
		tmp = Math.atan2(t_3, (t_0 - ((Math.cos(phi2) * Math.sin(phi1)) * 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.sin(phi1) * t_1
	t_3 = math.cos(phi2) * math.sin((lambda1 - lambda2))
	tmp = 0
	if phi2 <= -7.5e-5:
		tmp = math.atan2(t_3, (t_0 - (math.cos(phi2) * t_2)))
	elif phi2 <= 1.9e-9:
		tmp = math.atan2(((math.sin(lambda1) * math.cos(lambda2)) - (math.cos(lambda1) * math.sin(lambda2))), (t_0 - t_2))
	else:
		tmp = math.atan2(t_3, (t_0 - ((math.cos(phi2) * math.sin(phi1)) * 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(sin(phi1) * t_1)
	t_3 = Float64(cos(phi2) * sin(Float64(lambda1 - lambda2)))
	tmp = 0.0
	if (phi2 <= -7.5e-5)
		tmp = atan(t_3, Float64(t_0 - Float64(cos(phi2) * t_2)));
	elseif (phi2 <= 1.9e-9)
		tmp = atan(Float64(Float64(sin(lambda1) * cos(lambda2)) - Float64(cos(lambda1) * sin(lambda2))), Float64(t_0 - t_2));
	else
		tmp = atan(t_3, Float64(t_0 - Float64(Float64(cos(phi2) * sin(phi1)) * 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 = sin(phi1) * t_1;
	t_3 = cos(phi2) * sin((lambda1 - lambda2));
	tmp = 0.0;
	if (phi2 <= -7.5e-5)
		tmp = atan2(t_3, (t_0 - (cos(phi2) * t_2)));
	elseif (phi2 <= 1.9e-9)
		tmp = atan2(((sin(lambda1) * cos(lambda2)) - (cos(lambda1) * sin(lambda2))), (t_0 - t_2));
	else
		tmp = atan2(t_3, (t_0 - ((cos(phi2) * sin(phi1)) * 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[Sin[phi1], $MachinePrecision] * t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[phi2, -7.5e-5], N[ArcTan[t$95$3 / N[(t$95$0 - N[(N[Cos[phi2], $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[phi2, 1.9e-9], N[ArcTan[N[(N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[lambda2], $MachinePrecision]), $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - t$95$2), $MachinePrecision]], $MachinePrecision], N[ArcTan[t$95$3 / N[(t$95$0 - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $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 \left(\lambda_1 - \lambda_2\right)\\
t_2 := \sin \phi_1 \cdot t\_1\\
t_3 := \cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)\\
\mathbf{if}\;\phi_2 \leq -7.5 \cdot 10^{-5}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_3}{t\_0 - \cos \phi_2 \cdot t\_2}\\

\mathbf{elif}\;\phi_2 \leq 1.9 \cdot 10^{-9}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2}{t\_0 - t\_2}\\

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


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

    1. Initial program 73.1%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-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)} \]
      2. 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)} \]
      3. 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)}} \]
      4. 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)}} \]
      5. associate-*l*N/A

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

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

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

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

    if -7.49999999999999934e-5 < phi2 < 1.90000000000000006e-9

    1. Initial program 78.0%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6478.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)} \]
    5. Simplified78.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.0

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

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

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

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

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

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

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

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

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

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

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

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

    if 1.90000000000000006e-9 < phi2

    1. Initial program 69.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. Recombined 3 regimes into one program.
  4. Final simplification79.3%

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda2 < -0.0025999999999999999 or 2.65e14 < lambda2

    1. Initial program 54.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.f6454.9

        \[\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. Simplified54.9%

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

    if -0.0025999999999999999 < lambda2 < 2.65e14

    1. Initial program 97.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 lambda2 around 0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_2 \leq -0.0026:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\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}\;\lambda_2 \leq 2.65 \cdot 10^{+14}:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(-\lambda_2\right) \cdot \cos \phi_2}{\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: 78.9% 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 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \mathbf{if}\;\lambda_1 \leq -8600:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;\lambda_1 \leq 0.6:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_0 - \cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \sin \phi_1\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 phi2) (sin phi1)) (cos (- lambda1 lambda2)))))))
   (if (<= lambda1 -8600.0)
     t_1
     (if (<= lambda1 0.6)
       (atan2
        (* (cos phi2) (sin (- lambda1 lambda2)))
        (- t_0 (* (cos phi2) (* (cos lambda2) (sin phi1)))))
       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(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
	double tmp;
	if (lambda1 <= -8600.0) {
		tmp = t_1;
	} else if (lambda1 <= 0.6) {
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_0 - (cos(phi2) * (cos(lambda2) * sin(phi1)))));
	} else {
		tmp = t_1;
	}
	return tmp;
}
real(8) function code(lambda1, lambda2, phi1, phi2)
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: tmp
    t_0 = cos(phi1) * sin(phi2)
    t_1 = atan2((sin(lambda1) * cos(phi2)), (t_0 - ((cos(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))))
    if (lambda1 <= (-8600.0d0)) then
        tmp = t_1
    else if (lambda1 <= 0.6d0) then
        tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_0 - (cos(phi2) * (cos(lambda2) * sin(phi1)))))
    else
        tmp = t_1
    end if
    code = tmp
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	double t_0 = Math.cos(phi1) * Math.sin(phi2);
	double t_1 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_0 - ((Math.cos(phi2) * Math.sin(phi1)) * Math.cos((lambda1 - lambda2)))));
	double tmp;
	if (lambda1 <= -8600.0) {
		tmp = t_1;
	} else if (lambda1 <= 0.6) {
		tmp = Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (t_0 - (Math.cos(phi2) * (Math.cos(lambda2) * Math.sin(phi1)))));
	} 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(phi2) * math.sin(phi1)) * math.cos((lambda1 - lambda2)))))
	tmp = 0
	if lambda1 <= -8600.0:
		tmp = t_1
	elif lambda1 <= 0.6:
		tmp = math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (t_0 - (math.cos(phi2) * (math.cos(lambda2) * math.sin(phi1)))))
	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(Float64(cos(phi2) * sin(phi1)) * cos(Float64(lambda1 - lambda2)))))
	tmp = 0.0
	if (lambda1 <= -8600.0)
		tmp = t_1;
	elseif (lambda1 <= 0.6)
		tmp = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(t_0 - Float64(cos(phi2) * Float64(cos(lambda2) * sin(phi1)))));
	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(phi2) * sin(phi1)) * cos((lambda1 - lambda2)))));
	tmp = 0.0;
	if (lambda1 <= -8600.0)
		tmp = t_1;
	elseif (lambda1 <= 0.6)
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_0 - (cos(phi2) * (cos(lambda2) * sin(phi1)))));
	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[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -8600.0], t$95$1, If[LessEqual[lambda1, 0.6], N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Cos[phi2], $MachinePrecision] * N[(N[Cos[lambda2], $MachinePrecision] * N[Sin[phi1], $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 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\
\mathbf{if}\;\lambda_1 \leq -8600:\\
\;\;\;\;t\_1\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -8600 or 0.599999999999999978 < lambda1

    1. Initial program 55.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 lambda2 around 0

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

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

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

    if -8600 < lambda1 < 0.599999999999999978

    1. Initial program 97.6%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-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)} \]
      2. 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)} \]
      3. 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)}} \]
      4. 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)}} \]
      5. associate-*l*N/A

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -8600:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\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}\;\lambda_1 \leq 0.6:\\ \;\;\;\;\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_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 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 14: 70.4% 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 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot t\_0}\\ \mathbf{if}\;\lambda_1 \leq -10500:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;\lambda_1 \leq 1:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{t\_1 + \sin \phi_1 \cdot \frac{1}{\frac{-1}{t\_0}}}\\ \mathbf{else}:\\ \;\;\;\;t\_2\\ \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
         (atan2
          (* (sin lambda1) (cos phi2))
          (- t_1 (* (* (cos phi2) (sin phi1)) t_0)))))
   (if (<= lambda1 -10500.0)
     t_2
     (if (<= lambda1 1.0)
       (atan2
        (* (cos phi2) (sin (- lambda1 lambda2)))
        (+ t_1 (* (sin phi1) (/ 1.0 (/ -1.0 t_0)))))
       t_2))))
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 = atan2((sin(lambda1) * cos(phi2)), (t_1 - ((cos(phi2) * sin(phi1)) * t_0)));
	double tmp;
	if (lambda1 <= -10500.0) {
		tmp = t_2;
	} else if (lambda1 <= 1.0) {
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 + (sin(phi1) * (1.0 / (-1.0 / 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((lambda1 - lambda2))
    t_1 = cos(phi1) * sin(phi2)
    t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - ((cos(phi2) * sin(phi1)) * t_0)))
    if (lambda1 <= (-10500.0d0)) then
        tmp = t_2
    else if (lambda1 <= 1.0d0) then
        tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 + (sin(phi1) * (1.0d0 / ((-1.0d0) / 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((lambda1 - lambda2));
	double t_1 = Math.cos(phi1) * Math.sin(phi2);
	double t_2 = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_1 - ((Math.cos(phi2) * Math.sin(phi1)) * t_0)));
	double tmp;
	if (lambda1 <= -10500.0) {
		tmp = t_2;
	} else if (lambda1 <= 1.0) {
		tmp = Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (t_1 + (Math.sin(phi1) * (1.0 / (-1.0 / t_0)))));
	} else {
		tmp = t_2;
	}
	return tmp;
}
def code(lambda1, lambda2, phi1, phi2):
	t_0 = math.cos((lambda1 - lambda2))
	t_1 = math.cos(phi1) * math.sin(phi2)
	t_2 = math.atan2((math.sin(lambda1) * math.cos(phi2)), (t_1 - ((math.cos(phi2) * math.sin(phi1)) * t_0)))
	tmp = 0
	if lambda1 <= -10500.0:
		tmp = t_2
	elif lambda1 <= 1.0:
		tmp = math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (t_1 + (math.sin(phi1) * (1.0 / (-1.0 / t_0)))))
	else:
		tmp = t_2
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	t_0 = cos(Float64(lambda1 - lambda2))
	t_1 = Float64(cos(phi1) * sin(phi2))
	t_2 = atan(Float64(sin(lambda1) * cos(phi2)), Float64(t_1 - Float64(Float64(cos(phi2) * sin(phi1)) * t_0)))
	tmp = 0.0
	if (lambda1 <= -10500.0)
		tmp = t_2;
	elseif (lambda1 <= 1.0)
		tmp = atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(t_1 + Float64(sin(phi1) * Float64(1.0 / Float64(-1.0 / t_0)))));
	else
		tmp = t_2;
	end
	return tmp
end
function tmp_2 = code(lambda1, lambda2, phi1, phi2)
	t_0 = cos((lambda1 - lambda2));
	t_1 = cos(phi1) * sin(phi2);
	t_2 = atan2((sin(lambda1) * cos(phi2)), (t_1 - ((cos(phi2) * sin(phi1)) * t_0)));
	tmp = 0.0;
	if (lambda1 <= -10500.0)
		tmp = t_2;
	elseif (lambda1 <= 1.0)
		tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), (t_1 + (sin(phi1) * (1.0 / (-1.0 / t_0)))));
	else
		tmp = t_2;
	end
	tmp_2 = 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[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$1 - N[(N[(N[Cos[phi2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[lambda1, -10500.0], t$95$2, If[LessEqual[lambda1, 1.0], 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[(1.0 / N[(-1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$2]]]]]
\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 := \tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_1 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot t\_0}\\
\mathbf{if}\;\lambda_1 \leq -10500:\\
\;\;\;\;t\_2\\

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda1 < -10500 or 1 < lambda1

    1. Initial program 55.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 lambda2 around 0

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

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

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

    if -10500 < lambda1 < 1

    1. Initial program 97.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{\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.f6481.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. Simplified81.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)} \]
    6. Step-by-step derivation
      1. cos-diffN/A

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -10500:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\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}\;\lambda_1 \leq 1:\\ \;\;\;\;\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 \frac{1}{\frac{-1}{\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 - \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 15: 79.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (* (cos phi2) (sin (- lambda1 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 - 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 - 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 - 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 - 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) * sin(Float64(lambda1 - 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 - 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[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]
\begin{array}{l}

\\
\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}
Derivation
  1. Initial program 74.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. Final simplification74.5%

    \[\leadsto \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)} \]
  4. Add Preprocessing

Alternative 16: 79.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (* (cos phi2) (sin (- lambda1 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 - 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 - 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 - 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 - 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) * sin(Float64(lambda1 - lambda2))), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(cos(phi2) * Float64(sin(phi1) * cos(Float64(lambda1 - lambda2))))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = atan2((cos(phi2) * sin((lambda1 - 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[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[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
\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(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)}
\end{array}
Derivation
  1. Initial program 74.5%

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-sin.f64N/A

      \[\leadsto \tan^{-1}_* \frac{\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)} \]
    2. 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)} \]
    3. 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)}} \]
    4. 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)}} \]
    5. associate-*l*N/A

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

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

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

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

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

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

    \[\leadsto \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(\sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \]
  6. Add Preprocessing

Alternative 17: 65.6% accurate, 1.1× 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)\\ \mathbf{if}\;\lambda_1 \leq -6800:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \cos \lambda_1 \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 0.6:\\ \;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \cos \lambda_2 \cdot \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{t\_0 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\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 lambda2)))))
   (if (<= lambda1 -6800.0)
     (atan2 t_1 (- t_0 (* (cos lambda1) (sin phi1))))
     (if (<= lambda1 0.6)
       (atan2 t_1 (- t_0 (* (cos lambda2) (sin phi1))))
       (atan2
        (* (sin lambda1) (cos phi2))
        (- t_0 (* (sin phi1) (cos (- lambda1 lambda2)))))))))
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 tmp;
	if (lambda1 <= -6800.0) {
		tmp = atan2(t_1, (t_0 - (cos(lambda1) * sin(phi1))));
	} else if (lambda1 <= 0.6) {
		tmp = atan2(t_1, (t_0 - (cos(lambda2) * sin(phi1))));
	} else {
		tmp = atan2((sin(lambda1) * cos(phi2)), (t_0 - (sin(phi1) * cos((lambda1 - lambda2)))));
	}
	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 = cos(phi2) * sin((lambda1 - lambda2))
    if (lambda1 <= (-6800.0d0)) then
        tmp = atan2(t_1, (t_0 - (cos(lambda1) * sin(phi1))))
    else if (lambda1 <= 0.6d0) then
        tmp = atan2(t_1, (t_0 - (cos(lambda2) * sin(phi1))))
    else
        tmp = atan2((sin(lambda1) * cos(phi2)), (t_0 - (sin(phi1) * cos((lambda1 - lambda2)))))
    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 tmp;
	if (lambda1 <= -6800.0) {
		tmp = Math.atan2(t_1, (t_0 - (Math.cos(lambda1) * Math.sin(phi1))));
	} else if (lambda1 <= 0.6) {
		tmp = Math.atan2(t_1, (t_0 - (Math.cos(lambda2) * Math.sin(phi1))));
	} else {
		tmp = Math.atan2((Math.sin(lambda1) * Math.cos(phi2)), (t_0 - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
	}
	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))
	tmp = 0
	if lambda1 <= -6800.0:
		tmp = math.atan2(t_1, (t_0 - (math.cos(lambda1) * math.sin(phi1))))
	elif lambda1 <= 0.6:
		tmp = math.atan2(t_1, (t_0 - (math.cos(lambda2) * math.sin(phi1))))
	else:
		tmp = math.atan2((math.sin(lambda1) * math.cos(phi2)), (t_0 - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
	return tmp
function code(lambda1, lambda2, phi1, phi2)
	t_0 = Float64(cos(phi1) * sin(phi2))
	t_1 = Float64(cos(phi2) * sin(Float64(lambda1 - lambda2)))
	tmp = 0.0
	if (lambda1 <= -6800.0)
		tmp = atan(t_1, Float64(t_0 - Float64(cos(lambda1) * sin(phi1))));
	elseif (lambda1 <= 0.6)
		tmp = atan(t_1, Float64(t_0 - Float64(cos(lambda2) * sin(phi1))));
	else
		tmp = atan(Float64(sin(lambda1) * cos(phi2)), Float64(t_0 - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))));
	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));
	tmp = 0.0;
	if (lambda1 <= -6800.0)
		tmp = atan2(t_1, (t_0 - (cos(lambda1) * sin(phi1))));
	elseif (lambda1 <= 0.6)
		tmp = atan2(t_1, (t_0 - (cos(lambda2) * sin(phi1))));
	else
		tmp = atan2((sin(lambda1) * cos(phi2)), (t_0 - (sin(phi1) * cos((lambda1 - lambda2)))));
	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]}, If[LessEqual[lambda1, -6800.0], N[ArcTan[t$95$1 / N[(t$95$0 - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[lambda1, 0.6], N[ArcTan[t$95$1 / N[(t$95$0 - N[(N[Cos[lambda2], $MachinePrecision] * N[Sin[phi1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(N[Sin[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 - N[(N[Sin[phi1], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $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)\\
\mathbf{if}\;\lambda_1 \leq -6800:\\
\;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \cos \lambda_1 \cdot \sin \phi_1}\\

\mathbf{elif}\;\lambda_1 \leq 0.6:\\
\;\;\;\;\tan^{-1}_* \frac{t\_1}{t\_0 - \cos \lambda_2 \cdot \sin \phi_1}\\

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


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

    1. Initial program 55.0%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6446.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified46.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    6. Taylor expanded in lambda2 around 0

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

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

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

    if -6800 < lambda1 < 0.599999999999999978

    1. Initial program 97.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{\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.f6481.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. Simplified81.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)} \]
    6. 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 - \sin \phi_1 \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(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \color{blue}{\cos \lambda_2}} \]
      2. lower-cos.f6481.8

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

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

    if 0.599999999999999978 < lambda1

    1. Initial program 54.9%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\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.f6448.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)} \]
    5. Simplified48.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. Step-by-step derivation
      1. lower-sin.f6448.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 \leq -6800:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \cos \lambda_1 \cdot \sin \phi_1}\\ \mathbf{elif}\;\lambda_1 \leq 0.6:\\ \;\;\;\;\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 \sin \phi_1}\\ \mathbf{else}:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1 \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 18: 65.5% accurate, 1.1× speedup?

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -0.0410000000000000017 or 1.3999999999999999e-4 < phi2

    1. Initial program 70.4%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    4. Step-by-step derivation
      1. lower-sin.f6449.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)} \]
    5. Simplified49.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)} \]
    6. Taylor expanded in lambda2 around 0

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

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

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

    if -0.0410000000000000017 < phi2 < 1.3999999999999999e-4

    1. Initial program 78.9%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\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.f6478.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)} \]
    5. Simplified78.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.2

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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)} \]
    9. 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}} \]
    10. 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. lower-cos.f64N/A

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

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

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

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

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

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

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

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

Alternative 19: 63.3% accurate, 1.1× speedup?

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if lambda2 < 4.1e14

    1. Initial program 84.5%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. 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.f6471.7

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

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

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

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

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

    if 4.1e14 < lambda2

    1. Initial program 52.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.f6444.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified44.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower-neg.f6444.5

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

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

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

Alternative 20: 65.6% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \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} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (atan2
  (* (cos phi2) (sin (- lambda1 lambda2)))
  (- (* (cos phi1) (sin phi2)) (* (sin phi1) (cos (- lambda1 lambda2))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(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 - lambda2))), ((cos(phi1) * sin(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 - lambda2))), ((Math.cos(phi1) * Math.sin(phi2)) - (Math.sin(phi1) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), ((math.cos(phi1) * math.sin(phi2)) - (math.sin(phi1) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(Float64(cos(phi1) * sin(phi2)) - Float64(sin(phi1) * cos(Float64(lambda1 - lambda2)))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = atan2((cos(phi2) * sin((lambda1 - lambda2))), ((cos(phi1) * sin(phi2)) - (sin(phi1) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := 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]
\begin{array}{l}

\\
\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}
Derivation
  1. Initial program 74.5%

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  2. Add Preprocessing
  3. Taylor expanded in phi2 around 0

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  4. Step-by-step derivation
    1. lower-sin.f6463.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)} \]
  5. Simplified63.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)} \]
  6. Final simplification63.0%

    \[\leadsto \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)} \]
  7. Add Preprocessing

Alternative 21: 65.3% accurate, 1.3× speedup?

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -0.0410000000000000017 or 7.5000000000000002e-4 < phi2

    1. Initial program 70.4%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1}} \]
    10. Step-by-step derivation
      1. lower-sin.f6448.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}} \]
    11. Simplified48.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}} \]

    if -0.0410000000000000017 < phi2 < 7.5000000000000002e-4

    1. Initial program 78.9%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\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.f6478.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)} \]
    5. Simplified78.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.2

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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)} \]
    9. 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}} \]
    10. 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. lower-cos.f64N/A

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \leq -0.041:\\ \;\;\;\;\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 \cdot \sin \phi_2 - \sin \phi_1}\\ \mathbf{elif}\;\phi_2 \leq 0.00075:\\ \;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\cos \left(\lambda_1 - \lambda_2\right), -\sin \phi_1, \phi_2 \cdot \cos \phi_1\right)}\\ \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}\\ \end{array} \]
  5. Add Preprocessing

Alternative 22: 64.4% accurate, 1.6× speedup?

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -0.0410000000000000017 or 8.1999999999999998e-4 < phi2

    1. Initial program 70.4%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

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

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

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

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

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

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

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

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

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

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

    if -0.0410000000000000017 < phi2 < 8.1999999999999998e-4

    1. Initial program 78.9%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

      \[\leadsto \tan^{-1}_* \frac{\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.f6478.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)} \]
    5. Simplified78.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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.2

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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)} \]
    9. 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}} \]
    10. 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. lower-cos.f64N/A

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

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

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

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

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

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

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

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

Alternative 23: 62.9% accurate, 1.9× speedup?

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if phi2 < -0.0400000000000000008 or 6.00000000000000012e-17 < phi2

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

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

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

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

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

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

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

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

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

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

    if -0.0400000000000000008 < phi2 < 6.00000000000000012e-17

    1. Initial program 78.5%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in phi2 around 0

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

        \[\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. Simplified77.9%

      \[\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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6478.0

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\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)} \]
    9. 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)}} \]
    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 \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. lower-cos.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)} \]
      5. lower--.f64N/A

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

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

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

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

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

Alternative 24: 48.9% accurate, 2.0× speedup?

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

\\
\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\sin \phi_2}
\end{array}
Derivation
  1. Initial program 74.5%

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  2. Add Preprocessing
  3. Taylor expanded in phi2 around 0

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

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

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

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

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

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

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

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

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

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

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

Alternative 25: 31.7% accurate, 2.7× speedup?

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

\\
\begin{array}{l}
\mathbf{if}\;\phi_2 \leq -1150:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \lambda_1}{\sin \phi_2}\\

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\mathsf{fma}\left(\phi_2 \cdot \phi_2, \mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.0001984126984126984, 0.008333333333333333\right), -0.16666666666666666\right), \phi_2 \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 < -1150

    1. Initial program 73.7%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. 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.f6452.9

        \[\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. Simplified52.9%

      \[\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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6416.1

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    11. Simplified14.5%

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

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]
    13. Step-by-step derivation
      1. lower-sin.f6415.8

        \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]
    14. Simplified15.8%

      \[\leadsto \tan^{-1}_* \frac{\color{blue}{\sin \lambda_1}}{\sin \phi_2} \]

    if -1150 < phi2

    1. Initial program 74.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.f6466.9

        \[\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. Simplified66.9%

      \[\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)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6457.4

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    12. 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({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right)\right)}} \]
    13. 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({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) + 1\right)}} \]
      2. distribute-rgt-inN/A

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) \cdot \left({\phi_2}^{2} \cdot \phi_2\right)} + 1 \cdot \phi_2} \]
      5. pow-plusN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) \cdot \color{blue}{{\phi_2}^{\left(2 + 1\right)}} + 1 \cdot \phi_2} \]
      6. metadata-evalN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) \cdot {\phi_2}^{\color{blue}{3}} + 1 \cdot \phi_2} \]
      7. cube-unmultN/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) \cdot \color{blue}{\left(\phi_2 \cdot \left(\phi_2 \cdot \phi_2\right)\right)} + 1 \cdot \phi_2} \]
      8. unpow2N/A

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}\right) \cdot \left(\phi_2 \cdot \color{blue}{{\phi_2}^{2}}\right) + 1 \cdot \phi_2} \]
      9. *-lft-identityN/A

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\mathsf{fma}\left({\phi_2}^{2} \cdot \left(\frac{1}{120} + \frac{-1}{5040} \cdot {\phi_2}^{2}\right) - \frac{1}{6}, \phi_2 \cdot {\phi_2}^{2}, \phi_2\right)}} \]
    14. Simplified33.6%

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

Alternative 26: 32.0% accurate, 3.5× speedup?

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

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

\mathbf{else}:\\
\;\;\;\;\tan^{-1}_* \frac{t\_0}{\mathsf{fma}\left(-0.16666666666666666, \phi_2 \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 < 1.3e9

    1. Initial program 76.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.f6468.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    5. Simplified68.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}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
      2. lower--.f6454.5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 1.3e9 < phi2

    1. Initial program 66.4%

      \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. Add Preprocessing
    3. 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.f6444.7

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

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\sin \phi_2}} \]
    11. Simplified13.4%

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

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\frac{-1}{6} \cdot {\phi_2}^{\color{blue}{3}} + 1 \cdot \phi_2} \]
      6. cube-unmultN/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)} + 1 \cdot \phi_2} \]
      7. 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) + 1 \cdot \phi_2} \]
      8. *-lft-identityN/A

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

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

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

        \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\frac{-1}{6}, \phi_2 \cdot \color{blue}{\left(\phi_2 \cdot \phi_2\right)}, \phi_2\right)} \]
      12. lower-*.f6414.3

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

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

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

Alternative 27: 29.5% accurate, 3.8× speedup?

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

\\
\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(-0.16666666666666666, \phi_2 \cdot \left(\phi_2 \cdot \phi_2\right), \phi_2\right)}
\end{array}
Derivation
  1. Initial program 74.5%

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  2. Add Preprocessing
  3. Taylor expanded in phi2 around 0

    \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \color{blue}{\sin \phi_1} \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  4. Step-by-step derivation
    1. lower-sin.f6463.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)} \]
  5. Simplified63.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)} \]
  6. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
  7. 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 - \sin \phi_1 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \]
    2. lower--.f6445.8

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

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

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

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

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

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\frac{-1}{6} \cdot {\phi_2}^{\color{blue}{3}} + 1 \cdot \phi_2} \]
    6. cube-unmultN/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)} + 1 \cdot \phi_2} \]
    7. 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) + 1 \cdot \phi_2} \]
    8. *-lft-identityN/A

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

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

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

      \[\leadsto \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\frac{-1}{6}, \phi_2 \cdot \color{blue}{\left(\phi_2 \cdot \phi_2\right)}, \phi_2\right)} \]
    12. lower-*.f6425.2

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

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

Reproduce

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