/usr/include/singular/singular/kernel/GBEngine/tgbgauss.h is in libsingular4-dev-common 1:4.1.0-p3+ds-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #ifndef TGBGAUSS_HEADER
#define TGBGAUSS_HEADER
/****************************************
* Computer Algebra System SINGULAR *
****************************************/
/*
* ABSTRACT: gauss implementation for F4 header
*/
// #include <kernel/mod2.h>
#include <coeffs/numbers.h>
#include <polys/monomials/p_polys.h>
#include <omalloc/omallocClass.h>
//#include "tgb_internal.h"
class slimgb_alg;
class tgb_matrix{
private:
number** n;
int columns;
int rows;
BOOLEAN free_numbers;
public:
tgb_matrix(int i, int j);
~tgb_matrix();
int get_rows();
int get_columns();
void print();
void perm_rows(int i, int j);
void set(int i, int j, number n);
number get(int i, int j);
BOOLEAN is_zero_entry(int i, int j);
void free_row(int row, BOOLEAN free_non_zeros=TRUE);
int min_col_not_zero_in_row(int row);
int next_col_not_zero(int row,int pre);
BOOLEAN zero_row(int row);
void mult_row(int row,number factor);
void add_lambda_times_row(int add_to,int summand,number factor);
int non_zero_entries(int row);
};
class mac_poly_r :public omallocClass
{
public:
number coef;
mac_poly_r* next;
int exp;
mac_poly_r():next(NULL){}
};
//mac_polys exp are smaller iff they are greater by monomial ordering
//corresponding to solving linear equations notation
typedef mac_poly_r* mac_poly;
class tgb_sparse_matrix{
private:
ring r;
mac_poly* mp;
int columns;
int rows;
BOOLEAN free_numbers;
public:
void sort_rows();
friend poly free_row_to_poly(tgb_sparse_matrix* mat, int row, poly* monoms, int monom_index);
friend void init_with_mac_poly(tgb_sparse_matrix* mat, int row, mac_poly m);
tgb_sparse_matrix(int i, int j, ring rarg);
~tgb_sparse_matrix();
int get_rows();
int get_columns();
void print();
void row_normalize(int row);
void row_content(int row);
// void perm_rows(int i, int j);
void perm_rows(int i, int j){
mac_poly h;
h=mp[i];
mp[i]=mp[j];
mp[j]=h;
}
void set(int i, int j, number n);
number get(int i, int j);
BOOLEAN is_zero_entry(int i, int j);
void free_row(int row, BOOLEAN free_non_zeros=TRUE);
int min_col_not_zero_in_row(int row);
int next_col_not_zero(int row,int pre);
BOOLEAN zero_row(int row);
void mult_row(int row,number factor);
void add_lambda_times_row(int add_to,int summand,number factor);
int non_zero_entries(int row);
};
void simple_gauss(tgb_sparse_matrix* mat, slimgb_alg* c);
void simple_gauss2(tgb_matrix* mat);
mac_poly mac_p_add_ff_qq(mac_poly a, number f,mac_poly b);
void mac_mult_cons(mac_poly p,number c);
int mac_length(mac_poly p);
//contrary to delete on the mac_poly_r, the coefficients are also destroyed here
void mac_destroy(mac_poly p);
#endif
|