hp41programs

Geod-3axial

Geodesics on a Triaxial Ellipsoid(2) for the HP-41


Overview
 

 0°)  Geodetic Longitudes & Latitudes >>> U & V
 1°)  V = V(U)

  a)  Runge-Kutta of order 6
  b)  Runge-Kutta of order 4

 2°)  U = U(V)

  a)  Runge-Kutta of order 6
  b)  Runge-Kutta of order 4


-These programs employ Euler-Lagrange method to compute the geodesic distance between 2 points on a triaxial ellipsoid.
-It also works for biaxial ellipsoids.

-These routines use the coordinates  u  &  v   defined by:

   x = a Cos u  Cos v
   y = b Sin u  Cos v                where   a , b , c  are the semi-axes of the triaxial ellipsoid and  x , y , z  are the Cartesian coordinates
   z = c  Sin v

-We have to minimize the integral   § L du  where   L = SQRT ( P + 2.Q v' + R v'2 )       ( v' = dv/du )

    P = Cos2 v  ( a2 Sin2 u + b2 Cos2 u )
    Q = (1/4) ( a2 - b2 ) Sin 2.u  Sin 2.v
    R = Sin2 v  ( a2 Cos2 u + b2 Sin2 u ) + c2 Cos2 v  

-Euler-Lagrange equation:   L / v = (d/du) ( L / v' )               ( where  = partial derivative )   becomes:

   v'' ( P.R - Q2 ) / ( P + 2.Q v' + R v'2 )  =  - dQ/du - v' dR/du + (1/2) ( P/v + 2.v' Q/v + v'2 R/v ) + (1/2)  ( ( Q + R.v' ) / ( P + 2.Q v' + R v'2 ) ) ( dP/du + 2.v' dQ/du + v'2 dR/du )

   ( dP/du =   P/uv' P/v   ... etc ... )

-The second-order differential equation is solved by a Runge-Kutta formula and we use gardenhose method to find  v'1  

-The integral is computed by Newton-Cotes6 ( or NC9 ) formula

  NC6:    §xx+6.h  f(t).dt  ~  (h/140) [41.f(x)+216.f(x+h)+27.f(x+2.h)+272.f(x+3.h)+27.f(x+4.h)+216.f(x+5.h)+41.f(x+6.h)]
  NC9:    §xx+9.h  f(t).dt  ~  (9.h/89600) [2857.f(x)+15741.f(x+h)+1080.f(x+2.h)+19344.f(x+3.h)+5778.f(x+4.h)+5778.f(x+5.h)+19344.f(x+6.h)+1080.f(x+7.h)+15741.f(x+8.h)+2857.f(x+9.h)]

-But first, let's transform the geodetic coordinates L & b  into  u & v

 

0°)  Geodetic Longitudes & Latitudes >>> U & V
 

-"LB-UV" calculates u & v in radians

-This program also stores  a = 6378.171645 km   b = 6378.101575 km   c = 6356.751868 km  into  R06  R07  R08


Data Registers:   R11-R12-R13:  temp

                               R06 = a   R07 = b   R08 = c
                           

Flags: /
Subroutines: /


 01 LBL "LB-UV"
 02 DEG
 03 HR
 04 STO 12          
 05 COS
 06 X<>Y
 07 HR
 08 14.92911
 09 +
 10 STO 11
 11 SIN
 12 *
 13 X^2
 14 6356.751868
 15 STO 08
 16 X^2
 17 X<>Y
 18 6378.101575
 19 STO 07          
 20 X^2
 21 6378.171645
 22 STO 06
 23 X^2
 24 ST- Y
 25 ST- T
 26 ST/ T
 27 /
 28 STO 13
 29 *
 30 X<>Y
 31 RCL 12          
 32 SIN
 33 X^2
 34 *
 35 +
 36 1
 37 ST+ 13
 38 ST+ Z
 39 +
 40 SQRT
 41 RCL 06
 42 X<>Y
 43 /
 44 RCL 11
 45 RCL 12
 46 X<> Z
 47 X<>Y
 48 RDN
 49 P-R
 50 R^
 51 X<>Y
 52 P-R
 53 R^
 54 ST* T
 55 X<> 13
 56 ST* Z
 57 CLX
 58 RCL 06          
 59 /
 60 X<>Y
 61 RCL 07
 62 /
 63 R^
 64 RCL 08          
 65 /
 66 X<> Z
 67 RAD
 68 R-P
 69 X<>Y
 70 RDN
 71 R-P
 72 X<> T
 73 END

     
         ( 131 bytes / SIZE 014 )

 
            STACK            INPUTS          OUTPUTS
                Y            L ( ° ' " )             V ( rd )
                X            b ( ° ' " )             U ( rd )

Example:
     L = 141°23'45"  &  b = 64°12'34"

    141.2345  ENTER^
     64.1234   XEQ "LB-UV"  >>>>   U = 2.728389004 rd
                                              X<>Y   V = 1.119347728 rd


Notes:

-Change lines 08-14-18-21  if you want to use another Earth ellipsoid
-Line 08 is 14°92911  if the equatorial major axis in the direction   14°92911W



1°)  V = V(U)


       a)  Runge-Kutta of order 6


-We have to find  v'1  such that  v(u2) = v2

-Coordinates u & v must be expressed in radians.
-"LB-UV"  initializes registers R06-R07-R08



Data Registers:   R00 = Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = v'1   R28 ~ 0    R29 = u   R30 = v  R31 = v'     ( Check that R30 =
v2 )
                           
Flags: /
Subroutines: /

-Lines 37 & 353  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 03
 07 RCL 01
 08 -
 09 RCL 05
 10 6
 11 *
 12 /
 13 STO 32
 14 RCL 06
 15 RCL 07
 16 -
 17 RCL 06
 18 LASTX
 19 +
 20 *
 21 STO 09
 22 82
 23 STO 51
 24 216
 25 STO 46
 26 STO 50
 27 27
 28 STO 47
 29 STO 49
 30 272
 31 STO 48
 32 51.045
 33 STO 25
 34 RCL 27
 35 XEQ 00
 36 STO 28
 37 GTO 04
 38 LBL 00
 39 STO 31
 40 STO 34
 41 RCL 05
 42 6
 43 *
 44 STO 33
 45 CLX
 46 RCL 02
 47 STO 30
 48 RCL 01
 49 STO 29
 50 XEQ 02
 51 RCL 15
 52 SQRT
 53 41
 54 *
 55 STO 00
 56 DSE 25
 57 GTO 03
 58 LBL 01
 59 RCL 31
 60 STO 34
 61 RCL 30
 62 RCL 29
 63 XEQ 02
 64 RCL 15          
 65 SQRT
 66 RCL IND 25
 67 *
 68 ST+ 00
 69 DSE 25
 70 GTO 03
 71 CLX
 72 6
 73 ST+ 25
 74 LBL 03
 75 CLX
 76 RCL 32
 77 ST* 34
 78 *
 79 STO 39
 80 3
 81 /
 82 RCL 31
 83 +
 84 STO 35
 85 RCL 34
 86 3
 87 /
 88 RCL 30
 89 +
 90 RCL 32
 91 3
 92 /
 93 RCL 29
 94 +
 95 STO 38
 96 XEQ 02
 97 RCL 32
 98 ST* 35
 99 *
