18namespace layer1_foundations {
19namespace ring_theory {
52 for (i = 0; i <= C->
degree; i++) {
56 for (i = 0; i <= A->
degree; i++) {
57 for (j = 0; j <= B->
degree; j++) {
70 for (i = 0; i <= C->
degree; i++) {
74 for (i = 0; i <= C->
degree; i++) {
99 for (i = 0; i <= A->
degree; i++) {
100 A->
coeff[i] *= lambda;
111 for (i = 0; i <= A->
degree; i++) {
120 int f_v = (verbose_level >= 1);
126 cout <<
"polynomial_double_domain::determinant_over_polynomial_ring" << endl;
128 for (i = 0; i < n; i++) {
129 for (j = 0; j < n; j++) {
130 P[i * n + j].
print(cout);
152 for (i = 0; i < n - 1; i++) {
153 for (j = 0; j < n - 1; j++) {
154 Q[i * (n - 1) + j].
init(n + 1);
161 for (h = 0; h < n; h++) {
165 for (i = 0; i < n; i++) {
169 for (j = 1; j < n; j++) {
170 copy(&P[i * n + j], &Q[u * (n - 1) + j - 1]);
177 mult(a, &P[h * n + 0], b);
199 cout <<
"polynomial_double_domain::determinant_over_polynomial_ring "
200 "the determinant of " << endl;
201 for (i = 0; i < n; i++) {
202 for (j = 0; j < n; j++) {
203 P[i * n + j].
print(cout);
213 cout <<
"polynomial_double_domain::determinant_over_"
214 "polynomial_ring done" << endl;
220 double *lambda,
int verbose_level)
222 int f_v = (verbose_level >= 1);
227 cout <<
"polynomial_double_domain::find_all_roots" << endl;
238 for (i = 0; i < d; i++) {
239 cout <<
"polynomial_double_domain::find_all_roots i=" << i
240 <<
" / " << d <<
":" << endl;
242 cout <<
"polynomial_double_domain::find_all_roots i=" << i
243 <<
" / " << d <<
": lambda=" << lambda[i] << endl;
246 lambda[i], verbose_level);
247 cout <<
"quotient: ";
250 cout <<
"remainder=" << rem << endl;
256 cout <<
"polynomial_double_domain::find_all_roots done" << endl;
263 double lambda,
int verbose_level)
267 int f_v = (verbose_level >= 1);
272 cout <<
"polynomial_double_domain::divide_linear_factor" << endl;
279 for (i = 1; i <= d - 1; i++) {
280 a = a * lambda + p->
coeff[d - 1 - i + 1];
281 q->
coeff[d - 1 - i] = a;
285 cout <<
"polynomial_double_domain::divide_linear_factor done" << endl;
void mult(polynomial_double *A, polynomial_double *B, polynomial_double *C)
double divide_linear_factor(polynomial_double *p, polynomial_double *q, double lambda, int verbose_level)
void add(polynomial_double *A, polynomial_double *B, polynomial_double *C)
void determinant_over_polynomial_ring(polynomial_double *P, polynomial_double *det, int n, int verbose_level)
void mult_by_scalar_in_place(polynomial_double *A, double lambda)
void find_all_roots(polynomial_double *p, double *lambda, int verbose_level)
ring_theory::polynomial_double * create_object()
polynomial_double_domain()
void init(int alloc_length)
void copy(polynomial_double *A, polynomial_double *B)
~polynomial_double_domain()
polynomials with double coefficients, related to class polynomial_double_domain
void init(int alloc_length)
double root_finder(int verbose_level)
void print(std::ostream &ost)
#define NEW_OBJECTS(type, n)
the orbiter library for the classification of combinatorial objects