Macaulay2 Engine
Loading...
Searching...
No Matches

◆ gcd()

TowerPolynomial DPoly::gcd ( int level,
const TowerPolynomial f,
const TowerPolynomial g )

Definition at line 1126 of file dpoly.cpp.

1127{
1128 TowerPolynomial F = copy(level, f);
1129 TowerPolynomial G = copy(level, g);
1130 if (G == nullptr)
1131 {
1132 G = F;
1133 F = nullptr;
1134 }
1135 for (;;)
1136 {
1137#ifdef DEBUGGCD
1138 printf("G = %s\n", to_string(level, G));
1139#endif
1140 make_monic(level, G);
1141 if (G == nullptr) return nullptr; // failed
1142
1143#ifdef DEBUGGCD
1144 printf("monic G = %s\n", to_string(level, G));
1145 printf("F = %s\n", to_string(level, F));
1146#endif
1147
1148 remainder(level, F, G); // modifies F
1149 if (F == nullptr) return G;
1150
1151#ifdef DEBUGGCD
1152 printf("F mod G = %s\n", to_string(level, F));
1153#endif
1154
1155 swap_poly(F, G);
1156 }
1157}
void make_monic(int level, TowerPolynomial &f)
Definition dpoly.cpp:922
static TowerPolynomial copy(int level, const TowerPolynomial f)
Definition dpoly.cpp:483
void remainder(int level, TowerPolynomial &f, const TowerPolynomial g)
Definition dpoly.cpp:1089
static char * to_string(int level, const TowerPolynomial f)
Definition dpoly.cpp:417
static void swap_poly(TowerPolynomial &f, TowerPolynomial &g)
Definition dpoly.cpp:1120
tbb::flow::graph G

References copy(), G, make_monic(), remainder(), swap_poly(), and to_string().