Average Error: 0.2 → 0.2
Time: 19.8s
Precision: binary64
\[\]
\[\]
double code(double lambda1, double phi1, double phi2, double delta, double theta) {
	return ((double) (lambda1 + ((double) atan2(((double) (((double) (((double) sin(theta)) * ((double) sin(delta)))) * ((double) cos(phi1)))), ((double) (((double) cos(delta)) - ((double) (((double) sin(phi1)) * ((double) sin(((double) asin(((double) (((double) (((double) sin(phi1)) * ((double) cos(delta)))) + ((double) (((double) (((double) cos(phi1)) * ((double) sin(delta)))) * ((double) cos(theta))))))))))))))))));
}
double code(double lambda1, double phi1, double phi2, double delta, double theta) {
	return ((double) (lambda1 + ((double) atan2(((double) (((double) (((double) sin(theta)) * ((double) sin(delta)))) * ((double) cos(phi1)))), ((double) (((double) (((double) (((double) pow(((double) cos(delta)), 4.0)) - ((double) (((double) sin(((double) asin(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) (((double) sin(((double) asin(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) (((double) cos(((double) acos(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) (((double) cos(((double) acos(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) pow(((double) sin(phi1)), 4.0)))))))))))) / ((double) (((double) pow(((double) cos(delta)), 2.0)) + ((double) (((double) sin(((double) asin(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) (((double) cos(((double) acos(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta)))))))))))) * ((double) pow(((double) sin(phi1)), 2.0)))))))))) / ((double) (((double) cos(delta)) + ((double) (((double) sin(phi1)) * ((double) sin(((double) asin(((double) (((double) (((double) cos(delta)) * ((double) sin(phi1)))) + ((double) (((double) cos(phi1)) * ((double) (((double) sin(delta)) * ((double) cos(theta))))))))))))))))))))));
}

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

    \[\]
  2. Using strategy rm
  3. Applied flip--0.2

    \[\leadsto \]
  4. Simplified0.2

    \[\leadsto \]
  5. Simplified0.2

    \[\leadsto \]
  6. Using strategy rm
  7. Applied asin-acos0.2

    \[\leadsto \]
  8. Using strategy rm
  9. Applied flip--0.2

    \[\leadsto \]
  10. Simplified0.2

    \[\leadsto \]
  11. Simplified0.2

    \[\leadsto \]
  12. Final simplification0.2

    \[\leadsto \]

Reproduce

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