Changeset 0ebf2c in git for factory/facMul.cc
- Timestamp:
- Dec 16, 2013, 4:49:14 PM (9 years ago)
- Branches:
- (u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
- Children:
- 45e4745a608922f7284295282b6493fae5341626
- Parents:
- 2773fe426f803fdb541ac43df1e156eb4069affc
- git-author:
- Martin Lee <martinlee84@web.de>2013-12-16 16:49:14+01:00
- git-committer:
- Martin Lee <martinlee84@web.de>2014-01-20 16:45:03+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facMul.cc
r2773fe r0ebf2c 1098 1098 int degAy= degree (A); 1099 1099 nmod_poly_init2 (result, getCharacteristic(), d*(degAy + 1)); 1100 _nmod_poly_set_length (result, d*(degAy + 1)); 1101 flint_mpn_zero (result->coeffs, d*(degAy+1)); 1100 1102 1101 1103 nmod_poly_t buf; 1102 1104 1103 int j, k, bufRepLength;1105 int k; 1104 1106 for (CFIterator i= A; i.hasTerms(); i++) 1105 1107 { 1106 1108 convertFacCF2nmod_poly_t (buf, i.coeff()); 1107 1108 1109 k= i.exp()*d; 1109 bufRepLength= (int) nmod_poly_length (buf); 1110 for (j= 0; j < bufRepLength; j++) 1111 nmod_poly_set_coeff_ui (result, j + k, nmod_poly_get_coeff_ui (buf, j)); 1110 flint_mpn_copyi (result->coeffs+k, buf->coeffs, nmod_poly_length(buf)); 1111 1112 1112 nmod_poly_clear (buf); 1113 1113 } 1114 1114 _nmod_poly_normalise (result); 1115 1115 } 1116 1117 #if (__FLINT_VERSION_MINOR >= 4) 1118 void 1119 kronSubFq (fq_nmod_poly_t result, const CanonicalForm& A, int d, 1120 const fq_nmod_ctx_t fq_con) 1121 { 1122 int degAy= degree (A); 1123 fq_nmod_poly_init2 (result, d*(degAy + 1), fq_con); 1124 _fq_nmod_poly_set_length (result, d*(degAy + 1), fq_con); 1125 _fq_nmod_vec_zero (result->coeffs, d*(degAy + 1), fq_con); 1126 1127 fq_nmod_poly_t buf1; 1128 1129 nmod_poly_t buf2; 1130 1131 int k; 1132 1133 for (CFIterator i= A; i.hasTerms(); i++) 1134 { 1135 if (i.coeff().inCoeffDomain()) 1136 { 1137 convertFacCF2nmod_poly_t (buf2, i.coeff()); 1138 fq_nmod_poly_init2 (buf1, 1, fq_con); 1139 fq_nmod_poly_set_coeff (buf1, 0, buf2, fq_con); 1140 nmod_poly_clear (buf2); 1141 } 1142 else 1143 convertFacCF2Fq_nmod_poly_t (buf1, i.coeff(), fq_con); 1144 1145 k= i.exp()*d; 1146 _fq_nmod_vec_set (result->coeffs+k, buf1->coeffs, 1147 fq_nmod_poly_length (buf1, fq_con), fq_con); 1148 1149 fq_nmod_poly_clear (buf1, fq_con); 1150 } 1151 1152 _fq_nmod_poly_normalise (result, fq_con); 1153 } 1154 #endif 1116 1155 1117 1156 void kronSubQa (fmpq_poly_t result, const CanonicalForm& A, int d1, int d2) … … 1200 1239 } 1201 1240 1241 #if (__FLINT_VERSION_MINOR >= 4) 1242 void 1243 kronSubReciproFq (fq_nmod_poly_t subA1, fq_nmod_poly_t subA2, 1244 const CanonicalForm& A, int d, const fq_nmod_ctx_t fq_con) 1245 { 1246 int degAy= degree (A); 1247 fq_nmod_poly_init2 (subA1, d*(degAy + 2), fq_con); 1248 fq_nmod_poly_init2 (subA2, d*(degAy + 2), fq_con); 1249 1250 _fq_nmod_poly_set_length (subA1, d*(degAy + 2), fq_con); 1251 _fq_nmod_vec_zero (subA1->coeffs, d*(degAy + 2), fq_con); 1252 1253 _fq_nmod_poly_set_length (subA2, d*(degAy + 2), fq_con); 1254 _fq_nmod_vec_zero (subA2->coeffs, d*(degAy + 2), fq_con); 1255 1256 fq_nmod_poly_t buf1; 1257 1258 nmod_poly_t buf2; 1259 1260 int k, kk; 1261 for (CFIterator i= A; i.hasTerms(); i++) 1262 { 1263 if (i.coeff().inCoeffDomain()) 1264 { 1265 convertFacCF2nmod_poly_t (buf2, i.coeff()); 1266 fq_nmod_poly_init2 (buf1, 1, fq_con); 1267 fq_nmod_poly_set_coeff (buf1, 0, buf2, fq_con); 1268 nmod_poly_clear (buf2); 1269 } 1270 else 1271 convertFacCF2Fq_nmod_poly_t (buf1, i.coeff(), fq_con); 1272 1273 k= i.exp()*d; 1274 kk= (degAy - i.exp())*d; 1275 _fq_nmod_vec_add (subA1->coeffs+k, subA1->coeffs+k, buf1->coeffs, 1276 fq_nmod_poly_length(buf1, fq_con), fq_con); 1277 _fq_nmod_vec_add (subA2->coeffs+kk, subA2->coeffs+kk, buf1->coeffs, 1278 fq_nmod_poly_length(buf1, fq_con), fq_con); 1279 1280 fq_nmod_poly_clear (buf1, fq_con); 1281 } 1282 _fq_nmod_poly_normalise (subA1, fq_con); 1283 _fq_nmod_poly_normalise (subA2, fq_con); 1284 } 1285 #endif 1286 1202 1287 void 1203 1288 kronSubReciproQ (fmpz_poly_t subA1, fmpz_poly_t subA2, const CanonicalForm& A, … … 1471 1556 } 1472 1557 1558 #if (__FLINT_VERSION_MINOR >= 4) 1559 CanonicalForm 1560 reverseSubstReciproFq (const fq_nmod_poly_t F, const fq_nmod_poly_t G, int d, 1561 int k, const Variable& alpha, const fq_nmod_ctx_t fq_con) 1562 { 1563 Variable y= Variable (2); 1564 Variable x= Variable (1); 1565 1566 fq_nmod_poly_t f, g; 1567 int degf= fq_nmod_poly_degree(F, fq_con); 1568 int degg= fq_nmod_poly_degree(G, fq_con); 1569 1570 fq_nmod_poly_t buf1,buf2, buf3; 1571 1572 fq_nmod_poly_init (f, fq_con); 1573 fq_nmod_poly_init (g, fq_con); 1574 fq_nmod_poly_set (f, F, fq_con); 1575 fq_nmod_poly_set (g, G, fq_con); 1576 if (fq_nmod_poly_length (f, fq_con) < (long) d*(k + 1)) //zero padding 1577 fq_nmod_poly_fit_length (f, (long) d*(k + 1), fq_con); 1578 1579 CanonicalForm result= 0; 1580 int i= 0; 1581 int lf= 0; 1582 int lg= d*k; 1583 int degfSubLf= degf; 1584 int deggSubLg= degg-lg; 1585 int repLengthBuf2, repLengthBuf1, tmp; 1586 while (degf >= lf || lg >= 0) 1587 { 1588 if (degfSubLf >= d) 1589 repLengthBuf1= d; 1590 else if (degfSubLf < 0) 1591 repLengthBuf1= 0; 1592 else 1593 repLengthBuf1= degfSubLf + 1; 1594 fq_nmod_poly_init2 (buf1, repLengthBuf1, fq_con); 1595 _fq_nmod_poly_set_length (buf1, repLengthBuf1, fq_con); 1596 1597 _fq_nmod_vec_set (buf1->coeffs, f->coeffs + lf, repLengthBuf1, fq_con); 1598 _fq_nmod_poly_normalise (buf1, fq_con); 1599 1600 repLengthBuf1= fq_nmod_poly_length (buf1, fq_con); 1601 1602 if (deggSubLg >= d - 1) 1603 repLengthBuf2= d - 1; 1604 else if (deggSubLg < 0) 1605 repLengthBuf2= 0; 1606 else 1607 repLengthBuf2= deggSubLg + 1; 1608 1609 fq_nmod_poly_init2 (buf2, repLengthBuf2, fq_con); 1610 _fq_nmod_poly_set_length (buf2, repLengthBuf2, fq_con); 1611 _fq_nmod_vec_set (buf2->coeffs, g->coeffs + lg, repLengthBuf2, fq_con); 1612 1613 _fq_nmod_poly_normalise (buf2, fq_con); 1614 repLengthBuf2= fq_nmod_poly_length (buf2, fq_con); 1615 1616 fq_nmod_poly_init2 (buf3, repLengthBuf2 + d, fq_con); 1617 _fq_nmod_poly_set_length (buf3, repLengthBuf2 + d, fq_con); 1618 _fq_nmod_vec_set (buf3->coeffs, buf1->coeffs, repLengthBuf1, fq_con); 1619 _fq_nmod_vec_set (buf3->coeffs + d, buf2->coeffs, repLengthBuf2, fq_con); 1620 1621 _fq_nmod_poly_normalise (buf3, fq_con); 1622 1623 result += convertFq_nmod_poly_t2FacCF (buf3, x, alpha, fq_con)*power (y, i); 1624 i++; 1625 1626 1627 lf= i*d; 1628 degfSubLf= degf - lf; 1629 1630 lg= d*(k - i); 1631 deggSubLg= degg - lg; 1632 1633 if (lg >= 0 && deggSubLg > 0) 1634 { 1635 if (repLengthBuf2 > degfSubLf + 1) 1636 degfSubLf= repLengthBuf2 - 1; 1637 tmp= tmin (repLengthBuf1, deggSubLg + 1); 1638 _fq_nmod_vec_sub (g->coeffs + lg, g->coeffs + lg, buf1-> coeffs, 1639 tmp, fq_con); 1640 } 1641 if (lg < 0) 1642 { 1643 fq_nmod_poly_clear (buf1, fq_con); 1644 fq_nmod_poly_clear (buf2, fq_con); 1645 fq_nmod_poly_clear (buf3, fq_con); 1646 break; 1647 } 1648 if (degfSubLf >= 0) 1649 _fq_nmod_vec_sub (f->coeffs + lf, f->coeffs + lf, buf2->coeffs, 1650 repLengthBuf2, fq_con); 1651 fq_nmod_poly_clear (buf1, fq_con); 1652 fq_nmod_poly_clear (buf2, fq_con); 1653 fq_nmod_poly_clear (buf3, fq_con); 1654 } 1655 1656 fq_nmod_poly_clear (f, fq_con); 1657 fq_nmod_poly_clear (g, fq_con); 1658 1659 return result; 1660 } 1661 #endif 1662 1473 1663 CanonicalForm 1474 1664 reverseSubstReciproQ (const fmpz_poly_t F, const fmpz_poly_t G, int d, int k) … … 1605 1795 } 1606 1796 1607 CanonicalForm reverseSubstFp (const nmod_poly_t F, int d) 1797 #if (__FLINT_VERSION_MINOR >= 4) 1798 CanonicalForm 1799 reverseSubstFq (const fq_nmod_poly_t F, int d, const Variable& alpha, 1800 const fq_nmod_ctx_t fq_con) 1608 1801 { 1609 1802 Variable y= Variable (2); 1610 1803 Variable x= Variable (1); 1611 1804 1612 nmod_poly_t f; 1613 mp_limb_t ninv= n_preinvert_limb (getCharacteristic()); 1614 nmod_poly_init_preinv (f, getCharacteristic(), ninv); 1615 nmod_poly_set (f, F); 1616 1617 nmod_poly_t buf; 1805 fq_nmod_poly_t buf; 1618 1806 CanonicalForm result= 0; 1619 1807 int i= 0; 1620 int degf= nmod_poly_degree(f);1808 int degf= fq_nmod_poly_degree(F, fq_con); 1621 1809 int k= 0; 1622 int degfSubK, repLength , j;1810 int degfSubK, repLength; 1623 1811 while (degf >= k) 1624 1812 { … … 1629 1817 repLength= degfSubK + 1; 1630 1818 1819 fq_nmod_poly_init2 (buf, repLength, fq_con); 1820 _fq_nmod_poly_set_length (buf, repLength, fq_con); 1821 _fq_nmod_vec_set (buf->coeffs, F->coeffs+k, repLength, fq_con); 1822 _fq_nmod_poly_normalise (buf, fq_con); 1823 1824 result += convertFq_nmod_poly_t2FacCF (buf, x, alpha, fq_con)*power (y, i); 1825 i++; 1826 k= d*i; 1827 fq_nmod_poly_clear (buf, fq_con); 1828 } 1829 1830 return result; 1831 } 1832 #endif 1833 1834 CanonicalForm reverseSubstFp (const nmod_poly_t F, int d) 1835 { 1836 Variable y= Variable (2); 1837 Variable x= Variable (1); 1838 1839 mp_limb_t ninv= n_preinvert_limb (getCharacteristic()); 1840 1841 nmod_poly_t buf; 1842 CanonicalForm result= 0; 1843 int i= 0; 1844 int degf= nmod_poly_degree(F); 1845 int k= 0; 1846 int degfSubK, repLength, j; 1847 while (degf >= k) 1848 { 1849 degfSubK= degf - k; 1850 if (degfSubK >= d) 1851 repLength= d; 1852 else 1853 repLength= degfSubK + 1; 1854 1631 1855 nmod_poly_init2_preinv (buf, getCharacteristic(), ninv, repLength); 1632 1856 for (j= 0; j < repLength; j++) 1633 nmod_poly_set_coeff_ui (buf, j, nmod_poly_get_coeff_ui ( f, j + k));1857 nmod_poly_set_coeff_ui (buf, j, nmod_poly_get_coeff_ui (F, j + k)); 1634 1858 _nmod_poly_normalise (buf); 1635 1859 … … 1639 1863 nmod_poly_clear (buf); 1640 1864 } 1641 nmod_poly_clear (f);1642 1865 1643 1866 return result; … … 1712 1935 return A; 1713 1936 } 1937 1938 #if (__FLINT_VERSION_MINOR >= 4) 1939 CanonicalForm 1940 mulMod2FLINTFqReci (const CanonicalForm& F, const CanonicalForm& G, const 1941 CanonicalForm& M, const Variable& alpha, 1942 const fq_nmod_ctx_t fq_con) 1943 { 1944 int d1= degree (F, 1) + degree (G, 1) + 1; 1945 d1 /= 2; 1946 d1 += 1; 1947 1948 fq_nmod_poly_t F1, F2; 1949 kronSubReciproFq (F1, F2, F, d1, fq_con); 1950 1951 fq_nmod_poly_t G1, G2; 1952 kronSubReciproFq (G1, G2, G, d1, fq_con); 1953 1954 int k= d1*degree (M); 1955 fq_nmod_poly_mullow (F1, F1, G1, (long) k, fq_con); 1956 1957 int degtailF= degree (tailcoeff (F), 1);; 1958 int degtailG= degree (tailcoeff (G), 1); 1959 int taildegF= taildegree (F); 1960 int taildegG= taildegree (G); 1961 1962 int b= fq_nmod_poly_degree (F2, fq_con) + fq_nmod_poly_degree (G2, fq_con) - k 1963 - degtailF - degtailG + d1*(2+taildegF + taildegG); 1964 1965 fq_nmod_poly_reverse (F2, F2, fq_nmod_poly_degree (F2, fq_con), fq_con); 1966 fq_nmod_poly_reverse (G2, G2, fq_nmod_poly_degree (G2, fq_con), fq_con); 1967 fq_nmod_poly_mullow (F2, F2, G2, b+1, fq_con); 1968 fq_nmod_poly_reverse (F2, F2, b, fq_con); 1969 1970 int d2= tmax (fq_nmod_poly_degree (F2, fq_con)/d1, 1971 fq_nmod_poly_degree (F1, fq_con)/d1); 1972 1973 CanonicalForm result= reverseSubstReciproFq (F1, F2, d1, d2, alpha, fq_con); 1974 1975 fq_nmod_poly_clear (F1, fq_con); 1976 fq_nmod_poly_clear (F2, fq_con); 1977 fq_nmod_poly_clear (G1, fq_con); 1978 fq_nmod_poly_clear (G2, fq_con); 1979 return result; 1980 } 1981 1982 CanonicalForm 1983 mulMod2FLINTFq (const CanonicalForm& F, const CanonicalForm& G, const 1984 CanonicalForm& M, const Variable& alpha, 1985 const fq_nmod_ctx_t fq_con) 1986 { 1987 CanonicalForm A= F; 1988 CanonicalForm B= G; 1989 1990 int degAx= degree (A, 1); 1991 int degAy= degree (A, 2); 1992 int degBx= degree (B, 1); 1993 int degBy= degree (B, 2); 1994 int d1= degAx + 1 + degBx; 1995 int d2= tmax (degAy, degBy); 1996 1997 if (d1 > 128 && d2 > 160 && (degAy == degBy) && (2*degAy > degree (M))) 1998 return mulMod2FLINTFqReci (A, B, M, alpha, fq_con); 1999 2000 fq_nmod_poly_t FLINTA, FLINTB; 2001 kronSubFq (FLINTA, A, d1, fq_con); 2002 kronSubFq (FLINTB, B, d1, fq_con); 2003 2004 int k= d1*degree (M); 2005 fq_nmod_poly_mullow (FLINTA, FLINTA, FLINTB, (long) k, fq_con); 2006 2007 A= reverseSubstFq (FLINTA, d1, alpha, fq_con); 2008 2009 fq_nmod_poly_clear (FLINTA, fq_con); 2010 fq_nmod_poly_clear (FLINTB, fq_con); 2011 return A; 2012 } 2013 #endif 1714 2014 1715 2015 CanonicalForm … … 2252 2552 } 2253 2553 2254 // assumes input to be reduced mod M and to be an element of F q not Fp2554 // assumes input to be reduced mod M and to be an element of Fp 2255 2555 CanonicalForm 2256 2556 mulMod2NTLFpReci (const CanonicalForm& F, const CanonicalForm& G, const … … 2361 2661 if (hasFirstAlgVar (A, alpha) || hasFirstAlgVar (B, alpha)) 2362 2662 { 2663 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 2664 nmod_poly_t FLINTmipo; 2665 convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha)); 2666 2667 fq_nmod_ctx_t fq_con; 2668 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 2669 2670 A= mulMod2FLINTFq (A, B, M, alpha, fq_con); 2671 nmod_poly_clear (FLINTmipo); 2672 fq_nmod_ctx_clear (fq_con); 2673 #else 2363 2674 int degAx= degree (A, 1); 2364 2675 int degAy= degree (A, 2); … … 2388 2699 2389 2700 A= reverseSubstFq (NTLA, d1, alpha); 2390 2391 return A; 2701 #endif 2392 2702 } 2393 2703 else 2704 { 2394 2705 #ifdef HAVE_FLINT 2395 returnmulMod2FLINTFp (A, B, M);2706 A= mulMod2FLINTFp (A, B, M); 2396 2707 #else 2397 returnmulMod2NTLFp (A, B, M);2708 A= mulMod2NTLFp (A, B, M); 2398 2709 #endif 2710 } 2711 return A; 2399 2712 } 2400 2713 … … 2761 3074 else 2762 3075 { 3076 Variable y= Variable (2); 3077 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 3078 nmod_poly_t FLINTmipo; 3079 fq_nmod_ctx_t fq_con; 3080 3081 nmod_poly_init (FLINTmipo, getCharacteristic()); 3082 convertFacCF2nmod_poly_t (FLINTmipo, M); 3083 3084 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 3085 3086 3087 fq_nmod_poly_t FLINTA, FLINTB; 3088 convertFacCF2Fq_nmod_poly_t (FLINTA, swapvar (A, x, y), fq_con); 3089 convertFacCF2Fq_nmod_poly_t (FLINTB, swapvar (B, x, y), fq_con); 3090 3091 fq_nmod_poly_divrem (FLINTA, FLINTB, FLINTA, FLINTB, fq_con); 3092 3093 Q= convertFq_nmod_poly_t2FacCF (FLINTA, x, y, fq_con); 3094 3095 fq_nmod_poly_clear (FLINTA, fq_con); 3096 fq_nmod_poly_clear (FLINTB, fq_con); 3097 nmod_poly_clear (FLINTmipo); 3098 fq_nmod_ctx_clear (fq_con); 3099 #else 2763 3100 bool zz_pEbak= zz_pE::initialized(); 2764 3101 zz_pEBak bak; … … 2766 3103 bak.save(); 2767 3104 zz_pX mipo= convertFacCF2NTLzzpX (M); 2768 Variable y= Variable (2);2769 3105 zz_pEX NTLA, NTLB; 2770 3106 NTLA= convertFacCF2NTLzz_pEX (swapvar (A, x, y), mipo); … … 2774 3110 if (zz_pEbak) 2775 3111 bak.restore(); 3112 #endif 2776 3113 } 2777 3114 } … … 2820 3157 else 2821 3158 { 3159 Variable y= Variable (2); 3160 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 3161 nmod_poly_t FLINTmipo; 3162 fq_nmod_ctx_t fq_con; 3163 3164 nmod_poly_init (FLINTmipo, getCharacteristic()); 3165 convertFacCF2nmod_poly_t (FLINTmipo, M); 3166 3167 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 3168 3169 fq_nmod_poly_t FLINTA, FLINTB; 3170 convertFacCF2Fq_nmod_poly_t (FLINTA, swapvar (A, x, y), fq_con); 3171 convertFacCF2Fq_nmod_poly_t (FLINTB, swapvar (B, x, y), fq_con); 3172 3173 fq_nmod_poly_divrem (FLINTA, FLINTB, FLINTA, FLINTB, fq_con); 3174 3175 Q= convertFq_nmod_poly_t2FacCF (FLINTA, x, y, fq_con); 3176 R= convertFq_nmod_poly_t2FacCF (FLINTB, x, y, fq_con); 3177 3178 fq_nmod_poly_clear (FLINTA, fq_con); 3179 fq_nmod_poly_clear (FLINTB, fq_con); 3180 nmod_poly_clear (FLINTmipo); 3181 fq_nmod_ctx_clear (fq_con); 3182 #else 2822 3183 zz_pX mipo= convertFacCF2NTLzzpX (M); 2823 Variable y= Variable (2);2824 3184 zz_pEX NTLA, NTLB; 2825 3185 NTLA= convertFacCF2NTLzz_pEX (swapvar (A, x, y), mipo); … … 2829 3189 Q= convertNTLzz_pEX2CF (NTLQ, x, y); 2830 3190 R= convertNTLzz_pEX2CF (NTLR, x, y); 3191 #endif 2831 3192 } 2832 3193 } … … 3150 3511 if (hasFirstAlgVar (A, alpha) || hasFirstAlgVar (B, alpha)) 3151 3512 { 3513 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 3514 nmod_poly_t FLINTmipo; 3515 fq_nmod_ctx_t fq_con; 3516 3517 nmod_poly_init (FLINTmipo, getCharacteristic()); 3518 convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha)); 3519 3520 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 3521 3522 fq_nmod_poly_t FLINTA, FLINTB; 3523 convertFacCF2Fq_nmod_poly_t (FLINTA, A, fq_con); 3524 convertFacCF2Fq_nmod_poly_t (FLINTB, B, fq_con); 3525 int result= fq_nmod_poly_divides (FLINTA, FLINTB, FLINTA, fq_con); 3526 fq_nmod_poly_clear (FLINTA, fq_con); 3527 fq_nmod_poly_clear (FLINTB, fq_con); 3528 nmod_poly_clear (FLINTmipo); 3529 fq_nmod_ctx_clear (fq_con); 3530 return result; 3531 #else 3152 3532 zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha)); 3153 3533 zz_pE::init (NTLMipo); … … 3155 3535 zz_pEX NTLB= convertFacCF2NTLzz_pEX (B, NTLMipo); 3156 3536 return divide (NTLB, NTLA); 3537 #endif 3157 3538 } 3158 3539 #ifdef HAVE_FLINT
Note: See TracChangeset
for help on using the changeset viewer.