((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.
Well, you can track the process of computation. But it involves single-stepping in disassembler, watching intermediate results in registers and converting them from binary to human-readable representation.
Sorry, #define ALPHA 6378137.0
What is ALPHA?
#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); }
lat1 = 0.727414575 long1 = -1.24152067 lat2 = 0.727336559 long2 = -1.24135643
I expect this to return approximately 737991.335 and instead it returns 6356752.0 (same as BETA).
View all questions in Keil forum