15namespace layer1_foundations {
16namespace algebraic_geometry {
49 cout <<
"cubic_curve::freeself" << endl;
70 int f_v = (verbose_level >= 1);
74 cout <<
"cubic_curve::init" << endl;
80 cout <<
"cubic_curve::init q = " <<
q << endl;
85 cout <<
"cubic_curve::init before P->projective_space_init" << endl;
91 cout <<
"cubic_curve::init after P->projective_space_init" << endl;
112 cout <<
"cubic_curve::init nb_monomials = " <<
nb_monomials << endl;
116 for (i = 0; i < 3; i++) {
123 cout <<
"cubic_curve::init done" << endl;
129 int nb_pts,
long int *pt_list,
int verbose_level)
132 int f_v = (verbose_level >= 1);
139 cout <<
"cubic_curve::compute_system_in_RREF" << endl;
146 cout <<
"cubic_curve::compute_system_in_RREF list of "
147 "covered points by lines:" << endl;
150 for (i = 0; i < nb_pts; i++) {
154 cout <<
"cubic_curve::compute_system_in_RREF list of "
155 "covered points in coordinates:" << endl;
159 for (i = 0; i < nb_pts; i++) {
166 cout <<
"cubic_curve::compute_system_in_RREF "
167 "The system:" << endl;
173 cout <<
"cubic_curve::compute_system_in_RREF "
174 "The system in RREF:" << endl;
178 cout <<
"cubic_curve::compute_system_in_RREF "
179 "The system has rank " << r << endl;
189 int f_v = (verbose_level >= 1);
193 cout <<
"cubic_curve::compute_gradient" << endl;
195 for (i = 0; i < 3; i++) {
197 cout <<
"cubic_curve::compute_gradient i=" << i << endl;
200 cout <<
"cubic_curve::compute_gradient eqn_in=";
210 cout <<
"cubic_curve::compute_gradient partial=";
219 cout <<
"cubic_curve::compute_gradient done" << endl;
225 long int *Pts_on_curve,
int nb_pts_on_curve,
226 long int *Pts,
int &nb_pts,
231 int f_v = (verbose_level >= 1);
238 cout <<
"cubic_curve::compute_singular_points" << endl;
244 for (h = 0; h < nb_pts_on_curve; h++) {
246 cout <<
"cubic_curve::compute_singular_points "
247 "h=" << h <<
" / " << nb_pts_on_curve << endl;
249 rk = Pts_on_curve[h];
251 cout <<
"cubic_curve::compute_singular_points "
256 cout <<
"cubic_curve::compute_singular_points "
261 for (i = 0; i < nb_eqns; i++) {
263 cout <<
"cubic_curve::compute_singular_points "
264 "gradient i=" << i <<
" / " << nb_eqns << endl;
267 cout <<
"cubic_curve::compute_singular_points "
268 "gradient " << i <<
" = ";
277 cout <<
"cubic_curve::compute_singular_points "
278 "value = " << a << endl;
289 cout <<
"cubic_curve::compute_singular_points done" << endl;
295 long int *Pts_on_curve,
int nb_pts_on_curve,
296 long int *Pts,
int &nb_pts,
299 int f_v = (verbose_level >= 1);
306 int eqn_restricted_to_line[4];
309 cout <<
"cubic_curve::compute_inflexion_points" << endl;
316 for (h = 0; h < nb_pts_on_curve; h++) {
321 cout <<
"cubic_curve::compute_inflexion_points testing point "
322 << h <<
" / " << nb_pts_on_curve <<
" = " << a <<
" = ";
326 for (i = 0; i < 3; i++) {
330 for (i = 0; i < 3; i++) {
341 cout <<
"cubic_curve::compute_inflexion_points "
342 "before F->perp_standard:" << endl;
347 cout <<
"cubic_curve::compute_inflexion_points "
348 "after F->perp_standard:" << endl;
365 cout <<
"cubic_curve::compute_inflexion_points rank of "
366 "line spanned by v and w is not two" << endl;
370 eqn_in, eqn_restricted_to_line,
375 cout <<
"cubic_curve::compute_inflexion_points "
376 "after Poly->substitute_line:" << endl;
380 if (eqn_restricted_to_line[0] == 0 &&
381 eqn_restricted_to_line[1] == 0 &&
382 eqn_restricted_to_line[2] == 0) {
384 cout <<
"cubic_curve::compute_inflexion_points "
385 "found an inflexion point " << a << endl;
392 cout <<
"cubic_curve::compute_inflexion_points "
393 "the tangent line does not exist" << endl;
399 cout <<
"cubic_curve::compute_inflexion_points "
400 "we found " << nb_pts <<
" inflexion points" << endl;
404 cout <<
"cubic_curve::compute_inflexion_points done" << endl;
field_theory::finite_field * F
ring_theory::partial_derivative * Partials
void compute_gradient(int *eqn_in, int verbose_level)
ring_theory::homogeneous_polynomial_domain * Poly
void init(field_theory::finite_field *F, int verbose_level)
void compute_inflexion_points(int *eqn_in, long int *Pts_on_curve, int nb_pts_on_curve, long int *Pts, int &nb_pts, int verbose_level)
ring_theory::homogeneous_polynomial_domain * Poly2
void compute_singular_points(int *eqn_in, long int *Pts_on_curve, int nb_pts_on_curve, long int *Pts, int &nb_pts, int verbose_level)
int compute_system_in_RREF(int nb_pts, long int *pt_list, int verbose_level)
geometry::projective_space * P
void matrix_print(int *p, int m, int n)
void matrix_print(long int *p, int m, int n)
linear_algebra::linear_algebra * Linear_algebra
projective space PG(n,q) of dimension n over Fq
void projective_space_init(int n, field_theory::finite_field *F, int f_init_incidence_structure, int verbose_level)
void unrank_point(int *v, long int rk)
int rank_of_rectangular_matrix(int *A, int m, int n, int verbose_level)
int perp_standard(int n, int k, int *A, int verbose_level)
int Gauss_simple(int *A, int m, int n, int *base_cols, int verbose_level)
data_structures::lint_vec * Lint_vec
data_structures::int_vec * Int_vec
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
void init(field_theory::finite_field *F, int nb_vars, int degree, int f_init_incidence_structure, monomial_ordering_type Monomial_ordering_type, int verbose_level)
void substitute_line(int *coeff_in, int *coeff_out, int *Pt1_coeff, int *Pt2_coeff, int verbose_level)
void unrank_point(int *v, int rk)
int evaluate_at_a_point(int *coeff, int *pt_vec)
void print_equation(std::ostream &ost, int *coeffs)
int evaluate_monomial(int idx_of_monomial, int *coords)
partial derivative connects two homogeneous polynomial domains
void apply(int *eqn_in, int *eqn_out, int verbose_level)
void init(homogeneous_polynomial_domain *H, homogeneous_polynomial_domain *Hd, int variable_idx, int verbose_level)
#define NEW_OBJECTS(type, n)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects