(42S) matrix permanent
|
01-15-2024, 12:33 PM
(This post was last modified: 01-15-2024 04:24 PM by Werner.)
Post: #1
|
|||
|
|||
(42S) matrix permanent
Thanks to:
usage: with the square matrix in stack register X, XEQ "PER". The permanent is returned in X, and the original, unchanged matrix is in Y. This is important for low-memory conditions on the 42S. variables used: REGS : v (sum of rows) n : matrix order i : 2^(n-1) k : 1..i-1 p : permanent 00 { 147-Byte Prgm } 01▸LBL "PER" 02 ENTER 03 RSUM 04 X=Y? 05 DET 06 REAL? 07 RTN 08 STO "REGS" 09 DIM? 10 R↓ 11 STO "n" 12 2 13 X<>Y 14 DSE ST X 15 Y^X 16 STO "i" 17 STO "k" 18 R↓ 19 EDIT 20 CLX 21 GTO 14 22▸LBL 10 23 RCL "i" 24 RCL- "k" 25 1 26▸LBL 11 27 RCL ST Y 28 4 29 MOD 30 GTO IND ST X 31▸LBL 01 32▸LBL 03 33 STO+ ST X @ (1,3) -> (-2,2) 34 LASTX 35 - 36 GTO 04 37▸LBL 00 38 X<> ST L 39 STO÷ ST Z @ k := k/4; 40 SQRT @ j := j + 2; 41 + 42 GTO 11 43▸LBL 02 44 SIGN @ j := j + 1; 45 + 46 X<>Y 47 8 48 MOD @ k MOD 8 is 2 or 6 49 4 @ (2,6) -> (-2,2) 50 - 51▸LBL 04 52 RCL "n" 53 1 54 R^ 55 STOIJ 56 R↓ 57 GETM 58 × 59 STO+ "REGS" 60 RCL "p" 61▸LBL 14 62 RCL "n" 63 RCL 00 64 DSE ST Y 65▸LBL 13 66 RCL× IND ST Y 67 DSE ST Y 68 GTO 13 69 RCL- ST Z 70 STO "p" 71 DSE "k" 72 GTO 10 73 RCL÷ "i" 74 +/- 75 RCLEL 76 EXITALL 77 X<>Y 78 END Timing/testing the program is easy, once you realize that the permanent of a matrix of order n, filled with all 1's, is n!. timing: order 42S DM42 5 0:18 0.05s 7 1:31 0.22s 9 7:10 1.03s 12 1:06:15 9.39s The timing of order 12 for the 42S is but an estimate, fitting a logarithmic curve through the three data points (x=time/n, y=n), yielding a .99999.. correlation, so should be pretty good. Cheers, Werner [updated with a shorter version... I seem to always find simple ways of shortening programs, moments after I posted them] 41CV†,42S,48GX,49G,DM42,DM41X,17BII,15CE,DM15L,12C,16CE |
|||
« Next Oldest | Next Newest »
|
Messages In This Thread |
(42S) matrix permanent - Werner - 01-15-2024 12:33 PM
RE: (42S) matrix permanent - Albert Chan - 01-15-2024, 02:24 PM
RE: (42S) matrix permanent - Werner - 01-15-2024, 02:45 PM
RE: (42S) matrix permanent - Albert Chan - 01-15-2024, 04:06 PM
RE: (42S) matrix permanent - Werner - 01-15-2024, 04:22 PM
RE: (42S) matrix permanent - Albert Chan - 01-16-2024, 01:00 AM
RE: (42S) matrix permanent - Werner - 01-16-2024, 08:47 AM
RE: (42S) matrix permanent - Albert Chan - 01-16-2024, 12:24 PM
RE: (42S) matrix permanent - John Keith - 01-17-2024, 08:17 PM
RE: (42S) matrix permanent - John Keith - 01-26-2024, 10:28 PM
|
User(s) browsing this thread: 1 Guest(s)