 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the source code of this file.
|
template<class len_type , class set_type > |
int | pos_helper (kStrategy strat, poly p, len_type len, set_type setL, polyset set) |
|
void | free_sorted_pair_node (sorted_pair_node *s, const ring r) |
|
ideal | do_t_rep_gb (ring r, ideal arg_I, int syz_comp, BOOLEAN F4_mode, int deg_pos) |
|
void | now_t_rep (const int &arg_i, const int &arg_j, slimgb_alg *c) |
|
void | clean_top_of_pair_list (slimgb_alg *c) |
|
int | slim_nsize (number n, ring r) |
|
sorted_pair_node * | quick_pop_pair (slimgb_alg *c) |
|
sorted_pair_node * | top_pair (slimgb_alg *c) |
|
sorted_pair_node ** | add_to_basis_ideal_quotient (poly h, slimgb_alg *c, int *ip) |
|
sorted_pair_node ** | spn_merge (sorted_pair_node **p, int pn, sorted_pair_node **q, int qn, slimgb_alg *c) |
|
int | kFindDivisibleByInS_easy (kStrategy strat, const red_object &obj) |
|
int | tgb_pair_better_gen2 (const void *ap, const void *bp) |
|
int | kFindDivisibleByInS_easy (kStrategy strat, poly p, long sev) |
|
template<class number_type > |
SparseRow< number_type > * | noro_red_to_non_poly_t (poly p, int &len, NoroCache< number_type > *cache, slimgb_alg *c) |
|
template<class number_type > |
MonRedResNP< number_type > | noro_red_mon_to_non_poly (poly t, NoroCache< number_type > *cache, slimgb_alg *c) |
|
template<class number_type > |
SparseRow< number_type > * | convert_to_sparse_row (number_type *temp_array, int temp_size, int non_zeros) |
|
template<class number_type > |
void | add_coef_times_sparse (number_type *const temp_array, int, SparseRow< number_type > *row, number coef) |
|
template<class number_type > |
void | add_coef_times_dense (number_type *const temp_array, int, const number_type *row, int len, number coef) |
|
template<class number_type > |
void | add_dense (number_type *const temp_array, int, const number_type *row, int len) |
|
template<class number_type > |
void | sub_dense (number_type *const temp_array, int, const number_type *row, int len) |
|
template<class number_type > |
void | add_sparse (number_type *const temp_array, int, SparseRow< number_type > *row) |
|
template<class number_type > |
void | sub_sparse (number_type *const temp_array, int, SparseRow< number_type > *row) |
|
template<class number_type > |
SparseRow< number_type > * | noro_red_to_non_poly_dense (MonRedResNP< number_type > *mon, int len, NoroCache< number_type > *cache) |
|
template<class number_type > |
void | write_coef_times_xx_idx_to_buffer (CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen, const number coef) |
|
template<class number_type > |
void | write_coef_times_xx_idx_to_buffer_dense (CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen, const number coef) |
|
template<class number_type > |
void | write_coef_idx_to_buffer_dense (CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen) |
|
template<class number_type > |
void | write_minus_coef_idx_to_buffer_dense (CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen) |
|
template<class number_type > |
void | write_coef_idx_to_buffer (CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen) |
|
template<class number_type > |
void | write_minus_coef_idx_to_buffer (CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen) |
|
template<class number_type > |
SparseRow< number_type > * | noro_red_to_non_poly_sparse (MonRedResNP< number_type > *mon, int len, NoroCache< number_type > *cache) |
|
wlen_type | pELength (poly p, ring r) |
|
int | terms_sort_crit (const void *a, const void *b) |
|
template<class number_type > |
void | write_poly_to_row (number_type *row, poly h, poly *terms, int tn, ring r) |
|
template<class number_type > |
poly | row_to_poly (number_type *row, poly *terms, int tn, ring r) |
|
template<class number_type > |
int | modP_lastIndexRow (number_type *row, int ncols) |
|
template<class number_type > |
int | term_nodes_sort_crit (const void *a, const void *b) |
|
template<class number_type > |
void | simplest_gauss_modp (number_type *a, int nrows, int ncols) |
|
template<class number_type > |
void | noro_step (poly *p, int &pn, slimgb_alg *c) |
|
◆ sorted_pair_node
◆ poly_list_node
◆ int_pair_node
◆ monom_poly
◆ mp_array_list
◆ poly_array_list
◆ find_erg
Definition at line 386 of file tgb_internal.h.
Data Fields |
poly |
expand |
|
int |
expand_length |
|
BOOLEAN |
fromS |
|
int |
reduce_by |
|
int |
to_reduce_l |
|
int |
to_reduce_u |
|
◆ TermNoroDataNode
template<class number_type>
class TermNoroDataNode< number_type >
Definition at line 583 of file tgb_internal.h.
◆ AC_FLATTEN
◆ AC_NEW_MIN
◆ F4mat_to_number_type
◆ FULLREDUCTIONS
◆ NORO_CACHE
◆ NORO_NON_POLY
◆ NORO_SPARSE_ROWS_PRE
#define NORO_SPARSE_ROWS_PRE 1 |
◆ npInit
◆ npInvers
◆ npIsOne
◆ npIsZero
◆ npMult
◆ npNeg
◆ PAR_N
◆ PAR_N_F4
◆ REDTAIL_S
◆ slim_prec_cast
#define slim_prec_cast |
( |
|
a | ) |
(unsigned int) (unsigned long) (a) |
◆ USE_NORO
◆ tgb_uint16
◆ tgb_uint32
◆ tgb_uint8
◆ calc_state
◆ add_coef_times_dense()
template<class number_type >
void add_coef_times_dense |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
const number_type * |
row, |
|
|
int |
len, |
|
|
number |
coef |
|
) |
| |
Definition at line 953 of file tgb_internal.h.
961 const number_type*
const coef_array=row;
968 for(
j=0;
j<len;
j=
j+256)
975 buffer[bpos++]=coef_array[
i];
978 for(
i=0;
i<bpos_bound;
i++)
982 for(
i=0;
i<bpos_bound;
i++)
984 buffer[
i]=buffer[
i]%prime;
◆ add_coef_times_sparse()
template<class number_type >
void add_coef_times_sparse |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
SparseRow< number_type > * |
row, |
|
|
number |
coef |
|
) |
| |
Definition at line 905 of file tgb_internal.h.
913 number_type*
const coef_array=row->
coef_array;
915 const int len=row->
len;
920 for(
j=0;
j<len;
j=
j+256)
927 buffer[bpos++]=coef_array[
i];
930 for(
i=0;
i<bpos_bound;
i++)
934 for(
i=0;
i<bpos_bound;
i++)
936 buffer[
i]=buffer[
i]%prime;
941 int idx=idx_array[
i];
◆ add_dense()
template<class number_type >
void add_dense |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
const number_type * |
row, |
|
|
int |
len |
|
) |
| |
◆ add_sparse()
template<class number_type >
void add_sparse |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
SparseRow< number_type > * |
row |
|
) |
| |
◆ add_to_basis_ideal_quotient()
Definition at line 1426 of file tgb.cc.
1452 #define ENLARGE(pointer, type) pointer=(type*) omrealloc(pointer, c->array_lengths*sizeof(type))
1454 #define ENLARGE_ALIGN(pointer, type) {if(pointer)\
1455 pointer=(type*)omReallocAligned(pointer, c->array_lengths*sizeof(type));\
1456 else pointer=(type*)omAllocAligned(c->array_lengths*sizeof(type));}
1478 #ifndef USE_STDVECBOOL
1496 ecart = sugar - c->
T_deg[
i];
1518 c->
states.push_back (dynamic_bitset <> (
i));
1521 #ifdef USE_STDVECBOOL
1523 c->
states.push_back (vector < bool > (
i));
1537 #undef ENLARGE_ALIGN
1540 for(
j = 0;
j <
i;
j++)
1697 for(upper = lower + 1; upper < spc; upper++)
1699 if(!
pLmEqual (nodes[lower]->lcm_of_lm, nodes[upper]->lcm_of_lm))
1703 if(
has_t_rep (nodes[upper]->
i, nodes[upper]->
j, c))
1709 for(z = 0; z < spc_final; z++)
1712 (nodes_final[z]->lcm_of_lm, nodes[lower]->lcm_of_lm, c->
r))
1721 for(; lower <= upper; lower++)
1725 nodes[lower] =
NULL;
1732 p_Test (nodes[lower]->lcm_of_lm, c->
r);
1736 nodes_final[spc_final] =
1739 *(nodes_final[spc_final++]) = *(nodes[lower]);
1741 nodes[lower] =
NULL;
1742 for(lower = lower + 1; lower <= upper; lower++)
1746 nodes[lower] =
NULL;
1755 assume (spc_final <= spc);
1790 m_iLastAltVar - m_iFirstAltVar + 1;
1793 poly *array_arg = (poly *)
omalloc (
N *
sizeof (poly));
1797 for(
unsigned short v = m_iFirstAltVar;
v <= m_iLastAltVar;
v++)
1815 #endif // if SCAlgebra
◆ clean_top_of_pair_list()
◆ convert_to_sparse_row()
template<class number_type >
SparseRow<number_type>* convert_to_sparse_row |
( |
number_type * |
temp_array, |
|
|
int |
temp_size, |
|
|
int |
non_zeros |
|
) |
| |
Definition at line 837 of file tgb_internal.h.
842 number_type* it_coef=
res->coef_array;
843 int* it_idx=
res->idx_array;
845 for(
i=0;
i<cache->nIrreducibleMonomials;
i++)
847 if (!(0==temp_array[
i]))
850 res->idx_array[pos]=
i;
851 res->coef_array[pos]=temp_array[
i];
855 if (non_zeros==0)
break;
862 const int multiple=
sizeof(
int64)/
sizeof(number_type);
863 if (temp_size==0) end=start;
867 int temp_size_rounded=temp_size+(multiple-(temp_size%multiple));
868 assume(temp_size_rounded>=temp_size);
869 assume(temp_size_rounded%multiple==0);
870 assume(temp_size_rounded<temp_size+multiple);
871 number_type* nt_end=temp_array+temp_size_rounded;
872 end=(
int64*)((
void*)nt_end);
880 const int temp_index=((number_type*)((
void*) it))-temp_array;
881 const int bound=temp_index+multiple;
883 for(small_i=temp_index;small_i<
bound;small_i++)
885 if((c=temp_array[small_i])!=0)
889 (*(it_idx++))=small_i;
◆ do_t_rep_gb()
ideal do_t_rep_gb |
( |
ring |
r, |
|
|
ideal |
arg_I, |
|
|
int |
syz_comp, |
|
|
BOOLEAN |
F4_mode, |
|
|
int |
deg_pos |
|
) |
| |
◆ free_sorted_pair_node()
◆ kFindDivisibleByInS_easy() [1/2]
Definition at line 685 of file tgb.cc.
689 long not_sev = ~obj.
sev;
690 for(
int i = 0;
i <= strat->
sl;
i++)
◆ kFindDivisibleByInS_easy() [2/2]
int kFindDivisibleByInS_easy |
( |
kStrategy |
strat, |
|
|
poly |
p, |
|
|
long |
sev |
|
) |
| |
Definition at line 698 of file tgb.cc.
702 for(
int i = 0;
i <= strat->
sl;
i++)
◆ modP_lastIndexRow()
template<class number_type >
int modP_lastIndexRow |
( |
number_type * |
row, |
|
|
int |
ncols |
|
) |
| |
Definition at line 1503 of file tgb_internal.h.
1506 const number_type zero=0;
1507 for(lastIndex=
ncols-1;lastIndex>=0;lastIndex--)
1509 if (!(row[lastIndex]==zero))
◆ noro_red_mon_to_non_poly()
template<class number_type >
Definition at line 758 of file tgb_internal.h.
795 srow=noro_red_to_non_poly_t<number_type>(
res,len,cache,c);
796 ref=cache->
insert(t,srow);
800 res_holder.
coef=coef_bak;
806 number one=
npInit(1, c->
r->cf);
811 res_holder.
coef=coef_bak;
◆ noro_red_to_non_poly_dense()
template<class number_type >
Definition at line 1094 of file tgb_internal.h.
1099 number_type* temp_array=(number_type*) cache->
tempBuffer;
1101 memset(temp_array,0,temp_size_bytes);
1112 number coef=red.
coef;
1115 if (!((coef==(number)1L)||(coef==minus_one)))
1121 if (coef==(number)1L)
1133 if (!((coef==(number)1L)||(coef==minus_one)))
1139 if (coef==(number)1L)
1169 assume(((temp_array[
i]!=0)==0)|| (((temp_array[
i]!=0)==1)));
1170 non_zeros+=(temp_array[
i]!=0);
◆ noro_red_to_non_poly_sparse()
template<class number_type >
Definition at line 1284 of file tgb_internal.h.
1291 if ((red.
ref) &&( red.
ref->row))
1293 together+=red.
ref->row->len;
1302 if (together==0)
return 0;
1312 if ((red.
ref) &&( red.
ref->row))
1315 int* idx_array=red.
ref->row->idx_array;
1316 number_type* coef_array=red.
ref->row->coef_array;
1317 int rlen=red.
ref->row->len;
1318 number coef=red.
coef;
1321 if ((coef!=one)&&(coef!=minus_one))
1340 if ((coef!=one)&&(coef!=minus_one))
1362 ci.
idx=red.
ref->term_index;
1375 for(
i=1;
i<together;
i++)
1395 int sparse_row_len=
act+1;
1397 if (sparse_row_len==0) {
return NULL;}
1400 number_type* coef_array=
res->coef_array;
1401 int* idx_array=
res->idx_array;
1402 for(
i=0;
i<sparse_row_len;
i++)
◆ noro_red_to_non_poly_t()
template<class number_type >
Definition at line 1412 of file tgb_internal.h.
1423 double max_density=0.0;
1431 if ((red.
ref) && (red.
ref->row))
1433 double act_density=(double) red.
ref->row->len;
1435 max_density=
std::max(act_density,max_density);
1444 if (max_density<0.3) dense=
false;
◆ noro_step()
template<class number_type >
void noro_step |
( |
poly * |
p, |
|
|
int & |
pn, |
|
|
slimgb_alg * |
c |
|
) |
| |
Definition at line 1801 of file tgb_internal.h.
1807 Print(
"Input rows %d\n",pn);
1819 srows[non_zeros]=noro_red_to_non_poly_t<number_type>(
h,h_len,&cache,c);
1820 if (srows[non_zeros]!=
NULL) non_zeros++;
1822 std::vector<DataNoroCacheNode<number_type>*> irr_nodes;
1826 int n=irr_nodes.size();
1830 Print(
"Irred Mon:%d\n",n);
1839 term_nodes[
j].
t=irr_nodes[
j]->value_poly;
1841 term_nodes[
j].
node=irr_nodes[
j];
1845 poly* terms=(poly*)
omalloc(n*
sizeof(poly));
1850 old_to_new_indices[term_nodes[
j].
node->term_index]=
j;
1851 term_nodes[
j].node->term_index=
j;
1852 terms[
j]=term_nodes[
j].t;
1874 number_type*
const coef_array=srow->
coef_array;
1875 const int len=srow->
len;
1880 int idx=old_to_new_indices[idx_array[
i]];
1912 #ifdef NORO_NON_POLY
1914 omfree(old_to_new_indices);
◆ now_t_rep()
◆ pELength()
◆ pos_helper()
template<class len_type , class set_type >
int pos_helper |
( |
kStrategy |
strat, |
|
|
poly |
p, |
|
|
len_type |
len, |
|
|
set_type |
setL, |
|
|
polyset |
set |
|
) |
| |
◆ quick_pop_pair()
◆ row_to_poly()
template<class number_type >
poly row_to_poly |
( |
number_type * |
row, |
|
|
poly * |
terms, |
|
|
int |
tn, |
|
|
ring |
r |
|
) |
| |
◆ simplest_gauss_modp()
template<class number_type >
void simplest_gauss_modp |
( |
number_type * |
a, |
|
|
int |
nrows, |
|
|
int |
ncols |
|
) |
| |
Definition at line 1778 of file tgb_internal.h.
1787 while(mat.findPivot(r,c))
1790 mat.reduceOtherRowsForward(r);
1795 backmat.backwardSubstitute();
◆ slim_nsize()
int slim_nsize |
( |
number |
n, |
|
|
ring |
r |
|
) |
| |
◆ spn_merge()
Definition at line 751 of file tgb.cc.
755 int *a = (
int *)
omalloc (qn *
sizeof (
int));
770 for(
i = 0;
i < qn;
i++)
785 for(
i = qn - 1;
i >= 0;
i--)
792 memmove (
p + a[
i] + (1 +
i),
p + a[
i],
size);
◆ sub_dense()
template<class number_type >
void sub_dense |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
const number_type * |
row, |
|
|
int |
len |
|
) |
| |
◆ sub_sparse()
template<class number_type >
void sub_sparse |
( |
number_type *const |
temp_array, |
|
|
int |
, |
|
|
SparseRow< number_type > * |
row |
|
) |
| |
◆ term_nodes_sort_crit()
template<class number_type >
int term_nodes_sort_crit |
( |
const void * |
a, |
|
|
const void * |
b |
|
) |
| |
◆ terms_sort_crit()
int terms_sort_crit |
( |
const void * |
a, |
|
|
const void * |
b |
|
) |
| |
Definition at line 2030 of file tgb.cc.
2032 return -
pLmCmp (*((poly *) a), *((poly *)
b));
◆ tgb_pair_better_gen2()
int tgb_pair_better_gen2 |
( |
const void * |
ap, |
|
|
const void * |
bp |
|
) |
| |
◆ top_pair()
◆ write_coef_idx_to_buffer()
template<class number_type >
void write_coef_idx_to_buffer |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
int *const |
idx_array, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen |
|
) |
| |
◆ write_coef_idx_to_buffer_dense()
template<class number_type >
void write_coef_idx_to_buffer_dense |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen |
|
) |
| |
◆ write_coef_times_xx_idx_to_buffer()
template<class number_type >
void write_coef_times_xx_idx_to_buffer |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
int *const |
idx_array, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen, |
|
|
const number |
coef |
|
) |
| |
◆ write_coef_times_xx_idx_to_buffer_dense()
template<class number_type >
void write_coef_times_xx_idx_to_buffer_dense |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen, |
|
|
const number |
coef |
|
) |
| |
◆ write_minus_coef_idx_to_buffer()
template<class number_type >
void write_minus_coef_idx_to_buffer |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
int *const |
idx_array, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen |
|
) |
| |
◆ write_minus_coef_idx_to_buffer_dense()
template<class number_type >
void write_minus_coef_idx_to_buffer_dense |
( |
CoefIdx< number_type > *const |
pairs, |
|
|
int & |
pos, |
|
|
number_type *const |
coef_array, |
|
|
const int |
rlen |
|
) |
| |
◆ write_poly_to_row()
template<class number_type >
void write_poly_to_row |
( |
number_type * |
row, |
|
|
poly |
h, |
|
|
poly * |
terms, |
|
|
int |
tn, |
|
|
ring |
r |
|
) |
| |
static int si_min(const int a, const int b)
void sub_dense(number_type *const temp_array, int, const number_type *row, int len)
unsigned long pTotaldegree(poly p)
void ensureTempBufferSize(size_t size)
int kFindDivisibleByInS_easy(kStrategy strat, const red_object &obj)
#define pGetComp(p)
Component.
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static void simplify_poly(poly p, ring r)
void pNorm(poly p, const ring R=currRing)
void introduceDelayedPairs(poly *pa, int s)
#define pHasNotCF(p1, p2)
void add_coef_times_sparse(number_type *const temp_array, int, SparseRow< number_type > *row, number coef)
int nIrreducibleMonomials
#define F4mat_to_number_type(a)
static void p_ExpVectorDiff(poly pr, poly p1, poly p2, const ring r)
sorted_pair_node ** apairs
void free_sorted_pair_node(sorted_pair_node *s, const ring r)
static poly pOne_Special(const ring r=currRing)
#define TEST_OPT_DEGBOUND
static number npMultM(number a, number b, const coeffs r)
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
DataNoroCacheNode< number_type > * ref
void pEnlargeSet(poly **p, int l, int increment)
sorted_pair_node ** tmp_spn
int terms_sort_crit(const void *a, const void *b)
static wlen_type pair_weighted_length(int i, int j, slimgb_alg *c)
static poly p_LmInit(poly p, const ring r)
void write_coef_idx_to_buffer(CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen)
wlen_type * weighted_lengths
static BOOLEAN length(leftv result, leftv arg)
static FORCE_INLINE int nlQlogSize(number n, const coeffs r)
only used by slimgb (tgb.cc)
int pTotaldegree_full(poly p)
#define __p_GetComp(p, r)
void clean_top_of_pair_list(slimgb_alg *c)
static int tgb_pair_better_gen(const void *ap, const void *bp)
static BOOLEAN has_t_rep(const int &arg_i, const int &arg_j, slimgb_alg *state)
static poly pp_Mult_mm(poly p, poly m, const ring r)
const CanonicalForm CFMap CFMap & N
void write_coef_idx_to_buffer_dense(CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen)
poly row_to_poly(number_type *row, poly *terms, int tn, ring r)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
static BOOLEAN p_LmDivisibleBy(poly a, poly b, const ring r)
void cleanDegs(int lower, int upper)
static unsigned pLength(poly a)
void write_minus_coef_idx_to_buffer_dense(CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen)
poly ksCreateShortSpoly(poly p1, poly p2, ring tailRing)
void simplest_gauss_modp(number_type *a, int nrows, int ncols)
MonRedResNP< number_type > noro_red_mon_to_non_poly(poly t, NoroCache< number_type > *cache, slimgb_alg *c)
static poly p_Copy(poly p, const ring r)
returns a copy of p
DataNoroCacheNode< number_type > * insertAndTransferOwnerShip(poly t, ring)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of 'a' and 'b', i.e., a+b
#define TEST_OPT_INTSTRATEGY
static number npAddM(number a, number b, const coeffs r)
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
static void add_later(poly p, const char *prot, slimgb_alg *c)
int tgb_pair_better_gen2(const void *ap, const void *bp)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
static number npSubM(number a, number b, const coeffs r)
static BOOLEAN monomial_root(poly m, ring r)
SparseRow< number_type > * noro_red_to_non_poly_dense(MonRedResNP< number_type > *mon, int len, NoroCache< number_type > *cache)
void PrintS(const char *s)
SparseRow< number_type > * noro_red_to_non_poly_sparse(MonRedResNP< number_type > *mon, int len, NoroCache< number_type > *cache)
static number npNegM(number a, const coeffs r)
static short scaFirstAltVar(ring r)
void sub_sparse(number_type *const temp_array, int, SparseRow< number_type > *row)
static void super_clean_top_of_pair_list(slimgb_alg *c)
DataNoroCacheNode< number_type > * getCacheReference(poly term)
static int posInPairs(sorted_pair_node **p, int pn, sorted_pair_node *qe, slimgb_alg *c, int an=0)
#define omrealloc(addr, size)
static int max(int a, int b)
DataNoroCacheNode< number_type > * insert(poly term, poly nf, int len)
poly p_Cleardenom(poly p, const ring r)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
int extended_product_crit
DataNoroCacheNode< number_type > * node
void add_coef_times_dense(number_type *const temp_array, int, const number_type *row, int len, number coef)
static void go_on(slimgb_alg *c)
poly sca_pp_Mult_xi_pp(short i, const poly pPoly, const ring rRing)
#define pExpVectorSub(p1, p2)
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
#define ENLARGE(pointer, type)
void sort(CFArray &A, int l=0)
quick sort A
static void cleanS(kStrategy strat, slimgb_alg *c)
void add_sparse(number_type *const temp_array, int, SparseRow< number_type > *row)
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of 'a' and 'b', i.e., a-b
int kFindDivisibleByInS_easy(kStrategy strat, const red_object &obj)
static void p_Delete(poly *p, const ring r)
sorted_pair_node ** spn_merge(sorted_pair_node **p, int pn, sorted_pair_node **q, int qn, slimgb_alg *c)
static int min(int a, int b)
static BOOLEAN state_is(calc_state state, const int &i, const int &j, slimgb_alg *c)
void write_coef_times_xx_idx_to_buffer(CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen, const number coef)
static int si_max(const int a, const int b)
static CanonicalForm bound(const CFMatrix &M)
static wlen_type pQuality(poly p, slimgb_alg *c, int l=-1)
static short scaLastAltVar(ring r)
static number p_SetCoeff(poly p, number n, ring r)
void collectIrreducibleMonomials(std::vector< DataNoroCacheNode< number_type > * > &res)
static int add_to_reductors(slimgb_alg *c, poly h, int len, int ecart, BOOLEAN simplified=FALSE)
static int poly_crit(const void *ap1, const void *ap2)
#define ENLARGE_ALIGN(pointer, type)
static int iq_crit(const void *ap, const void *bp)
#define pLmShortDivisibleBy(a, sev_a, b, not_sev_b)
Divisibility tests based on Short Exponent vectors sev_a == pGetShortExpVector(a) not_sev_b == ~ pGet...
static void p_Setm(poly p, const ring r)
const Variable & v
< [in] a sqrfree bivariate poly
const CanonicalForm int s
#define pLmCmp(p, q)
returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
int syz_comp
array_lengths should be greater equal n;
#define pCopy(p)
return a copy of the poly
void id_Compactify(ideal id, const ring r)
CFArray copy(const CFList &list)
write elements of list into an array
static FORCE_INLINE int n_Size(number n, const coeffs r)
return a non-negative measure for the complexity of n; return 0 only when n represents zero; (used fo...
ideal kInterRed(ideal F, ideal Q)
static bool rIsSCA(const ring r)
unsigned long p_GetShortExpVector(const poly p, const ring r)
void write_coef_times_xx_idx_to_buffer_dense(CoefIdx< number_type > *const pairs, int &pos, number_type *const coef_array, const int rlen, const number coef)
static BOOLEAN rField_is_Zp(const ring r)
static void shorten_tails(slimgb_alg *c, poly monom)
void write_minus_coef_idx_to_buffer(CoefIdx< number_type > *const pairs, int &pos, int *const idx_array, number_type *const coef_array, const int rlen)
static poly gcd_of_terms(poly p, ring r)
void add_dense(number_type *const temp_array, int, const number_type *row, int len)
#define TEST_V_UPTORADICAL
static BOOLEAN p_LmShortDivisibleBy(poly a, unsigned long sev_a, poly b, unsigned long not_sev_b, const ring r)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN extended_product_criterion(poly p1, poly gcd1, poly p2, poly gcd2, slimgb_alg *c)