# hp41programs

Hypermat Hypermatrix and Magic Cubes for the HP-41

Overview

-An hypermatrix  [ ai,j,k ] ( 1<= i <= n ; 1 <= j <= m ; 1 <= k <= p )  is actually equivalent to a p-list of n x m  matrices.
-Two programs are listed herafter:

1°) "HYPMAT" creates an   n x m x p hypermatrix provided its elements verify  ai,j,k = f(i,j,k)  where  f is a known function.
2°) "T" allows to compute the elements of a p x p x p magic cube, where p is a prime > 2  ( and p < 999 )

-If p = 3 or 5  the cube is an Andrews magic cube ( the sums equal the magic constant p(p3+1)/2  in the 3 directions and the 4 space diagonals )
-If p = 7         the cube is perfect pandiagonal ( all the orthogonal sections are panmagic squares )
-If p = 11 , 13 , ... ,  we have a panmagic cube ( all the orthogonal or diagonal sections - broken or unbroken - are panmagic squares )

1°) Creating an Hypermatrix

-The elements of the hypermatrix  [ ai,j,k ] are stored as shown below.
-If n.m.p > 318 , replace line 42 by VIEW X and the coefficients will be displayed ( from the last to the first )

Data Registers:           •  R00 =  n.mmm,ppp = n + m/1,000 + p/1,000,000   ( this register is to be initialized before executing "HYPMAT" )

and when the program stops:

R01 = a1,1,1        Rn+1 = a1,2,1   .......................................     Rnm-n+1 = a1,m,1
R02 = a2,1,1        Rn+2 = a2,2,1   .......................................     Rnm-n+2 = a2,m,1
..................................................................................................................
Rn   = an,1,1        R2n  =  an,2,1   ........................................    Rnm = an,m,1

Rnm+1 = a1,1,2        Rnm+n+1 = a1,2,2   .......................................     R2nm-n+1 = a1,m,2
Rnm+2 = a2,1,2        Rnm+n+2 = a2,2,2   .......................................     R2nm-n+2 = a2,m,2
..................................................................................................................................
Rnm+n = an,1,2        Rnm+2n  =  an,2,2   ........................................    R2nm = an,m,2

..........................................................................................................
..........................................................................................................
..........................................................................................................

Rnm(p-1)+1 = a1,1,p        Rnm(p-1)+n+1 = a1,2,p   .......................................     Rnmp-n+1 = a1,m,p
Rnm(p-1)+2 = a2,1,p        Rnm(p-1)+n+2 = a2,2,p   .......................................     Rnmp-n+2 = a2,m,p
....................................................................................................................................................
Rnm(p-1)+n = an,1,p        Rnm(p-1)+2n  =  an,2,p   ........................................    Rnmp = an,m,p

Flag: /
Subroutine:  a program called "T" ( global label )  that calculates   ai,j,k  = f(i,j,k)  assuming  i , j , k are in registers X , Y , Z ( respectively ) upon entry.

 01  LBL "HYPMAT" 02  RCL 00 03  INT 04  LASTX 05  FRC 06   E3 07  * 08  INT 09  * 10  STO 01 11  RCL 00               12   E6 13  ST* Y 14  SQRT 15  MOD 16  * 17  STO M  18  LBL 01 19  RCL M 20  1 21  - 22  STO Y 23  RCL 01               24  / 25  INT 26  RCL Y 27  RCL 01  28  MOD 29  RCL 00 30  INT 31  / 32  INT 33  R^ 34  RCL 00               35  INT 36  MOD 37  1 38  ST+ T 39  ST+ Z 40  + 41  XEQ "T" 42  STO IND M        43  DSE M 44  GTO 01 45  CLA 46  END

( 71 bytes / SIZE nmp+1 )

 STACK INPUTS OUTPUTS X / /

Example:   n = 4 ; m = 5 ; p = 3  and   ai,j,k = ( i2 + j3 + k4 ) modulo (pi)

-Load this short routine in program memory:

LBL "T"
X^2
X<>Y
ENTER^
X^2
*
+
X<>Y
X^2
X^2
+
PI
MOD
RTN

-Then   4.005003   STO 00  XEQ "HYPMAT"  yields  ( in 75 seconds )

R01 = 3 ; R02 = 2.8584 ; R03 = 1.5752 ; ..... ; R21 = 2.2920 ; .....; R41 = 1.3186 ; ..... ; R60 = 2.0885

2°) Magic Cubes ( of order p , assuming p is a prime and p > 2 )

-The following program calculates the elements of a magic cube   ai,j,k  assuming  i , j , k are in registers X , Y , Z ( respectively ) upon entry.

Data Registers:           •  R00 = p.ppp,ppp    ( R00 is to be initialized )

R01 to Rp3 = the coefficents of the magic cube
Flags: /
Subroutines: /

 01  LBL "T" 02  1 03  ST- T 04  ST- Z 05  - 06  STO N 07  RDN 08  STO O 09  RCL 00 10  INT 11  7 12  - 13  X<0? 14  GTO 01 15  X=0? 16  GTO 02 17  X<> T 18  ST+ X 19  + 20  ST+ X 21  RCL N 22  + 23  RCL X 24  RCL Z 25  + 26  RCL X 27  RCL O 28  + 29  GTO 03 30  LBL 01 31  X<> T 32  + 33  RCL N 34  ST- Y 35  ST+ X 36  RCL Y 37  + 38  RCL O 39  ST+ X 40  CHS 41  X<>Y 42  ST+ Y 43  R^ 44  ST+ X 45  - 46  GTO 03 47  LBL 02 48  CLX 49  RCL N 50  + 51  ST+ X 52  + 53  CHS 54  RCL N 55  CHS 56  X<>Y 57  ST+ Y 58  RCL O 59  CHS 60  X<>Y 61  ST+ Y 62  R^ 63  ST+ X 64  - 65  RCL N 66  + 67  LBL 03 68  RCL 00 69  INT 70  MOD 71  X<>Y 72  LASTX 73  ST* Z 74  MOD 75  + 76  X<>Y 77  RCL 00 78  INT 79  ST* Z 80  MOD 81  + 82  1 83  + 84  END

( 125 bytes )

 STACK INPUTS OUTPUTS X / /

Example:      3.003003  STO 00  XEQ "HYPMAT"  stores the following Andrews magic cube

1                              23                           18                                             R01                       R10                        R19
17                              3                             22                                             R04                       R13                        R22
15        24                  7         16               20          2                                 R02       R07         R11        R16          R20       R25
19                             14                             9                 in                          R05                       R14                        R23              respectively.
26         8                  12        21                4          13                                R03       R08         R12        R17          R21       R26
6                              25                            11                                             R06                       R15                        R24
10                              5                             27                                              R09                       R18                        R27

-As you can check, the sums equal 42 in the  x- , y- , z- directions
and the space diagonals 1 + 14 + 27 = 26 + 14 + 2 = 10 + 14 + 18 = 24 + 14 + 4 = 42

Notes:

-If p = 7 , 11 , 13 , 17 , .... , replace line 42 by VIEW X in the "HYPMAT" listing to see the successive coefficients of the magic cube.
-A perfect magic cube of order 5 has been discovered in 2003, but this program cannot calculate its elements.