We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
((lat2-lat1)*BETA*(lat2-lat1)*BETA + (long2-long1)*delta*(long2-long1)*delta)
I'm writing some C code and I am getting some screwy results. Basically lat1, lat2, long1, long2 are all latitudes and longitudes in radians, delta is another precalculated parameter. BETA is a defined constant.
As far as I can tell this code always results in an answer equal to BETA regardless of changing inputs. Additionally when I brake out the two addition terms: (lat2-lat1)*BETA*(lat2-lat1)*BETA and (long2-long1)*delta*(long2-long1)*delta), and compute them separately I get a result of "0". I have been trying to wrap my head around what is wrong without success for a day now. Any suggestions for things to try would be appreciated.
Thanks in advance.
FWIW, here's the code I used to test:
#include <reg52.h> #include <math.h> #include <intrins.h> #define ALPHA 6378137.0 #define BETA 6356752.0 float procedure( float lat1, float long1, float lat2, float long2 ) { float delta; delta = ALPHA * cos(lat1); return ((lat2-lat1)*BETA*(lat2-lat1)*BETA + (long2-long1)*delta*(long2-long1)*delta); } void main(void) { float f; f = procedure(0.727414575, -1.24152067, 0.727336559, -1.24135643); for (;;) { _nop_(); } }