Back with my DEG<->DMS formulas ! - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: Back with my DEG<->DMS formulas ! (/thread-219773.html) Back with my DEG<->DMS formulas ! - PGILLET - 05-02-2012 Hello, I thought it could interest you to know how I got these formulas (with x>0): DEG->DMS(x)=(90*x+INT(60*x)+100*INT(x))/250 DMS->DEG(x)=(250*x-INT(100*x)-60*INT(x))/90 To compute DEG->DMS(x): D = unknown degrees as integer M = unknown minutes as integer s = unknown seconds as decimal Known x=D+M/60+s/3600 D = INT(x) M = INT(60*x-60*D) M = INT(60*x-60*INT(x)) M = INT(60*x)-60*INT(x) s = 3600*x-3600*D-60*M s = 3600*x-3600*INT(x)-60*(INT(60*x)-60*INT(x)) s = 3600*x-3600*INT(x)-60*INT(60*x)+3600*INT(x) s = 3600*x-60*INT(60*x) DMS(x) = D+M/100+s/10000 DMS(x) = INT(x)+(INT(60*x)-60*INT(x))/100+(3600*x-60*INT(60*x))/10000 DMS(x) = (10000*INT(x)+100*INT(60*x)-6000*INT(x)+3600*x-60*INT(60*x))/10000 DMS(x) = (3600*x+40*INT(60*x)+4000*INT(x))/10000 DMS(x) = (90*x+INT(60*x)+100*INT(x))/250 It's mathematically exact, but special care is needed in evaluating INT(60*x) on a calculator. => It seems better to round 60*x to last internal digit before applying INT. To compute DMS->DEG(x): D = unknown degrees as integer M = unknown minutes as integer s = unknown seconds as decimal Known x=D+M/100+s/10000 D = INT(x) M = INT(100*x-100*D) M = INT(100*x-100*INT(x)) M = INT(100*x)-100*INT(x) s = 10000*x-10000*D-100*M s = 10000*x-10000*INT(x)-100*(INT(100*x)-100*INT(x)) s = 10000*x-10000*INT(x)-100*INT(100*x)+10000*INT(x) s = 10000*x-100*INT(100*x) DEG(x) = D+M/60+s/3600 DEG(x) = INT(x)+(INT(100*x)-100*INT(x))/60+(10000*x-100*INT(100*x))/3600 DEG(x) = (3600*INT(x)+60*INT(100*x)-6000*INT(x)+10000*x-100*INT(100*x))/3600 DEG(x) = (10000*x-40*INT(100*x)-2400*INT(x))/3600 DEG(x) = (250*x-INT(100*x)-60*INT(x))/90 Thanks for reading ! Edited: 2 May 2012, 3:08 a.m. Re: Back with my DEG<->DMS formulas ! - Luiz C. Vieira (Brazil) - 05-02-2012 Hi! Wow! Great work! I have written some programs just to take a DMS number and show it in DMS format, I mean, take something like 123.455959 and return the string "123º45'59"59" so it would be easier to read the DMS itself. My first two versions worked pretty well until I tried them with negative numbers. Your formulas are way more sophisticated, they are used to compute the DMS and the DEG versions of each other, I see that. But I also noticed that they seem to have no provision for negative input data; do they work accordingly in this case? I did not try any, could not tell, but since they mostly add factors, I felt as if they may deal only with positive numbers. Best regards. Luiz (Brazil) Re: Back with my DEG<->DMS formulas ! - PGILLET - 05-02-2012 Hello, Thanks for your answer. Their sophistication is in their simplicity (one line formulas). As I've already specified it ("x>0"), they work only for positive numbers (therefore you need to work with abs value and restore sign at the end) All those lines in my post were just their mathematical proof (I hope I didn't make any error ...) Re: Back with my DEG<->DMS formulas ! - Luiz C. Vieira (Brazil) - 05-02-2012 Hi. My bad, sorry. I read the (x>0) but my brain did not convert it into information, just the words 'x is greater than zero' echoing in the void... Gee, must give it a break. Quote:Their sophistication is in their simplicity (one line formulas).I could not say it differently. It is also the beauty of the complex solutions expressed as simple terms and expressions. Touchè! Thanks! Luiz (Brazil) Edited: 2 May 2012, 10:31 a.m. Re: Back with my DEG<->DMS formulas ! - Matt Agajanian - 05-02-2012 Hello there. PGILLET and the rest of the crew, I'm glad my original inquiry has sparked some inspiration. My pleasure. Re: Back with my DEG<->DMS formulas ! - Bart (UK) - 05-03-2012 Thank you, now my 18C can do it too :-)