Average Error: 0.2 → 0.2
Time: 20.2s
Precision: 64
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}\]
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r114951 = lambda1;
        double r114952 = theta;
        double r114953 = sin(r114952);
        double r114954 = delta;
        double r114955 = sin(r114954);
        double r114956 = r114953 * r114955;
        double r114957 = phi1;
        double r114958 = cos(r114957);
        double r114959 = r114956 * r114958;
        double r114960 = cos(r114954);
        double r114961 = sin(r114957);
        double r114962 = r114961 * r114960;
        double r114963 = r114958 * r114955;
        double r114964 = cos(r114952);
        double r114965 = r114963 * r114964;
        double r114966 = r114962 + r114965;
        double r114967 = asin(r114966);
        double r114968 = sin(r114967);
        double r114969 = r114961 * r114968;
        double r114970 = r114960 - r114969;
        double r114971 = atan2(r114959, r114970);
        double r114972 = r114951 + r114971;
        return r114972;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r114973 = lambda1;
        double r114974 = theta;
        double r114975 = sin(r114974);
        double r114976 = delta;
        double r114977 = sin(r114976);
        double r114978 = r114975 * r114977;
        double r114979 = phi1;
        double r114980 = cos(r114979);
        double r114981 = r114978 * r114980;
        double r114982 = cos(r114976);
        double r114983 = sin(r114979);
        double r114984 = r114983 * r114982;
        double r114985 = r114980 * r114977;
        double r114986 = cos(r114974);
        double r114987 = r114985 * r114986;
        double r114988 = r114984 + r114987;
        double r114989 = asin(r114988);
        double r114990 = sin(r114989);
        double r114991 = r114983 * r114990;
        double r114992 = exp(r114991);
        double r114993 = log(r114992);
        double r114994 = r114982 - r114993;
        double r114995 = atan2(r114981, r114994);
        double r114996 = r114973 + r114995;
        return r114996;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
  2. Using strategy rm
  3. Applied add-log-exp0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \color{blue}{\log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}}\]
  4. Final simplification0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}\]

Reproduce

herbie shell --seed 2020042 
(FPCore (lambda1 phi1 phi2 delta theta)
  :name "Destination given bearing on a great circle"
  :precision binary64
  (+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))