100 STO 40
101 1.5
102 /
103 RCL 31
104 +
105 STO 36
106 RCL 35
107 1.5
108 /
109 RCL 30
110 +
111 RCL 32
112 1.5
113 /
114 RCL 29
115 +
116 XEQ 02
117 RCL 32
118 ST* 36
119 *
120 STO 41
121 RCL 40
122 4
123 *
124 X<>Y
125 -
126 RCL 39
127 +
128 12
129 /
130 RCL 31
131 +
132 STO 37
133 RCL 35
134 4
135 *
136 RCL 36
137 -
138 RCL 34
139 +
140 12
141 /
142 RCL 30
143 +
144 RCL 38        
145 XEQ 02
146 RCL 32
147 ST* 37
148 *
149 STO 42
150 18
151 *
152 RCL 41
153 7
154 *
155 +
156 RCL 40
157 22
158 *
159 -
160 RCL 39
161 5
162 *
163 +
164 9.6
165 /
166 RCL 31
167 +
168 STO 38
169 RCL 37
170 18
171 *
172 RCL 36
173 7
174 *
175 +
176 RCL 35
177 22
178 *
179 -
180 RCL 34
181 5
182 *
183 +
184 9.6
185 /
186 RCL 30
187 +
188 RCL 32
189 1.2
190 /
191 RCL 29
192 +
193 XEQ 02
194 RCL 32
195 ST* 38
196 *
197 STO 43
198 10
199 /
200 RCL 42
201 2
202 /
203 +
204 RCL 41
205 8
206 /
207 -
208 RCL 40
209 11
210 *
211 24
212 /
213 -
214 RCL 39
215 .15
216 *
217 +
218 RCL 31
219 +
220 STO 44
221 RCL 38
222 10
223 /
224 RCL 37        
225 2
226 /
227 +
228 RCL 36
229 8
230 /
231 -
232 RCL 35
233 11
234 *
235 24
236 /
237 -
238 RCL 34
239 .15
240 *
241 +
242 RCL 30
243 +
244 RCL 32
245 6
246 /
247 RCL 29
248 +
249 XEQ 02
250 RCL 32
251 ST* 44
252 *
253 STO 45
254 80
255 *
256 RCL 40
257 99
258 *
259 +
260 RCL 42
261 118
262 *
263 -
264 20
265 *
266 RCL 43
267 ST+ 45
268 128
269 *
270 +
271 RCL 41
272 ST+ 42
273 215
274 *
275 +
276 RCL 39
277 783
278 *
279 -
280 780
281 /
282 RCL 31
283 +
284 RCL 35
285 99
286 *
287 RCL 44
288 80
289 *
290 +
291 RCL 37
292 118
293 *
294 -
295 20
296 *
297 RCL 38
298 ST+ 44
299 128
300 *
301 +
302 RCL 36        
303 ST+ 37
304 215
305 *
306 +
307 RCL 34
308 783
309 *
310 -
311 780
312 /
313 RCL 30
314 +
315 RCL 29
316 RCL 32
317 +
318 XEQ 02
319 RCL 32
320 ST+ 29
321 ST* 12
322 *
323 RCL 39
324 +
325 13
326 *
327 RCL 45
328 32
329 ST* 44
330 *
331 +
332 RCL 42
333 55
334 ST* 37
335 *
336 +
337 .5
338 %
339 ST+ 31
340 RCL 34
341 RCL 12
342 +
343 13
344 *
345 RCL 44
346 +
347 RCL 37
348 +
349 .5
350 %
351 ST+ 30
352 DSE 33
353 GTO 01
354 RCL 31
355 RCL 30
356 RCL 29
357 XEQ 02
358 RCL 15
359 SQRT
360 41
361 *
362 ST+ 00
363 RCL 32
364 ABS
365 140
366 /
367 ST* 00
368 RCL 30
369 RCL 04
370 -
371 RTN
372 LBL 02
373 STO 10
374 X<> Z
375 STO 12
376 CLX
377 SIGN
378 P-R
379 STO 16
380 X<>Y
381 STO 17
382 RCL 10
383 LASTX
384 P-R
385 STO 13
386 X<>Y
387 STO 14
388 *
389 STO 11
390 *
391 *
392 RCL 09
393 *
394 STO 19
395 RCL 06        
396 RCL 14
397 *
398 X^2
399 RCL 07
400 RCL 13
401 *
402 X^2
403 +
404 STO 15
405 RCL 16
406 X^2
407 *
408 STO 18
409 RCL 06
410 RCL 13
411 *
412 X^2
413 RCL 07
414 RCL 14
415 *
416 X^2
417 +
418 STO 10
419 RCL 17
420 X^2
421 *
422 RCL 08
423 RCL 16
424 *
425 X^2
426 +
427 STO 20
428 RCL 15
429 RCL 16
430 RCL 17
431 *
432 STO 24
433 ST+ X
434 *
435 CHS
436 STO 21
437 LASTX
438 RCL 10
439 RCL 08
440 X^2
441 -
442 *
443 STO 23
444 RCL 11
445 RCL 16
446 X^2
447 RCL 17
448 X^2
449 -
450 *
451 RCL 09
452 *
453 STO 22
454 RCL 12
455 *
456 RCL 13
457 X^2
458 RCL 14
459 X^2
460 -
461 RCL 24
462 *
463 RCL 09
464 *
465 +
466 STO 10
467 RCL 12
468 RCL 21
469 *
470 RCL 11
471 ST+ X
472 RCL 16
473 X^2
474 *
475 RCL 09        
476 *
477 +
478 RCL 12
479 RCL 23
480 *
481 RCL 11
482 ST+ X
483 RCL 17
484 X^2
485 *
486 RCL 09
487 *
488 -
489 RCL 12
490 *
491 STO 24
492 RCL 10
493 ST+ 24
494 ST+ X
495 +
496 RCL 12
497 *
498 +
499 RCL 12
500 ST* 23
501 RCL 20
502 *
503 RCL 19
504 STO 11
505 +
506 ST+ 11
507 *
508 RCL 23
509 RCL 22
510 ST+ X
511 +
512 RCL 12
513 *
514 RCL 21
515 +
516 RCL 24
517 ST+ X
518 -
519 RCL 11
520 RCL 12
521 *
522 RCL 18
523 ST* 20
524 +
525 STO 15
526 *
527 +
528 RCL 20
529 RCL 19
530 X^2
531 -
532 ST+ X
533 /
534 RTN
535 LBL 04
536 VIEW 00
537 RCL 26
538 XEQ 00
539 ENTER
540 ENTER
541 X<> 28
542 -
543 X#0?
544 /
545 RCL 27
546 RCL 26
547 STO 27
548 STO T
549 -
550 *
551 +
552 STO 26        
553 X#Y?
554 GTO 04
555 RCL 00
556 CLD
557 DEG
558 END


         ( 853 bytes / SIZE 052 )

 
            STACK            INPUTS          OUTPUTS
                Y                 y                v'1
                X                 x               Dist

  Where x & y are 2 different initial guesses of  v'1  

Example1:
      a = 7   b = 6   c = 5   ,    u1 = 0 rd  ;  v1 = 0.1 rd  ;   u2 = 2 rd  ;  v2 = 0.2 rd

    7  STO 06        0   STO 01       2    STO 03
    6  STO 07      0.1  STO 02     0.2   STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 1

    0   ENTER^
    1   XEQ "DGD"   >>>>    D  = 12.91212647                                 ---Execution time = 42s---      with V41 in TURBO mode !
                               X<>Y   v'1 =  0.539381209

-We have  R31 = v'2 = -0.430961328

-With N = 20 , it yields the same distance:   D =  12.91212647


Example2:   On the Earth, with the values used in paragraph 0°)

      Calculate the geodesic distance between the Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1 S )
      and the Palomar Observatory ( Long = 116°51'50"4 W ,  Lat = 33°21'22"4 N )

     151.12178  ENTER^
    -33.51411   XEQ "LB-UV"  >>>>  2.899588805   STO 01
                                                X<>Y  -0.589438065  STO 02

   -116.51504  ENTER^
     33.21224      R/S       >>>>   -1.779101676  PI  ENTER^ +  +   STO 03
                                       X<>Y  0.580636810   STO 04

-With  N = 10  STO 05  and initial guesses  0   1

  0   ENTER^
  1   XEQ "DGD"  >>>>    D = 12138.65673 km
                             X<>Y   v'1 =  0.436919794

   and   R31 = v'2 = 0.451294935

-With N = 20 , it yields the same distance:   D =  12138.65673 km

-With free42 and N = 100 or N = 200 ,  D = 12138.6567207 km


Example3:   On the Earth, with the values used in paragraph 0°)   L = 0°  ,  b = 0°  ,   L' = 179°51'  ,  b = 0°   ( nearly antipodal points )

     0  ENTER^
     0  XEQ "LB-UV"  >>>>  0.260559389   STO 01
                                  X<>Y         0              STO 02

    179.51  ENTER^
        0         R/S       >>>>   -2.883651233   PI  +  PI  +  STO 03
                               X<>Y              0            STO 04

-With  N = 10  STO 05  and initial guesses    1   2

  1   ENTER^
  2   XEQ "DGD"  >>>>     D = 20001.79664 km
                             X<>Y   v'1 = 3.901657602

