Changeset e6ca692 in git


Ignore:
Timestamp:
Mar 19, 2019, 2:37:29 PM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
b84addc1b850ec70a5ac4d6bc62069079b238504
Parents:
7259b3d96c8cd7d99e58a2a74c07cf186222ba7f
Message:
chg: flint conversions for more rings
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Singular/extra.cc

    r7259b3 re6ca692  
    37753775          // convert box-center(re,im), box-size, epsilon
    37763776          fmpq_t center_re,center_im,boxsize,eps;
    3777           convSingNFlintN(center_re,(number)h->Data()); h=h->next;
    3778           convSingNFlintN(center_im,(number)h->Data()); h=h->next;
    3779           convSingNFlintN(boxsize,(number)h->Data()); h=h->next;
    3780           convSingNFlintN(eps,(number)h->Data()); h=h->next;
     3777          convSingNFlintN(center_re,(number)h->Data(),currRing->cf); h=h->next;
     3778          convSingNFlintN(center_im,(number)h->Data(),currRing->cf); h=h->next;
     3779          convSingNFlintN(boxsize,(number)h->Data(),currRing->cf); h=h->next;
     3780          convSingNFlintN(eps,(number)h->Data(),currRing->cf); h=h->next;
    37813781          // alloc arrays
    37823782          int n=fmpq_poly_length(f);
     
    38003800            ll->m[1].rtyp=NUMBER_CMD;
    38013801            ll->m[2].rtyp=INT_CMD;
    3802             ll->m[0].data=convFlintNSingN(re_part[i]);
    3803             ll->m[1].data=convFlintNSingN(im_part[i]);
     3802            ll->m[0].data=convFlintNSingN(re_part[i],currRing->cf);
     3803            ll->m[1].data=convFlintNSingN(im_part[i],currRing->cf);
    38043804            ll->m[2].data=(char*)(long)mult[i];
    38053805          }
  • libpolys/polys/flintconv.cc

    r7259b3 re6ca692  
    5353  return n;
    5454}
    55 number convFlintNSingN (fmpq_t f)
    56 {
    57   number z=ALLOC_RNUMBER();
    58 #if defined(LDEBUG)
    59   z->debug=123456;
    60 #endif
    61   mpz_init(z->z);
    62   mpz_init(z->n);
    63   fmpq_get_mpz_frac(z->z,z->n,f);
    64   nlNormalize(z,NULL);
     55number convFlintNSingN (fmpq_t f, const coeffs cf)
     56{
     57  number z;
     58  if (nCoeff_is_Q(cf))
     59  {
     60    z=ALLOC_RNUMBER();
     61    #if defined(LDEBUG)
     62    z->debug=123456;
     63    #endif
     64    mpz_init(z->z);
     65    mpz_init(z->n);
     66    fmpq_get_mpz_frac(z->z,z->n,f);
     67  }
     68  else
     69  {
     70    mpz_t a,b;
     71    mpz_init(a);
     72    mpz_init(b);
     73    fmpq_get_mpz_frac(a,b,f);
     74    number na=n_InitMPZ(a,cf);
     75    number nb=n_InitMPZ(b,cf);
     76    z=n_Div(na,nb,cf);
     77    n_Delete(&na,cf);
     78    n_Delete(&nb,cf);
     79  }
     80  n_Normalize(z,cf);
    6581  return z;
    6682}
     
    7894}
    7995
    80 void convSingNFlintN(fmpq_t f, number n)
    81 {
    82   fmpq_init(f);
    83   if (SR_HDL(n)&SR_INT)
    84     fmpq_set_si(f,SR_TO_INT(n),1);
    85   else if (n->s<3)
    86   {
    87     fmpz_set_mpz(fmpq_numref(f), n->z);
    88     fmpz_set_mpz(fmpq_denref(f), n->n);
    89   }
    90   else
    91   {
    92     mpz_t one;
    93     mpz_init_set_si(one,1);
    94     fmpz_set_mpz(fmpq_numref(f), n->z);
    95     fmpz_set_mpz(fmpq_denref(f), one);
    96     mpz_clear(one);
     96void convSingNFlintN(fmpq_t f, number n, const coeffs cf)
     97{
     98  if (nCoeff_is_Q(cf))
     99  {
     100    fmpq_init(f);
     101    if (SR_HDL(n)&SR_INT)
     102      fmpq_set_si(f,SR_TO_INT(n),1);
     103    else if (n->s<3)
     104    {
     105      fmpz_set_mpz(fmpq_numref(f), n->z);
     106      fmpz_set_mpz(fmpq_denref(f), n->n);
     107    }
     108    else
     109    {
     110      mpz_t one;
     111      mpz_init_set_si(one,1);
     112      fmpz_set_mpz(fmpq_numref(f), n->z);
     113      fmpz_set_mpz(fmpq_denref(f), one);
     114      mpz_clear(one);
     115    }
     116  }
     117  else
     118  {
     119    coeffs QQ=nInitChar(n_Q,NULL);
     120    nMapFunc nMap=n_SetMap(cf,QQ);
     121    if (nMap!=NULL)
     122    {
     123      number nn=nMap(n,cf,QQ);
     124      convSingNFlintN(f,nn,QQ);
     125    }
     126    nKillChar(QQ);
    97127  }
    98128}
     
    107137    number n=pGetCoeff(p);
    108138    fmpq_t c;
    109     convSingNFlintN(c,n);
     139    convSingNFlintN(c,n,r->cf);
    110140    fmpq_poly_set_coeff_fmpq(res,p_GetExp(p,1,r),c);
    111141    fmpq_clear(c);
     
    122152    fmpq_t c;
    123153    fmpq_poly_get_coeff_fmpq(c,f,i);
    124     number n=convFlintNSingN(c);
     154    number n=convFlintNSingN(c,r->cf);
    125155    poly pp=p_Init(r);
    126156    pSetCoeff0(pp,n);
  • libpolys/polys/flintconv.h

    r7259b3 re6ca692  
    4343void convSingNFlintN(fmpz_t f, mpz_t z);
    4444void convSingNFlintN(fmpz_t f, number n);
    45 void convSingNFlintN(fmpq_t f, number n);
     45void convSingNFlintN(fmpq_t f, number n, const coeffs cf);
    4646number convFlintNSingN (fmpz_t f);
    47 number convFlintNSingN (fmpq_t f);
     47number convFlintNSingN (fmpq_t f, const coeffs cf);
    4848void convSingPFlintP(fmpq_poly_t res, poly p, const ring r);
    4949poly convFlintPSingP(fmpq_poly_t f, const ring r);
Note: See TracChangeset for help on using the changeset viewer.