MCPcopy Create free account
hub / github.com/Singular/Singular / mulMod2FLINTQa

Function mulMod2FLINTQa

factory/facMul.cc:2336–2371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2334}*/
2335
2336CanonicalForm
2337mulMod2FLINTQa (const CanonicalForm& F, const CanonicalForm& G,
2338 const CanonicalForm& M)
2339{
2340 Variable a;
2341 if (!hasFirstAlgVar (F,a) && !hasFirstAlgVar (G, a))
2342 return mulMod2FLINTQ (F, G, M);
2343 CanonicalForm A= F, B= G;
2344
2345 int degFx= degree (F, 1);
2346 int degFa= degree (F, a);
2347 int degGx= degree (G, 1);
2348 int degGa= degree (G, a);
2349
2350 int d2= degFa+degGa+1;
2351 int d1= degFx + 1 + degGx;
2352 d1 *= d2;
2353
2354 CanonicalForm f= bCommonDen (F);
2355 CanonicalForm g= bCommonDen (G);
2356 A *= f;
2357 B *= g;
2358
2359 fmpz_poly_t FLINTF, FLINTG;
2360 kronSubQa (FLINTF, A, d1, d2);
2361 kronSubQa (FLINTG, B, d1, d2);
2362
2363 fmpz_poly_mullow (FLINTF, FLINTF, FLINTG, d1*degree (M));
2364
2365 fmpq_poly_t mipo;
2366 convertFacCF2Fmpq_poly_t (mipo, getMipo (a));
2367 A= reverseSubstQa (FLINTF, d1, d2, a, mipo);
2368 fmpz_poly_clear (FLINTF);
2369 fmpz_poly_clear (FLINTG);
2370 return A/(f*g);
2371}
2372
2373#endif
2374

Callers 1

mulMod2Function · 0.85

Calls 8

hasFirstAlgVarFunction · 0.85
mulMod2FLINTQFunction · 0.85
degreeFunction · 0.85
bCommonDenFunction · 0.85
kronSubQaFunction · 0.85
convertFacCF2Fmpq_poly_tFunction · 0.85
getMipoFunction · 0.85
reverseSubstQaFunction · 0.85

Tested by

no test coverage detected