Changeset 41072b in git


Ignore:
Timestamp:
Oct 11, 2011, 2:03:55 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b9f50b373314e74e83c7c060a651dd2913e1f033')
Children:
3e70950f6eff7e879a05817dd9e4bb45aeb175ca
Parents:
0fd6d8111bc8e9daf631bcceb78381f4561becbb
Message:
minor simplification for int_rat

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

Legend:

Unmodified
Added
Removed
  • factory/int_rat.cc

    r0fd6d8 r41072b  
    5454    {
    5555        int g = intgcd( n, d );
    56         if ( d < 0 )
    57         {
    58             mpz_init_set_si( &_num, -n / g );
    59             mpz_init_set_si( &_den, -d / g );
    60         }
    61         else
    62         {
    63             mpz_init_set_si( &_num, n / g );
    64             mpz_init_set_si( &_den, d / g );
    65         }
     56        if ( d < 0 ) g= -g;
     57        mpz_init_set_si( &_num, n / g );
     58        mpz_init_set_si( &_den, d / g );
    6659    }
    6760}
     
    200193    if ( mpz_cmp_si( &g, 1 ) == 0 )
    201194    {
    202         mpz_mul( &n, &_den, &MPQNUM( c ) );
    203         mpz_mul( &g, &_num, &MPQDEN( c ) );
    204         mpz_add( &n, &n, &g );
    205         mpz_mul( &d, &_den, &MPQDEN( c ) );
    206     }
    207     else
    208     {
    209         MP_INT tmp1;
    210         MP_INT tmp2;
    211         mpz_init( &tmp1 );
    212         mpz_divexact( &tmp1, &_den, &g );
    213         mpz_init( &tmp2 );
    214         mpz_divexact( &tmp2, &MPQDEN( c ), &g );
    215         mpz_mul( &d, &tmp2, &_den );
    216         mpz_mul( &tmp2, &tmp2, &_num );
    217         mpz_mul( &tmp1, &tmp1, &MPQNUM( c ) );
    218         mpz_add( &n, &tmp1, &tmp2 );
    219         mpz_gcd( &g, &n, &d );
    220         if ( mpz_cmp_si( &g, 1 ) != 0 )
    221         {
    222             mpz_divexact( &n, &n, &g );
    223             mpz_divexact( &d, &d, &g );
    224         }
    225         mpz_clear( &tmp1 );
    226         mpz_clear( &tmp2 );
     195      mpz_mul( &n, &_den, &MPQNUM( c ) );
     196      mpz_mul( &g, &_num, &MPQDEN( c ) );
     197      mpz_add( &n, &n, &g );
     198      mpz_mul( &d, &_den, &MPQDEN( c ) );
     199    }
     200    else
     201    {
     202      MP_INT tmp1;
     203      MP_INT tmp2;
     204      mpz_init( &tmp1 );
     205      mpz_divexact( &tmp1, &_den, &g );
     206      mpz_init( &tmp2 );
     207      mpz_divexact( &tmp2, &MPQDEN( c ), &g );
     208      mpz_mul( &d, &tmp2, &_den );
     209      mpz_mul( &tmp2, &tmp2, &_num );
     210      mpz_mul( &tmp1, &tmp1, &MPQNUM( c ) );
     211      mpz_add( &n, &tmp1, &tmp2 );
     212      mpz_gcd( &g, &n, &d );
     213      if ( mpz_cmp_si( &g, 1 ) != 0 )
     214      {
     215          mpz_divexact( &n, &n, &g );
     216          mpz_divexact( &d, &d, &g );
     217      }
     218      mpz_clear( &tmp1 );
     219      mpz_clear( &tmp2 );
    227220    }
    228221    mpz_clear( &g );
     
    230223    if ( mpz_cmp_si( &d, 1 ) == 0 )
    231224    {
    232         mpz_clear( &d );
    233         if ( mpz_is_imm( &n ) )
    234         {
    235             InternalCF * res = int2imm( mpz_get_si( &n ) );
    236             mpz_clear( &n );
    237             return res;
    238         }
    239         else
    240         {
    241             return new InternalInteger( n );
    242         }
    243     }
    244     else
    245         return new InternalRational( n, d );
     225      mpz_clear( &d );
     226      if ( mpz_is_imm( &n ) )
     227      {
     228          InternalCF * res = int2imm( mpz_get_si( &n ) );
     229          mpz_clear( &n );
     230          return res;
     231      }
     232      else
     233      {
     234          return new InternalInteger( n );
     235      }
     236    }
     237    else
     238    {
     239      return new InternalRational( n, d );
     240    }
    246241}
    247242
     
    306301    ASSERT( ! ::is_imm( c ) && c->levelcoeff() == RationalDomain, "illegal domain" );
    307302    MP_INT n, d;
     303    mpz_init( &n ); mpz_init( &d );
    308304
    309305    if ( this == c )
    310306    {
    311         mpz_init( &n ); mpz_init( &d );
    312307        mpz_mul( &n, &_num, &_num );
    313308        mpz_mul( &d, &_den, &_den );
     
    317312        MP_INT g1, g2, tmp1, tmp2;
    318313        mpz_init( &g1 ); mpz_init( &g2 );
    319         mpz_init( &n ); mpz_init( &d );
    320314        mpz_gcd( &g1, &_num, &MPQDEN( c ) );
    321315        mpz_gcd( &g2, &_den, &MPQNUM( c ) );
     
    523517        if ( cc == 0 )
    524518            return this;
    525         else  if ( cc < 0 )
    526         {
    527             mpz_init( &n );
     519        else
     520        {
     521          mpz_init( &n );
     522          if ( cc < 0 )
     523          {
    528524            mpz_mul_ui( &n, &_den, -cc );
    529525            mpz_sub( &n, &_num, &n );
    530         }
    531         else
    532         {
    533             mpz_init( &n );
     526          }
     527          else
     528          {
    534529            mpz_mul_ui( &n, &_den, cc );
    535530            mpz_add( &n, &_num, &n );
    536         }
     531          }
     532        }
    537533    }
    538534    else
Note: See TracChangeset for help on using the changeset viewer.