Changeset 2773fe in git


Ignore:
Timestamp:
Dec 16, 2013, 4:25:53 PM (10 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
0ebf2c731d149c10e2377cfd061cddf19c85502b
Parents:
1a688bac5a4cda9259d2e3370e235dae6231fc16
git-author:
Martin Lee <martinlee84@web.de>2013-12-16 16:25:53+01:00
git-committer:
Martin Lee <martinlee84@web.de>2014-01-20 16:45:03+01:00
Message:
chg: first part of changes in facMul
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facMul.cc

    r1a688ba r2773fe  
    405405      if (b.getp() != 0)
    406406      {
    407         ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    408407        CanonicalForm mipo= getMipo (alpha);
    409408        bool is_rat= isOn (SW_RATIONAL);
     
    413412        if (!is_rat)
    414413          Off (SW_RATIONAL);
     414#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     415        fmpz_t FLINTp;
     416        fmpz_mod_poly_t FLINTmipo;
     417        fq_ctx_t fq_con;
     418        fq_poly_t FLINTF, FLINTG;
     419
     420        fmpz_init (FLINTp);
     421
     422        convertCF2Fmpz (FLINTp, b.getpk());
     423
     424        convertFacCF2Fmpz_mod_poly_t (FLINTmipo, mipo, FLINTp);
     425
     426        fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     427
     428        convertFacCF2Fq_poly_t (FLINTF, F, fq_con);
     429        convertFacCF2Fq_poly_t (FLINTG, G, fq_con);
     430
     431        fq_poly_mul (FLINTF, FLINTF, FLINTG, fq_con);
     432
     433        CanonicalForm result= convertFq_poly_t2FacCF (FLINTF, F.mvar(),
     434                                                      alpha, fq_con);
     435
     436        fmpz_clear (FLINTp);
     437        fmpz_mod_poly_clear (FLINTmipo);
     438        fq_poly_clear (FLINTF, fq_con);
     439        fq_poly_clear (FLINTG, fq_con);
     440        fq_ctx_clear (fq_con);
     441        return b (result);
     442#else
     443        ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    415444        ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (mipo));
    416445        ZZ_pE::init (NTLmipo);
     
    418447        ZZ_pEX NTLf= convertFacCF2NTLZZ_pEX (F, NTLmipo);
    419448        mul (NTLf, NTLf, NTLg);
     449
    420450        return b (convertNTLZZ_pEX2CF (NTLf, F.mvar(), alpha));
     451#endif
    421452      }
    422453#ifdef HAVE_FLINT
     
    439470        convertFacCF2Fmpz_mod_poly_t (FLINTG, G, FLINTpk);
    440471        fmpz_mod_poly_mul (FLINTF, FLINTF, FLINTG);
    441         CanonicalForm result= convertFmpz_mod_poly_t2FacCF (FLINTF, F.mvar(), b);
     472        CanonicalForm result= convertFmpz_mod_poly_t2FacCF (FLINTF, F.mvar(),b);
    442473        fmpz_mod_poly_clear (FLINTG);
    443474        fmpz_mod_poly_clear (FLINTF);
     
    466497        if (hasFirstAlgVar (G, alpha) || hasFirstAlgVar (F, alpha))
    467498        {
    468           ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
     499#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     500          fmpz_t FLINTp;
     501          fmpz_mod_poly_t FLINTmipo;
     502          fq_ctx_t fq_con;
     503
     504          fmpz_init (FLINTp);
     505          convertCF2Fmpz (FLINTp, b.getpk());
     506
     507          convertFacCF2Fmpz_mod_poly_t (FLINTmipo, getMipo (alpha), FLINTp);
     508
     509          fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     510
     511          CanonicalForm result;
     512
    469513          if (F.inCoeffDomain() && !G.inCoeffDomain())
    470514          {
    471             ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
    472             ZZ_pE::init (NTLmipo);
     515            fq_poly_t FLINTG;
     516            fmpz_poly_t FLINTF;
     517            convertFacCF2Fmpz_poly_t (FLINTF, F);
     518            convertFacCF2Fq_poly_t (FLINTG, G, fq_con);
     519
     520            fq_poly_scalar_mul_fq (FLINTG, FLINTG, FLINTF, fq_con);
     521
     522            result= convertFq_poly_t2FacCF (FLINTG, G.mvar(), alpha, fq_con);
     523            fmpz_poly_clear (FLINTF);
     524            fq_poly_clear (FLINTG, fq_con);
     525          }
     526          else if (!F.inCoeffDomain() && G.inCoeffDomain())
     527          {
     528            fq_poly_t FLINTF;
     529            fmpz_poly_t FLINTG;
     530
     531            convertFacCF2Fmpz_poly_t (FLINTG, G);
     532            convertFacCF2Fq_poly_t (FLINTF, F, fq_con);
     533
     534            fq_poly_scalar_mul_fq (FLINTF, FLINTF, FLINTG, fq_con);
     535
     536            result= convertFq_poly_t2FacCF (FLINTF, F.mvar(), alpha, fq_con);
     537            fmpz_poly_clear (FLINTG);
     538            fq_poly_clear (FLINTF, fq_con);
     539          }
     540          else
     541          {
     542            fq_t FLINTF, FLINTG;
     543
     544            convertFacCF2Fq_t (FLINTF, F, fq_con);
     545            convertFacCF2Fq_t (FLINTG, G, fq_con);
     546
     547            fq_mul (FLINTF, FLINTF, FLINTG, fq_con);
     548
     549            result= convertFq_t2FacCF (FLINTF, alpha);
     550            fq_clear (FLINTF, fq_con);
     551            fq_clear (FLINTG, fq_con);
     552          }
     553
     554          fmpz_clear (FLINTp);
     555          fmpz_mod_poly_clear (FLINTmipo);
     556          fq_ctx_clear (fq_con);
     557
     558          return b (result);
     559#else
     560          ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
     561          ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
     562          ZZ_pE::init (NTLmipo);
     563
     564          if (F.inCoeffDomain() && !G.inCoeffDomain())
     565          {
    473566            ZZ_pEX NTLg= convertFacCF2NTLZZ_pEX (G, NTLmipo);
    474567            ZZ_pX NTLf= convertFacCF2NTLZZpX (F);
     
    478571          else if (!F.inCoeffDomain() && G.inCoeffDomain())
    479572          {
    480             ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
    481             ZZ_pE::init (NTLmipo);
    482573            ZZ_pX NTLg= convertFacCF2NTLZZpX (G);
    483574            ZZ_pEX NTLf= convertFacCF2NTLZZ_pEX (F, NTLmipo);
     
    487578          else
    488579          {
    489             ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
    490             ZZ_pE::init (NTLmipo);
    491580            ZZ_pX NTLg= convertFacCF2NTLZZpX (G);
    492581            ZZ_pX NTLf= convertFacCF2NTLZZpX (F);
     
    495584            return b (convertNTLZZpX2CF (rep (result), alpha));
    496585          }
     586#endif
    497587        }
    498588      }
     
    514604  if (hasFirstAlgVar (F, alpha) || hasFirstAlgVar (G, alpha))
    515605  {
     606#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     607    nmod_poly_t FLINTmipo;
     608    fq_nmod_ctx_t fq_con;
     609
     610    nmod_poly_init (FLINTmipo, getCharacteristic());
     611    convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha));
     612
     613    fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     614
     615    fq_nmod_poly_t FLINTF, FLINTG;
     616    convertFacCF2Fq_nmod_poly_t (FLINTF, F, fq_con);
     617    convertFacCF2Fq_nmod_poly_t (FLINTG, G, fq_con);
     618
     619    fq_nmod_poly_mul (FLINTF, FLINTF, FLINTG, fq_con);
     620
     621    result= convertFq_nmod_poly_t2FacCF (FLINTF, F.mvar(), alpha, fq_con);
     622
     623    fq_nmod_poly_clear (FLINTF, fq_con);
     624    fq_nmod_poly_clear (FLINTG, fq_con);
     625    nmod_poly_clear (FLINTmipo);
     626    fq_nmod_ctx_clear (fq_con);
     627#else
    516628    zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha));
    517629    zz_pE::init (NTLMipo);
     
    520632    mul (NTLF, NTLF, NTLG);
    521633    result= convertNTLzz_pEX2CF(NTLF, F.mvar(), alpha);
     634#endif
    522635  }
    523636  else
     
    605718      if (b.getp() != 0)
    606719      {
     720#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     721        fmpz_t FLINTp;
     722        fmpz_mod_poly_t FLINTmipo;
     723        fq_ctx_t fq_con;
     724        fq_poly_t FLINTF, FLINTG;
     725
     726        fmpz_init (FLINTp);
     727
     728        convertCF2Fmpz (FLINTp, b.getpk());
     729
     730        convertFacCF2Fmpz_mod_poly_t (FLINTmipo, getMipo (alpha), FLINTp);
     731
     732        fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     733
     734        convertFacCF2Fq_poly_t (FLINTF, F, fq_con);
     735        convertFacCF2Fq_poly_t (FLINTG, G, fq_con);
     736
     737        fq_poly_rem (FLINTF, FLINTF, FLINTG, fq_con);
     738
     739        CanonicalForm result= convertFq_poly_t2FacCF (FLINTF, F.mvar(),
     740                                                      alpha, fq_con);
     741
     742        fmpz_clear (FLINTp);
     743        fmpz_mod_poly_clear (FLINTmipo);
     744        fq_poly_clear (FLINTF, fq_con);
     745        fq_poly_clear (FLINTG, fq_con);
     746        fq_ctx_clear (fq_con);
     747
     748        return b(result);
     749#else
    607750        ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    608751        ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
     
    612755        rem (NTLf, NTLf, NTLg);
    613756        return b (convertNTLZZ_pEX2CF (NTLf, F.mvar(), alpha));
     757#endif
    614758      }
    615759#ifdef HAVE_FLINT
     
    634778  if (hasFirstAlgVar (F, alpha) || hasFirstAlgVar (G, alpha))
    635779  {
     780#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     781    nmod_poly_t FLINTmipo;
     782    fq_nmod_ctx_t fq_con;
     783
     784    nmod_poly_init (FLINTmipo, getCharacteristic());
     785    convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha));
     786
     787    fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     788
     789    fq_nmod_poly_t FLINTF, FLINTG;
     790    convertFacCF2Fq_nmod_poly_t (FLINTF, F, fq_con);
     791    convertFacCF2Fq_nmod_poly_t (FLINTG, G, fq_con);
     792
     793    fq_nmod_poly_rem (FLINTF, FLINTF, FLINTG, fq_con);
     794
     795    result= convertFq_nmod_poly_t2FacCF (FLINTF, F.mvar(), alpha, fq_con);
     796
     797    fq_nmod_poly_clear (FLINTF, fq_con);
     798    fq_nmod_poly_clear (FLINTG, fq_con);
     799    nmod_poly_clear (FLINTmipo);
     800    fq_nmod_ctx_clear (fq_con);
     801#else
    636802    zz_pX NTLMipo= convertFacCF2NTLzzpX(getMipo (alpha));
    637803    zz_pE::init (NTLMipo);
     
    640806    rem (NTLF, NTLF, NTLG);
    641807    result= convertNTLzz_pEX2CF(NTLF, F.mvar(), alpha);
     808#endif
    642809  }
    643810  else
     
    679846        hasFirstAlgVar (F, alpha);
    680847        hasFirstAlgVar (G, alpha);
     848#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     849        fmpz_t FLINTp;
     850        fmpz_mod_poly_t FLINTmipo;
     851        fq_ctx_t fq_con;
     852        fq_t FLINTF, FLINTG;
     853
     854        fmpz_init (FLINTp);
     855        convertCF2Fmpz (FLINTp, b.getpk());
     856
     857        convertFacCF2Fmpz_mod_poly_t (FLINTmipo, getMipo (alpha), FLINTp);
     858
     859        fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     860
     861        convertFacCF2Fq_t (FLINTF, F, fq_con);
     862        convertFacCF2Fq_t (FLINTG, G, fq_con);
     863
     864        fq_inv (FLINTG, FLINTG, fq_con);
     865        fq_mul (FLINTF, FLINTF, FLINTG, fq_con);
     866
     867        CanonicalForm result= convertFq_t2FacCF (FLINTF, alpha);
     868
     869        fmpz_clear (FLINTp);
     870        fmpz_mod_poly_clear (FLINTmipo);
     871        fq_clear (FLINTF, fq_con);
     872        fq_clear (FLINTG, fq_con);
     873        fq_ctx_clear (fq_con);
     874        return b (result);
     875#else
    681876        ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    682877        ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
     
    687882        div (result, to_ZZ_pE (NTLf), to_ZZ_pE (NTLg));
    688883        return b (convertNTLZZpX2CF (rep (result), alpha));
     884#endif
    689885      }
    690886      return b(div (F,G));
     
    700896        Variable alpha;
    701897        hasFirstAlgVar (G, alpha);
     898#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     899        fmpz_t FLINTp;
     900        fmpz_mod_poly_t FLINTmipo;
     901        fq_ctx_t fq_con;
     902        fq_poly_t FLINTF;
     903        fq_t FLINTG;
     904
     905        fmpz_init (FLINTp);
     906        convertCF2Fmpz (FLINTp, b.getpk());
     907
     908        convertFacCF2Fmpz_mod_poly_t (FLINTmipo, getMipo (alpha), FLINTp);
     909
     910        fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     911
     912        convertFacCF2Fq_poly_t (FLINTF, F, fq_con);
     913        convertFacCF2Fq_t (FLINTG, G, fq_con);
     914
     915        fq_inv (FLINTG, FLINTG, fq_con);
     916        fq_poly_scalar_mul_fq (FLINTF, FLINTF, FLINTG, fq_con);
     917
     918        CanonicalForm result= convertFq_poly_t2FacCF (FLINTF, F.mvar(),
     919                                                      alpha, fq_con);
     920
     921        fmpz_clear (FLINTp);
     922        fmpz_mod_poly_clear (FLINTmipo);
     923        fq_poly_clear (FLINTF, fq_con);
     924        fq_clear (FLINTG, fq_con);
     925        fq_ctx_clear (fq_con);
     926        return b (result);
     927#else
    702928        ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    703929        ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
     
    707933        div (NTLf, NTLf, to_ZZ_pE (NTLg));
    708934        return b (convertNTLZZ_pEX2CF (NTLf, F.mvar(), alpha));
     935#endif
    709936      }
    710937      return b(div (F,G));
     
    754981      if (b.getp() != 0)
    755982      {
     983#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     984        fmpz_t FLINTp;
     985        fmpz_mod_poly_t FLINTmipo;
     986        fq_ctx_t fq_con;
     987        fq_poly_t FLINTF, FLINTG;
     988
     989        fmpz_init (FLINTp);
     990        convertCF2Fmpz (FLINTp, b.getpk());
     991
     992        convertFacCF2Fmpz_mod_poly_t (FLINTmipo, getMipo (alpha), FLINTp);
     993
     994        fq_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     995
     996        convertFacCF2Fq_poly_t (FLINTF, F, fq_con);
     997        convertFacCF2Fq_poly_t (FLINTG, G, fq_con);
     998
     999        fq_poly_divrem (FLINTF, FLINTG, FLINTF, FLINTG, fq_con);
     1000
     1001        CanonicalForm result= convertFq_poly_t2FacCF (FLINTF, F.mvar(),
     1002                                                      alpha, fq_con);
     1003
     1004        fmpz_clear (FLINTp);
     1005        fmpz_mod_poly_clear (FLINTmipo);
     1006        fq_ctx_clear (fq_con);
     1007        fq_poly_clear (FLINTF, fq_con);
     1008        fq_poly_clear (FLINTG, fq_con);
     1009        return b (result);
     1010#else
    7561011        ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
    7571012        ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (alpha)));
     
    7611016        div (NTLf, NTLf, NTLg);
    7621017        return b (convertNTLZZ_pEX2CF (NTLf, F.mvar(), alpha));
     1018#endif
    7631019      }
    7641020#ifdef HAVE_FLINT
     
    7831039  if (hasFirstAlgVar (F, alpha) || hasFirstAlgVar (G, alpha))
    7841040  {
     1041#if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4)
     1042    nmod_poly_t FLINTmipo;
     1043    fq_nmod_ctx_t fq_con;
     1044
     1045    nmod_poly_init (FLINTmipo, getCharacteristic());
     1046    convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha));
     1047
     1048    fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z");
     1049
     1050    fq_nmod_poly_t FLINTF, FLINTG;
     1051    convertFacCF2Fq_nmod_poly_t (FLINTF, F, fq_con);
     1052    convertFacCF2Fq_nmod_poly_t (FLINTG, G, fq_con);
     1053
     1054    fq_nmod_poly_divrem (FLINTF, FLINTG, FLINTF, FLINTG, fq_con);
     1055
     1056    result= convertFq_nmod_poly_t2FacCF (FLINTF, F.mvar(), alpha, fq_con);
     1057
     1058    fq_nmod_poly_clear (FLINTF, fq_con);
     1059    fq_nmod_poly_clear (FLINTG, fq_con);
     1060    nmod_poly_clear (FLINTmipo);
     1061    fq_nmod_ctx_clear (fq_con);
     1062#else
    7851063    zz_pX NTLMipo= convertFacCF2NTLzzpX(getMipo (alpha));
    7861064    zz_pE::init (NTLMipo);
     
    7891067    div (NTLF, NTLF, NTLG);
    7901068    result= convertNTLzz_pEX2CF(NTLF, F.mvar(), alpha);
     1069#endif
    7911070  }
    7921071  else
Note: See TracChangeset for help on using the changeset viewer.