Changeset 8c42949 in git


Ignore:
Timestamp:
Jun 23, 1999, 10:26:04 AM (24 years ago)
Author:
Moritz Wenk <wenk@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
Children:
6c4df47b1b5423a0f53e3966bbe7a5e8d3465e59
Parents:
b812717056c5c464010194aa51d1f90376dfa977
Message:
* fixed error in ngcPower


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

Legend:

Unmodified
Added
Removed
  • Singular/gnumpc.cc

    rb81271 r8c42949  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: gnumpc.cc,v 1.1 1999-05-11 15:42:38 Singular Exp $ */
     4/* $Id: gnumpc.cc,v 1.2 1999-06-23 08:26:04 wenk Exp $ */
    55/*
    66* ABSTRACT: computations with GMP complex floating-point numbers
     
    6868number   ngcPar(int i)
    6969{
    70   complex* n= new complex( (long)0, (long)1 );
     70  gmp_complex* n= new gmp_complex( (long)0, (long)1 );
    7171  return (number)n;
    7272}
     
    8282number ngcInit (int i)
    8383{
    84   complex* n= NULL;
     84  gmp_complex* n= NULL;
    8585  if ( i != 0 )
    8686  {
    87     n= new complex( (long)i, (long)0 );
     87    n= new gmp_complex( (long)i, (long)0 );
    8888  }
    8989  return (number)n;
     
    9696{
    9797  if ( i == NULL ) return 0;
    98   return (int)((complex*)i)->real();
     98  return (int)((gmp_complex*)i)->real();
    9999}
    100100
     
    109109{
    110110  if ( *a != NULL ) {
    111     delete *(complex**)a;
     111    delete *(gmp_complex**)a;
    112112    *a=NULL;
    113113  }
     
    119119number ngcCopy(number a)
    120120{
    121   complex* b= NULL;
     121  gmp_complex* b= NULL;
    122122  if ( a !=  NULL )
    123123  {
    124     b= new complex( *(complex*)a );
     124    b= new gmp_complex( *(gmp_complex*)a );
    125125  }
    126126  return (number)b;
     
    143143number ngcInvers(number a)
    144144{
    145   complex* r= NULL;
    146   if ( (a==NULL) /*|| ((complex*)a)->isZero()*/ )
     145  gmp_complex* r= NULL;
     146  if ( (a==NULL) /*|| ((gmp_complex*)a)->isZero()*/ )
    147147  {
    148148    WerrorS("div. 1/0");
     
    150150  else
    151151  {
    152     r= new complex( (complex)1 / (*(complex*)a) );
     152    r= new gmp_complex( (gmp_complex)1 / (*(gmp_complex*)a) );
    153153  }
    154154  return (number)r;
     
    160160number ngcAdd (number a, number b)
    161161{
    162   complex* r= NULL;
     162  gmp_complex* r= NULL;
    163163  if ( a==NULL && b==NULL )
    164164  {
     
    167167  else if ( a == NULL )
    168168  {
    169     r= new complex( *(complex*)b );
     169    r= new gmp_complex( *(gmp_complex*)b );
    170170  }
    171171  else if ( b == NULL )
    172172  {
    173     r= new complex( *(complex*)a );
    174   }
    175   else
    176   {
    177     r= new complex( (*(complex*)a) + (*(complex*)b) );
     173    r= new gmp_complex( *(gmp_complex*)a );
     174  }
     175  else
     176  {
     177    r= new gmp_complex( (*(gmp_complex*)a) + (*(gmp_complex*)b) );
    178178  }
    179179  return (number)r;
     
    185185number ngcSub (number a, number b)
    186186{
    187   complex* r= NULL;
     187  gmp_complex* r= NULL;
    188188  if ( a==NULL && b==NULL )
    189189  {
     
    192192  else if ( a == NULL )
    193193  {
    194     r= new complex( (*(complex*)b) );
    195     r= (complex *)ngcNeg((number)r);
     194    r= new gmp_complex( (*(gmp_complex*)b) );
     195    r= (gmp_complex *)ngcNeg((number)r);
    196196  }
    197197  else if ( b == NULL )
    198198  {
    199     r= new complex( *(complex*)a );
    200   }
    201   else
    202   {
    203     r= new complex( (*(complex*)a) - (*(complex*)b) );
     199    r= new gmp_complex( *(gmp_complex*)a );
     200  }
     201  else
     202  {
     203    r= new gmp_complex( (*(gmp_complex*)a) - (*(gmp_complex*)b) );
    204204  }
    205205  return (number)r;
     
    211211number ngcMult (number a, number b)
    212212{
    213   complex* r= NULL;
     213  gmp_complex* r= NULL;
    214214  if ( a==NULL || b==NULL )
    215215  {
     
    218218  else
    219219  {
    220     r= new complex( (*(complex*)a) * (*(complex*)b) );
     220    r= new gmp_complex( (*(gmp_complex*)a) * (*(gmp_complex*)b) );
    221221  }
    222222  return (number)r;
     
    239239    return NULL;
    240240  }
    241   complex* r= new complex( (*(complex*)a) / (*(complex*)b) );
     241  gmp_complex* r= new gmp_complex( (*(gmp_complex*)a) / (*(gmp_complex*)b) );
    242242  return (number)r;
    243243}
     
    250250  if ( exp == 0 )
    251251  {
    252     *(complex*)u= 1.0;
     252    *(gmp_complex*)u= (gmp_complex)1.0;
    253253    return;
    254254  }
     
    257257    if ( x == NULL )
    258258    {
    259       *(complex*)u= 0.0;
     259      *(gmp_complex*)u= (gmp_complex)0.0;
    260260    }
    261261    else
    262262    {
    263       *(complex*)u= *(complex*)x;
     263      *(gmp_complex*)u= *(gmp_complex*)x;
    264264    }
    265265    return;
    266266  }
    267267  ngcPower(x,exp-1,u);
    268   *(complex*)u*= *(complex*)x;
     268  *(gmp_complex*)u*= *(gmp_complex*)x;
    269269}
    270270
     
    272272{
    273273  if ( a == NULL ) return TRUE;
    274   return ( ((complex*)a)->real().isZero() && ((complex*)a)->imag().isZero());
     274  return ( ((gmp_complex*)a)->real().isZero() && ((gmp_complex*)a)->imag().isZero());
    275275}
    276276
     
    290290  if ( a==NULL )
    291291  {
    292     return (((complex*)b)->real().sign() < 0);
     292    return (((gmp_complex*)b)->real().sign() < 0);
    293293  }
    294294  if ( b==NULL )
    295295  {
    296     return (((complex*)a)->real().sign() < 0);
     296    return (((gmp_complex*)a)->real().sign() < 0);
    297297  }
    298298  return FALSE;
     
    312312    return FALSE;
    313313  }
    314   return ( (*(complex*)a) == (*(complex*)b) );
     314  return ( (*(gmp_complex*)a) == (*(gmp_complex*)b) );
    315315}
    316316
     
    321321{
    322322  if ( a == NULL ) return FALSE;
    323   return (((complex*)a)->real().isOne() && ((complex*)a)->imag().isZero());
     323  return (((gmp_complex*)a)->real().isOne() && ((gmp_complex*)a)->imag().isZero());
    324324}
    325325
     
    330330{
    331331  if ( a == NULL ) return FALSE;
    332   return (((complex*)a)->real().isMOne() && ((complex*)a)->imag().isZero());
     332  return (((gmp_complex*)a)->real().isMOne() && ((gmp_complex*)a)->imag().isZero());
    333333}
    334334
     
    343343    gmp_float *re=NULL;
    344344    s=ngfRead(s,(number *)&re);
    345     complex *aa=new complex(*re);
     345    gmp_complex *aa=new gmp_complex(*re);
    346346    *a=(number)aa;
    347347    delete re;
     
    350350  {
    351351    s+=strlen(currRing->parameter[0]);
    352     complex *aa=new complex((long)0,(long)1);
     352    gmp_complex *aa=new gmp_complex((long)0,(long)1);
    353353    *a=(number)aa;
    354354  }
     
    366366  {
    367367    char *out;
    368     out= complexToStr(*(complex*)a,gmp_output_digits);
     368    out= complexToStr(*(gmp_complex*)a,gmp_output_digits);
    369369    StringAppend(out);
    370     Free((ADDRESS)out, (strlen(out)+1)* sizeof(char) );
     370    //    Free((ADDRESS)out, (strlen(out)+1)* sizeof(char) );
     371    FreeL( (ADDRESS)out );
    371372  }
    372373}
Note: See TracChangeset for help on using the changeset viewer.