\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}{\frac{{\left(\cos delta\right)}^{3} - \left(3 \cdot \left({\left(\sin \phi_1\right)}^{4} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left(\cos delta \cdot \left({\left(\sin delta\right)}^{2} \cdot {\left(\cos theta\right)}^{2}\right)\right)\right)\right) + \left({\left(\sin \phi_1\right)}^{3} \cdot \left({\left(\cos \phi_1\right)}^{3} \cdot \left({\left(\cos theta\right)}^{3} \cdot {\left(\sin delta\right)}^{3}\right)\right) + \left({\left(\sin \phi_1\right)}^{6} \cdot {\left(\cos delta\right)}^{3} + 3 \cdot \left({\left(\sin \phi_1\right)}^{5} \cdot \left(\cos \phi_1 \cdot \left(\sin delta \cdot \left({\left(\cos delta\right)}^{2} \cdot \cos theta\right)\right)\right)\right)\right)\right)\right)}{\cos delta \cdot \cos delta + \left(\sin \phi_1 \cdot \sin \left(\frac{\pi}{2} - \cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right) \cdot \left(\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)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r76121 = lambda1;
double r76122 = theta;
double r76123 = sin(r76122);
double r76124 = delta;
double r76125 = sin(r76124);
double r76126 = r76123 * r76125;
double r76127 = phi1;
double r76128 = cos(r76127);
double r76129 = r76126 * r76128;
double r76130 = cos(r76124);
double r76131 = sin(r76127);
double r76132 = r76131 * r76130;
double r76133 = r76128 * r76125;
double r76134 = cos(r76122);
double r76135 = r76133 * r76134;
double r76136 = r76132 + r76135;
double r76137 = asin(r76136);
double r76138 = sin(r76137);
double r76139 = r76131 * r76138;
double r76140 = r76130 - r76139;
double r76141 = atan2(r76129, r76140);
double r76142 = r76121 + r76141;
return r76142;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r76143 = lambda1;
double r76144 = theta;
double r76145 = sin(r76144);
double r76146 = delta;
double r76147 = sin(r76146);
double r76148 = r76145 * r76147;
double r76149 = phi1;
double r76150 = cos(r76149);
double r76151 = r76148 * r76150;
double r76152 = cos(r76146);
double r76153 = 3.0;
double r76154 = pow(r76152, r76153);
double r76155 = sin(r76149);
double r76156 = 4.0;
double r76157 = pow(r76155, r76156);
double r76158 = 2.0;
double r76159 = pow(r76150, r76158);
double r76160 = pow(r76147, r76158);
double r76161 = cos(r76144);
double r76162 = pow(r76161, r76158);
double r76163 = r76160 * r76162;
double r76164 = r76152 * r76163;
double r76165 = r76159 * r76164;
double r76166 = r76157 * r76165;
double r76167 = r76153 * r76166;
double r76168 = pow(r76155, r76153);
double r76169 = pow(r76150, r76153);
double r76170 = pow(r76161, r76153);
double r76171 = pow(r76147, r76153);
double r76172 = r76170 * r76171;
double r76173 = r76169 * r76172;
double r76174 = r76168 * r76173;
double r76175 = 6.0;
double r76176 = pow(r76155, r76175);
double r76177 = r76176 * r76154;
double r76178 = 5.0;
double r76179 = pow(r76155, r76178);
double r76180 = pow(r76152, r76158);
double r76181 = r76180 * r76161;
double r76182 = r76147 * r76181;
double r76183 = r76150 * r76182;
double r76184 = r76179 * r76183;
double r76185 = r76153 * r76184;
double r76186 = r76177 + r76185;
double r76187 = r76174 + r76186;
double r76188 = r76167 + r76187;
double r76189 = r76154 - r76188;
double r76190 = r76152 * r76152;
double r76191 = atan2(1.0, 0.0);
double r76192 = r76191 / r76158;
double r76193 = r76155 * r76152;
double r76194 = r76150 * r76147;
double r76195 = r76194 * r76161;
double r76196 = r76193 + r76195;
double r76197 = acos(r76196);
double r76198 = r76192 - r76197;
double r76199 = sin(r76198);
double r76200 = r76155 * r76199;
double r76201 = asin(r76196);
double r76202 = sin(r76201);
double r76203 = r76155 * r76202;
double r76204 = r76152 + r76203;
double r76205 = r76200 * r76204;
double r76206 = r76190 + r76205;
double r76207 = r76189 / r76206;
double r76208 = atan2(r76151, r76207);
double r76209 = r76143 + r76208;
return r76209;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.2
rmApplied flip3--0.2
Simplified0.2
rmApplied asin-acos0.2
Taylor expanded around -inf 0.2
Final simplification0.2
herbie shell --seed 2019305
(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))))))))))