Eclipses

# Eclipses for the HP-41

Overview

1°)  Program#1
2°)  Program#2 ( lower accuracy )
3°)  Eclipses+Phases of the Moon #1
4°)  Phases of the Moon+Eclipses #2

-Programs #1 & #2 calculate the date & time of a Solar or a Lunar eclipse.
-The type of the eclipse is also determined: Partial, Annular, Total or Hybrid ( also called Annular-Total ) for a Solar eclipse
and Partial or Total, Umbral or Penumbral for a Lunar eclipse.
-The magnitude is also returned.

-The first routine is valid a few centuries around J2000 with an accuracy of the order of a few minutes for the time of maximum eclipse.
-For the second and third programs, the accuracy is about 5 minutes over the time span [1900,2100]
-Program #4 has an accuracy of a few minutes for dates between 1000 and 3000 ( at least )

1°)  Program#1

Data Registers:   R00 thru R15: temp

R04 = 0  for a Solar eclipse        R03 = m'      R10 = gamma
R04 = 1  for a Lunar eclipse       R09 = m

For a Solar eclipse, gamma =  the least "distance" from the center of the Earth to the axis of the Moon's shadow ( unit = Earth's radius )
For a Lunar eclipse, gamma =  the least "distance" from the center of the Moon to the axis of the Earth's shadow ( unit = Earth's radius )

Flag:   F02 is set to indicate a Hybrid ( solar ) eclipse.
Subroutines:  "J0" & "DT"  ( cf "Julian & Gregorian Calendars for the HP-41" )  or "J1" & "D1" or "J2" & "D2"

-R06 contains an integer that is even for a Solar eclipse and odd for a Lunar eclipse.
-One is added to R06 until the HP-41 finds an eclipse.

-Line 07 may be replaced by  FLOOR
-Line 178 is a three-byte GTO 01
-Lines 322 & 324:   FLOOR and  FRC2  are 2 M-Code routines listed in "A Few M-Code Routines for the HP-41"
but lines 322 to 326 may be replaced by     INT   LASTX   FRC   X<0?   DSE Y   FRC   24   ST* Y   MOD

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

( 505 bytes / SIZE 016 )

 STACK INPUTS OUTPUTS T / m' Z / m Y / HH.MNSS X yyyy.mndd YYYY.MNDD

where   yyyy.mndd  is an approximate date

YYYY.MNDD  is the date of the eclipse
HH.MNSS      is the time of maximum eclipse

For a Lunar Eclipse:

m = magnitude of the umbral eclipse               m , m' > 1  for a total eclipse,                  if  m < 0  there is no umbral eclipse
m' = magnitude of the penumbral eclipse         m , m' < 1  for a partial eclipse

For a Solar Eclipse:

m = magnitude of the eclipse                          m > 1  for a total or hybrid eclipse                m < 1  for a partial eclipse

m' = 0   for a partial eclipse
m' = 1   for an annular eclipse
m' = m  for a total or hybrid eclipse                F02 will be set for a hybrid eclipse

Example1:

2008.0701  XEQ "ECLIPSE"   >>>>   2008.0801                     --- Execution time = 39s ---
RDN       10.2230
RDN         1.0193
RDN         1.0193                           and flag F02 is clear

-So, there is a Total Solar eclipse on 2008/08/01 at 10h23mn TT and its magnitude = 1.019

-You also have R04 = 0 to confirm that it is a Solar eclipse.

-And  R10 = gamma = 0.8315 , therefore, the eclipse is visible in the northern hemisphere

-If  R10 < 0  the eclipse is visible in the southern hemisphere
-If  R10 is small ( compared to 1 ), the eclipse is visible from equatorial regions.

>>>>  To search for the next eclipse, simply press  XEQ 01  without disturbing  R05 & R06

-Here, it yields in 34 seconds:              2008.0816
RDN       21.1117
RDN         0.8012
RDN         1.8307

-Thus, there is a Lunar eclipse on 2008/08/16 at 21h11mn TT
-This eclipse is an umbral one ( m > 0 ) and its magnitude is m = 0.801

Example2:

