[BACK]Return to PU.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/PU.c between version 1.10 and 1.11

version 1.10, 2004/06/25 03:07:51 version 1.11, 2004/09/14 07:23:34
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/engine/PU.c,v 1.9 2002/09/11 07:23:25 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/PU.c,v 1.10 2004/06/25 03:07:51 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   
Line 116  void substp(VL vl,P p,V v0,P p0,P *pr)
Line 116  void substp(VL vl,P p,V v0,P p0,P *pr)
   
 void detp(VL vl,P **rmat,int n,P *dp)  void detp(VL vl,P **rmat,int n,P *dp)
 {  {
         int i,j,k,sgn;          int i,j,k,l,sgn,nmin,kmin,lmin,ntmp;
         P mjj,mij,t,s,u,d;          P mjj,mij,t,s,u,d;
         P **mat;          P **mat;
         P *mi,*mj;          P *mi,*mj;
Line 130  void detp(VL vl,P **rmat,int n,P *dp)
Line 130  void detp(VL vl,P **rmat,int n,P *dp)
                 if ( i == n ) {                  if ( i == n ) {
                         *dp = 0; return;                          *dp = 0; return;
                 }                  }
                 for ( k = i; k < n; k++ )                  nmin = nmonop(mat[i][j]);
                         if ( mat[k][j] && (nmonop(mat[k][j]) < nmonop(mat[i][j]) ) )                  kmin=lmin=j;
                                 i = k;                  for ( k = j; k < n; k++ )
                 if ( j != i ) {                          for ( l = j; l < n; l++ )
                         mj = mat[j]; mat[j] = mat[i]; mat[i] = mj; sgn = -sgn;                                  if ( mat[k][l] && ((ntmp=nmonop(mat[k][l])) < nmin) ) {
                                           kmin = k; lmin = l; nmin = ntmp;
                                   }
                   if ( kmin != j ) {
                           mj = mat[j]; mat[j] = mat[kmin]; mat[kmin] = mj; sgn = -sgn;
                   }
                   if ( lmin != j ) {
                           for ( k = j; k < n; k++ ) {
                                   t = mat[k][j]; mat[k][j] = mat[k][lmin]; mat[k][lmin] = t;
                           }
                           sgn = -sgn;
                 }                  }
                 for ( i = j + 1, mj = mat[j], mjj = mj[j]; i < n; i++ )                  for ( i = j + 1, mj = mat[j], mjj = mj[j]; i < n; i++ )
                         for ( k = j + 1, mi = mat[i], mij = mi[j]; k < n; k++ ) {                          for ( k = j + 1, mi = mat[i], mij = mi[j]; k < n; k++ ) {

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>