-With N = 20 , R00  remains around  D = 20001.89623 km

-With free42 and N = 100 or N = 200 ,  D = 20001.8982845 km  &  v'1 =  3.901001588


Notes:

-The successive D-approximations are displayed
-With a real HP41, execution time of the 1st example would be probably about 7 hours !
-We can modify this routine to reduce a little execution time if we replace line 553 X#Y? by;      -  RND  X#0?  GTO 04  RCL 26
-The precision would be controlled by the display format.

-We can also use Newton-Cotes9 formula:  replace

  line 365 by   9  *  89600
  line 360 by   2857
  line 72   by   9
  line 53   by   2857
  line 42   by   9
  lines 22 to 32  by   5714  STO 54   15741  STO 46  STO 53  1080  STO 47  STO 52  19344  STO 48  STO 51  5778  STO 49  STO 50  54.045
  line  10  by   9

-Then, the number of steps is  9.N  ( R05 = N )
-With N = 5,  it yields almost the same geodesic distance D =  12.91212648  in the example1 above in 31 seconds with V41 ( turbo mode )
-So probably about 5h10m with a real HP41.


-Since digit entry is very slow, another way to make "DGD" slightly less slow is to store the numbers used by RK6 into data registers:


Data Registers:   R00 = Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = v'1   R28 ~ 0    R29 = u   R30 = v  R31 = v'     ( Check that R30 =
v2 )
                           
Flags: /
Subroutines: /


-Lines 117 & 413  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 03
 07 RCL 01
 08 -
 09 RCL 05
 10 6
 11 STO 65
 12 *
 13 /
 14 STO 32
 15 RCL 06
 16 RCL 07
 17 -
 18 RCL 06
 19 LASTX
 20 +
 21 *
 22 STO 09
 23 41
 24 STO 76
 25 ST+ X
 26 STO 51
 27 216
 28 STO 46
 29 STO 50
 30 27
 31 STO 47
 32 STO 49
 33 272
 34 STO 48
 35 51.045
 36 STO 25
 37 3
 38 STO 52
 39 2
 40 STO 61
 41 /
 42 STO 53
 43 12
 44 STO 54
 45 90
 46 48
 47 /
 48 STO 55
 49 35
 50 LASTX
 51 /
 52 STO 56
 53 110
 54 LASTX
 55 /
 56 STO 57
 57 25
 58 LASTX
 59 /
 60 STO 58
 61 40
 62 LASTX
 63 /
 64 STO 59
 65 10
 66 STO 60
 67 8
 68 STO 62
 69 11
 70 24
 71 /
 72 STO 63
 73 .15
 74 STO 64
 75 40
 76 X^2
 77 780
 78 /
 79 STO 66          
 80 128
 81 LASTX
 82 /
 83 STO 67
 84 2360
 85 LASTX
 86 /
 87 STO 68
 88 215
 89 LASTX
 90 /
 91 STO 69
 92 1980
 93 LASTX
 94 /
 95 STO 70
 96 783
 97 LASTX
 98 /
 99 STO 71
100 13
101 200
102 /
103 STO 72
104 32
105 LASTX
106 /
107 STO 73
108 55
109 LASTX
110 /
111 STO 74
112 140
113 STO 75
114 RCL 27
115 XEQ 00
116 STO 28
117 GTO 04
118 LBL 00
119 STO 31
120 STO 34
121 RCL 05
122 RCL 65
123 *
124 STO 33
125 CLX
126 RCL 02
127 STO 30
128 RCL 01
129 STO 29
130 XEQ 02
131 RCL 15
132 SQRT
133 RCL 76
134 *
135 STO 00
136 DSE 25
137 GTO 03
138 LBL 01
139 RCL 31
140 STO 34
141 RCL 30
142 RCL 29
143 XEQ 02
144 RCL 15
145 SQRT
146 RCL IND 25
147 *
148 ST+ 00
149 DSE 25
150 GTO 03
151 CLX
152 RCL 65
153 ST+ 25
154 LBL 03
155 CLX
156 RCL 32
157 ST* 34
158 *
159 STO 39
160 RCL 52
161 /
162 RCL 31
163 +
164 STO 35
165 RCL 34        
166 RCL 52
167 /
168 RCL 30
169 +
170 RCL 32
171 RCL 52
172 /
173 RCL 29
174 +
175 STO 38
176 XEQ 02
177 RCL 32
178 ST* 35
179 *
180 STO 40
181 RCL 53
182 /
183 RCL 31
184 +
185 STO 36
186 RCL 35
187 RCL 53
188 /
189 RCL 30
190 +
191 RCL 32
192 RCL 53
193 /
194 RCL 29
195 +
196 XEQ 02
197 RCL 32
198 ST* 36
199 *
200 STO 41
201 RCL 39
202 X<>Y
203 -
204 RCL 54
205 /
206 RCL 40
207 RCL 52
208 /
209 +
210 RCL 31
211 +
212 STO 37
213 RCL 34
214 RCL 36
215 -
216 RCL 54
217 /
218 RCL 35
219 RCL 52
220 /
221 +
222 RCL 30
223 +
224 RCL 38
225 XEQ 02
226 RCL 32
227 ST* 37
228 *
229 STO 42
230 RCL 55
231 *
232 RCL 41
233 RCL 56
234 *
235 +
236 RCL 40
237 RCL 57
238 *
239 -
240 RCL 39
241 RCL 58
242 *
243 +
244 RCL 31
245 +
246 STO 38
247 RCL 37
248 RCL 55
249 *
250 RCL 36
251 RCL 56
252 *
253 +
254 RCL 35        
255 RCL 57
256 *
257 -
258 RCL 34
259 RCL 58
260 *
261 +
262 RCL 30
263 +
264 RCL 32
265 RCL 59
266 *
267 RCL 29
268 +
269 XEQ 02
270 RCL 32
271 ST* 38
272 *
273 STO 43
274 RCL 60
275 /
276 RCL 42
277 RCL 61
278 /
279 +
280 RCL 41
281 RCL 62
282 /
283 -
284 RCL 40
285 RCL 63
286 *
287 -
288 RCL 39
289 RCL 64
290 *
291 +
292 RCL 31
293 +
294 STO 44
295 RCL 38
296 RCL 60
297 /
298 RCL 37
299 RCL 61
300 /
301 +
302 RCL 36
303 RCL 62
304 /
305 -
306 RCL 35
307 RCL 63
308 *
309 -
310 RCL 34
311 RCL 64
312 *
313 +
314 RCL 30
315 +
316 RCL 32
317 RCL 65
318 /
319 RCL 29
320 +
321 XEQ 02
322 RCL 32
323 ST* 44
324 *
325 STO 45
326 RCL 66
327 *
328 RCL 40
329 RCL 70
330 *
331 +
332 RCL 42
333 RCL 68
334 *
335 -
336 RCL 43
337 ST+ 45
338 RCL 67
339 *
340 +
341 RCL 41        
342 ST+ 42
343 RCL 69
344 *
345 +
346 RCL 39
347 RCL 71
348 *
349 -
350 RCL 31
351 +
352 RCL 35
353 RCL 70
354 *
355 RCL 44
356 RCL 66
357 *
358 +
359 RCL 37
360 RCL 68
361 *
362 -
363 RCL 38
364 ST+ 44
365 RCL 67
366 *
367 +
368 RCL 36
369 ST+ 37
370 RCL 69
371 *
372 +
373 RCL 34
374 RCL 71
375 *
376 -
377 RCL 30
378 +
379 RCL 29
380 RCL 32
381 +
382 XEQ 02
383 RCL 32
384 ST+ 29
385 ST* 12
386 *
387 RCL 39
388 +
389 RCL 72
390 *
391 RCL 45
392 RCL 73
393 ST* 44
394 *
395 +
396 RCL 42
397 RCL 74
398 ST* 37
399 *
400 +
401 ST+ 31
402 RCL 34
403 RCL 12
404 +
405 RCL 72
406 *
407 RCL 44
408 +
409 RCL 37
410 +
411 ST+ 30
412 DSE 33
413 GTO 01
414 RCL 31
415 RCL 30
416 RCL 29
417 XEQ 02
418 RCL 15
419 SQRT
420 RCL 76
421 *
422 ST+ 00
423 RCL 32
424 ABS
425 RCL 75
426 /
427 ST* 00
428 RCL 30
429 RCL 04
430 -
431 RTN
432 LBL 02
433 STO 10
434 X<> Z
435 STO 12        
436 CLX
437 SIGN
438 P-R
439 STO 16
440 X<>Y
441 STO 17
442 RCL 10
443 LASTX
444 P-R
445 STO 13
446 X<>Y
447 STO 14
448 *
449 STO 11
450 *
451 *
452 RCL 09
453 *
454 STO 19
455 RCL 06
456 RCL 14
457 *
458 X^2
459 RCL 07
460 RCL 13
461 *
462 X^2
463 +
464 STO 15
465 RCL 16
466 X^2
467 *
468 STO 18
469 RCL 06
470 RCL 13
471 *
472 X^2
473 RCL 07
474 RCL 14
475 *
476 X^2
477 +
478 STO 10
479 RCL 17
480 X^2
481 *
482 RCL 08
483 RCL 16
484 *
485 X^2
486 +
487 STO 20
488 RCL 15
489 RCL 16
490 RCL 17
491 *
492 STO 24
493 ST+ X
494 *
495 CHS
496 STO 21
497 LASTX
498 RCL 10
499 RCL 08
500 X^2
501 -
502 *
503 STO 23
504 RCL 11
505 RCL 16
506 X^2
507 RCL 17
508 X^2
509 -
510 *
511 RCL 09
512 *
513 STO 22
514 RCL 12
515 *
516 RCL 13
517 X^2
518 RCL 14
519 X^2
520 -
521 RCL 24
522 *
523 RCL 09        
524 *
525 +
526 STO 10
527 RCL 12
528 RCL 21
529 *
530 RCL 11
531 ST+ X
532 RCL 16
533 X^2
534 *
535 RCL 09
536 *
537 +
538 RCL 12
539 RCL 23
540 *
541 RCL 11
542 ST+ X
543 RCL 17
544 X^2
545 *
546 RCL 09
547 *
548 -
549 RCL 12
550 *
551 STO 24
552 RCL 10
553 ST+ 24
554 ST+ X
555 +
556 RCL 12
557 *
558 +
559 RCL 12
560 ST* 23
561 RCL 20
562 *
563 RCL 19
564 STO 11
565 +
566 ST+ 11
567 *
568 RCL 23
569 RCL 22
570 ST+ X
571 +
572 RCL 12
573 *
574 RCL 21
575 +
576 RCL 24
577 ST+ X
578 -
579 RCL 11
580 RCL 12
581 *
582 RCL 18
583 ST* 20
584 +
585 STO 15
586 *
587 +
588 RCL 20
589 RCL 19
590 X^2
591 -
592 ST+ X
593 /
594 RTN
595 LBL 04
596 VIEW 00
597 RCL 26
598 XEQ 00
599 ENTER
600 ENTER
601 X<> 28
602 -
603 X#0?
604 /
605 RCL 27
606 RCL 26
607 STO 27
608 STO T
609 -
610 *
611 +
612 STO 26        
613 X#Y?
614 GTO 04
615 RCL 00
616 CLD
617 DEG
618 END


         ( 964 bytes / SIZE 077 )

 
            STACK           INPUTS          OUTPUTS
                Y                y                v'1
                X                x               Dist

  Where x & y are 2 different initial guesses of  v'1