2013.1101   R/S   >>>>    2013.1103
RDN         12.4713
RDN           1.0078
RDN           1.0078              and flag F02 is set

-So, there will be a Hybrid ( Annular/Solar )  eclipse on 2013/11/03 at 12h47mn TT and its magnitude = 1.008

Example3:

2001.1225   R/S   >>>>    2001.1230
RDN        10.3049
RDN        -0.1241
RDN         0.8846

-There was a Lunar eclipse on 2001/12/30 at 10h31mn TT
-Since m < 0 , it was not an umbral eclipse but a penumbral one and its magnitude was 0.885

Example4:

2001.1201   R/S   >>>>    2001.1214
RDN        20.5339
RDN          0.9832
RDN          1.0000               flag  F02 is clear

-Since m' = 1 and m < 1 , there was an Annular Solar eclipse on 2001/12/14 at 20h54mn TT  magnitude = 0.983

Notes:

-There is no ambiguity between Solar and Lunar eclipses after seeing registers Z and T
-But in order to get a clearer information, you could replace lines 330 to 333 by

"LUNAR"   RCL 04   X=0?   "SOLAR"   CLX   RCL 03   RCL 09   R^   R^   AVIEW

-Other lines may of course be added so that the HP-41 displays the exact type of the eclipse, but it will cost several extra bytes...

-More periodic terms can be found in reference [1] to get the time of maximum eclipse with a better accuracy.
-I've also neglected several secular terms that should be added to seek eclipses that occurred more than 2 or 3 centuries ago.

2°)  Program#2

-In order to save bytes, we can round some coefficients and use less terms ( and a few "tricks" )

Data Registers:   R00 thru R14: temp

R04 = 0  for a Solar eclipse        R03 = m'      R10 = gamma
R04 = 1  for a Lunar eclipse       R09 = m

For a Solar eclipse, gamma =  the least "distance" from the center of the Earth to the axis of the Moon's shadow ( unit = Earth's radius )
For a Lunar eclipse, gamma =  the least "distance" from the center of the Moon to the axis of the Earth's shadow ( unit = Earth's radius )

Flag:   F02 is set to indicate a Hybrid ( solar ) eclipse.
Subroutines:  "J0" & "DT"  ( cf "Julian & Gregorian Calendars for the HP-41" )  or "J1" & "D1" or "J2" & "D2"

