**TI92P*mat.YWA@&A46_A&T_A&TX^'A.YRdet2a(Z(m) Func (mat) symbolic determinant T. Hassan Modified 4nov01/dburkett@infinet.com Local n,k,i,j,q,p,r,is_0 Define is_0(z)=Func when(z=0,true,false,false) EndFunc If getType(m)"MAT" Return "det2a:Invalid argument" dim(m)n If n[1]n[2] Return "det2a:Not square matrix" n[1]n If n=1 Then Return m[1,1] ElseIf n=2 Then Return m[1,1]*m[2,2]-m[2,1]*m[1,2] ElseIf n=3 Then Return m[1,1]*(m[2,2]*m[3,3]-m[2,3]*m[3,2])-m[1,2]*(m[2,1]*m[3,3]-m[2,3]*m[3,1])+m[1,3]*(m[2,1]*m[3,2]-m[2,2]*m[3,1]) EndIf 1q For i,1,n-3 m[i,i]p If is_0(p) Then For j,i+1,n If not is_0(m[j,i]) Then rowSwap(m,i,j)m Exit EndIf EndFor If j>n Return 0 EndIf For j,i+1,n m[j,i]r If not is_0(r) Then r*m[i]-p*m[j]m[j] q*pq EndIf EndFor EndFor Return 1/q*(m[k,k],k,1,n-3)*(m[n-2,n-2]*(m[n-1,n-1]*m[n,n]-m[n-1,n]*m[n,n-1])-m[n-2,n-1]*(m[n-1,n-2]*m[n,n]-m[n-1,n]*m[n,n-2])+m[n-2,n]*(m[n-1,n-2]*m[n,n-1]-m[n-1,n-1]*m[n,n-2])) EndFunc