Example:
      a = 7   b = 6   c = 5   ,    u1 = 0 rd  ;  v1 = 0.1 rd  ;   u2 = 2 rd  ;  v2 = 0.2 rd

    7  STO 06        0   STO 01       2    STO 03
    6  STO 07      0.1  STO 02     0.2   STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 1

    0   ENTER^
    1   XEQ "DGD"   >>>>    D  = 12.91212647                                 ---Execution time = 39s---      with V41 in TURBO mode
                               X<>Y   v'1 =  0.539381209


Notes:

-Thus, we have saved 3 seconds with V41 in turbo mode
-With a real HP41, probably about 30 minutes...


       b)  Runge-Kutta of order 4


-We can save many bytes with 4th-order Runge-Kutta formula.
-And with a real HP41, the program will run faster.


Data Registers:   R00 = Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = v'1   R28 ~ 0    R29 = u   R30 = v  R31 = v'     ( Check that R30 =
v2 )
                           
Flags: /
Subroutines: /

-Lines 37 & 134  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 03
 07 RCL 01
 08 -
 09 RCL 05
 10 12
 11 *
 12 /
 13 STO 32
 14 RCL 06
 15 RCL 07
 16 -
 17 RCL 06
 18 LASTX
 19 +
 20 *
 21 STO 09
 22 82
 23 STO 43
 24 216
 25 STO 38
 26 STO 42
 27 27
 28 STO 39
 29 STO 41
 30 272
 31 STO 40
 32 43.037
 33 STO 25
 34 RCL 27
 35 XEQ 00
 36 STO 28
 37 GTO 04
 38 LBL 00
 39 STO 31
 40 RCL 05          
 41 6
 42 *
 43 STO 33
 44 CLX
 45 RCL 02
 46 STO 30
 47 RCL 01
 48 STO 29
 49 XEQ 02
 50 RCL 15
 51 SQRT
 52 41
 53 *
 54 STO 00
 55 DSE 25
 56 GTO 03
 57 LBL 01
 58 RCL 31
 59 RCL 30
 60 RCL 29
 61 XEQ 02
 62 RCL 15
 63 SQRT
 64 RCL IND 25
 65 *
 66 ST+ 00
 67 DSE 25
 68 GTO 03
 69 CLX
 70 6
 71 ST+ 25
 72 LBL 03
 73 CLX
 74 RCL 32
 75 ST+ 29
 76 *
 77 STO 35
 78 RCL 31
 79 +
 80 STO 37
 81 LASTX
 82 RCL 32
 83 *
 84 STO 34
 85 RCL 30          
 86 +
 87 RCL 29
 88 XEQ 02
 89 RCL 32
 90 ST* 37
 91 *
 92 ST+ 35
 93 ST+ 35
 94 RCL 31
 95 +
 96 ENTER
 97 X<> 37
 98 ST+ 34
 99 ST+ 34