-Line 153 is  a three-byte  GTO 01
-Lines 268 to 272 may be replaced by     INT   LASTX   FRC   X<0?   DSE Y   FRC   24   ST* Y   MOD

 01  LBL "ECL"   02  DEG   03  XEQ "J0"   04  14.7652944   05  STO 05         06  /   07  INT    08  STO 06   09  GTO 00   10  LBL 01   11  ISG 06   12  LBL 00   13  .36   14  RCL 06   15  195.33525   16  *   17  372   18  SQRT   19  -   20  STO 04   21  SIN   22  ABS   23  X>Y?   24  GTO 01   25  CF 02   26  RCL 06   27  14.55268   28  *   29  13   30  LN   31  +   32  STO 01   33  SIN   34  207   35  *   36  RCL 06   37  192.90847   38  *   39  465   40  SQRT   41  +   42  STO 00   43  SIN   44  39   45  *   46  +   47  RCL 00 48  ST+ X   49  STO 11    50  SIN   51  RCL 04         52  ST+ X   53  STO 02   54  SIN   55  +   56  11.7   57  *   58  +   59  RCL 01   60  ST+ X   61  STO 14   62  SIN   63  ST+ X   64  +   65  RCL 00   66  RCL 01   67  +   68  STO 12   69  SIN   70  RCL 00   71  RCL 01   72  -   73  STO 13   74  SIN   75  -   76  7   77  *   78  +   79  RCL 04   80  COS   81  STO 03   82  *   83  5221   84  RCL 01   85  COS   86  5   87  *   88  -   89  RCL 14   90  COS   91  ST+ X   92  +   93  RCL 00   94  COS 95  330   96  *   97  +   98  RCL 12         99  COS 100  6 101  * 102  + 103  RCL 13 104  COS 105  4 106  * 107  - 108  RCL 04 109  SIN 110  * 111  + 112  RCL 03 113  ABS 114  208 115  / 116  1 117  - 118  * 119  STO 10 120  ABS 121  STO 07 122  5.9 123  RCL 00 124  COS 125  18 126  * 127  + 128  RCL 01 129  COS 130  9 131  * 132  RCL 11 133  COS 134  + 135  RCL 12 136  COS 137  + 138  2 139  / 140  + 141  STO 08 142  1543 143  + 144  RCL 06       145  2 146  MOD 147  STO 04 148  14 149  * 150  + 151  - 152  X>0? 153  GTO 01 154  CHS 155  STO 03 156  RCL 04 157  X=0? 158  GTO 00 159  1013 160  RCL 07 161  - 162  RCL 08 163  - 164  545 165  ST/ 03 166  / 167  STO 09 168  GTO 02 169  LBL 00 170  RCL 07 171  997.2 172  X>Y? 173  SF 02 174  RCL 08 175  ABS 176  + 177  X>Y? 178  GTO 00 179  CLX 180  X<> 03 181  546 182  RCL 08 183  ST+ X 184  + 185  / 186  STO 09 187  GTO 02 188  LBL 00 189  RCL 07       190   E3 191  / 192  X^2 193  SIGN 194  ENTER^ 195  STO 03  196  LASTX 197  - 198  22 199  * 200  X<0? 201  CLX 202  SQRT 203  RCL 08 204  XY 208  546 209  ST- Z 210  - 211  / 212  X>Y? 213  STO 03 214  STO 09 215  LBL 02 216  RCL 01 217  SIN 218  86 219  * 220  RCL 11 221  SIN 222  8 223  * 224  + 225  RCL 02 226  SIN 227  5 228  * 229  - 230  RCL 00 231  RCL 02 232  - 233  SIN 234  + 235  RCL 14 236  SIN 237  + 238  ST+ X 239  RCL 00       240  SIN 241  407 242  * 243  + 244  RCL 13 245  SIN 246  7 247  * 248  - 249  RCL 12 250  SIN 251  5 252  * 253  + 254  RCL 00 255  RCL 02 256  + 257  SIN 258  - 259  5598 260  + 261   E3 262  ST/ 10 263  / 264  RCL 05 265  RCL 06 266  * 267  + 268  FLOOR 269  LASTX 270  FRC2 271  24 272  * 273  HMS 274  X<>Y 275  XEQ "DT" 276  RCL 03 277  RCL 09 278  R^ 279  R^ 280  END

( 401 bytes / SIZE 015 )

-The instructions are identical, for example:

2008.0701  XEQ "ECL"   >>>>   2008.0801                     --- Execution time = 35s ---
RDN       10.2424
RDN         1.0191
RDN         1.0191                           and flag F02 is clear

So, there is a Total Solar eclipse on 2008/08/01 at 10h24mn TT and its magnitude = 1.019

R10 = gamma = 0.8335 , therefore, the eclipse is visible in the northern hemisphere.

Notes:

-With respect to Solar eclipses over the interval [ 1900 , 2100 ]  the type of the eclipse is correctly found
except on 1935/01/05 where the partial eclipse - magnitude = 0.001 - is not found at all!
and on 1948/05/09:  there was an annular eclipse - magnitude = 0.9999 - whereas "ECL" gives a hybrid eclipse - magnitude = 1.0002.

-Three more bytes can be saved if you delete lines 213-212-194
-In this case, the HP-41 will return m' = 1 for annular, hybrid and total Solar eclipses

3°)  Eclipses + Phases of the Moon

-We can combine "ECL" and "PHASE" to reduce space memory.
-The phases of the Moon are usually defined by the difference between the longitudes of the Moon and the Sun ( 0° 90° 180° 270° )
-In the following routine, we use another definition i-e when the illuminated fraction of the Moon's disk equals 0 , 1/2 , 1 , 1/2
-Thus - unlike the standard definition - the instant of a Solar eclipse is identical to the instant of the New Moon
( likewise for a Lunar eclipse and a Full Moon )  which is perhaps more logical...

