Changeset 8d8fef in git for libpolys/polys/flintconv.cc
- Timestamp:
- Jul 29, 2019, 11:36:09 PM (5 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- feed60bef09898f675e0f8605ed0ac0eaa8bed5a
- Parents:
- da1ec3de158a4f05384b9a83be86fc4c1942ec5fc1b9ababa50e8059dd847da0957f50aea901e6a8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/polys/flintconv.cc
rda1ec3 r8d8fef 51 51 number n; 52 52 nlMPZ(z,n,NULL); 53 mpz_clear(z); 53 54 return n; 54 55 } 56 55 57 number convFlintNSingN (fmpq_t f, const coeffs cf) 56 58 { … … 63 65 z->debug=123456; 64 66 #endif 67 z->s=0; 65 68 mpz_init(z->z); 66 69 mpz_init(z->n); … … 82 85 } 83 86 n_Normalize(z,cf); 87 n_Test(z,cf); 84 88 return z; 85 89 #else … … 89 93 } 90 94 95 number convFlintNSingN_QQ (fmpq_t f, const coeffs cf) 96 { 97 #if __FLINT_RELEASE > 20502 98 if (fmpz_is_one(fmpq_denref(f))) 99 { 100 if (fmpz_fits_si(fmpq_numref(f))) 101 { 102 long i=fmpz_get_si(fmpq_numref(f)); 103 return n_Init(i,cf); 104 } 105 } 106 number z=ALLOC_RNUMBER(); 107 #if defined(LDEBUG) 108 z->debug=123456; 109 #endif 110 mpz_init(z->z); 111 if (fmpz_is_one(fmpq_denref(f))) 112 { 113 z->s=3; 114 fmpz_get_mpz(z->z,fmpq_numref(f)); 115 } 116 else 117 { 118 z->s=0; 119 mpz_init(z->n); 120 fmpq_get_mpz_frac(z->z,z->n,f); 121 } 122 n_Test(z,cf); 123 return z; 124 #else 125 WerrorS("not implemented"); 126 return NULL; 127 #endif 128 } 129 91 130 void convSingNFlintN(fmpz_t f, mpz_t n) 92 131 { … … 132 171 } 133 172 nKillChar(QQ); 173 } 174 } 175 176 void convSingNFlintN_QQ(fmpq_t f, number n) 177 { 178 fmpq_init(f); 179 if (SR_HDL(n)&SR_INT) 180 fmpq_set_si(f,SR_TO_INT(n),1); 181 else if (n->s<3) 182 { 183 fmpz_set_mpz(fmpq_numref(f), n->z); 184 fmpz_set_mpz(fmpq_denref(f), n->n); 185 } 186 else 187 { 188 mpz_t one; 189 mpz_init_set_si(one,1); 190 fmpz_set_mpz(fmpq_numref(f), n->z); 191 fmpz_set_mpz(fmpq_denref(f), one); 192 mpz_clear(one); 134 193 } 135 194 } … … 182 241 int d=fmpq_poly_length(f); 183 242 poly p=NULL; 243 fmpq_t c; 244 fmpq_init(c); 184 245 for(int i=0; i<=d; i++) 185 246 { 186 fmpq_t c;187 247 fmpq_poly_get_coeff_fmpq(c,f,i); 188 248 number n=convFlintNSingN(c,r->cf); … … 193 253 p=p_Add_q(p,pp,r); 194 254 } 255 fmpq_clear(c); 256 p_Test(p,r); 195 257 return p; 196 258 }
Note: See TracChangeset
for help on using the changeset viewer.