C C C subroutine mat56(a,n,b,m,determ) implicit real*8 (a-h,o-z) dimension index(5,2),ipivot(5),a(5,5),b(5,6),pivot(5) equivalence (irow,jrow), (icolum,jcolum), (amax, t, swap) l C INITIALIZATION LSTSQ055 10 determ=1.0d0 lstsq0 15 do 20 j=1,n lstsq057 20 ipivot(j)=0 lstsq058 30 do 550 i=1,n lstsq059 C SEARCH FOR PIVOT ELEMENT LSTSQ060 40 amax=0.0d0 lstsq0 45 do 105 j=1,n lstsq062 50 if (ipivot(j)-1) 60, 105, 60 lstsq063 60 do 100 k=1,n lstsq064 70 if (ipivot(k)-1) 80, 100, 740 lstsq065 80 if( abs(amax)- abs(a(j,k)))85,100,100 85 irow=j lstsq067 90 icolum=k lstsq068 95 amax=a(j,k) lstsq069 100 continue lstsq070 105 continue lstsq071 110 ipivot(icolum)=ipivot(icolum)+1 lstsq072 C INTERCHANGE ROWS TO PUT PIVOT ELEMENT ON DIAGONAL LSTSQ073 130 if (irow-icolum) 140, 260, 140 lstsq074 140 determ=-determ lstsq075 150 do 200 l=1,n lstsq076 160 swap=a(irow,l) lstsq077 170 a(irow,l)=a(icolum,l) lstsq078 200 a(icolum,l)=swap lstsq079 205 if(m) 260, 260, 210 lstsq080 210 do 250 l=1, m lstsq081 220 swap=b(irow,l) lstsq082 230 b(irow,l)=b(icolum,l) lstsq083 250 b(icolum,l)=swap lstsq084 260 index(i,1)=irow lstsq085 270 index(i,2)=icolum 310 pivot(i)=a(icolum,icolum) lstsq087 320 determ=determ*pivot(i) lstsq088 C DIVIDE PIVOT ROW BY PIVOT ELEMENT LSTSQ089 330 a(icolum,icolum)=1.0d0 lstsq0 340 do 350 l=1,n lstsq091 350 a(icolum,l)=a(icolum,l)/pivot(i) lstsq092 355 if(m) 380, 380, 360 lstsq093 360 do 370 l=1,m lstsq094 370 b(icolum,l)=b(icolum,l)/pivot(i) lstsq095 C REDUCE NON-PIVOT ROWS LSTSQ096 380 do 550 l1=1,n lstsq097 390 if(l1-icolum) 400, 550, 400 lstsq098 400 t=a(l1,icolum) lstsq099 420 a(l1,icolum)=0.0d0 lstsq1 430 do 450 l=1,n lstsq101 450 a(l1,l)=a(l1,l)-a(icolum,l)*t lstsq102 455 if(m) 550, 550, 460 lstsq103 460 do 500 l=1,m lstsq104 500 b(l1,l)=b(l1,l)-b(icolum,l)*t lstsq105 550 continue lstsq106 C INTERCHANGE COLUMNS LSTSQ107 600 do 710 i=1,n lstsq108 610 l=n+1-i lstsq109 620 if (index(l,1)-index(l,2)) 630, 710, 630 lstsq110 630 jrow=index(l,1) lstsq111 640 jcolum=index(l,2) lstsq112 650 do 705 k=1,n lstsq113 660 swap=a(k,jrow) lstsq114 670 a(k,jrow)=a(k,jcolum) lstsq115 700 a(k,jcolum)=swap lstsq116 705 continue lstsq117 710 continue lstsq118 740 return lstsq119 end