Data Registers:   R00 = M'-180°   where M' = Moon's mean anomaly               R05 = 7.382647         R08 = 1000 u  ( u = radius of the umbral cone )

R01 = M             where M = Sun's mean anomaly                   R06 = 4k                    R09 = 0 for New Moon or Full Moon
R02 = 2F            where  F = Moon's argument of latitude        R07 = phase               R09 = 1 for First Quarter or Last Quarter
R03 = m'                               R10 = m
R04 = F-180°, gamma          R11 = 2M'   R12 = M'+M-180°   R13 = M'-M-180°   R14 = 2M       R15 = 1000 | gamma |

For a Solar eclipse, gamma =  the least "distance" from the center of the Earth to the axis of the Moon's shadow ( unit = Earth's radius )
For a Lunar eclipse, gamma =  the least "distance" from the center of the Moon to the axis of the Earth's shadow ( unit = Earth's radius )

Flag:   F02 is set to indicate a Hybrid ( solar ) eclipse.
Subroutines:  "J0" & "DT"  ( cf "Julian & Gregorian Calendars for the HP-41" )  or "J1" & "D1" or "J2" & "D2"

-If you prefer the standard definitions for the New Moon and Full Moon,

add   SF 10                                        after line 304
add   X<0?  FS? 10  FS? 30  CHS    after line  42
add   CF 10                                       after line  13

-If you prefer the standard definitions for the First and Last Quarters,
replace line 93 by  -   and lines 83 to 86 by  3
-Lines 103 to 111 may be replaced by    FLOOR   LASTX   FRC2   24  *
-Line 242 is a three-byte  GTO 10

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

( 503 bytes / SIZE 016 )

 STACK INPUT OUTPUT1(phase) OUTPUT2(eclipse) T / / m' Z / HH.MNSS m Y / YYYY.MNDD HH.MNSS X yyyy.mndd Phase YYYY.MNDD

where   yyyy.mndd  is an approximate date   and   Phase = 0 , 1 , 2 , 3  for  New Moon ,  First Quarter ,  Full Moon , Last Quarter.

YYYY.MNDD  is the date of the phase or the eclipse
HH.MNSS      is the time of the phase or the maximum eclipse

For a Lunar Eclipse:

m = magnitude of the umbral eclipse               m , m' > 1  for a total eclipse,                  if  m < 0  there is no umbral eclipse
m' = magnitude of the penumbral eclipse         m , m' < 1  for a partial eclipse

For a Solar Eclipse:

m = magnitude of the eclipse                          m > 1  for a total or hybrid eclipse                m < 1  for a partial eclipse

m' = 0   for a partial eclipse
m' = 1   for an annular eclipse
m' = m  for a total or hybrid eclipse                F02 will be set for a hybrid eclipse

Example1:

2008.0801   XEQ "PHASE"   >>>>          0                                              --- Execution time = 17s ---
RDN    2008.0801
RDN        10.2424

So, there is a New Moon on 2008/08/01 at 10h24mn TT                          10h16m16s  TT   with the standard definition

-Likewise,

First Quarter on  2008/08/08  at  20h02m42  TT          20h21m17s  TT   with the standard definition
Full Moon   on   2008/08/16  at  21h12m38  TT          21h19m43s  TT   with the standard definition
Last Quarter on   2008/08/24  at  00h08m38  TT         23h52m45s  TT  on  2008/08/23  with the standard definition

Example2:

2008.0701     XEQ "ECL"        >>>>   2008.0801                     --- Execution time = 39s ---
RDN       10.2424
RDN         1.0191
RDN         1.0191                           and flag F02 is clear

There is a Total Solar eclipse on 2008/08/01 at 10h24mn TT and its magnitude = 1.019

-You also have R07 = 0 to confirm that it is a Solar eclipse.

-And  R04 = gamma = 0.8334 > 0   ( the eclipse is visible in the northern hemisphere )

-If  R04 < 0  the eclipse is visible in the southern hemisphere
-If  R04 is small ( compared to 1 ), the eclipse is visible from equatorial regions.

>>>>  To search for the next eclipse, simply press  XEQ 10  without disturbing  R05 & R06

-Here, it yields:

