source: git/libfac/00README @ 0183d6

spielwiese
Last change on this file since 0183d6 was 4a81ec, checked in by Hans Schönemann <hannes@…>, 27 years ago
* hannes/michael: libfac-0.3.0 git-svn-id: file:///usr/local/Singular/svn/trunk@708 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 11.8 KB
Line 
1This is the file 00README.libfac for version prae 0.3.0 of libfac.
2
3######### What is libfac?
4libfac is an extension to factory (see the factory documentation for details
5about factory and what it does; look at REQUIREMENTS how to get factory),
6which implements factorization of polynomials over finite fields and algorithms
7for manipulation of polynomial ideals via the characteristic set methods
8(e.g., calculating the characteristic set and the irreducible characteristic
9series).
10
11Note: libfac is just beta-code (as long version is < 1.0.0). There are bugs, I
12think. Please help to test this code! Submit a bug-report if you found a bug!
13
14######### Copyright #####################
15This 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
20The authors of Macaulay2 and Singular are allowed to distribute the sources
21with their source code of the respective programs.
22
23Anyone 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
31In other words: You are not allowed to distribute the sources or part of the
32sources, even if you have got them with a distribution, e.g. like Macaulay2 or
33Singular! Tell those people which want sources, how to contact the author.
34
35In no event you are allowed to modify the sources (beside the Makefile's,
36configure.in, configure, makedirs and install-sh).
37
38Note that no permission is granted to extract a portion of the source code of
39this library and incorporate it into another program.
40
41No written agreement, license, or royalty fee is required for any of the
42authorized uses.
43
44Note: This restricted copyright will change in future to a more "free" one.
45But for now I want to keep track of the sources (this is the intention of the
46restrictions of this license). They aren't in their final state and there will
47be bugs (or even "features"). So please let *me* fix any problems.
48
49If your intended use of this library is not covered by the license above,
50please contact the author so we can work something out.
51
52How 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 ###################
89A) Using configure
90For the library type:
91  configure [--with-debug] [--with-Singular] [--includedir=path-to-factory.h]
92  make
93this will produce libfac.a or libsingfac.a (depending on --with-Singular).
94The only difference between libfac.a and libsingfac.a is: we don't instantiate
95any templates for libsingfac.a.
96
97If 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
100this will produce libfac.a and a binary called test. "test" is then used to
101test some examples for factorization.
102
103B) 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
111Please include the characteristic and the ideal(s)/polynomial(s) you tried as
112well as the factoryversion you used (Best to include all your input!).
113
114Please allow some days for an answer.
115
116Have fun!
117 Michael Messollen ( michael@math.uni-sb.de )
118
119#####
120I would like to thank Dongming Wang <Dongming.Wang@imag.fr> who showed me the
121power of the Characteristic Set methods and from whom I learned a lot about
122this topic.
123If you want to learn about characteristic sets, the next is a good point
124to 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 ############################
133o 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!!!!!!
139Since version 0.3.0 this problem is gone. (or should be :-) )
140
141o 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.
150Since 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)
155For users of Macaulay2 and/or Singular: look at the documentation of the
156respective program, if and how this is incorporated.
157
158o 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
167Problems will be fixed in a later version of libfac .
168
169######### Changes:
170Version coding scheme: major.minor.bugfixnumber
171          e.g.: 0.1 major=0 minor=1 no bugfixnumber (no bugfix incorporated)
172
173V0.1    o Initial version for alpha-testers
174
175V0.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
187V0.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
195V0.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
204V0.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
213V0.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
239V0.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
251V0.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
Note: See TracBrowser for help on using the repository browser.