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

Function hIndAllMult

kernel/combinatorics/hdegree.cc:562–615  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

560}
561
562void hIndAllMult(scmon pure, int Npure, scfmon rad, int Nrad,
563 varset var, int Nvar)
564{
565 int dn, iv, rad0, b, c, x;
566 scmon pn;
567 scfmon rn;
568 if (Nrad < 2)
569 {
570 dn = Npure + Nrad;
571 if (dn > hCo)
572 {
573 if (!Nrad)
574 hCheckIndep(pure);
575 else
576 {
577 pn = *rad;
578 for (iv = Nvar; iv; iv--)
579 {
580 x = var[iv];
581 if (pn[x])
582 {
583 pure[x] = 1;
584 hCheckIndep(pure);
585 pure[x] = 0;
586 }
587 }
588 }
589 }
590 return;
591 }
592 iv = Nvar;
593 while(pure[var[iv]]) iv--;
594 hStepR(rad, Nrad, var, iv, &rad0);
595 iv--;
596 if (rad0 < Nrad)
597 {
598 pn = hGetpure(pure);
599 rn = hGetmem(Nrad, rad, radmem[iv]);
600 pn[var[iv + 1]] = 1;
601 hIndAllMult(pn, Npure + 1, rn, rad0, var, iv);
602 pn[var[iv + 1]] = 0;
603 b = rad0;
604 c = Nrad;
605 hElimR(rn, &rad0, b, c, var, iv);
606 hPure(rn, b, &c, var, iv, pn, &x);
607 hLex2R(rn, rad0, b, c, var, iv, hwork);
608 rad0 += (c - b);
609 hIndAllMult(pn, Npure + x, rn, rad0, var, iv);
610 }
611 else
612 {
613 hIndAllMult(pure, Npure, rad, Nrad, var, iv);
614 }
615}
616
617// multiplicity
618

Callers 1

scIndIndsetFunction · 0.85

Calls 7

hCheckIndepFunction · 0.85
hStepRFunction · 0.85
hGetpureFunction · 0.85
hGetmemFunction · 0.85
hElimRFunction · 0.85
hPureFunction · 0.85
hLex2RFunction · 0.85

Tested by

no test coverage detected