2008.0816                            ( in 34 seconds )
RDN       21.1238
RDN        0.8045
RDN        1.8328

Partial Lunar eclipse on 2008/08/16  at  21h13mn TT ,  magnitude in the umbra = 0.804

Note:

-Three bytes can be saved if you delete lines 302-301-283
-The HP-41 will then return m' = 1 for annular, hybrid and total Solar eclipses

4°)  Phases of the Moon + Eclipses

-This routine calculates the phases of the Moon with the same - non-standard - definition as the 3rd program
-More secular terms have been used to produce an accuracy of about 5 minutes for dates between 1000 & 3000 and probably a little more...

Data Registers:   R00 = 4.k               R05 = 0 or 1         R10 = 2.F                        R15 = 7.38264721

R01 = m                 R06:   temp           R11 = 2.M'                      R16:    temp
R02 = m'                R07 = E                R12 = M'+M-180°
R03 = gamma         R08 = M' - 180°   R13 = M'-M-180°
R04 = phase           R09 = M               R14 = 2M

For a Solar eclipse, gamma =  the least "distance" from the center of the Earth to the axis of the Moon's shadow ( unit = Earth's radius )
For a Lunar eclipse, gamma =  the least "distance" from the center of the Moon to the axis of the Earth's shadow ( unit = Earth's radius )

Flag:   F02 is set to indicate a Hybrid ( solar ) eclipse.
Subroutines:  "J0" & "DT"  ( cf "Julian & Gregorian Calendars for the HP-41" )  or "J1" & "D1" or "J2" & "D2"

-Lines 108 to 116 may be replaced by    FLOOR   LASTX   FRC2   24   *
-Line 247 is a three-byte  GTO

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

( 527 bytes / SIZE 017 )

 STACK INPUT OUTPUT1(phase) OUTPUT2(eclipse) T / / m' Z / HH.MNSS m Y / YYYY.MNDD HH.MNSS X yyyy.mndd Phase YYYY.MNDD

where   yyyy.mndd  is an approximate date   and   Phase = 0 , 1 , 2 , 3  for  New Moon ,  First Quarter ,  Full Moon , Last Quarter.

YYYY.MNDD  is the date of the phase or the eclipse
HH.MNSS      is the time of the phase or the maximum eclipse

For a Lunar Eclipse:

m = magnitude of the umbral eclipse               m , m' > 1  for a total eclipse,                  if  m < 0  there is no umbral eclipse
m' = magnitude of the penumbral eclipse         m , m' < 1  for a partial eclipse

For a Solar Eclipse:

m = magnitude of the eclipse                          m > 1  for a total or hybrid eclipse                m < 1  for a partial eclipse

m' = 0   for a partial eclipse
m' = 1   for an annular eclipse
m' = m  for a total or hybrid eclipse                F02 will be set for a hybrid eclipse

Examples:

3000.0715   XEQ "PHASE"   >>>>         3                    ( Last Quarter )
RDN    3000.0716
RDN        21.5653           Note the difference with the standard definition of phases:  21h38m01s

3000.1016   XEQ "ECL"   >>>>    3000.1019                Flag  F02 is set, so we have a Hybrid ( Solar ) eclipse
RDN        16.0807
RDN     m = 1.0027              R03 = gamma = -0.2167
RDN     m' = 1                      R04 = phase = 0 ( New Moon )

-The exact time is  16h10m16s and the exact m = 1.0049

-The instructions are identical to those of the program listed in §3, in particular:

>>>>  To search for the next eclipse, simply press  XEQ 10

-In the last example, it yields:

3000/11/04     RDN    5h44m53s    RDN    m = -0.4165    RDN    m' = 0.5983       R03 = gamma = -1.2355       R04 = 2  ( Full Moon )

-Since  m < 0 , there is no eclipse in the umbra:  this Lunar eclipse is a penumbral one.

References:

[1]  Jean Meeus - "Astronomical Algorithms" - Willmann-Bell  -  ISBN 0-943396-61-1
[2]  Five Millennium Canon of Solar Eclipses: -1999 to +3000
[3]  http://eclipse.gsfc.nasa.gov/LEcat/LEcatalog.html