100 RCL 30
101 +
102 RCL 29
103 XEQ 02
104 RCL 32
105 ST+ 29
106 ST+ X
107 ST* 37
108 *
109 ST+ 35
110 RCL 31
111 +
112 ENTER
113 X<> 37
114 ST+ 34
115 RCL 30
116 +
117 RCL 29
118 XEQ 02
119 RCL 32
120 ST* 37
121 *
122 RCL 35
123 +
124 3
125 /
126 ST+ 31
127 RCL 37
128 RCL 34
129 +
130 3
131 /
132 ST+ 30
133 DSE 33
134 GTO 01
135 RCL 31        
136 RCL 30
137 RCL 29
138 XEQ 02
139 RCL 15
140 SQRT
141 41
142 *
143 ST+ 00
144 RCL 32
145 ABS
146 70
147 /
148 ST* 00
149 RCL 30
150 RCL 04
151 -
152 RTN
153 LBL 02
154 STO 10
155 X<> Z
156 STO 12
157 CLX
158 SIGN
159 P-R
160 STO 16
161 X<>Y
162 STO 17
163 RCL 10
164 LASTX
165 P-R
166 STO 13
167 X<>Y
168 STO 14
169 *
170 STO 11
171 *
172 *
173 RCL 09
174 *
175 STO 19
176 RCL 06
177 RCL 14
178 *
179 X^2
180 RCL 07
181 RCL 13
182 *
183 X^2
184 +
185 STO 15        
186 RCL 16
187 X^2
188 *
189 STO 18
190 RCL 06
191 RCL 13
192 *
193 X^2
194 RCL 07
195 RCL 14
196 *
197 X^2
198 +
199 STO 10
200 RCL 17
201 X^2
202 *
203 RCL 08
204 RCL 16
205 *
206 X^2
207 +
208 STO 20
209 RCL 15
210 RCL 16
211 RCL 17
212 *
213 STO 24
214 ST+ X
215 *
216 CHS
217 STO 21
218 LASTX
219 RCL 10
220 RCL 08
221 X^2
222 -
223 *
224 STO 23
225 RCL 11
226 RCL 16
227 X^2
228 RCL 17
229 X^2
230 -
231 *
232 RCL 09
233 *
234 STO 22
235 RCL 12        
236 *
237 RCL 13
238 X^2
239 RCL 14
240 X^2
241 -
242 RCL 24
243 *
244 RCL 09
245 *
246 +
247 STO 10
248 RCL 12
249 RCL 21
250 *
251 RCL 11
252 ST+ X
253 RCL 16
254 X^2
255 *
256 RCL 09
257 *
258 +
259 RCL 12
260 RCL 23
261 *
262 RCL 11
263 ST+ X
264 RCL 17
265 X^2
266 *
267 RCL 09
268 *
269 -
270 RCL 12
271 *
272 STO 24
273 RCL 10
274 ST+ 24
275 ST+ X
276 +
277 RCL 12
278 *
279 +
280 RCL 12
281 ST* 23
282 RCL 20
283 *
284 RCL 19        
285 STO 11
286 +
287 ST+ 11
288 *
289 RCL 23
290 RCL 22
291 ST+ X
292 +
293 RCL 12
294 *
295 RCL 21
296 +
297 RCL 24
298 ST+ X
299 -
300 RCL 11
301 RCL 12
302 *
303 RCL 18
304 ST* 20
305 +
306 STO 15
307 *
308 +
309 RCL 20
310 RCL 19
311 X^2
312 -
313 ST+ X
314 /
315 RTN
316 LBL 04
317 VIEW 00
318 RCL 26
319 XEQ 00
320 ENTER
321 ENTER
322 X<> 28
323 -
324 X#0?
325 /
326 RCL 27
327 RCL 26
328 STO 27
329 STO T
330 -
331 *
332 +
333 STO 26        
334 -
335 RND
336 X#0?
337 GTO 04
338 RCL 26
339 RCL 00
340 CLD
341 DEG
342 END


         ( 508 bytes / SIZE 044 )

 
            STACK            INPUTS          OUTPUTS
                Y                 y                v'1
                X                 x               Dist

  Where x & y are 2 different initial guesses of  v'1  

Example:
      a = 7   b = 6   c = 5   ,    u1 = 0 rd  ;  v1 = 0.1 rd  ;   u2 = 2 rd  ;  v2 = 0.2 rd

    7  STO 06        0   STO 01       2    STO 03
    6  STO 07      0.1  STO 02     0.2   STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 1

         FIX 9

    0   ENTER^
    1   XEQ "DGD"   >>>>    D  = 12.91212648                                 ---Execution time = 17s---      with V41 in TURBO mode
                               X<>Y   v'1 =  0.539381183

-We have  R31 = v'2 = -0.430961303

Notes:

-Though v' are less accurate, the precision of the distance is almost the same !
-Execution time is 17 seconds instead of 42 seconds with V41 in turbo mode.
-With a real HP41, it would be about 2h50mn instead of 7 hours...

-We can also use Newton-Cotes9 formula:  replace

  line 146 by   9  *  44800
  line 141 by   2857
  line 70   by   9
  line 52   by   2857
  line 41   by   9
  lines 22 to 32  by   5714  STO 46   15741  STO 38  STO 45  1080  STO 39  STO 44  19344  STO 40  STO 43  5778  STO 41  STO 42  46.037
  line  10  by  18

-Then, the number of steps is  9.N  ( R05 = N )
-With N = 5,  it yields the same geodesic distance in the example above in about 12.8 seconds with V41 ( turbo mode )
-So probably about 2h09m with a real HP41.


2°)  U = U(V)


       a)  Runge-Kutta of order 6


