Changeset 5812c69 in git for Singular/fglmgauss.cc


Ignore:
Timestamp:
Sep 24, 1998, 11:59:51 AM (26 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
56c52a7879fbc6de62cefba1da86b2edf2aadd4c
Parents:
073d2edeb03013a5c6ed0913687b024305a1427d
Message:
cosmetic changes


git-svn-id: file:///usr/local/Singular/svn/trunk@2517 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/fglmgauss.cc

    r073d2e r5812c69  
    11// emacs edit mode for this file is -*- C++ -*-
    2 // $Id: fglmgauss.cc,v 1.9 1998-06-04 13:39:21 wichmann Exp $
     2// $Id: fglmgauss.cc,v 1.10 1998-09-24 09:59:38 Singular Exp $
    33
    44/****************************************
    55*  Computer Algebra System SINGULAR     *
    66****************************************/
    7 /* 
     7/*
    88* ABSTRACT - class gaussReducer. Used in fglmzero.cc and fglmhom.cc
    99*  to find linear dependecies of fglmVectors.
     
    2727    number pdenom;
    2828    number fac;
    29     gaussElem( const fglmVector newv, const fglmVector newp, number & newpdenom, number & newfac ) : v( newv ), p( newp ), pdenom( newpdenom ), fac( newfac ) 
     29    gaussElem( const fglmVector newv, const fglmVector newp, number & newpdenom, number & newfac ) : v( newv ), p( newp ), pdenom( newpdenom ), fac( newfac )
    3030    {
    31         newpdenom= NULL;
    32         newfac= NULL;
     31        newpdenom= NULL;
     32        newfac= NULL;
    3333    }
    3434
     
    4242    pdenom=newpdenom;
    4343    fac=newfac;
    44         newpdenom= NULL;
    45         newfac= NULL;
    46     }
    47 #endif
    48 
    49     ~gaussElem() 
     44        newpdenom= NULL;
     45        newfac= NULL;
     46    }
     47#endif
     48
     49    ~gaussElem()
    5050    {
    51         nDelete( & pdenom );
    52         nDelete( & fac );
     51        nDelete( & pdenom );
     52        nDelete( & fac );
    5353    }
    5454};
    5555
    56 gaussReducer::gaussReducer( int dimen ) 
     56gaussReducer::gaussReducer( int dimen )
    5757{
    5858    int k;
     
    6565#endif
    6666    isPivot= (BOOLEAN *)Alloc( (max+1)*sizeof( BOOLEAN ) );
    67     for ( k= max; k > 0; k-- ) 
    68             isPivot[k]= FALSE;
     67    for ( k= max; k > 0; k-- )
     68            isPivot[k]= FALSE;
    6969    perm= (int *)Alloc( (max+1)*sizeof( int ) );
    7070}
    7171
    72 gaussReducer::~gaussReducer() 
     72gaussReducer::~gaussReducer()
    7373{
    7474    int k;
     
    7777    delete [] elems;
    7878#else
    79     for ( k= size; k > 0; k-- ) 
    80         elems[k].~gaussElem();
     79    for ( k= size; k > 0; k-- )
     80        elems[k].~gaussElem();
    8181    Free( (ADDRESS)elems, (max+1)*sizeof( gaussElem ) );
    8282#endif
     
    8787
    8888BOOLEAN
    89 gaussReducer::reduce( fglmVector thev ) 
     89gaussReducer::reduce( fglmVector thev )
    9090{
    9191    number fac1, fac2;
     
    9898    number vdenom = v.clearDenom();
    9999    if ( ! nIsOne( vdenom ) && ! nIsZero( vdenom ) ) {
    100         p.setelem( p.size(), vdenom );
     100        p.setelem( p.size(), vdenom );
    101101    }
    102102    else {
    103         nDelete( & vdenom );
     103        nDelete( & vdenom );
    104104    }
    105105    number gcd = v.gcd();
    106106    if ( ! nIsOne( gcd ) && ! nIsZero( gcd ) ) {
    107         v /= gcd;
    108         number temp= nMult( pdenom, gcd );
    109         nDelete( & pdenom );
    110         pdenom= temp;
     107        v /= gcd;
     108        number temp= nMult( pdenom, gcd );
     109        nDelete( & pdenom );
     110        pdenom= temp;
    111111    }
    112112    nDelete( & gcd );
    113    
     113
    114114    int k;
    115115    for ( k= 1; k <= size; k++ ) {
    116         if ( ! v.elemIsZero( perm[k] ) ) {
    117             fac1= elems[k].fac;
    118             fac2= nCopy( v.getconstelem( perm[k] ) );
    119             v.nihilate( fac1, fac2, elems[k].v );
    120             fac1= nMult( fac1, elems[k].pdenom );
    121             temp= nMult( fac2, pdenom );
    122             nDelete( & fac2 );
    123             fac2= temp;
    124             p.nihilate( fac1, fac2, elems[k].p );
    125             temp= nMult( pdenom, elems[k].pdenom );
    126             nDelete( & pdenom );
    127             pdenom= temp;
    128            
    129             nDelete( & fac1 );
    130             nDelete( & fac2 );
    131             number gcd = v.gcd();
    132             if ( ! nIsOne( gcd ) && ! nIsZero( gcd ) ) {
    133                 v/= gcd;
    134                 number temp = nMult( pdenom, gcd );
    135                 nDelete( & pdenom );
    136                 pdenom= temp;
    137             }
    138             nDelete( & gcd );
    139             gcd= p.gcd();
    140             temp= nGcd( pdenom, gcd );
    141             nDelete( & gcd );
    142             gcd= temp;
    143             if ( ! nIsZero( gcd ) && ! nIsOne( gcd ) ) {
    144                 p/= gcd;
    145                 temp= nDiv( pdenom, gcd );
    146                 nDelete( & pdenom );
    147                 pdenom= temp;
    148                 nNormalize( pdenom );
    149             }
    150             nDelete( & gcd );
    151         }
     116        if ( ! v.elemIsZero( perm[k] ) ) {
     117            fac1= elems[k].fac;
     118            fac2= nCopy( v.getconstelem( perm[k] ) );
     119            v.nihilate( fac1, fac2, elems[k].v );
     120            fac1= nMult( fac1, elems[k].pdenom );
     121            temp= nMult( fac2, pdenom );
     122            nDelete( & fac2 );
     123            fac2= temp;
     124            p.nihilate( fac1, fac2, elems[k].p );
     125            temp= nMult( pdenom, elems[k].pdenom );
     126            nDelete( & pdenom );
     127            pdenom= temp;
     128
     129            nDelete( & fac1 );
     130            nDelete( & fac2 );
     131            number gcd = v.gcd();
     132            if ( ! nIsOne( gcd ) && ! nIsZero( gcd ) ) {
     133                v/= gcd;
     134                number temp = nMult( pdenom, gcd );
     135                nDelete( & pdenom );
     136                pdenom= temp;
     137            }
     138            nDelete( & gcd );
     139            gcd= p.gcd();
     140            temp= nGcd( pdenom, gcd );
     141            nDelete( & gcd );
     142            gcd= temp;
     143            if ( ! nIsZero( gcd ) && ! nIsOne( gcd ) ) {
     144                p/= gcd;
     145                temp= nDiv( pdenom, gcd );
     146                nDelete( & pdenom );
     147                pdenom= temp;
     148                nNormalize( pdenom );
     149            }
     150            nDelete( & gcd );
     151        }
    152152    }
    153153    return ( v.isZero() );
    154154}
    155155
    156 void 
    157 gaussReducer::store() 
     156void
     157gaussReducer::store()
    158158{
    159159    // fglmASSERT( size < max );
    160160    number fac;
    161161    // find the pivot-element in v:
    162    
     162
    163163    size++;
    164164    int k= 1;
    165165    while ( nIsZero(v.getconstelem(k)) || isPivot[k] ) {
    166         k++;
     166        k++;
    167167    }
    168168    // fglmASSERT( k <= dimen, "Error(1) in fglmDdata::pivot-search");
     
    171171    k++;
    172172    while ( k <= max ) {
    173         if ( ! nIsZero( v.getconstelem(k) ) && ! isPivot[k] ) {
    174             if ( nGreater( v.getconstelem( k ), pivot ) ) {
    175                 pivot= v.getconstelem( k );
    176                 pivotcol= k;
    177             }
    178         }
    179         k++;
     173        if ( ! nIsZero( v.getconstelem(k) ) && ! isPivot[k] ) {
     174            if ( nGreater( v.getconstelem( k ), pivot ) ) {
     175                pivot= v.getconstelem( k );
     176                pivotcol= k;
     177            }
     178        }
     179        k++;
    180180    }
    181181    // fglmASSERT( ! nIsZero( pivot ), "Error(2) fglmDdata::Pivotelement ist Null" );
    182182    isPivot[ pivotcol ]= TRUE;
    183183    perm[size]= pivotcol;
    184    
     184
    185185    pivot= nCopy( v.getconstelem( pivotcol ) );
    186186#ifndef HAVE_EXPLICIT_CONSTR
     
    191191}
    192192
    193 fglmVector 
    194 gaussReducer::getDependence() 
     193fglmVector
     194gaussReducer::getDependence()
    195195{
    196196    nDelete( & pdenom );
Note: See TracChangeset for help on using the changeset viewer.