Changeset 8fc1b4d in git


Ignore:
Timestamp:
Oct 11, 2006, 5:57:00 PM (17 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
39132394cccb0abb04cb64b0a4c7c37ca8c84ed8
Parents:
94a5cd44d6fd0c7c2a974433347946e67ec5ceea
Message:
*hannes: avoid static objects


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

Legend:

Unmodified
Added
Removed
  • kernel/mpr_complex.cc

    r94a5cd r8fc1b4d  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mpr_complex.cc,v 1.3 2005-07-27 15:48:29 Singular Exp $ */
     4/* $Id: mpr_complex.cc,v 1.4 2006-10-11 15:57:00 Singular Exp $ */
    55
    66/*
     
    4040extern int mmInit(void);
    4141int dummy=mmInit();
    42 static gmp_float gmpRel(0.0);
    43 static gmp_float diff(0.0);
     42static gmp_float *gmpRel=NULL;
     43static gmp_float *diff=NULL;
    4444
    4545
     
    6363  gmp_output_digits= digits;
    6464  mpf_set_default_prec( db );
    65   mpf_set_prec(*diff._mpfp(),32);
    66   mpf_set_prec(*gmpRel._mpfp(),32);
    67   mpf_set_d(*gmpRel._mpfp(),0.1);
    68   mpf_pow_ui(*gmpRel._mpfp(),*gmpRel._mpfp(),digits);
     65  if (diff!=NULL) delete diff;
     66  diff=new gmp_float(0.0);
     67  mpf_set_prec(*diff->_mpfp(),32);
     68  if (gmpRel!=NULL) delete gmpRel;
     69  gmpRel=new gmp_float(0.0);
     70  mpf_set_prec(*gmpRel->_mpfp(),32);
     71  mpf_set_d(*gmpRel->_mpfp(),0.1);
     72  mpf_pow_ui(*gmpRel->_mpfp(),*gmpRel->_mpfp(),digits);
    6973}
    7074
     
    135139  }
    136140  mpf_add( t, t, a.t );
    137   mpf_set(diff.t, t);
    138   mpf_set_prec(diff.t, 32);
    139   mpf_div(diff.t, diff.t, a.t);
    140   mpf_abs(diff.t, diff.t);
    141   if(mpf_cmp(diff.t, gmpRel.t) < 0)
     141  mpf_set(diff->t, t);
     142  mpf_set_prec(diff->t, 32);
     143  mpf_div(diff->t, diff->t, a.t);
     144  mpf_abs(diff->t, diff->t);
     145  if(mpf_cmp(diff->t, gmpRel->t) < 0)
    142146    mpf_set_d( t, 0.0);
    143147  return *this;
     
    156160  }
    157161  mpf_sub( t, t, a.t );
    158   mpf_set(diff.t, t);
    159   mpf_set_prec(diff.t, 32);
    160   mpf_div(diff.t, diff.t, a.t);
    161   mpf_abs(diff.t, diff.t);
    162   if(mpf_cmp(diff.t, gmpRel.t) < 0)
     162  mpf_set(diff->t, t);
     163  mpf_set_prec(diff->t, 32);
     164  mpf_div(diff->t, diff->t, a.t);
     165  mpf_abs(diff->t, diff->t);
     166  if(mpf_cmp(diff->t, gmpRel->t) < 0)
    163167    mpf_set_d( t, 0.0);
    164168  return *this;
     
    172176  if((mpf_sgn(a.t)==0) && (mpf_sgn(b.t)==0))
    173177    return true;
    174   mpf_sub(diff.t, a.t, b.t);
    175   mpf_div(diff.t, diff.t, a.t);
    176   mpf_abs(diff.t, diff.t);
    177   if(mpf_cmp(diff.t, gmpRel.t) < 0)
     178  mpf_sub(diff->t, a.t, b.t);
     179  mpf_div(diff->t, diff->t, a.t);
     180  mpf_abs(diff->t, diff->t);
     181  if(mpf_cmp(diff->t, gmpRel->t) < 0)
    178182    return true;
    179183  else
     
    193197  if (mpf_sgn(t) <= 0)
    194198    return false;
    195   mpf_sub_ui(diff.t, t, 1);
    196   mpf_abs(diff.t, diff.t);
    197   if(mpf_cmp(diff.t, gmpRel.t) < 0)
     199  mpf_sub_ui(diff->t, t, 1);
     200  mpf_abs(diff->t, diff->t);
     201  if(mpf_cmp(diff->t, gmpRel->t) < 0)
    198202    return true;
    199203  else
     
    209213  if (mpf_sgn(t) >= 0)
    210214    return false;
    211   mpf_add_ui(diff.t, t, 1);
    212   mpf_abs(diff.t, diff.t);
    213   if(mpf_cmp(diff.t, gmpRel.t) < 0)
     215  mpf_add_ui(diff->t, t, 1);
     216  mpf_abs(diff->t, diff->t);
     217  if(mpf_cmp(diff->t, gmpRel->t) < 0)
    214218    return true;
    215219  else
     
    711715  {
    712716    mpf_div(*ai._mpfp(), *ai._mpfp(), *ar._mpfp());
    713     if (ai < gmpRel) this->imag(0.0);
     717    if (ai < *gmpRel) this->imag(0.0);
    714718  }
    715719  else
    716720  {
    717721    mpf_div(*ar._mpfp(), *ar._mpfp(), *ai._mpfp());
    718     if (ar < gmpRel) this->real(0.0);
     722    if (ar < *gmpRel) this->real(0.0);
    719723  }
    720724}
Note: See TracChangeset for help on using the changeset viewer.