7extern int Mdcxmatinv(
double* array,
int* norder,
double* det ) {
17 cout <<
"In Mdcxmatinv, norder ( = " << *norder <<
" ) > nmax ( = " << nmax <<
" ); error"
21 static double amax, save;
22 static int i, j, k, l, ik[nmax], jk[nmax];
25 array -= ( nmax + 1 );
29 for ( k = 1; k <= *norder; ++k )
36 for ( i = k; i <= *norder; ++i )
38 for ( j = k; j <= *norder; ++j )
40 d__1 = array[i + j * nmax];
41 if ( ( fabs( amax ) - fabs( d__1 ) ) <= 0. )
43 amax = array[i + j * nmax];
59 if ( ( i__3 = i - k ) < 0 ) {
goto L21; }
60 else if ( i__3 == 0 ) {
goto L51; }
63 for ( j = 1; j <= *norder; ++j )
65 save = array[k + j * nmax];
66 array[k + j * nmax] = array[i + j * nmax];
67 array[i + j * nmax] = -save;
71 if ( ( i__3 = j - k ) < 0 ) {
goto L21; }
72 else if ( i__3 == 0 ) {
goto L61; }
75 for ( i = 1; i <= *norder; ++i )
77 save = array[i + k * nmax];
78 array[i + k * nmax] = array[i + j * nmax];
79 array[i + j * nmax] = -save;
85 for ( i = 1; i <= *norder; ++i )
87 if ( i - k != 0 ) { array[i + k * nmax] = -array[i + k * nmax] / amax; }
89 for ( i = 1; i <= *norder; ++i )
91 for ( j = 1; j <= *norder; ++j )
93 if ( i - k != 0 ) {
goto L74; }
96 if ( j - k != 0 ) {
goto L75; }
99 array[i + j * nmax] += array[i + k * nmax] * array[k + j * nmax];
103 for ( j = 1; j <= *norder; ++j )
105 if ( j - k != 0 ) { array[k + j * nmax] /= amax; }
107 array[k + k * nmax] = (double)1. / amax;
113 for ( l = 1; l <= *norder; ++l )
117 if ( j - k <= 0 ) {
goto L111; }
120 for ( i = 1; i <= *norder; ++i )
122 save = array[i + k * nmax];
123 array[i + k * nmax] = -array[i + j * nmax];
124 array[i + j * nmax] = save;
128 if ( i - k <= 0 ) {
goto L130; }
131 for ( j = 1; j <= *norder; ++j )
133 save = array[k + j * nmax];
134 array[k + j * nmax] = -array[i + j * nmax];
135 array[i + j * nmax] = save;