source: git/kernel/syz.h @ 19370c

spielwiese
Last change on this file since 19370c was 42f5a8, checked in by Hans Schönemann <hannes@…>, 19 years ago
*hannes: weight stuff git-svn-id: file:///usr/local/Singular/svn/trunk@8221 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.9 KB
Line 
1#ifndef SYZ_H
2#define SYZ_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: syz.h,v 1.3 2005-05-18 15:59:58 Singular Exp $ */
7/*
8* ABSTRACT: Resolutions
9*/
10#include "structs.h"
11
12// Logarithm of estimate of maximal number of new components
13#define SYZ_SHIFT_MAX_NEW_COMP_ESTIMATE 8
14// Logarithm of "distance" between a new component and prev component
15#define SYZ_SHIFT_BASE_LOG (BIT_SIZEOF_LONG - 1 - SYZ_SHIFT_MAX_NEW_COMP_ESTIMATE)
16#define SYZ_SHIFT_BASE (((long)1) << SYZ_SHIFT_BASE_LOG)
17struct sSObject{
18                 poly  p;
19                 poly  p1,p2; /*- the pair p comes from -*/
20                 poly  lcm;   /*- the lcm of p1,p2 -*/
21                 poly  syz;   /*- the syzygy associated to p1,p2 -*/
22                 int   ind1,ind2; /*- the indeces of p1,p2 -*/
23                 poly  isNotMinimal;
24                 int   syzind;
25                 int   order;
26                 int   length;
27                 int   reference;
28               };
29typedef struct sSObject SObject;
30typedef SObject * SSet;
31typedef SSet * SRes;
32
33class ssyStrategy;
34typedef ssyStrategy * syStrategy;
35class ssyStrategy{
36  public:
37  int ** truecomponents;
38  long** ShiftedComponents;
39  int ** backcomponents;
40  int ** Howmuch;
41  int ** Firstelem;
42  int ** elemLength;
43  intvec ** weights;
44  intvec ** hilb_coeffs;
45  resolvente res;              //polynomial data for internal use only
46  resolvente orderedRes;       //polynomial data for internal use only
47  SRes resPairs;               //polynomial data for internal use only
48  intvec * Tl;
49  intvec * resolution;
50  intvec * cw;
51  intvec * betti;
52  kBucket_pt bucket;
53  kBucket_pt syz_bucket;
54  ring syRing;
55  resolvente fullres;
56  resolvente minres;
57  unsigned long ** sev;
58  int length;
59  int regularity;
60  short list_length;
61  short references;
62};
63
64void sySchreyersSyzygiesM(polyset F,int Fmax,polyset* Shdl,int* Smax,
65   BOOLEAN noSort);
66
67void sySchreyersSyzygiesB(polyset F,int Fmax,polyset* Shdl,int* Smax,
68   BOOLEAN noSort);
69
70resolvente sySchreyerResolvente(ideal arg, int maxlength, int * length,
71   BOOLEAN isMonomial=FALSE, BOOLEAN notReplace=FALSE);
72
73syStrategy sySchreyer(ideal arg, int maxlength);
74
75resolvente syResolvente(ideal arg, int maxlength, int * length,
76                        intvec *** weights, BOOLEAN minim);
77
78resolvente syReorder(resolvente res,int length,
79        syStrategy syzstr,BOOLEAN toCopy/*=TRUE*/,resolvente totake/*=NULL*/);
80
81syStrategy syResolution(ideal arg, int maxlength,intvec * w, BOOLEAN minim);
82
83void syMinimizeResolvente(resolvente res, int length, int first);
84
85intvec * syBetti(resolvente res,int length, int * regularity,
86         intvec* weights=NULL,BOOLEAN tomin=TRUE, int * row_shift=NULL);
87
88ideal syMinBase(ideal arg);
89
90BOOLEAN syTestOrder(ideal i);
91
92void syReOrderResolventFB(resolvente res,int length, int initial=1);
93
94resolvente syLaScala1(ideal arg,int * length);
95syStrategy syLaScala3(ideal arg,int * length);
96syStrategy syHilb(ideal arg,int * length);
97syStrategy syKosz(ideal arg,int * length);
98
99void syDeleteRes(resolvente * res,int length);
100void syKillComputation(syStrategy syzstr, ring r=currRing);
101intvec * syBettiOfComputation(syStrategy syzstr, BOOLEAN minim=TRUE,int * row_shift=NULL, intvec *weights=NULL);
102BOOLEAN syBetti1(leftv res, leftv u);
103BOOLEAN syBetti2(leftv res, leftv u, leftv w);
104int syLength(syStrategy syzstr);
105int sySize(syStrategy syzstr);
106int syDim(syStrategy syzstr);
107syStrategy syCopy(syStrategy syzstr);
108void syPrint(syStrategy syzstr);
109lists syConvRes(syStrategy syzstr,BOOLEAN toDel=FALSE,int add_row_shift=0);
110syStrategy syConvList(lists li,BOOLEAN toDel=FALSE);
111syStrategy syForceMin(lists li);
112syStrategy syMinimize(syStrategy syzstr);
113void syKillEmptyEntres(resolvente res,int length);
114
115extern int *  currcomponents;
116extern long *  currShiftedComponents;
117
118int syzcomp1dpc(poly p1, poly p2);
119void syDeletePair(SObject * so);
120void syInitializePair(SObject * so);
121void syCopyPair(SObject * argso, SObject * imso);
122void syCompactifyPairSet(SSet sPairs, int sPlength, int first);
123void syCompactify1(SSet sPairs, int* sPlength, int first);
124SRes syInitRes(ideal arg,int * length, intvec * Tl, intvec * cw=NULL);
125void syResetShiftedComponents(syStrategy syzstr, int index,int hilb=0);
126void syEnlargeFields(syStrategy syzstr,int index);
127void syEnterPair(syStrategy syzstr, SObject * so, int * sPlength,int index);
128SSet syChosePairs(syStrategy syzstr, int *index, int *howmuch, int * actdeg);
129int syInitSyzMod(syStrategy syzstr, int index, int init=17);
130long syReorderShiftedComponents(long * sc, int n);
131void syGaussForOne(ideal arg,int gen,int ModComp,int from=-1,int till=0);
132void syEnterPair(SSet sPairs, SObject * so, int * sPlength,int index);
133void syEnterPair(syStrategy syzstr, SObject * so, int * sPlength,int index);
134syStrategy syKosz(ideal arg,int * length);
135
136resolvente syReorder(resolvente res,int length,
137        syStrategy syzstr,BOOLEAN toCopy=TRUE,resolvente totake=NULL);
138
139#endif
Note: See TracBrowser for help on using the repository browser.