(HP71B) integer determinant
02-21-2024, 01:31 PM
Post: #7
 Albert Chan Senior Member Posts: 2,682 Joined: Jul 2018
RE: (HP71B) integer determinant
(02-21-2024 08:23 AM)J-F Garnier Wrote:  The examples I posted in Valentin's thread are failing with the 71B implementation of the Bareiss' algorithm, but are correct processed with this Bird's implementation.

Thanks for HP71B Bird's implementation! It work!

For fair comparison, I replace dot product using built-in DOT, for extra internal precisions.
First, row/column order is swapped (order does not matter, just more efficient the other way)

< 120 X=P*M(J,K)-M(J,I)*M(I,K) @ M(J,K)=IROUND(X/P0)
> 120 X=P*M(K,J)-M(K,I)*M(I,J) @ M(K,J)=IROUND(X/P0)

--> X = [M(I,I), -M(I,J)] • [M(K,J), M(K,I)] = P • Q

10 DESTROY ALL @ OPTION BASE 1 @ INPUT "N? ";N
20 DIM M(N,N),P(2),Q(2) @ MAT INPUT M @ S=1 @ P(1)=1
25 DISP "BUILT-IN DET =";DET(M)
30 FOR I=1 TO N-1 @ IF M(I,I) THEN 100
40 FOR J=I+1 TO N @ IF M(J,I) THEN 60
50 NEXT J @ S=0 @ GOTO 140 ! no pivot
60 FOR K=1 TO N @ VARSWAP M(I,K),M(J,K) @ NEXT K @ S=-S
100 P0=P(1) @ P(1)=M(I,I)
110 FOR J=I+1 TO N @ P(2)=-M(I,J)
115 FOR K=I+1 TO N @ Q(1)=M(K,J) @ Q(2)=M(K,I)
120 X=DOT(P,Q) @ M(K,J)=IROUND(X/P0)
130 NEXT K @ NEXT J @ NEXT I
140 DISP "BAREISS DET =";S*M(N,N)

Both of your examples now calculated correctly.

>run
N? 7
M(1,1)? 274,213,400,322,341,308,446
M(2,1)? 202,210,383,295,360,295,450
M(3,1)? 154,175,332,175,322,361,413
M(4,1)? 176,147,265,272,328,277,351
M(5,1)? 111,131,249,182,324,296,340
M(6,1)? 155,179,329,218,381,399,444
M(7,1)? 147,127,229,174,245,258,297
BUILT-IN DET =-11.4070209786
BAREISS DET = 1

>run
N? 7
M(1,1)? 477,389,402,515,358,409,289
M(2,1)? 302,273,282,322,280,283,205
M(3,1)? 278,231,339,319,343,254,214
M(4,1)? 432,360,406,502,391,359,319
M(5,1)? 475,316,509,649,543,393,288
M(6,1)? 299,304,351,369,459,346,221
M(7,1)? 526,561,442,441,371,491,445
BUILT-IN DET =-54.0791415377
BAREISS DET = 1

OP version actually not too bad, getting DET of 3 for 1st, -1 for 2nd
We could calculate DET(M MOD 10) MOD 10, to correct for this. (this is a nice check anyway)
 « Next Oldest | Next Newest »

 Messages In This Thread (HP71B) integer determinant - Albert Chan - 02-16-2024, 10:36 PM RE: (HP71B) integer determinant - Albert Chan - 02-16-2024, 11:16 PM RE: (HP71B) integer determinant - Albert Chan - 02-17-2024, 05:03 PM RE: (HP71B) integer determinant - robve - 02-18-2024, 03:05 PM RE: (HP71B) integer determinant - Albert Chan - 02-18-2024, 03:33 PM RE: (HP71B) integer determinant - J-F Garnier - 02-21-2024, 08:23 AM RE: (HP71B) integer determinant - Albert Chan - 02-21-2024 01:31 PM

User(s) browsing this thread: 1 Guest(s)