1 | This is the file 00README.libfac for version prae 0.3.0 of libfac. |
---|
2 | |
---|
3 | ######### What is libfac? |
---|
4 | libfac is an extension to factory (see the factory documentation for details |
---|
5 | about factory and what it does; look at REQUIREMENTS how to get factory), |
---|
6 | which implements factorization of polynomials over finite fields and algorithms |
---|
7 | for manipulation of polynomial ideals via the characteristic set methods |
---|
8 | (e.g., calculating the characteristic set and the irreducible characteristic |
---|
9 | series). |
---|
10 | |
---|
11 | Note: libfac is just beta-code (as long version is < 1.0.0). There are bugs, I |
---|
12 | think. Please help to test this code! Submit a bug-report if you found a bug! |
---|
13 | |
---|
14 | ######### Copyright ##################### |
---|
15 | This software is copyrighted by Michael Messollen <michael@math.uni-sb.de>. |
---|
16 | (c) 1996 Michael Messollen <michael@math.uni-sb.de> |
---|
17 | |
---|
18 | This software is *not* free software. |
---|
19 | |
---|
20 | The authors of Macaulay2 and Singular are allowed to distribute the sources |
---|
21 | with their source code of the respective programs. |
---|
22 | |
---|
23 | Anyone is allowed to distribute: |
---|
24 | a) this 00README alone |
---|
25 | b) your code/binary or whatever which uses a binary version of this library |
---|
26 | (libfac.a, libfac-g.a, and/or libsingfac.a), if you state anywhere in your |
---|
27 | documentation, that you use this code, who is and how to contact the |
---|
28 | author. If you don't have a documentation for your code/binary or |
---|
29 | whatever, you have to distribute this 00README as well. |
---|
30 | |
---|
31 | In other words: You are not allowed to distribute the sources or part of the |
---|
32 | sources, even if you have got them with a distribution, e.g. like Macaulay2 or |
---|
33 | Singular! Tell those people which want sources, how to contact the author. |
---|
34 | |
---|
35 | In no event you are allowed to modify the sources (beside the Makefile's, |
---|
36 | configure.in, configure, makedirs and install-sh). |
---|
37 | |
---|
38 | Note that no permission is granted to extract a portion of the source code of |
---|
39 | this library and incorporate it into another program. |
---|
40 | |
---|
41 | No written agreement, license, or royalty fee is required for any of the |
---|
42 | authorized uses. |
---|
43 | |
---|
44 | Note: This restricted copyright will change in future to a more "free" one. |
---|
45 | But for now I want to keep track of the sources (this is the intention of the |
---|
46 | restrictions of this license). They aren't in their final state and there will |
---|
47 | be bugs (or even "features"). So please let *me* fix any problems. |
---|
48 | |
---|
49 | If your intended use of this library is not covered by the license above, |
---|
50 | please contact the author so we can work something out. |
---|
51 | |
---|
52 | How to contact the author: |
---|
53 | |
---|
54 | Michael Messollen |
---|
55 | Univ. Saarbruecken |
---|
56 | FB 9.1 Mathematik |
---|
57 | 66041 Saarbruecken |
---|
58 | GERMANY |
---|
59 | email: michael@math.uni-sb.de |
---|
60 | |
---|
61 | ######### DISCLAIMER ##################### |
---|
62 | |
---|
63 | IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY |
---|
64 | FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES |
---|
65 | ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY |
---|
66 | DERIVATIVES THEREOF, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
---|
67 | POSSIBILITY OF SUCH DAMAGE. |
---|
68 | |
---|
69 | THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, |
---|
70 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, |
---|
71 | FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE |
---|
72 | IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHOR AND DISTRIBUTORS HAVE |
---|
73 | NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR |
---|
74 | MODIFICATIONS. |
---|
75 | |
---|
76 | ######### REQUIREMENTS ################### |
---|
77 | * You need the library factory, which is part of Singular, to compile this |
---|
78 | code. Get it from |
---|
79 | ftp://www.mathematik.uni-kl.de/pub/Math/Factory or |
---|
80 | http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/Factory |
---|
81 | |
---|
82 | * gcc 2.7.2 ( earlier versions of gcc *may* work as well as any other ANSI C++ |
---|
83 | compiler; it is reported that gcc 2.6.3 works also, but beware of gcc 2.7.0; |
---|
84 | it has some serious C++ bugs ) |
---|
85 | |
---|
86 | * GNU Make version 3.74 or above ( earlier versions of GNU make *may* work ) |
---|
87 | |
---|
88 | ######### INSTALLATION ################### |
---|
89 | A) Using configure |
---|
90 | For the library type: |
---|
91 | configure [--with-debug] [--with-Singular] [--includedir=path-to-factory.h] |
---|
92 | make |
---|
93 | this will produce libfac.a or libsingfac.a (depending on --with-Singular). |
---|
94 | The only difference between libfac.a and libsingfac.a is: we don't instantiate |
---|
95 | any templates for libsingfac.a. |
---|
96 | |
---|
97 | If you want to produce a test file, type: |
---|
98 | configure [--with-debug] [--libdir=path-to-libcf.a] [--includedir=path-to-factory.h] |
---|
99 | make tests |
---|
100 | this will produce libfac.a and a binary called test. "test" is then used to |
---|
101 | test some examples for factorization. |
---|
102 | |
---|
103 | B) Using Makefile.dist |
---|
104 | **** Since version 0.3.0 this is no longer supported **** |
---|
105 | **** Get an earlier version and patch Makefile.dist for your needs, **** |
---|
106 | **** or, better, use configure. |
---|
107 | |
---|
108 | |
---|
109 | If you have found a bug (beside the KNOWN BUGS, see KNOWN BUGS section later), |
---|
110 | *please* email me: michael@math.uni-sb.de |
---|
111 | Please include the characteristic and the ideal(s)/polynomial(s) you tried as |
---|
112 | well as the factoryversion you used (Best to include all your input!). |
---|
113 | |
---|
114 | Please allow some days for an answer. |
---|
115 | |
---|
116 | Have fun! |
---|
117 | Michael Messollen ( michael@math.uni-sb.de ) |
---|
118 | |
---|
119 | ##### |
---|
120 | I would like to thank Dongming Wang <Dongming.Wang@imag.fr> who showed me the |
---|
121 | power of the Characteristic Set methods and from whom I learned a lot about |
---|
122 | this topic. |
---|
123 | If you want to learn about characteristic sets, the next is a good point |
---|
124 | to start with: |
---|
125 | Dongming Wang: |
---|
126 | An Implementation of the Characteristic Set Method in Maple. |
---|
127 | In: Automated Practical Reasoning: Algebraic Approaches |
---|
128 | (J. Pfalzgraf and D. Wang, eds.), Springer-Verlag, |
---|
129 | Wien-New York, 1995, pp. 187-201. |
---|
130 | |
---|
131 | |
---|
132 | ########### KNOWN BUGS ############################ |
---|
133 | o The irreducible characteristic series stuff doesn't work for some problems. |
---|
134 | You will get a warning: |
---|
135 | "Factorization over algebraic function field required!" |
---|
136 | if this program needs factorization over an algebraic function field, which |
---|
137 | is not yet implemented (but I'm working on it). |
---|
138 | Don't trust the result you'll get in such a case!!!!!! |
---|
139 | Since version 0.3.0 this problem is gone. (or should be :-) ) |
---|
140 | |
---|
141 | o The performance of the irreducible characteristic series stuff heavily |
---|
142 | depends on the ordering of the variables in some cases. No (nearly) optimal |
---|
143 | ordering of the variables is chosen automatically, right now. |
---|
144 | E.g.: if your ideal is (t^10-x, t^31-t^6-t-y, t^8-z) and you choose the |
---|
145 | variable ordering with t > z > y > x, the calculation of the irreducible |
---|
146 | characteristic series will take hours; if you choose t as the variable with |
---|
147 | the lowest level, you will get the answer immediately (the ideal is an |
---|
148 | irreducible characteristic series with the ordering z > y > x > t ). |
---|
149 | I am thinking about the problem how to choose the ordering automatically. |
---|
150 | Since version 0.2 of the library: |
---|
151 | (There is now a function: Varlist neworder(const CFList & PolyList ), |
---|
152 | which returns a list of heuristically optimal reordered variables; |
---|
153 | if you use the library for programming purpose, look at factor.h how to |
---|
154 | use this function in your code) |
---|
155 | For users of Macaulay2 and/or Singular: look at the documentation of the |
---|
156 | respective program, if and how this is incorporated. |
---|
157 | |
---|
158 | o Factorization is slow for large polynomials. There are mainly two reasons |
---|
159 | for this: |
---|
160 | a) the factorization algorithm is shipped with no "tricks" yet. (I'm working |
---|
161 | on that, but it heavily depends on b) ) |
---|
162 | b) factory has an extremely slow GCD-algorithm for the case of |
---|
163 | characteristic p>0 ( people are working on it ) |
---|
164 | There will be a quite different, faster factorization algorithm in the |
---|
165 | future. |
---|
166 | |
---|
167 | Problems will be fixed in a later version of libfac . |
---|
168 | |
---|
169 | ######### Changes: |
---|
170 | Version coding scheme: major.minor.bugfixnumber |
---|
171 | e.g.: 0.1 major=0 minor=1 no bugfixnumber (no bugfix incorporated) |
---|
172 | |
---|
173 | V0.1 o Initial version for alpha-testers |
---|
174 | |
---|
175 | V0.2 o Added neworder(..) and reorder(..) for IrrCharSeries |
---|
176 | o Added external strings (in factor/version.cc): |
---|
177 | libfac_name - the name of the game |
---|
178 | libfac_version - the version number |
---|
179 | libfac_date - the date libfac_version was released |
---|
180 | libfac_author - who wants to know? |
---|
181 | o added support for factorization of homogeneous polynomials (in |
---|
182 | factor/homogfactor.cc), |
---|
183 | reorganized code in factor/Factor.cc and factor/Factor.h |
---|
184 | o added files factor/debug.cc, factor/debug.h, factor/timing.h; |
---|
185 | mainly for internal use |
---|
186 | |
---|
187 | V0.2.1 o changed lc == 1 to lc == unit in choose_mainvar (factor/Factor.cc) |
---|
188 | o changed cerr and cout messages for use with Singular (all .cc files) |
---|
189 | (why the hell don't they use libiostream?) |
---|
190 | o added configure -- basics only; (old)Makefile changed to |
---|
191 | Makefile.dist (if nothing works...) |
---|
192 | Makefile produced with configure uses GNU coding standards |
---|
193 | o released Apr 25 1997 |
---|
194 | |
---|
195 | V0.2.2 o Added ranlib in Makefile.in after installing - Sun's seem to need it |
---|
196 | o Put -I. before CPPFLAGS in Makefile.in |
---|
197 | o hardcoded ./install-sh and ./mkinstalldirs in Makefile.in for |
---|
198 | INSTALL; some machines have a broken install (e.g. HP ) |
---|
199 | commented out the search for AC_PROG_INSTALL in configure.in |
---|
200 | o Internal note: Singular now contains definitions from class.cc and |
---|
201 | tmpl_inst.h in claptmpl.cc |
---|
202 | o released May 15 1997 |
---|
203 | |
---|
204 | V0.2.3 o Added factor/interrupt.cc and interrupt.h to support interrupting |
---|
205 | calculations: We define a global variable "libfac_interruptflag" |
---|
206 | in factor/version.cc which, if not zero, interrupts the ongoing |
---|
207 | calculation. Factorize() will then return an empty list (CFFList), |
---|
208 | IrrCharSeries will return an empty list of lists (ListCFList). |
---|
209 | Modified: factor/Factor.cc and charset/charset.cc for this purpose. |
---|
210 | o version for Macaulay2-Testers |
---|
211 | o released May 28 1997 |
---|
212 | |
---|
213 | V0.2.4 o Changed factor/SqrFree.cc (SqrFreed): Have to interchange variables |
---|
214 | if one derivative is zero but not all (e.g. no p'th power) |
---|
215 | example: (y^12+x^10)^2 mod 5 |
---|
216 | Internal note: have to look at SqrFreeTest!! |
---|
217 | o Changed factor/Factor.cc (Factorize): multiplied exponent of factors |
---|
218 | into Output (should be one if Sqrfree doesn't fail); this is for |
---|
219 | security only (and should be removed later..) |
---|
220 | o Changed factor/helpstuff (myappend): added support for lists with |
---|
221 | multiple copies of one element (this doesn't happen for this |
---|
222 | algorithms... but you never know) |
---|
223 | o Changed factor/interrupt.{cc|h}: Removed interrupt.cc; added (inline) |
---|
224 | code to interrupt.h; factor.h will now define the external variable |
---|
225 | "libfac_interruptflag" |
---|
226 | Doesn't any longer issue any message about user-interrupt - the |
---|
227 | CA-System, which has control, should warn user that calculation is |
---|
228 | aborted. Removed libfac_messageflag from factor/version.cc |
---|
229 | o Summary: removed: factor/interrupt.cc |
---|
230 | changed: factor/SqrFree.cc factor/Factor.cc |
---|
231 | factor/helpstuff.cc Makefile.in configure.in |
---|
232 | factor/interrupt.h factor.h factor/version.cc |
---|
233 | o Internal note: something changed in unvivariate factorization over |
---|
234 | extension fields from factory-1.2b to 1.2c: same polynomial now uses |
---|
235 | 4 to 12 times longer to factor! Perhaps it's this new random |
---|
236 | generator? |
---|
237 | o released May 30 1997 |
---|
238 | |
---|
239 | V0.3.0a o changed configure.in: will not override CFLAGS or CXXFLAGS if set in |
---|
240 | the environment |
---|
241 | o added new functionality in charset/algfacor.{cc/h} : |
---|
242 | now we should be able to factorize over any field needed for the |
---|
243 | charset-algorithm. (Internal note: perhaps there are still problems |
---|
244 | for the char=0 case because of the factory implementation vs. gmp) |
---|
245 | o for this, changed charset/csutil.{cc/h} and charset/charset.{cc/h} |
---|
246 | o include #include <file.h> in file.cc for some CC's |
---|
247 | o Internal note: need more interrupt handles enabled; |
---|
248 | set up test examples for char=0 and char>0; |
---|
249 | o released Jun 25 1997 |
---|
250 | |
---|
251 | V0.3.0b o implemented Tragers algorithm; this is now the default used in |
---|
252 | charsets (file: charsets/alg_factor.cc) |
---|
253 | o for char=0 case there are some problems with factory; |
---|
254 | for char=p there seems to be an internal factory memory-problem in |
---|
255 | some cases |
---|
256 | o released Sep 11 1997 |
---|