-If  u1 = u2  we have to express u as a function of v. The formulae become:

   § L dv  where    L = SQRT ( R + 2.Q u' + P u'2 )       ( u' = du/dv )

   u''  ( P.R - Q2 ) / ( R + 2.Q u' + P u'2 )  =  - dQ/dv - u' dP/dv + (1/2) ( R/u + 2.u' Q/u + u'2 P/u ) + (1/2)  ( ( Q + P.u' ) / ( R + 2.Q u' + P u'2 ) ) ( dR/dv + 2.u' dQ/dv + u'2 dP/du )

   ( dP/dv =   P/v + u' P/u   ... etc ... )



Data Registers:   R00 = +/-Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = u'1   R28 ~ 0    R29 = v   R30 = u   R31 = u'          ( Check that R30 = u
2 )
                           
Flags: /
Subroutines: /


-Lines 37 & 353  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 04
 07 RCL 02
 08 -
 09 RCL 05
 10 6
 11 *
 12 /
 13 STO 32
 14 RCL 06
 15 RCL 07
 16 -
 17 RCL 06
 18 LASTX
 19 +
 20 *
 21 STO 09
 22 82
 23 STO 51
 24 216
 25 STO 46
 26 STO 50
 27 27
 28 STO 47
 29 STO 49
 30 272
 31 STO 48
 32 51.045
 33 STO 25
 34 RCL 27
 35 XEQ 00
 36 STO 28
 37 GTO 04
 38 LBL 00
 39 STO 31
 40 STO 34
 41 RCL 05
 42 6
 43 *
 44 STO 33
 45 CLX
 46 RCL 01
 47 STO 30
 48 RCL 02
 49 STO 29
 50 XEQ 02
 51 RCL 15
 52 SQRT
 53 41
 54 *
 55 STO 00
 56 DSE 25
 57 GTO 03
 58 LBL 01
 59 RCL 31
 60 STO 34
 61 RCL 30
 62 RCL 29
 63 XEQ 02
 64 RCL 15
 65 SQRT
 66 RCL IND 25
 67 *
 68 ST+ 00
 69 DSE 25
 70 GTO 03
 71 CLX
 72 6
 73 ST+ 25
 74 LBL 03
 75 CLX
 76 RCL 32          
 77 ST* 34
 78 *
 79 STO 39
 80 3
 81 /
 82 RCL 31
 83 +
 84 STO 35
 85 RCL 34
 86 3
 87 /
 88 RCL 30
 89 +
 90 RCL 32
 91 3
 92 /
 93 RCL 29
 94 +
 95 STO 38
 96 XEQ 02
 97 RCL 32
 98 ST* 35
 99 *
100 STO 40
101 1.5
102 /
103 RCL 31
104 +
105 STO 36
106 RCL 35
107 1.5
108 /
109 RCL 30
110 +
111 RCL 32
112 1.5
113 /
114 RCL 29
115 +
116 XEQ 02
117 RCL 32
118 ST* 36
119 *
120 STO 41
121 RCL 40
122 4
123 *
124 X<>Y
125 -
126 RCL 39
127 +
128 12
129 /
130 RCL 31
131 +
132 STO 37
133 RCL 35
134 4
135 *
136 RCL 36
137 -
138 RCL 34
139 +
140 12
141 /
142 RCL 30
143 +
144 RCL 38
145 XEQ 02
146 RCL 32
147 ST* 37
148 *
149 STO 42
150 18
151 *
152 RCL 41
153 7
154 *
155 +
156 RCL 40        
157 22
158 *
159 -
160 RCL 39
161 5
162 *
163 +
164 9.6
165 /
166 RCL 31
167 +
168 STO 38
169 RCL 37
170 18
171 *
172 RCL 36
173 7
174 *
175 +
176 RCL 35
177 22
178 *
179 -
180 RCL 34
181 5
182 *
183 +
184 9.6
185 /
186 RCL 30
187 +
188 RCL 32
189 1.2
190 /
191 RCL 29
192 +
193 XEQ 02
194 RCL 32
195 ST* 38
196 *
197 STO 43
198 10
199 /
200 RCL 42
201 2
202 /
203 +
204 RCL 41
205 8
206 /
207 -
208 RCL 40
209 11
210 *
211 24
212 /
213 -
214 RCL 39
215 .15
216 *
217 +
218 RCL 31
219 +
220 STO 44
221 RCL 38
222 10
223 /
224 RCL 37
225 2
226 /
227 +
228 RCL 36
229 8
230 /
231 -
232 RCL 35        
233 11
234 *
235 24
236 /
237 -
238 RCL 34
239 .15
240 *
241 +
242 RCL 30
243 +
244 RCL 32
245 6
246 /
247 RCL 29
248 +
249 XEQ 02
250 RCL 32
251 ST* 44
252 *
253 STO 45
254 80
255 *
256 RCL 40
257 99
258 *
259 +
260 RCL 42
261 118
262 *
263 -
264 20
265 *
266 RCL 43
267 ST+ 45
268 128
269 *
270 +
271 RCL 41
272 ST+ 42
273 215
274 *
275 +
276 RCL 39
277 783
278 *
279 -
280 780
281 /
282 RCL 31
283 +
284 RCL 35
285 99
286 *
287 RCL 44
288 80
289 *
290 +
291 RCL 37
292 118
293 *
294 -
295 20
296 *
297 RCL 38
298 ST+ 44
299 128
300 *
301 +
302 RCL 36
303 ST+ 37
304 215
305 *
306 +
307 RCL 34        
308 783
309 *
310 -
311 780
312 /
313 RCL 30
314 +
315 RCL 29
316 RCL 32
317 +
318 XEQ 02
319 RCL 32
320 ST+ 29
321 ST* 12
322 *
323 RCL 39
324 +
325 13
326 *
327 RCL 45
328 32
329 ST* 44
330 *
331 +
332 RCL 42
333 55
334 ST* 37
335 *
336 +
337 .5
338 %
339 ST+ 31
340 RCL 34
341 RCL 12
342 +
343 13
344 *
345 RCL 44
346 +
347 RCL 37
348 +
349 .5
350 %
351 ST+ 30
352 DSE 33
353 GTO 01
354 RCL 31
355 RCL 30
356 RCL 29
357 XEQ 02
358 RCL 15
359 SQRT
360 41
361 *
362 ST+ 00
363 RCL 32
364 ABS
365 140
366 /
367 ST* 00
368 RCL 30
369 RCL 03
370 -
371 RTN
372 LBL 02
373 STO 10
374 X<> Z
375 STO 12
376 CLX
377 SIGN
378 P-R
379 STO 13
380 X<>Y
381 STO 14
382 RCL 10
383 LASTX
384 P-R
385 STO 16
386 X<>Y
387 STO 17
388 *
389 STO 24
390 *
391 *
392 RCL 09
393 *
394 STO 19
395 RCL 06
396 RCL 14        
397 *
398 X^2
399 RCL 07
400 RCL 13
401 *
402 X^2
403 +
404 STO 15
405 RCL 16
406 X^2
407 *
408 STO 18
409 RCL 06
410 RCL 13
411 *
412 X^2
413 RCL 07
414 RCL 14
415 *
416 X^2
417 +
418 STO 10
419 RCL 17
420 X^2
421 *
422 RCL 08
423 RCL 16
424 *
425 X^2
426 +
427 STO 20
428 RCL 13
429 RCL 14
430 *
431 STO 11
432 RCL 17
433 X^2
434 *
435 RCL 09
436 ST+ X
437 *
438 CHS
439 STO 21
440 RCL 13
441 X^2
442 RCL 14
443 X^2
444 -
445 RCL 09
446 *
447 RCL 24
448 *
449 STO 22
450 RCL 11
451 RCL 16
452 X^2
453 *
454 ST+ X
455 RCL 09
456 *
457 RCL 12
458 *
459 STO 23
460 RCL 15
461 RCL 24
462 *
463 ST+ X
464 -
465 X<> 16
466 X^2
467 RCL 17
468 X^2
469 -
470 RCL 09
471 *
472 RCL 11
473 *
474 RCL 12
475 RCL 22        
476 *
477 +
478 X<> 24
479 ST+ X
480 RCL 10
481 RCL 08
482 X^2
483 -
484 *
485 RCL 12
486 ST* 16
487 RCL 21
488 *
489 +
490 RCL 16
491 RCL 24
492 ST+ X
493 +
494 RCL 12
495 *
496 +
497 RCL 12
498 RCL 18
499 *
500 RCL 19
501 STO 11
502 +
503 ST+ 11
504 *
505 RCL 23
506 RCL 22
507 ST+ X
508 +
509 RCL 12
510 *
511 RCL 21
512 +
513 RCL 16
514 RCL 24
515 +
516 ST+ X
517 -
518 RCL 11
519 RCL 12
520 *
521 RCL 20
522 ST* 18
523 +
524 STO 15
525 *
526 +
527 RCL 18
528 RCL 19
529 X^2
530 -
531 ST+ X
532 /
533 RTN
534 LBL 04
535 VIEW 00
536 RCL 26
537 XEQ 00
538 ENTER
539 ENTER
540 X<> 28
541 -
542 X#0?
543 /
544 RCL 27
545 RCL 26
546 STO 27
547 STO T
548 -
549 *
550 +
551 STO 26
552 X#Y?
553 GTO 04
554 RCL 00        
555 CLD
556 DEG
557 END


         ( 854 bytes / SIZE 052 )

 
            STACK           INPUTS          OUTPUTS
                Y                y                u'1
                X                x               Dist

  Where x & y are 2 different initial guesses of  u'1

Example1:
      a = 7   b = 6   c = 5   ,    u1 = 1 rd  ;  v1 = 0 rd  ;   u2 = 1 rd  ;  v2 = 1 rd

    7  STO 06        1   STO 01       1    STO 03
    6  STO 07        0   STO 02       1    STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 0.1

    0    ENTER^
  0.1   XEQ "DGD"   >>>>    D  = 5.375896782
                                X<>Y   u'1 = 0.059732533

-And   u'2 = R31 = -0.087357012


Example2:   On the Earth, with the values used in paragraph 0°)   L = 0°  ,  b = 0°  ,   L' = 0°  ,  b = 41°

     0  ENTER^
     0  XEQ "LB-UV"  >>>>  0.260559389   STO 01
                                  X<>Y         0              STO 02

        0     ENTER^
       41       R/S       >>>>      0.260559389  STO 03
                               X<>Y     0.713920143  STO 04

-With  N = 10  STO 05  and initial guesses    0   0.1

  0      ENTER^
 0.1   XEQ "DGD"  >>>>     D = 4540.561276 km
                              X<>Y   u'1 = 0.000001952

  and  R31 = u'2 = -0.000002366

-With free42 and  N = 100 , it yields    D = 4540.56127748   &   u'1 = 0.00000195128  ,   u'2 = -0.00000236680


Note:

-Like with the second program listed in paragraph 1°)  we can store the numbers in data registers to make the routine a little faster:



Data Registers:   R00 = +/-Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = u'1   R28 ~ 0    R29 = v   R30 = u  R31 = u'       ( Check that R30 = u
2 )
                           
Flags: /
Subroutines: /


-Lines 117 & 413  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 04
 07 RCL 02
 08 -
 09 RCL 05
 10 6
 11 STO 65
 12 *
 13 /
 14 STO 32
 15 RCL 06
 16 RCL 07
 17 -
 18 RCL 06
 19 LASTX
 20 +
 21 *
 22 STO 09
 23 41
 24 STO 76
 25 ST+ X
 26 STO 51
 27 216
 28 STO 46
 29 STO 50
 30 27
 31 STO 47
 32 STO 49
 33 272
 34 STO 48
 35 51.045
 36 STO 25
 37 3
 38 STO 52
 39 2
 40 STO 61
 41 /
 42 STO 53
 43 12
 44 STO 54
 45 90
 46 48
 47 /
 48 STO 55
 49 35
 50 LASTX
 51 /
 52 STO 56
 53 110
 54 LASTX
 55 /
 56 STO 57
 57 25
 58 LASTX
 59 /
 60 STO 58
 61 40
 62 LASTX
 63 /
 64 STO 59
 65 10
 66 STO 60
 67 8
 68 STO 62
 69 11
 70 24
 71 /
 72 STO 63
 73 .15
 74 STO 64
 75 40
 76 X^2
 77 780
 78 /
 79 STO 66
 80 128
 81 LASTX
 82 /
 83 STO 67          
 84 2360
 85 LASTX
 86 /
 87 STO 68
 88 215
 89 LASTX
 90 /
 91 STO 69
 92 1980
 93 LASTX
 94 /
 95 STO 70
 96 783
 97 LASTX
 98 /
 99 STO 71
