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.