source: git/libfac/00README @ e89e56

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