Midpoint on a great circle

Percentage Accurate: 98.6% → 99.6%
Time: 9.7s
Alternatives: 16
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (+
  lambda1
  (atan2
   (* (cos phi2) (sin (- lambda1 lambda2)))
   (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(lambda1, lambda2, phi1, phi2)
use fmin_fmax_functions
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    code = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))))
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (Math.cos(phi1) + (Math.cos(phi2) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return lambda1 + math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (math.cos(phi1) + (math.cos(phi2) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return Float64(lambda1 + atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(cos(phi1) + Float64(cos(phi2) * cos(Float64(lambda1 - lambda2))))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[(lambda1 + N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[Cos[phi1], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 16 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: 98.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (+
  lambda1
  (atan2
   (* (cos phi2) (sin (- lambda1 lambda2)))
   (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(lambda1, lambda2, phi1, phi2)
use fmin_fmax_functions
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    code = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))))
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (Math.cos(phi1) + (Math.cos(phi2) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return lambda1 + math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (math.cos(phi1) + (math.cos(phi2) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return Float64(lambda1 + atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(cos(phi1) + Float64(cos(phi2) * cos(Float64(lambda1 - lambda2))))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[(lambda1 + N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[Cos[phi1], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

Alternative 1: 99.6% accurate, 0.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 2: 98.7% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (+
  lambda1
  (atan2
   (* (cos phi2) (- (sin lambda1) (* (cos lambda1) (sin lambda2))))
   (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + atan2((cos(phi2) * (sin(lambda1) - (cos(lambda1) * sin(lambda2)))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(lambda1, lambda2, phi1, phi2)
use fmin_fmax_functions
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    code = lambda1 + atan2((cos(phi2) * (sin(lambda1) - (cos(lambda1) * sin(lambda2)))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))))
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + Math.atan2((Math.cos(phi2) * (Math.sin(lambda1) - (Math.cos(lambda1) * Math.sin(lambda2)))), (Math.cos(phi1) + (Math.cos(phi2) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return lambda1 + math.atan2((math.cos(phi2) * (math.sin(lambda1) - (math.cos(lambda1) * math.sin(lambda2)))), (math.cos(phi1) + (math.cos(phi2) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return Float64(lambda1 + atan(Float64(cos(phi2) * Float64(sin(lambda1) - Float64(cos(lambda1) * sin(lambda2)))), Float64(cos(phi1) + Float64(cos(phi2) * cos(Float64(lambda1 - lambda2))))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = lambda1 + atan2((cos(phi2) * (sin(lambda1) - (cos(lambda1) * sin(lambda2)))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[(lambda1 + N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[(N[Sin[lambda1], $MachinePrecision] - N[(N[Cos[lambda1], $MachinePrecision] * N[Sin[lambda2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[phi1], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 3: 98.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)} \end{array} \]
(FPCore (lambda1 lambda2 phi1 phi2)
 :precision binary64
 (+
  lambda1
  (atan2
   (* (cos phi2) (sin (- lambda1 lambda2)))
   (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(lambda1, lambda2, phi1, phi2)
use fmin_fmax_functions
    real(8), intent (in) :: lambda1
    real(8), intent (in) :: lambda2
    real(8), intent (in) :: phi1
    real(8), intent (in) :: phi2
    code = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))))
end function
public static double code(double lambda1, double lambda2, double phi1, double phi2) {
	return lambda1 + Math.atan2((Math.cos(phi2) * Math.sin((lambda1 - lambda2))), (Math.cos(phi1) + (Math.cos(phi2) * Math.cos((lambda1 - lambda2)))));
}
def code(lambda1, lambda2, phi1, phi2):
	return lambda1 + math.atan2((math.cos(phi2) * math.sin((lambda1 - lambda2))), (math.cos(phi1) + (math.cos(phi2) * math.cos((lambda1 - lambda2)))))
function code(lambda1, lambda2, phi1, phi2)
	return Float64(lambda1 + atan(Float64(cos(phi2) * sin(Float64(lambda1 - lambda2))), Float64(cos(phi1) + Float64(cos(phi2) * cos(Float64(lambda1 - lambda2))))))
end
function tmp = code(lambda1, lambda2, phi1, phi2)
	tmp = lambda1 + atan2((cos(phi2) * sin((lambda1 - lambda2))), (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
end
code[lambda1_, lambda2_, phi1_, phi2_] := N[(lambda1 + N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[Cos[phi1], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

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

Alternative 4: 97.7% accurate, 0.2× speedup?

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

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

\mathbf{elif}\;t\_4 \leq -0.01:\\
\;\;\;\;t\_2\\

\mathbf{elif}\;t\_4 \leq 10^{-8}:\\
\;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_1}{\cos \phi_1 + \cos \phi_2}\\

\mathbf{elif}\;t\_4 \leq 5:\\
\;\;\;\;t\_2\\

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


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

    1. Initial program 99.5%

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

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

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

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

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

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

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

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

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

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

      if -400 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < -0.0100000000000000002 or 1e-8 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < 5

      1. Initial program 97.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if -0.0100000000000000002 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < 1e-8

      1. Initial program 99.0%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      1. Initial program 98.8%

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

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

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

      Alternative 5: 97.7% accurate, 0.2× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \tan^{-1}_* \frac{t\_0 \cdot \cos \phi_2}{\mathsf{fma}\left(\cos \left(\lambda_2 - \lambda_1\right), \cos \phi_2, \cos \phi_1\right)}\\ t_2 := \cos \phi_2 \cdot t\_0\\ t_3 := \lambda_1 + \tan^{-1}_* \frac{t\_2}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\ t_4 := \mathsf{fma}\left(\cos \lambda_1, \cos \phi_2, \cos \phi_1\right)\\ \mathbf{if}\;t\_3 \leq -400:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{1 \cdot t\_0}{t\_4}\\ \mathbf{elif}\;t\_3 \leq -0.01:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t\_3 \leq 10^{-8}:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_2}{\cos \phi_1 + \cos \phi_2}\\ \mathbf{elif}\;t\_3 \leq 5:\\ \;\;\;\;t\_1\\ \mathbf{else}:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \lambda_1}{t\_4}\\ \end{array} \end{array} \]
      (FPCore (lambda1 lambda2 phi1 phi2)
       :precision binary64
       (let* ((t_0 (sin (- lambda1 lambda2)))
              (t_1
               (atan2
                (* t_0 (cos phi2))
                (fma (cos (- lambda2 lambda1)) (cos phi2) (cos phi1))))
              (t_2 (* (cos phi2) t_0))
              (t_3
               (+
                lambda1
                (atan2 t_2 (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))
              (t_4 (fma (cos lambda1) (cos phi2) (cos phi1))))
         (if (<= t_3 -400.0)
           (+ lambda1 (atan2 (* 1.0 t_0) t_4))
           (if (<= t_3 -0.01)
             t_1
             (if (<= t_3 1e-8)
               (+ lambda1 (atan2 t_2 (+ (cos phi1) (cos phi2))))
               (if (<= t_3 5.0)
                 t_1
                 (+ lambda1 (atan2 (* (cos phi2) (sin lambda1)) t_4))))))))
      double code(double lambda1, double lambda2, double phi1, double phi2) {
      	double t_0 = sin((lambda1 - lambda2));
      	double t_1 = atan2((t_0 * cos(phi2)), fma(cos((lambda2 - lambda1)), cos(phi2), cos(phi1)));
      	double t_2 = cos(phi2) * t_0;
      	double t_3 = lambda1 + atan2(t_2, (cos(phi1) + (cos(phi2) * cos((lambda1 - lambda2)))));
      	double t_4 = fma(cos(lambda1), cos(phi2), cos(phi1));
      	double tmp;
      	if (t_3 <= -400.0) {
      		tmp = lambda1 + atan2((1.0 * t_0), t_4);
      	} else if (t_3 <= -0.01) {
      		tmp = t_1;
      	} else if (t_3 <= 1e-8) {
      		tmp = lambda1 + atan2(t_2, (cos(phi1) + cos(phi2)));
      	} else if (t_3 <= 5.0) {
      		tmp = t_1;
      	} else {
      		tmp = lambda1 + atan2((cos(phi2) * sin(lambda1)), t_4);
      	}
      	return tmp;
      }
      
      function code(lambda1, lambda2, phi1, phi2)
      	t_0 = sin(Float64(lambda1 - lambda2))
      	t_1 = atan(Float64(t_0 * cos(phi2)), fma(cos(Float64(lambda2 - lambda1)), cos(phi2), cos(phi1)))
      	t_2 = Float64(cos(phi2) * t_0)
      	t_3 = Float64(lambda1 + atan(t_2, Float64(cos(phi1) + Float64(cos(phi2) * cos(Float64(lambda1 - lambda2))))))
      	t_4 = fma(cos(lambda1), cos(phi2), cos(phi1))
      	tmp = 0.0
      	if (t_3 <= -400.0)
      		tmp = Float64(lambda1 + atan(Float64(1.0 * t_0), t_4));
      	elseif (t_3 <= -0.01)
      		tmp = t_1;
      	elseif (t_3 <= 1e-8)
      		tmp = Float64(lambda1 + atan(t_2, Float64(cos(phi1) + cos(phi2))));
      	elseif (t_3 <= 5.0)
      		tmp = t_1;
      	else
      		tmp = Float64(lambda1 + atan(Float64(cos(phi2) * sin(lambda1)), t_4));
      	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[(t$95$0 * N[Cos[phi2], $MachinePrecision]), $MachinePrecision] / N[(N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision] * N[Cos[phi2], $MachinePrecision] + N[Cos[phi1], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Cos[phi2], $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(lambda1 + N[ArcTan[t$95$2 / N[(N[Cos[phi1], $MachinePrecision] + N[(N[Cos[phi2], $MachinePrecision] * N[Cos[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[Cos[lambda1], $MachinePrecision] * N[Cos[phi2], $MachinePrecision] + N[Cos[phi1], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$3, -400.0], N[(lambda1 + N[ArcTan[N[(1.0 * t$95$0), $MachinePrecision] / t$95$4], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, -0.01], t$95$1, If[LessEqual[t$95$3, 1e-8], N[(lambda1 + N[ArcTan[t$95$2 / N[(N[Cos[phi1], $MachinePrecision] + N[Cos[phi2], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5.0], t$95$1, N[(lambda1 + N[ArcTan[N[(N[Cos[phi2], $MachinePrecision] * N[Sin[lambda1], $MachinePrecision]), $MachinePrecision] / t$95$4], $MachinePrecision]), $MachinePrecision]]]]]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\
      t_1 := \tan^{-1}_* \frac{t\_0 \cdot \cos \phi_2}{\mathsf{fma}\left(\cos \left(\lambda_2 - \lambda_1\right), \cos \phi_2, \cos \phi_1\right)}\\
      t_2 := \cos \phi_2 \cdot t\_0\\
      t_3 := \lambda_1 + \tan^{-1}_* \frac{t\_2}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\\
      t_4 := \mathsf{fma}\left(\cos \lambda_1, \cos \phi_2, \cos \phi_1\right)\\
      \mathbf{if}\;t\_3 \leq -400:\\
      \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{1 \cdot t\_0}{t\_4}\\
      
      \mathbf{elif}\;t\_3 \leq -0.01:\\
      \;\;\;\;t\_1\\
      
      \mathbf{elif}\;t\_3 \leq 10^{-8}:\\
      \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_2}{\cos \phi_1 + \cos \phi_2}\\
      
      \mathbf{elif}\;t\_3 \leq 5:\\
      \;\;\;\;t\_1\\
      
      \mathbf{else}:\\
      \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \lambda_1}{t\_4}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 4 regimes
      2. if (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < -400

        1. Initial program 99.5%

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

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

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

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

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

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

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

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

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

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

          if -400 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < -0.0100000000000000002 or 1e-8 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < 5

          1. Initial program 97.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          if -0.0100000000000000002 < (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))) < 1e-8

          1. Initial program 99.0%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          1. Initial program 98.8%

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

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

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

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

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

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

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

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

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

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

          Alternative 6: 87.7% accurate, 0.9× speedup?

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

            1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2} \]
            7. Applied rewrites77.9%

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

            if 0.99561999999999995 < (cos.f64 phi2)

            1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Alternative 7: 87.7% accurate, 0.9× speedup?

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

            1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2} \]
            7. Applied rewrites77.9%

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

            if 0.99561999999999995 < (cos.f64 phi2)

            1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Alternative 8: 87.7% accurate, 0.9× speedup?

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

            1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2} \]
            7. Applied rewrites77.9%

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

            if 0.99561999999999995 < (cos.f64 phi2)

            1. Initial program 98.7%

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

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

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

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

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

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

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

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

          Alternative 9: 87.6% accurate, 1.0× speedup?

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

            1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2} \]
            7. Applied rewrites77.9%

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

            if 0.99561999999999995 < (cos.f64 phi2)

            1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Alternative 10: 79.5% accurate, 1.2× speedup?

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

              1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                if 0.110000000000000001 < phi2

                1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

              Alternative 11: 78.8% accurate, 1.1× speedup?

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

                1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                if 0.78000000000000003 < (cos.f64 phi2)

                1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                  2. lift--.f6491.5

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                10. Applied rewrites91.5%

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

              Alternative 12: 78.6% accurate, 1.2× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\ \mathbf{if}\;\cos \phi_2 \leq -0.01:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 + \left(\phi_1 \cdot \phi_1\right) \cdot \mathsf{fma}\left(\phi_1 \cdot \phi_1, 0.041666666666666664 - 0.001388888888888889 \cdot \left(\phi_1 \cdot \phi_1\right), -0.5\right)\right) + t\_1}\\ \mathbf{else}:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_0}{\cos \phi_1 + t\_1}\\ \end{array} \end{array} \]
              (FPCore (lambda1 lambda2 phi1 phi2)
               :precision binary64
               (let* ((t_0 (sin (- lambda1 lambda2))) (t_1 (cos (- lambda2 lambda1))))
                 (if (<= (cos phi2) -0.01)
                   (+
                    lambda1
                    (atan2
                     (* (fma (* phi2 phi2) -0.5 1.0) t_0)
                     (+
                      (+
                       1.0
                       (*
                        (* phi1 phi1)
                        (fma
                         (* phi1 phi1)
                         (- 0.041666666666666664 (* 0.001388888888888889 (* phi1 phi1)))
                         -0.5)))
                      t_1)))
                   (+ lambda1 (atan2 t_0 (+ (cos phi1) t_1))))))
              double code(double lambda1, double lambda2, double phi1, double phi2) {
              	double t_0 = sin((lambda1 - lambda2));
              	double t_1 = cos((lambda2 - lambda1));
              	double tmp;
              	if (cos(phi2) <= -0.01) {
              		tmp = lambda1 + atan2((fma((phi2 * phi2), -0.5, 1.0) * t_0), ((1.0 + ((phi1 * phi1) * fma((phi1 * phi1), (0.041666666666666664 - (0.001388888888888889 * (phi1 * phi1))), -0.5))) + t_1));
              	} else {
              		tmp = lambda1 + atan2(t_0, (cos(phi1) + t_1));
              	}
              	return tmp;
              }
              
              function code(lambda1, lambda2, phi1, phi2)
              	t_0 = sin(Float64(lambda1 - lambda2))
              	t_1 = cos(Float64(lambda2 - lambda1))
              	tmp = 0.0
              	if (cos(phi2) <= -0.01)
              		tmp = Float64(lambda1 + atan(Float64(fma(Float64(phi2 * phi2), -0.5, 1.0) * t_0), Float64(Float64(1.0 + Float64(Float64(phi1 * phi1) * fma(Float64(phi1 * phi1), Float64(0.041666666666666664 - Float64(0.001388888888888889 * Float64(phi1 * phi1))), -0.5))) + t_1)));
              	else
              		tmp = Float64(lambda1 + atan(t_0, Float64(cos(phi1) + 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[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Cos[phi2], $MachinePrecision], -0.01], N[(lambda1 + N[ArcTan[N[(N[(N[(phi2 * phi2), $MachinePrecision] * -0.5 + 1.0), $MachinePrecision] * t$95$0), $MachinePrecision] / N[(N[(1.0 + N[(N[(phi1 * phi1), $MachinePrecision] * N[(N[(phi1 * phi1), $MachinePrecision] * N[(0.041666666666666664 - N[(0.001388888888888889 * N[(phi1 * phi1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(lambda1 + N[ArcTan[t$95$0 / N[(N[Cos[phi1], $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\
              t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\
              \mathbf{if}\;\cos \phi_2 \leq -0.01:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 + \left(\phi_1 \cdot \phi_1\right) \cdot \mathsf{fma}\left(\phi_1 \cdot \phi_1, 0.041666666666666664 - 0.001388888888888889 \cdot \left(\phi_1 \cdot \phi_1\right), -0.5\right)\right) + t\_1}\\
              
              \mathbf{else}:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_0}{\cos \phi_1 + t\_1}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (cos.f64 phi2) < -0.0100000000000000002

                1. Initial program 98.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                if -0.0100000000000000002 < (cos.f64 phi2)

                1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                  2. lift--.f6485.0

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                10. Applied rewrites85.0%

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

              Alternative 13: 78.5% accurate, 1.2× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\ \mathbf{if}\;\cos \phi_2 \leq -0.01:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 - 0.5 \cdot \left(\phi_1 \cdot \phi_1\right)\right) + t\_1}\\ \mathbf{else}:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_0}{\cos \phi_1 + t\_1}\\ \end{array} \end{array} \]
              (FPCore (lambda1 lambda2 phi1 phi2)
               :precision binary64
               (let* ((t_0 (sin (- lambda1 lambda2))) (t_1 (cos (- lambda2 lambda1))))
                 (if (<= (cos phi2) -0.01)
                   (+
                    lambda1
                    (atan2
                     (* (fma (* phi2 phi2) -0.5 1.0) t_0)
                     (+ (- 1.0 (* 0.5 (* phi1 phi1))) t_1)))
                   (+ lambda1 (atan2 t_0 (+ (cos phi1) t_1))))))
              double code(double lambda1, double lambda2, double phi1, double phi2) {
              	double t_0 = sin((lambda1 - lambda2));
              	double t_1 = cos((lambda2 - lambda1));
              	double tmp;
              	if (cos(phi2) <= -0.01) {
              		tmp = lambda1 + atan2((fma((phi2 * phi2), -0.5, 1.0) * t_0), ((1.0 - (0.5 * (phi1 * phi1))) + t_1));
              	} else {
              		tmp = lambda1 + atan2(t_0, (cos(phi1) + t_1));
              	}
              	return tmp;
              }
              
              function code(lambda1, lambda2, phi1, phi2)
              	t_0 = sin(Float64(lambda1 - lambda2))
              	t_1 = cos(Float64(lambda2 - lambda1))
              	tmp = 0.0
              	if (cos(phi2) <= -0.01)
              		tmp = Float64(lambda1 + atan(Float64(fma(Float64(phi2 * phi2), -0.5, 1.0) * t_0), Float64(Float64(1.0 - Float64(0.5 * Float64(phi1 * phi1))) + t_1)));
              	else
              		tmp = Float64(lambda1 + atan(t_0, Float64(cos(phi1) + 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[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Cos[phi2], $MachinePrecision], -0.01], N[(lambda1 + N[ArcTan[N[(N[(N[(phi2 * phi2), $MachinePrecision] * -0.5 + 1.0), $MachinePrecision] * t$95$0), $MachinePrecision] / N[(N[(1.0 - N[(0.5 * N[(phi1 * phi1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(lambda1 + N[ArcTan[t$95$0 / N[(N[Cos[phi1], $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\
              t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\
              \mathbf{if}\;\cos \phi_2 \leq -0.01:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 - 0.5 \cdot \left(\phi_1 \cdot \phi_1\right)\right) + t\_1}\\
              
              \mathbf{else}:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{t\_0}{\cos \phi_1 + t\_1}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (cos.f64 phi2) < -0.0100000000000000002

                1. Initial program 98.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                if -0.0100000000000000002 < (cos.f64 phi2)

                1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                  2. lift--.f6485.0

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                10. Applied rewrites85.0%

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

              Alternative 14: 68.5% accurate, 1.3× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\ t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\ \mathbf{if}\;\cos \phi_2 \leq -0.01:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 - 0.5 \cdot \left(\phi_1 \cdot \phi_1\right)\right) + t\_1}\\ \mathbf{else}:\\ \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{1 \cdot t\_0}{1 + t\_1}\\ \end{array} \end{array} \]
              (FPCore (lambda1 lambda2 phi1 phi2)
               :precision binary64
               (let* ((t_0 (sin (- lambda1 lambda2))) (t_1 (cos (- lambda2 lambda1))))
                 (if (<= (cos phi2) -0.01)
                   (+
                    lambda1
                    (atan2
                     (* (fma (* phi2 phi2) -0.5 1.0) t_0)
                     (+ (- 1.0 (* 0.5 (* phi1 phi1))) t_1)))
                   (+ lambda1 (atan2 (* 1.0 t_0) (+ 1.0 t_1))))))
              double code(double lambda1, double lambda2, double phi1, double phi2) {
              	double t_0 = sin((lambda1 - lambda2));
              	double t_1 = cos((lambda2 - lambda1));
              	double tmp;
              	if (cos(phi2) <= -0.01) {
              		tmp = lambda1 + atan2((fma((phi2 * phi2), -0.5, 1.0) * t_0), ((1.0 - (0.5 * (phi1 * phi1))) + t_1));
              	} else {
              		tmp = lambda1 + atan2((1.0 * t_0), (1.0 + t_1));
              	}
              	return tmp;
              }
              
              function code(lambda1, lambda2, phi1, phi2)
              	t_0 = sin(Float64(lambda1 - lambda2))
              	t_1 = cos(Float64(lambda2 - lambda1))
              	tmp = 0.0
              	if (cos(phi2) <= -0.01)
              		tmp = Float64(lambda1 + atan(Float64(fma(Float64(phi2 * phi2), -0.5, 1.0) * t_0), Float64(Float64(1.0 - Float64(0.5 * Float64(phi1 * phi1))) + t_1)));
              	else
              		tmp = Float64(lambda1 + atan(Float64(1.0 * t_0), Float64(1.0 + 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[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Cos[phi2], $MachinePrecision], -0.01], N[(lambda1 + N[ArcTan[N[(N[(N[(phi2 * phi2), $MachinePrecision] * -0.5 + 1.0), $MachinePrecision] * t$95$0), $MachinePrecision] / N[(N[(1.0 - N[(0.5 * N[(phi1 * phi1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(lambda1 + N[ArcTan[N[(1.0 * t$95$0), $MachinePrecision] / N[(1.0 + t$95$1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \sin \left(\lambda_1 - \lambda_2\right)\\
              t_1 := \cos \left(\lambda_2 - \lambda_1\right)\\
              \mathbf{if}\;\cos \phi_2 \leq -0.01:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{\mathsf{fma}\left(\phi_2 \cdot \phi_2, -0.5, 1\right) \cdot t\_0}{\left(1 - 0.5 \cdot \left(\phi_1 \cdot \phi_1\right)\right) + t\_1}\\
              
              \mathbf{else}:\\
              \;\;\;\;\lambda_1 + \tan^{-1}_* \frac{1 \cdot t\_0}{1 + t\_1}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (cos.f64 phi2) < -0.0100000000000000002

                1. Initial program 98.5%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                if -0.0100000000000000002 < (cos.f64 phi2)

                1. Initial program 98.7%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{1 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                  3. Step-by-step derivation
                    1. Applied rewrites71.7%

                      \[\leadsto \lambda_1 + \tan^{-1}_* \frac{1 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                  4. Recombined 2 regimes into one program.
                  5. Add Preprocessing

                  Alternative 15: 66.1% accurate, 2.1× speedup?

                  \[\begin{array}{l} \\ \lambda_1 + \tan^{-1}_* \frac{1 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{1 + \cos \left(\lambda_2 - \lambda_1\right)} \end{array} \]
                  (FPCore (lambda1 lambda2 phi1 phi2)
                   :precision binary64
                   (+
                    lambda1
                    (atan2 (* 1.0 (sin (- lambda1 lambda2))) (+ 1.0 (cos (- lambda2 lambda1))))))
                  double code(double lambda1, double lambda2, double phi1, double phi2) {
                  	return lambda1 + atan2((1.0 * sin((lambda1 - lambda2))), (1.0 + cos((lambda2 - lambda1))));
                  }
                  
                  module fmin_fmax_functions
                      implicit none
                      private
                      public fmax
                      public fmin
                  
                      interface fmax
                          module procedure fmax88
                          module procedure fmax44
                          module procedure fmax84
                          module procedure fmax48
                      end interface
                      interface fmin
                          module procedure fmin88
                          module procedure fmin44
                          module procedure fmin84
                          module procedure fmin48
                      end interface
                  contains
                      real(8) function fmax88(x, y) result (res)
                          real(8), intent (in) :: x
                          real(8), intent (in) :: y
                          res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                      end function
                      real(4) function fmax44(x, y) result (res)
                          real(4), intent (in) :: x
                          real(4), intent (in) :: y
                          res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                      end function
                      real(8) function fmax84(x, y) result(res)
                          real(8), intent (in) :: x
                          real(4), intent (in) :: y
                          res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                      end function
                      real(8) function fmax48(x, y) result(res)
                          real(4), intent (in) :: x
                          real(8), intent (in) :: y
                          res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                      end function
                      real(8) function fmin88(x, y) result (res)
                          real(8), intent (in) :: x
                          real(8), intent (in) :: y
                          res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                      end function
                      real(4) function fmin44(x, y) result (res)
                          real(4), intent (in) :: x
                          real(4), intent (in) :: y
                          res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                      end function
                      real(8) function fmin84(x, y) result(res)
                          real(8), intent (in) :: x
                          real(4), intent (in) :: y
                          res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                      end function
                      real(8) function fmin48(x, y) result(res)
                          real(4), intent (in) :: x
                          real(8), intent (in) :: y
                          res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                      end function
                  end module
                  
                  real(8) function code(lambda1, lambda2, phi1, phi2)
                  use fmin_fmax_functions
                      real(8), intent (in) :: lambda1
                      real(8), intent (in) :: lambda2
                      real(8), intent (in) :: phi1
                      real(8), intent (in) :: phi2
                      code = lambda1 + atan2((1.0d0 * sin((lambda1 - lambda2))), (1.0d0 + cos((lambda2 - lambda1))))
                  end function
                  
                  public static double code(double lambda1, double lambda2, double phi1, double phi2) {
                  	return lambda1 + Math.atan2((1.0 * Math.sin((lambda1 - lambda2))), (1.0 + Math.cos((lambda2 - lambda1))));
                  }
                  
                  def code(lambda1, lambda2, phi1, phi2):
                  	return lambda1 + math.atan2((1.0 * math.sin((lambda1 - lambda2))), (1.0 + math.cos((lambda2 - lambda1))))
                  
                  function code(lambda1, lambda2, phi1, phi2)
                  	return Float64(lambda1 + atan(Float64(1.0 * sin(Float64(lambda1 - lambda2))), Float64(1.0 + cos(Float64(lambda2 - lambda1)))))
                  end
                  
                  function tmp = code(lambda1, lambda2, phi1, phi2)
                  	tmp = lambda1 + atan2((1.0 * sin((lambda1 - lambda2))), (1.0 + cos((lambda2 - lambda1))));
                  end
                  
                  code[lambda1_, lambda2_, phi1_, phi2_] := N[(lambda1 + N[ArcTan[N[(1.0 * N[Sin[N[(lambda1 - lambda2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[Cos[N[(lambda2 - lambda1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  \lambda_1 + \tan^{-1}_* \frac{1 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{1 + \cos \left(\lambda_2 - \lambda_1\right)}
                  \end{array}
                  
                  Derivation
                  1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                      \[\leadsto \lambda_1 + \tan^{-1}_* \frac{1 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{1 + \cos \left(\lambda_2 - \lambda_1\right)} \]
                    3. Step-by-step derivation
                      1. Applied rewrites66.1%

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

                      Alternative 16: 52.1% accurate, 192.4× speedup?

                      \[\begin{array}{l} \\ \lambda_1 \end{array} \]
                      (FPCore (lambda1 lambda2 phi1 phi2) :precision binary64 lambda1)
                      double code(double lambda1, double lambda2, double phi1, double phi2) {
                      	return lambda1;
                      }
                      
                      module fmin_fmax_functions
                          implicit none
                          private
                          public fmax
                          public fmin
                      
                          interface fmax
                              module procedure fmax88
                              module procedure fmax44
                              module procedure fmax84
                              module procedure fmax48
                          end interface
                          interface fmin
                              module procedure fmin88
                              module procedure fmin44
                              module procedure fmin84
                              module procedure fmin48
                          end interface
                      contains
                          real(8) function fmax88(x, y) result (res)
                              real(8), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                          end function
                          real(4) function fmax44(x, y) result (res)
                              real(4), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                          end function
                          real(8) function fmax84(x, y) result(res)
                              real(8), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                          end function
                          real(8) function fmax48(x, y) result(res)
                              real(4), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                          end function
                          real(8) function fmin88(x, y) result (res)
                              real(8), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                          end function
                          real(4) function fmin44(x, y) result (res)
                              real(4), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                          end function
                          real(8) function fmin84(x, y) result(res)
                              real(8), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                          end function
                          real(8) function fmin48(x, y) result(res)
                              real(4), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                          end function
                      end module
                      
                      real(8) function code(lambda1, lambda2, phi1, phi2)
                      use fmin_fmax_functions
                          real(8), intent (in) :: lambda1
                          real(8), intent (in) :: lambda2
                          real(8), intent (in) :: phi1
                          real(8), intent (in) :: phi2
                          code = lambda1
                      end function
                      
                      public static double code(double lambda1, double lambda2, double phi1, double phi2) {
                      	return lambda1;
                      }
                      
                      def code(lambda1, lambda2, phi1, phi2):
                      	return lambda1
                      
                      function code(lambda1, lambda2, phi1, phi2)
                      	return lambda1
                      end
                      
                      function tmp = code(lambda1, lambda2, phi1, phi2)
                      	tmp = lambda1;
                      end
                      
                      code[lambda1_, lambda2_, phi1_, phi2_] := lambda1
                      
                      \begin{array}{l}
                      
                      \\
                      \lambda_1
                      \end{array}
                      
                      Derivation
                      1. Initial program 98.6%

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

                        \[\leadsto \color{blue}{\lambda_1} \]
                      3. Step-by-step derivation
                        1. Applied rewrites52.1%

                          \[\leadsto \color{blue}{\lambda_1} \]
                        2. Add Preprocessing

                        Reproduce

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