The Museum of HP Calculators

HP Forum Archive 21

[ Return to Index | Top of Index ]

Back with my DEG<->DMS formulas !
Message #1 Posted by PGILLET on 2 May 2012, 3:02 a.m.

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 !
Message #2 Posted by Luiz C. Vieira (Brazil) on 2 May 2012, 10:10 a.m.,
in response to message #1 by PGILLET

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 !
Message #3 Posted by PGILLET on 2 May 2012, 10:24 a.m.,
in response to message #2 by Luiz C. Vieira (Brazil)

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 !
Message #4 Posted by Luiz C. Vieira (Brazil) on 2 May 2012, 10:30 a.m.,
in response to message #3 by PGILLET

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 !
Message #5 Posted by Matt Agajanian on 2 May 2012, 4:42 p.m.,
in response to message #1 by PGILLET

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 !
Message #6 Posted by Bart (UK) on 3 May 2012, 7:44 p.m.,
in response to message #1 by PGILLET

Thank you, now my 18C can do it too :-)


[ Return to Index | Top of Index ]

Go back to the main exhibit hall