100 13
101 200
102 /
103 STO 72
104 32
105 LASTX
106 /
107 STO 73
108 55
109 LASTX
110 /
111 STO 74
112 140
113 STO 75
114 RCL 27
115 XEQ 00
116 STO 28
117 GTO 04
118 LBL 00
119 STO 31
120 STO 34
121 RCL 05
122 RCL 65
123 *
124 STO 33
125 CLX
126 RCL 01
127 STO 30
128 RCL 02
129 STO 29
130 XEQ 02
131 RCL 15
132 SQRT
133 RCL 76
134 *
135 STO 00
136 DSE 25
137 GTO 03
138 LBL 01
139 RCL 31
140 STO 34
141 RCL 30
142 RCL 29
143 XEQ 02
144 RCL 15
145 SQRT
146 RCL IND 25
147 *
148 ST+ 00
149 DSE 25
150 GTO 03
151 CLX
152 RCL 65
153 ST+ 25
154 LBL 03
155 CLX
156 RCL 32
157 ST* 34
158 *
159 STO 39
160 RCL 52
161 /
162 RCL 31
163 +
164 STO 35
165 RCL 34
166 RCL 52
167 /
168 RCL 30
169 +
170 RCL 32          
171 RCL 52
172 /
173 RCL 29
174 +
175 STO 38
176 XEQ 02
177 RCL 32
178 ST* 35
179 *
180 STO 40
181 RCL 53
182 /
183 RCL 31
184 +
185 STO 36
186 RCL 35
187 RCL 53
188 /
189 RCL 30
190 +
191 RCL 32
192 RCL 53
193 /
194 RCL 29
195 +
196 XEQ 02
197 RCL 32
198 ST* 36
199 *
200 STO 41
201 RCL 39
202 X<>Y
203 -
204 RCL 54
205 /
206 RCL 40
207 RCL 52
208 /
209 +
210 RCL 31
211 +
212 STO 37
213 RCL 34
214 RCL 36
215 -
216 RCL 54
217 /
218 RCL 35
219 RCL 52
220 /
221 +
222 RCL 30
223 +
224 RCL 38
225 XEQ 02
226 RCL 32
227 ST* 37
228 *
229 STO 42
230 RCL 55
231 *
232 RCL 41
233 RCL 56
234 *
235 +
236 RCL 40
237 RCL 57
238 *
239 -
240 RCL 39
241 RCL 58
242 *
243 +
244 RCL 31
245 +
246 STO 38
247 RCL 37
248 RCL 55
249 *
250 RCL 36
251 RCL 56
252 *
253 +
254 RCL 35
255 RCL 57
256 *
257 -
258 RCL 34        
259 RCL 58
260 *
261 +
262 RCL 30
263 +
264 RCL 32
265 RCL 59
266 *
267 RCL 29
268 +
269 XEQ 02
270 RCL 32
271 ST* 38
272 *
273 STO 43
274 RCL 60
275 /
276 RCL 42
277 RCL 61
278 /
279 +
280 RCL 41
281 RCL 62
282 /
283 -
284 RCL 40
285 RCL 63
286 *
287 -
288 RCL 39
289 RCL 64
290 *
291 +
292 RCL 31
293 +
294 STO 44
295 RCL 38
296 RCL 60
297 /
298 RCL 37
299 RCL 61
300 /
301 +
302 RCL 36
303 RCL 62
304 /
305 -
306 RCL 35
307 RCL 63
308 *
309 -
310 RCL 34
311 RCL 64
312 *
313 +
314 RCL 30
315 +
316 RCL 32
317 RCL 65
318 /
319 RCL 29
320 +
321 XEQ 02
322 RCL 32
323 ST* 44
324 *
325 STO 45
326 RCL 66
327 *
328 RCL 40
329 RCL 70
330 *
331 +
332 RCL 42
333 RCL 68
334 *
335 -
336 RCL 43
337 ST+ 45
338 RCL 67
339 *
340 +
341 RCL 41
342 ST+ 42
343 RCL 69
344 *
345 +
346 RCL 39        
347 RCL 71
348 *
349 -
350 RCL 31
351 +
352 RCL 35
353 RCL 70
354 *
355 RCL 44
356 RCL 66
357 *
358 +
359 RCL 37
360 RCL 68
361 *
362 -
363 RCL 38
364 ST+ 44
365 RCL 67
366 *
367 +
368 RCL 36
369 ST+ 37
370 RCL 69
371 *
372 +
373 RCL 34
374 RCL 71
375 *
376 -
377 RCL 30
378 +
379 RCL 29
380 RCL 32
381 +
382 XEQ 02
383 RCL 32
384 ST+ 29
385 ST* 12
386 *
387 RCL 39
388 +
389 RCL 72
390 *
391 RCL 45
392 RCL 73
393 ST* 44
394 *
395 +
396 RCL 42
397 RCL 74
398 ST* 37
399 *
400 +
401 ST+ 31
402 RCL 34
403 RCL 12
404 +
405 RCL 72
406 *
407 RCL 44
408 +
409 RCL 37
410 +
411 ST+ 30
412 DSE 33
413 GTO 01
414 RCL 31
415 RCL 30
416 RCL 29
417 XEQ 02
418 RCL 15
419 SQRT
420 RCL 76
421 *
422 ST+ 00
423 RCL 32
424 ABS
425 RCL 75
426 /
427 ST* 00
428 RCL 30
429 RCL 03
430 -
431 RTN
432 LBL 02
433 STO 10
434 X<> Z
435 STO 12        
436 CLX
437 SIGN
438 P-R
439 STO 13
440 X<>Y
441 STO 14
442 RCL 10
443 LASTX
444 P-R
445 STO 16
446 X<>Y
447 STO 17
448 *
449 STO 24
450 *
451 *
452 RCL 09
453 *
454 STO 19
455 RCL 06
456 RCL 14
457 *
458 X^2
459 RCL 07
460 RCL 13
461 *
462 X^2
463 +
464 STO 15
465 RCL 16
466 X^2
467 *
468 STO 18
469 RCL 06
470 RCL 13
471 *
472 X^2
473 RCL 07
474 RCL 14
475 *
476 X^2
477 +
478 STO 10
479 RCL 17
480 X^2
481 *
482 RCL 08
483 RCL 16
484 *
485 X^2
486 +
487 STO 20
488 RCL 13
489 RCL 14
490 *
491 STO 11
492 RCL 17
493 X^2
494 *
495 RCL 09
496 ST+ X
497 *
498 CHS
499 STO 21
500 RCL 13
501 X^2
502 RCL 14
503 X^2
504 -
505 RCL 09
506 *
507 RCL 24
508 *
509 STO 22
510 RCL 11
511 RCL 16
512 X^2
513 *
514 ST+ X
515 RCL 09
516 *
517 RCL 12
518 *
519 STO 23
520 RCL 15
521 RCL 24        
522 *
523 ST+ X
524 -
525 X<> 16
526 X^2
527 RCL 17
528 X^2
529 -
530 RCL 09
531 *
532 RCL 11
533 *
534 RCL 12
535 RCL 22
536 *
537 +
538 X<> 24
539 ST+ X
540 RCL 10
541 RCL 08
542 X^2
543 -
544 *
545 RCL 12
546 ST* 16
547 RCL 21
548 *
549 +
550 RCL 16
551 RCL 24
552 ST+ X
553 +
554 RCL 12
555 *
556 +
557 RCL 12
558 RCL 18
559 *
560 RCL 19
561 STO 11
562 +
563 ST+ 11
564 *
565 RCL 23
566 RCL 22
567 ST+ X
568 +
569 RCL 12
570 *
571 RCL 21
572 +
573 RCL 16
574 RCL 24
575 +
576 ST+ X
577 -
578 RCL 11
579 RCL 12
580 *
581 RCL 20
582 ST* 18
583 +
584 STO 15
585 *
586 +
587 RCL 18
588 RCL 19
589 X^2
590 -
591 ST+ X
592 /
593 RTN
594 LBL 04
595 VIEW 00
596 RCL 26
597 XEQ 00
598 ENTER
599 ENTER
600 X<> 28
601 -
602 X#0?
603 /
604 RCL 27
605 RCL 26
606 STO 27
607 STO T
608 -
609 *
610 +
611 STO 26        
612 X#Y?
613 GTO 04
614 RCL 00
615 CLD
616 DEG
617 END


         ( 965 bytes / SIZE 077 )

 
            STACK           INPUTS          OUTPUTS
                Y                y                u'1
                X                x               Dist

  Where x & y are 2 different initial guesses of  u'1

Example:
      a = 7   b = 6   c = 5   ,    u1 = 1 rd  ;  v1 = 0 rd  ;   u2 = 1 rd  ;  v2 = 1 rd

    7  STO 06        1   STO 01       1    STO 03
    6  STO 07        0   STO 02       1    STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 0.1

    0    ENTER^
  0.1   XEQ "DGD"   >>>>    D  = 5.375896782
                                X<>Y   u'1 = 0.059732533

-And   u'2 = R31 = -0.087357012


       b)  Runge-Kutta of order 4


-We can save many bytes with 4th-order Runge-Kutta formula.
-And with a real HP41, the program will run faster.


Data Registers:   R00 = Geodesic Distance                                     ( Registers R01 thru R08 are to be initialized before executing "DGD" )

                           
•  R01 = u1     •  R03 = u2     •  R05 = N  ( 6.N = number of steps )                   •  R06 = a    •  R07 = b    •  R08 = c
                           •  R02 = v1     •  R04 = v2                              
                                                                         
                        When the program stops,  R26 = R27 = u'1   R28 ~ 0    R29 = v   R30 = u  R31 = u'     ( Check that R30 = u
2 )
                           
Flags: /
Subroutines: /

-Lines 37 & 134  are three-byte GTOs


 01 LBL "DGD"
 02 RAD
 03 STO 26
 04 X<>Y
 05 STO 27
 06 RCL 04
 07 RCL 02
 08 -
 09 RCL 05
 10 12
 11 *
 12 /
 13 STO 32
 14 RCL 06
 15 RCL 07
 16 -
 17 RCL 06
 18 LASTX
 19 +
 20 *
 21 STO 09
 22 82
 23 STO 43
 24 216
 25 STO 38
 26 STO 42
 27 27
 28 STO 39
 29 STO 41
 30 272
 31 STO 40
 32 43.037
 33 STO 25
 34 RCL 27
 35 XEQ 00
 36 STO 28
 37 GTO 04
 38 LBL 00
 39 STO 31
 40 RCL 05
 41 6
 42 *
 43 STO 33          
 44 CLX
 45 RCL 01
 46 STO 30
 47 RCL 02
 48 STO 29
 49 XEQ 02
 50 RCL 15
 51 SQRT
 52 41
 53 *
 54 STO 00
 55 DSE 25
 56 GTO 03
 57 LBL 01
 58 RCL 31
 59 RCL 30
 60 RCL 29
 61 XEQ 02
 62 RCL 15
 63 SQRT
 64 RCL IND 25
 65 *
 66 ST+ 00
 67 DSE 25
 68 GTO 03
 69 CLX
 70 6
 71 ST+ 25
 72 LBL 03
 73 CLX
 74 RCL 32
 75 ST+ 29
 76 *
 77 STO 35
 78 RCL 31
 79 +
 80 STO 37
 81 LASTX
 82 RCL 32
 83 *
 84 STO 34
 85 RCL 30
 86 +
 87 RCL 29
 88 XEQ 02
 89 RCL 32
 90 ST* 37
 91 *
 92 ST+ 35
 93 ST+ 35
 94 RCL 31          
 95 +
 96 ENTER
 97 X<> 37
 98 ST+ 34
 99 ST+ 34
100 RCL 30
101 +
102 RCL 29
103 XEQ 02
104 RCL 32
105 ST+ 29
106 ST+ X
107 ST* 37
108 *
109 ST+ 35
110 RCL 31
111 +
112 ENTER
113 X<> 37
114 ST+ 34
115 RCL 30
116 +
117 RCL 29
118 XEQ 02
119 RCL 32
120 ST* 37
121 *
122 RCL 35
123 +
124 3
125 /
126 ST+ 31
127 RCL 37
128 RCL 34
129 +
130 3
131 /
132 ST+ 30
133 DSE 33
134 GTO 01
135 RCL 31
136 RCL 30
137 RCL 29
138 XEQ 02
139 RCL 15
140 SQRT
141 41
142 *
143 ST+ 00
144 RCL 32        
145 ABS
146 70
147 /
148 ST* 00
149 RCL 30
150 RCL 03
151 -
152 RTN
153 LBL 02
154 STO 10
155 X<> Z
156 STO 12
157 CLX
158 SIGN
159 P-R
160 STO 13
161 X<>Y
162 STO 14
163 RCL 10
164 LASTX
165 P-R
166 STO 16
167 X<>Y
168 STO 17
169 *
170 STO 24
171 *
172 *
173 RCL 09
174 *
175 STO 19
176 RCL 06
177 RCL 14
178 *
179 X^2
180 RCL 07
181 RCL 13
182 *
183 X^2
184 +
185 STO 15
186 RCL 16
187 X^2
188 *
189 STO 18
190 RCL 06        
191 RCL 13
192 *
193 X^2
194 RCL 07
195 RCL 14
196 *
197 X^2
198 +
199 STO 10
200 RCL 17
201 X^2
202 *
203 RCL 08
204 RCL 16
205 *
206 X^2
207 +
208 STO 20
209 RCL 13
210 RCL 14
211 *
212 STO 11
213 RCL 17
214 X^2
215 *
216 RCL 09
217 ST+ X
218 *
219 CHS
220 STO 21
221 RCL 13
222 X^2
223 RCL 14
224 X^2
225 -
226 RCL 09
227 *
228 RCL 24
229 *
230 STO 22
231 RCL 11
232 RCL 16
233 X^2
234 *
235 ST+ X
236 RCL 09
237 *
238 RCL 12        
239 *
240 STO 23
241 RCL 15
242 RCL 24
243 *
244 ST+ X
245 -
246 X<> 16
247 X^2
248 RCL 17
249 X^2
250 -
251 RCL 09
252 *
253 RCL 11
254 *
255 RCL 12
256 RCL 22
257 *
258 +
259 X<> 24
260 ST+ X
261 RCL 10
262 RCL 08
263 X^2
264 -
265 *
266 RCL 12
267 ST* 16
268 RCL 21
269 *
270 +
271 RCL 16
272 RCL 24
273 ST+ 16
274 ST+ X
275 +
276 RCL 12
277 *
278 +
279 RCL 12
280 RCL 18
281 *
282 RCL 19
283 STO 11
284 +
285 ST+ 11
286 *
287 RCL 23        
288 RCL 22
289 ST+ X
290 +
291 RCL 12
292 *
293 RCL 21
294 +
295 RCL 16
296 ST+ X
297 -
298 RCL 11
299 RCL 12
300 *
301 RCL 20
302 ST* 18
303 +
304 STO 15
305 *
306 +
307 RCL 18
308 RCL 19
309 X^2
310 -
311 ST+ X
312 /
313 RTN
314 LBL 04
315 VIEW 00
316 RCL 26
317 XEQ 00
318 ENTER
319 ENTER
320 X<> 28
321 -
322 X#0?
323 /
324 RCL 27
325 RCL 26
326 STO 27
327 STO T
328 -
329 *
330 +
331 STO 26
332 -
333 RND
334 X#0?
335 GTO 04
336 RCL 26        
337 RCL 00
338 CLD
339 DEG
340 END


         ( 508 bytes / SIZE 044 )

 
            STACK           INPUTS          OUTPUTS
                Y                y                u'1
                X                x               Dist

  Where x & y are 2 different initial guesses of  u'1

Example:
      a = 7   b = 6   c = 5   ,    u1 = 1 rd  ;  v1 = 0 rd  ;   u2 = 1 rd  ;  v2 = 1 rd

    7  STO 06        1   STO 01       1    STO 03
    6  STO 07        0   STO 02       1    STO 04
    5  STO 08

-If we choose  N = 10     10   STO 05
-With initial guesses  0 & 0.1

           FIX 9

    0    ENTER^
  0.1   XEQ "DGD"   >>>>    D  = 5.375896774
                                X<>Y   u'1 = 0.059732531

-And   u'2 = R31 = -0.087357015


Remark:

-We can make similar modifications to use NC9 instead of NC6 for the integrals
  and store a few numbers in data registers to slightly reduce execution time...