Task table | Task descriptions | Recently completed tasks |
---|
Task | Who | Status | Progress | Last news | Completion |
---|---|---|---|---|---|
RingTwinFloat theory and implementation | Abbott | active | Stage 3a | 2008-12 | |
Self-saturating (and cleanup for sugar) | Bigatti+Caboara+Abbott | waiting | Stage 2c | 2009-04 | 2009-09 |
CoCoA5 language | Abbott+Bigatti+Lagorio(+Figari) | active | Stage 3ab | 2009-05 | 2009-06 |
Examples for matrix code | Bigatti+Abbott | COMPLETED | 2009-02-13 | ||
More operations on ideals generated by monomials | Bigatti | resting | Stage 3a | 2008-11 | |
Hilbert: optimized use of PPWithMask | Bigatti | inactive | Stage 1 | 2009-01 | |
CoCoALib documentation: txt2tags | Bigatti | COMPLETED | 2009-02-20 | ||
Simplify CoCoAServer output | Bigatti | active | Stage 1 | 2009-01 | |
Integration with Normaliz | Bigatti | Stage 1 | 2009-04 | ||
Integration with Frobby | Abbott+Bigatti | COMPLETED | 2009-02-11 | ||
Convert sugar into inheritance classes | Bigatti | active | Stage 2c | 2009-05 | 2009-07 |
IsHomog wrt first rows of weight | Bigatti | active | Stage 1 | 2009-01 | 2009-09 |
Inheritance-ready GReductor/Do_GBasis | Caboara | active | Stage 1 | 2009-04 | 2009-09 |
Homogenous lists | Abbott+Bigatti | inactive | Stage 1 | 2009-02 | |
Constructors for ideals | Abbott+Bigatti | inactive | Stage 1 | 2009-02 | |
Names for I/O fns in CoCoAServer | Abbott+Bigatti | inactive | Stage 1 | 2009-05 | |
GlobalMgr to check debug compatibility | Abbott | inactive | Stage 1 | 2009-01-29 | |
ZZ max/min bug | Abbott | resting | Bug identified | 2007-04-10 | |
DensePoly | Bigatti+Abbott | resting | Stage 4bd | 2009-01 | |
Ring of infinitesimals | Abbott | inactive | Stage 1 | 2007-04-04 | |
Redesign implementation of ideals | Abbott+Bigatti | inactive | Stage 1 | 2006-11-09 | |
Polys with rational coefficients to CoCoAServer | Bigatti | inactive | Stage 1 | 2007-11-29 | |
Faster eval homomorphism | Abbott+Bigatti | inactive | Stage 1 | 2007-11-30 | |
Implement IsZeroDivisor |
Abbott+ | inactive | Just starting | 2008-04-07 | |
Improve example programs | Abbott+Bigatti | inactive | Need 2nd pass | 2007-03-19 | |
Degree dimension in myWDeg |
Abbott+Bigatti | inactive | Stage 1 | 2007-09-20 | |
CoCoAServer supervisor | Abbott | inactive | Stage 1 | 2008-07-22 | |
Unique implementation for div and deriv | Bigatti+Abbott | inactive | Stage | 2007-11-29 | |
Redesign DistrMPoly etc. | Abbott+Bigatti | inactive | Stage 1 | 2006-11-13 | |
Optimized matrix multiplication | Abbott+Bigatti | inactive | Stage 1 | 2008-04-22 | |
Doc. for creating new rings | Bigatti | inactive | early stage | 2007-02-09 | |
Init. of myZero/myOne in rings | Abbott | inactive | Stage 4abcd | 2006-11-16 | |
Names of GlobalInput, etc | Abbott | inactive | Forum discussion | 2006-11-17 | |
Equality test for modules | Abbott+Bigatti+Caboara | inactive | Stage 1 | 2006-11-17 | |
Warnings | Bigatti+Abbott | inactive | Stage 1 | 2007-03-09 | |
NTL integration | Abbott+Caboara | inactive | Stage 1 | 2007-01-15 | |
Clean up OrdvArith | Abbott+Bigatti | inactive | Stage 1 | 2007-02-10 | |
Clean up OpenMathXML | Abbott+Bigatti | inactive | Stage 1 | 2007-02-10 | |
Template fns in io.H | Abbott | inactive | Stage 1 | 2007-02-10 | |
Revise CoCoALib "build system" | Abbott+Bigatti | inactive | Stage 1 | 2007-05-03 | |
Buffering when printing out power products | Abbott | inactive | Stage 1 | 2007-02-29 | |
Reconsider The "New" prefix | Abbott+Bigatti | inactive | Stage 1 | 2007-03-01 | |
Hilbert driven GBasis | Caboara+Bigatti+Abbott | inactive | Stage | 2007-12-04 | |
Deg incompatible PP orderings | Abbott+Bigatti+Caboara | inactive | Stage 1 | 2007-10-30 | |
Unordered PPMonoids | Bigatti+Abbott | inactive | Stage 1 | 2007-10-30 | |
Conversion from double | Abbott | inactive | Stage 1 | 2008-01-28 | |
Module and EFGModule | Abbott+Bigatti | inactive | Stage 1 | 2008-02-11 | |
IsMonomial and IsHomog for DUP | Abbott+Bigatti | inactive | Stage 1 | 2008-04-24 | |
Examples for convert and IsInteger and IsRational |
Abbott | inactive | Stage 1 | 2007-05-21 | |
Compatibility of IsRational and IsInteger |
Abbott | inactive | Stage 1 | 2007-03-26 | |
Floor and ceiling for ordered rings? | Abbott | inactive | Stage 1 | 2008-06-13 | |
RingDUPZ (generic) | Bigatti+Abbott | inactive | Stage 1 | 2007-11-29 | |
RingDUPZ (for Hilbert) | Bigatti+Abbott | inactive | Stage 1 | 2007-11-29 | |
Hilbert final | Bigatti+Abbott | inactive | waiting | --- | |
Weyl algebra | Bigatti+Ali | active? | Stage 4a | 2008-11 | |
Extend GlobalManager's Remit | Abbott | inactive | Stage 1 | 2007-03-06 | |
PPM homs | Abbott | inactive | Stage 1 | 2006-11-06 | |
Toric Mill | Bigatti+Abbott | inactive | Stage 1 | 2007-01-10 | |
Unified RingFp | Abbott | inactive | Stage 1 | 2006-11-07 | |
Requirements analysis of interactive language | Abbott+Bigatti+Caboara+Figari | inactive | late discussion | 2007-11-29 | |
Replace SmartPtrIRC by boost | Abbott+Bigatti | inactive | Stage 1 | 2006-11-07 | |
Rounf, floor, ceiling | Abbott | inactive | Stage 1 | 2008-10-29 | |
Mysterious test failures on Digital Alpha | Bigatti+Abbott | inactive | Stage 2 | 2007-12-07 | |
Sundries | Abbott | inactive | Pipe dream | 2007-xx-xx |
Task table | Task descriptions | Recently completed tasks |
---|
Buffering when printing out power products Michael reported poor performance when using sockets on M$ platforms. Cause was many short messages. Review use of buffering when sending PPs. Time est.: 1 week.
Clean up OrdvArith The file OrdvArith.C is full of commented out old code. Check that this code can be deleted, and either delete it or reactivate it. Time est.: 1-2 days.
Clean up OpenMathXML In OpenMathXML.H the class definitions are publicly visible. Is this necessary? If they can be moved to the .C file then I can remove the (costly) include of iostream in the header file. Time est.: 1-2 days. The .C file is full of all sort of ancient stuff including debugging code -- needs a major overhaul. Time est.: 2-3 weeks.
CoCoA5 language We shall need a new parser (and interpreter) for CoCoA 5. Much of the design of the new language has already been completed, and a late prototype of the new lexer already exists. The new parser and interpreter are still before first prototype (i.e. approaching stages (2abc)). Expect this task to split into several more focussed smaller tasks.
CoCoAServer supervisor Exhume CoCoALib supervisor from version 0.95 (not in CVS). Compare with what Stefan Kaspar has implemented Time estimate: 2 weeks - 1 month.
Compatibility of IsRational
In a fraction field should applying IsInteger
to numerator and
denominator give the "same" result as applying IsRational
to the
whole element?. Time est.: decision + 3 days.
Constructors for ideals
Which constructors for ideals?
Now we have
ideal(ring), ideal(ring, RingElem), ideal(ring, vector
Names for I/O fns in CoCoAServer Change read/write into input/output for fn names in server. This will be more coherent with the naming convention used in the library.
Conversion from double
Add functions allowing (checked) conversion from double
to
an integral type -- conversion succeeds only if the value fits and was
genuinely an integer. Maybe a good idea to add a rounding function which
rounds the double
to an integral value, possibly allowing
the caller to specify the maximum amount of rounding (from 0 up to 0.5).
Time est.: 2-3 days.
Convert sugar into inheritance classes There are at least different kinds of sugar (StdDeg, wdeg, saturating,..): an abstract class representing them would lead to clean code for the reduction process, and possibly also to the GroebnerMill. ReductionCog should know/return the cofactor for computing appropriate sugar more efficiently Time est.: 1-2 weeks.
Degree dimension in myWDeg
The PPMonoid (public) member functions myWDeg
do not check the dimension of
the supplied degree
. At the very least there should be an assertion.
Perhaps degree
objects should be resizable?? Time est.: 1-2 days
(discussion and implementation) May need a new error.
DensePoly
Design and implement abstract class for Dense (univariate) polynomials.
There will probably be some consequences for PolyRing
and
SparsePolyRing
.
Work for the abstract class is essentially complete.
Doc. for creating new rings The documentation about how to create new types of ring is inadequate. Make better documentation, perhaps using existing rings as illustrative examples. Time est.: 2 weeks.
Deg incompatible PP orderings The "idealization" of a graded module with a PosTo type ordering cannot use directly the same grading as used in the components of the module. One way to circumvent the problem would be to allow PP orderings which are not degree compatible. Another solution would be to extend the grading on the module components by prepending a single value (which is the position) -- but this would require creating and using a different grading. We must decide what is the cleanest way forward, and then implement it. Time est.: ???
Equality test for modules Modules have characteristics in common with both ideals and rings. Currently, equality is implemented as for rings (i.e. true only for the same identical representation in memory). Instead it should be implemented more or less as for ideals: compute two G-bases, and then check that each is contained within the other.
Examples for convert
The convert
function does not handle overflow and underflow
correctly when producing a double
value. Use scalbn
and C error codes to achieve correct behaviour. Add an example program showing
how to use convert
and related functions (e.g. IsInteger
and
IsRational
). Time est.: 2 days.
Extend GlobalManager's Remit
A number of older global values are handled by the default C++
mechanism. Several of these would be better handled by the
GlobalManager. An important example is GMPAllocator
: for
the allocator to work correctly it must be activated
before GlobalManager
is created (or in the ctor of
GlobalManager
). Incorrect use of the two "global"
managers causes an ugly crash at the end of program execution. A
number of other global values exist, whose purpose is primarily for
debugging, and controlling these through
the GlobalManager
would improve cleanliness and
comprehensibility since they do interact.
Faster eval homomorphism Produce a better implementation of the polynomial ring "evaluation homomorphism"; perhaps even a better default implementation? Time est.: 2 weeks.
Floor and ceiling for ordered rings?
Might it be useful to have floor
and ceiling
functions for ordered rings (as a complement to IsInteger
)?
GlobalMgr to check debug compatibility
Perhaps add code to GlobalMgr
so that it can check it a user has tried to link non-debugged
code with a debug version of the library (or vice versa). Possibly remove the
existing code which performs the same task from MemPool
.
Time est.: 1 week.
Hilbert driven GBasis Complete implementation of Hilbert driven GBasis. Time est.: 4 weeks??
Hilbert: optimized use of PPWithMask
Change Hilbert code so that it uses PPWithMask
instead of C type
eterm
. Might require some changes in the implementation
of PPWithMask
. Use PPVector.
Time est.: 4+ weeks.
Hilbert final
Convert to C++ the main code of Hilbert in CoCoA4. Waiting for the special univariate polynomials
and the verification of Hilbert's requirements for PPWithMask
. Time est.: ???
Homogenous lists It appears it can be useful to have a (template?) class for "Homogenous lists", i.e. vectors (?) of RingElems/PPMonoidElems having the same owner. It should be reference counted. It would be quite useful for the generators of an ideal: to avoid making copies, to guarantee that all elements are in the same ring. A bit like PPVectors....
Implement IsZeroDivisor
Implement a function IsZeroDivisor
for ring elements.
Time est.: 1/2 week.
Improve example programs The example programs could be clearer and easier to navigate through. For instance, one program could refer to others which are in some way related to it. Some of the examples should be especially simple, focussing on a single idea. Ideas for which examples to add can be taken from questions on the forum (e.g. "How do I do this in CoCoALib?"). A first hasty pass was completed on 2007-03-09, but a second pass will be needed.
Inheritance-ready GReductor/Do_GBasis Compare Do_GBasis-like functions in order to prepare code for migration to inheritance class GMill. Time est.: 1-2 weeks.
Init. of myZero/myOne in rings All concrete ring ctors currently "naughtily" create the zero and one elements of the ring. This is naughty because the ring has not been completely constructed at that point, so conceivably calling a virtual member function might behave unexpectedly. The member functions myZero and myOne could construct the cached value upon demand (but they must also decrement the reference count when construction occurs). The current code seems to work fine on every platform tried so far, but some "good style" guides say one shouldn't call virt.mem.fns. in the ctor. Decide what to do, do it, AND DOCUMENT IT.
Integration with Normaliz Normaliz is not designed as a C++ library, but it should not be difficult to make a prototype for doing so, and then link it to CoCoALib. Time estimate: 1 week for first prototype.
IsHomog wrt first rows of weight Add partial IsHomog. Time est.: 1-2 days.
IsMonomial and IsHomog for DUP
Decide whether IsMonomial
and IsHomog
are
useful for Dense Univariate Polys. Adjust impl accordingly.
Time est.: 1 week.
More operations on ideals generated by monomials more operations on ideals generated by monomials. Now we have Gbasis/interreduction, and intersection.
Names of GlobalInput, etc The names GlobalInput, GlobalOutput, GlobalLogput and GlobalErrput are cumbersome (perhaps even ugly). Devise better names, and ideally remove the need for the annoying parentheses.
NTL integration Without doubt NTL offers some impressive implementations of algorithms for dense univariate polynomials and matrices of integers (or rationals?). Some NTL functions should be integrated into CoCoALib as a pilot project for understanding how conditional builds can be achieved -- CoCoALib should build equally easily with or without NTL cooperation (of course, some operations may be missing from a CoCoALib with NTL support). Time estimate: 3-4 weeks, perhaps longer if difficult decisions are encountered.
Redesign DistrMPoly etc. The designs of DistrMPoly, DistrMPolyInlPP, and DistrMPolyInFpPP are poor (due to scope creep during development). While the code does appear to work well, it is fragile and hard to understand/maintain. Given that this code forms a major part of the foundations of CoCoALib, it is essential that this code be redesigned and rebuilt before version 1.0. The new design must be cleaner, easier to understand, and no slower (in any circumstance). Probably the best period for undertaking this work is early 2007; it is work which produces "invisible progress". It is quite likely that other work on the library will be suspended during the rewrite. Time estimate: 1-2 months.
Redesign implementation of ideals The implementation of [ideal] in CoCoALib is old and seems to have severe problems. We need a new analysis of requirements for the implementation. Some "policy decisions" may be needed (e.g. consult the forum?). The conclusions will (probably) appear in an internal CoCoA Report. Probably a complete rewrite will result. Analysis will take 1-2 weeks. Consequential rewrite will take 2-3 weeks.
Revise CoCoALib "build system" Review and update the Makefiles and configuration scripts after the new source code reorganization. Time est.: ~1 week
Reconsider The "New" prefix A current naming convention uses the prefix "New" for certain functions which create new values (e.g. NewFractionField). However, the use of the prefix is not universal (e.g. RingElem ctor), and the prefix is somewhat C++-ish. An alternative could be to use the prefix "Make". We should also review precisely when it is appropriate to use the prefix, and document why. Time est.: 1-2 weeks.
RingTwinFloat theory and implementation Revise "twin float" implementation in accordance with revised theoretical ideas. Time estimate: 2+ weeks.
Ring of infinitesimals A ring for computing with first order infinitesimals would be handy for some. Time est.: 2 weeks (for design, impl, and testing).
Module and EFGModule
Decide whether module
and EFGModule
should be
merged or kept distinct. Note that the documentation for EFGModule
is largely absent. Time est.: 2 weeks.
Mysterious test failures on Digital Alpha Investigate mysterious bugs which cause some tests (ComputeSyz) to fail on Digital Alpha when compiled with optimization. No idea when we might get it fixed. JAA thinks it is probably a compiler bug.
Optimized matrix multiplication Matrix multiplication is currently done in a "dense" way (maybe because the programmer is a bit dense :-) make it work more efficiently when at least one arg has a special structure (e.g. sparse, diagonal, completely zero, etc). No sure idea how to do this in a general way -- maybe each matrix could give an indication of how "clever" it is a multiplying (perhaps an estimate of run-time cost???) Time est.: 2 weeks.
Polys with rational coefficients to CoCoAServer Modify CoCoAServer to allow polys with integer coeffs, and to allow fractions when coeffs are rationals. Time est.: 2 weeks.
PPM homs Implement homomorphisms for PPMonoids; maybe pseudo-homs too.
Requirements analysis of interactive language Review of the requirements for the new interactive language and how they interact. The aim is to produce a report which analyses the various compromises and then indicates a final choice to proceed with for the production of a parser. All decisions should be justfied so that a later reconsideration could be effected cheaply. Time est.: 3-4 weeks.
Replace SmartPtrIRC by boost The BOOST library offers a sophisticated smart ptr implementation. Can we use that instead of SmartPtrIRC? If so, there will be several consequential changes to the rest of the library. Analysis will require several days; no time estimate for consequential changes.
RingDUPZ (generic)
Concrete class for univariate polynomials over any ring.
Inspired by the efficient implementation of unipoly
for Hilbert from
CoCoA-4. Time est.: 1-2 weeks.
RingDUPZ (for Hilbert)
Special concrete class for univariate polynomials over Z;
inspired by the efficient implementation of unipoly
for Hilbert from
CoCoA-4. Time est.: 2-3 weeks.
Rounf, floor, ceiling Make ordered rings offer round, floor & ceiling functions (since these cannot be implemented efficiently using the existing interface). Time est.: at most 1 week.
Self-saturating (and cleanup for sugar)
Buchberger's algorithm for non-homogeneous input can be implemented as a
self-saturating process (similar to what was done for Toric by
Bigatti):
Input polynomials will be homogenized with h
;
then every power of h
which is a factor of a polynomials in the
running computation may be cancelled out.
This might be a mathematically clean way to interpret sugar (for GradingDim 1).
Theory is all set. Clean implementation waits for
task sugar
and GReductor/Do_GBasis
Simplify CoCoAServer output Simplify the way to send output in CoCoA4io.C: some functions print the object itself, others print the assignment to the communication variable. All objects should have a direct printing function (then called by the assignment function).
Sundries Here are some ideas for algorithms to implement in CoCoALib. Factorization over the reals, complex root finding.
Template fns in io.H The presence of the template functions in io.H requires that iostream be included, but iostream is rather lengthy, so compilation becomes slow. How to rectify the situation? Time est.: < 1 week!
Toric Mill Design and implement Toric Mill using inheritance to "choose" between the different concrete algorithms. This will be pilot design for the Groebner Mill. Time est.: almost 1 month.
Unique implementation for div and deriv
Like for other functions, also div
and deriv
should probably have
a unique implementation in SparsePolyRing.C instead of 3 copies in the
DistrMPolyXX.C files. Time est.: 1-2 days.
Unified RingFp Unify the three different implementations of RingFp, RingFpLog, RingFpDouble -- perhaps use a SmallFpArith object to choose the implementation?
Unordered PPMonoids
Consider modifying existing polynomial code so that it tolerates PPMonoids
which are not arithmetically ordered (e.g. PPMonoidModSquares
).
The elements of the PPMonoid must be ordered so that polynomials have
canonical forms. Multiplication of a polynomial by a PP will be more
complicated: there may be zero divisors, terms may merge, terms may swap
ordering, etc. Decide how invasive such a change would be, and whether
implementing it is worthwhile.
Warnings We have sometimes wandered whether some commands should return an error or not, for example "content(f)" when the coefficient ring is a field. Mathematically "1" is a correct answer, but probably it means that the program is not doing what is intended by the user. Maybe a "warning" mechanism could be usefully applied to such cases.
Weyl algebra Weyl algebras have been revived: need proper testing.
ZZ max/min bug Max found a bug in the use of max/min with temporary ZZ values. Found out what really happens; fixing it will not be simple. Time est.: >1 week.
Task table | Task descriptions | Recently completed tasks |
---|
2009-05-20 There is now a global option for specifying whether elements of a quotient of ZZ are printed as least non-negative residues or as least magnitude residues. The default is least magnitude (a change from the previous deault behaviour). The residues are now always printed without brackets -- previously brackets were used in some cases and not in others.
2009-05-20 Modified the Makefiles to use the archiver ar in a more economical manner; this make partial recompilation usefully faster. The Makefiles have been cleaned/improved as well.
2009-02-20 CoCoALib documentation is written in pure text. Using txt2tags we can keep it clean/readable while allowing pretty formatting and linking into HTML and TeX. Proper polishing will take some time.
2009-02-13 The example ex-matrix1.C has been reorganized and extended with examples for (Const)MatrixView Abbott+Bigatti
2009-02-11 configure arguments
Version 0.9928.
(1) Configuration for optimization/debugging
using --flags=ARG
.
(2) Configuration for linking frobby
using --with-libfrobby=ARG
and added tests (just to check the linking has been successful) in
cocoalib and cocoa4.
Abbott+Bigatti
2009-02-09 New: abstract class for sugar Version 0.9927. First prototype for abstract class for sugar. Still unused, but makefile, dependencies and library.H had to be changed. Bigatti
2009-01-30 Enum instead of bool arguments in GReductor GReductor constructor had many boolean arguments: they have been converted into more meaningful "enum"s. Bigatti, Caboara
2009-01-30 Frobby integration Version 0.9926. First check-in for Frobby files. Configuration process not properly defined yet, but all code is in the right place and compilation flag is set. Makefile, dependencies and library.H had to be changed. Bigatti, Roune
2009-01-14 Improve configure script Configure behaves badly when gcc exists but g++ does not. Fix the script so that it works gracefully in both cases. One or two problems still remain (e.g. 64-bit on Mac G5) Abbott
2008-12-17 Machine integers in place of RingElems
Now using MachineInteger
type whenever a machine integer value is
used in place of RingElem
. This avoids nasty surprises when C++
silently converts signed values into unsigned (or vice versa).
New version 0.9925 to signal this
wide-ranging change.
Abbott
2008-12-16
Makefiles
version 0.9924.
Changed all Makefiles for compatibility with Solaris make
which has no -C
option:
make -C dir blah
now is (cd dir; make blah)
[Thanks to Paul Whitener for testing on Solaris]
Bigatti
2008-12-11 Revised symbol
Now using MachineInteger
type in ctors to specify the values of symbol indexes
(but we check that the values fit into a long
). Corrected two bugs in
SymbolRange (an undetected overflow and an off-by-1 error).
This improvement needed the update to MachineInteger
values.
Abbott
2008-12-11 Updated MachineInteger
Revised MachineInteger
. Fixed a bug, and added the new
function IsSignedLong
which simplifies use of
MachineInteger
values.
Abbott
2008-11-24 Reorganized SOI/NBM, server changed too SOI/NBM now reside in their own separate file. Implementation has been tidied considerably, and enjoys a better structured organization. Each algorithm now offers three coherent interfaces, while the actual work is done by a single implementation of each underlying algorithm. Abbott
2008-11-24 Preprocessing is now rational, server changed too
The preprocessing algorithms are now rational, so give exact results (rather
than the rational aproximations produced when all input data were converted
into double
s). The speed of computation remains essentially unchanged.
Abbott
2008-11-18 Fixed ideal inheritance code for RingWeyl version 0.9922. The missing ideal constructor in RingWeyl caused the ideal to be generated by the default constructor in SparsePolyRing (the code is identical). So the ideal did not call the specific RingWeyl::ideal operations. Now test-RingWeyl1 checks that 1 is in GBasis(ideal(x, dx)). Bigatti
2008-10-08 Error Codes
version 0.9921.
Error messages need to be expressive, but also short.
To help non-english speakers, each error should
produce an alphanumeric key/code which can be used to search in a manual of errors.
We want to create an "index" of all coded errors with a more verbose
explanation. Possibly it should also include some information about
the most common occurences of a given error and some suggestions for
debugging and/or fixing it.
See CoCoAErrorCodes.html:
CoCoA
web page or
local link in doc/
.
Moreover the way to check the type of error in an ErrorInfo object has
been changed (and herein lies the backward incompatibility). The new
way should be simpler to use.
Abbott
2008-09-22 Updated communication with CoCoA-4
version 0.9920.
cocoa-4 and CoCoAServer communication has changed (you need the new
cocoa5.cpkg for CoCoA-4):
OperationCommunication allows variable number
of arguments and sends the information to the server. So the function
myReadArgs in RegisterServerOps.C now takes an
extra argument, NumArgs
.
(added function linkability for the Frobby
library, updated code
for TmpMayerVietorisTree,
added NBM)
Bigatti
2008-09-22 Updated communication with CoCoA-4 version 0.9918.
2008-04-22 No more IsPositive/IsNegative for ZZ
Removed these two silly little fns from ZZ.H. In compensation, the usual infix
comparison operators now handle specially the case when one of the args is 0.
Note that MachineInteger
does still have IsNegative
!
Abbott
2008-04-21 A few more matrix ops
The adjoint
function now works over every ring
(added AdjointByDetOfMinors).
Added some matrix norm functions (Frobenius, 1-norm, infinity-norm).
Added PseudoInverse for full rank matrices.
Moved fns related to PPOrderings into the new
file MatrixForOrdering.H/C.
Abbott
2008-04-18 Major revision of matrices New version: 0.9917 Added the concept of "matrix views". This should offer a good compromise between flexibility and efficiency. Matrices now have a coherent design principle (which I hope is "correct"). Minor changes may still occur as experience with the new design grows. Abbott
2008-02-12 Improved configuration improved GMP identification during configuration Abbott
2007-12-06 Bug in RingDenseUPolyCleanImpl ctor A very well hidden bug has been fixed in RingDenseUPolyCleanImpl ctor. This depends on the creation of RingElems (0, 1, x) before the completion of the constructor.... so, just remember this: myRefCountZero(); must be the last line, and RingElems and RingHoms must be just before it. Bigatti
2007-12-05 StdDeg, log, and exponent Main changes are:
size_t
to long
2007-11-28 Fix Eval in CoCoA-4.7
The Eval
tried to be too general and failed.
Fixed the code and the manual -- should be mathematically cleaner too.
Abbott+Bigatti
2007-10-30 Move to GPL-3+ All major parts of the source of CoCoALib are henceforth released under the GNU Public licence version 3 or later. Previously the code was distributed under version 2 only. CoCoALib version is now 0.9912. Abbott
2007-10-10 Hilbert-Poincare version 0.9911. Another step in rewriting the Hilbert-Poincare code:
2007-09-28 CoCoA-4.7.2 Double quotes for string constants As part of the "gentle migration" to a better language, change all strings in CoCoA-4 packages to be between double quotes instead of single quotes. Check other places too (e.g. manual). Abbott
2007-09-25 CoCoAServer version handling The contructor for ServerOpBase requires a LibraryInfo. This way the server can print all libraries which have been linked in (or the list of all available operations with the library they are defined in) Bigatti
2007-09-24 Release of CoCoA-4.7.3 Bigatti
2007-06-06 Resuscitate RandomBitStream Make RandomBitStream use GMP random number generator (which in turn uses the Mersenne Twister). Turned out to be easier than expected, which probably means there's a nasty bug hidden away somewhere. Code still needs a little tidying. Not sure how efficient it is either. Version is now 0.9907. Abbott
2007-06-06 Check indet names properly
It should not be possible to construct rings where a symbol has an ambiguous
interpretation. Perhaps even the arity of a symbol should be fixed in a ring
(i.e. you cannot have x[1]
and x[2,3]
in the
same ring). One version of NewPolyRing_DMPI
seems to check this
correctly but other pseudo ctors do not. Abstract a checking fn, and rectify
the implementations. Much the same applied to PPMonoids.
Bigatti
2007-06-01 CoCoA-4.7.2 matrix facilities Added functions CharPoly, Eigenvectors, and modified Det to work better on matrices of rationals. Updated the manual accordingly. (implementation subsequently updated twice) Abbott
2007-05-31 CoCoA-4.7.2 string constants CoCoA4 now warns about obsolescent syntax for string constants inside single quotes. The idea is to encourage all CoCoA4 users to migrate to double quotes in readiness for the transition to CoCoA5. All CoCoA4 packages and tests have been brought up to date (easier said than done). Anna has updated the CoCoA4 manual entry about strings. Abbott+Bigatti
2007-05-31 Zero to power zero gives error Not sure what the code did before, but now any attempt to compute the zeroth power of zero gives error. Abbott
2007-05-30 Snapshot releases Bigatti has a script to create a snapshot release of CoCoALib-0.99xx. Then the table in the page ChangeLog-0.99 has to be manually updated with release notes.
2007-05-29 CoCoA-4.7.2 matrix facilities
Added functions RowMat
, ColMat
,
NumRows
, NumCols
.
Updated the manual.
Bigatti
2007-05-23 Release CoCoALib-0.99 The first public version with the new code organization. To be synchronous with first public release of ApCoCoALib by Dortmund. Bigatti
2007-05-22 PushFront/PushBack
Modify the interface to the PushBack
family of functions
to make it more friendly: now they all accept zero coefficients and make
sanity checks in debugging mode.
Bigatti
2007-05-21 CoCoALib-0.9904 in CVS
New version to "celebrate" the new MachineInteger
class.
Also fixed a long languishing bug in the linear system solver.
Abbott
2007-05-21 Proper handling of machine integers
Added new class MachineInteger
in an attempt to circumvent
undesirable automatic type conversions between C++ machine integer types.
Class ZZ
modified accordingly to act as a "proving ground".
Abbott
2007-05-03 New source code organization Implement the new code organization agreed upon Genoa. The configuration and make files still need some tweaking. Bigatti
2007-05-03 CoCoAServer Mark III Redesign the server to accommodate properly the new code organization. The new design must improve modularity still further, and add suitable safety checks. Getting the design right is of particular importance here. Bigatti+Abbott
2007-05-03 PPMonoidEvZZ A new PP monoid with essentially unlimited exponent size. It seems some people need it. The code is new, and largely unchecked, but does pass a non-trivial test. Abbott
2007-04-04 Release CoCoA-4.7 Of course, this is not strictly work on CoCoALib, but it is related. Many of the new features in CoCoALib-0.98 will become accessible through the new CoCoA-4.7. A modified "internal" version of CoCoA-4.6 already exists, but we still need to document and check everything thoroughly. Bigatti,Abshoff
2007-04-04 Release CoCoALib-0.9801 Conduct all the usual pre-release checks (portability, documentation, etc). Release CoCoALib-0.9801 (with revised server, and some minor bug fixes). Abbott,Bigatti,Abshoff
2007-04-04 Integrate Gin5 and preprocessing into C4.7 Modify server to offer Gin5 and preprocessing fns; extend C4.7 interface package. Add tests for new CoCoALib fns (preprocessing and Gin5). Update the C4.7 manual. Bigatti, Abbott
2007-04-04 Integrate numerical routines into C4.7 Complete integration of the "numerical" routines into the C4.7-CoCoALib interface: minor revisions to the CoCoALib server, minor revisions to the C4.7 packages. Produce a test suite for the numerical functions (NB aim is to verify our code, not the underlying floating point matrix library). Complete manual for the numerical fns; Abbott can help with the language polishing. Abshoff, Heldt
2007-03-31 CoCoA4 manual XML tags Conclude dictionary of XML tags for the CoCoA4 manual. Bigatti, Hiddemann
2007-04-04 Revise CoCoAServer CoCoAServer has been redesigned so that it is easier to add new functions. The new design has vastly improved modularity, and should "scale well". It should make it easier for non-members of the CoCoA Team to add their functions. While the new design is surely a great improvement over the old, evolutionary one, it cannot yet be regarded as stable. After more experience has been gained, the design will be reviewed. Bigatti
2007-03-21 New code management structure After a review of existing code management structure and some consequent difficulties, a new management structure has been drafted allowing greater autonomy (and hopefully reducing "email synchronization"). The transition to the new structure should occur immediately after Easter; we expect the draft to be approved shortly.
2007-03-19 CoCoA Meeting in Genoa Last week Genoa welcomed almost everyone involved in the project. It was the second intense week in a row: important meetings, presentations about the various aspects of the project, numerous mini-meetings to make good use of the physical proximity of collaborators, etc.
2007-03-09 CoCoALib-0.98 Released After a long week of very intensive work by Abbott, Bigatti, Abshoff and Heldt, the internal version of CoCoALib was brought up to a level which would permit public release. Everyone learned that eight days' notice is definitely not enough for a full public release. This task was actually completed almost on time (i.e. only about 7 hours late).
2007-03-08 Sugar strategy in Buchberger's algorithm The implementation of the sugar strategy was incomplete: certain cases could not be handled. A stop-gap solution has been found and implemented; now everything works properly. The whole structure will be revised at a later date.
2007-03-07 Remove magic numbers from MemPool The MemPool code contains some magic numbers (minimal loaf sizes). Abstracted these into named values, and improved documentation.
2007-03-07 Update coding conventions The CoCoALib Coding
Conventions need to be improved after discussions during and after the
minicourse in Dortmund. Especially guidelines for when to
use inline
and when not. The guidelines are now publicly
accessible on WWW at Genova. A further update will occur after 0.98
has been released.
2007-03-07 Improved compilation flags
Modified compilation flags (with g++
): more stringent
warnings, and position independent code (almost never harmful, and
sometimes beneficial).
2007-03-06 Dynamic Buchberger Algm First prototype of the Dynamic Buchberger's Algorithm. Uses a new way to compute the pairs, but there is still a problem with the GM criteria. Added procedures for the lex comparison of Hilbert functions, for use in the Dynamic Buchberger's Algorithm. Implemented the simplex algorithm, stage one. This implementation uses the CoCoALib matrices. This implementation uses GMP integers, and is for use in the Dynamic Buchberger Algorithm, NOT for huge optimization problems. Max.
2007-03-06 Sugar and PosWDegTO in the case of PosWDegTO orderings, Grading dim is now set to 0 and the sugar is now used. This is the case for most operations. This fixes a bug, since we cannot (yet) use WSugar as it does not work in these cases. Max.
2007-03-06 Interreduced non-homog GBasis In non-homogenous case, a new final stage interreduces the resulting Groebner basis. Max.
2007-03-06 FacetComplex name clash
The name complex
clashes with a name from the standard library.
Changed our name to FacetComplex
. Max.
2007-03-06 Eliminate RingZ type
There was a special C++ ring type for the ring of integers, viz. RingZ
.
It did not appear to be of any great use in CoCoALib, and removing it did not
make any existing code significantly harder to read/comprehend. Combined with
making RingZ a global value, the updated code actually becomes simpler and more
natural.
2007-03-06 Unique ring of integers After due deliberation we decided that Z, the ring of integers, and Q, the field of rationals should be unique "pre-existing" structures in the CoCoALib C++ run-time environment. This will make life rather easier (and more natural) for users of the library. Rather than use an ad hoc technique for managing these global values, we designed and implemented a coherent scheme for managing them (see next task).
2007-03-06 Management of Global Values
A consequence of deciding to make the ring of integers a global value was the need to
manage such a global value properly. The tricky part was ensuring the proper destruction
of RingZ before main
exits. Recall that C++ normally destroys globals after
main has completed, and that the order of destruction cannot easily be governed; destroying
values in the wrong order can cause to the program to crash just before it terminates.
Another advantage of forcing destruction before main
exits is that it makes
debugging very much simpler. And of course it is simply good manners to clean up properly
at the end of the program.
2007-03-05 Fix test-factor1
Randomization means that test-factor1
can appear to fail,
though it is behaving correctly. Fixed it so that the random effects cannot
affect the validity. Several other tests were cleaned up too.
2007-03-05 Remove "New" Prefix for some homomorphisms
The New
prefix on some homomorphism pseudo-constructors is not
useful and reduces readability of code using them. Change the names of the
pseudo-constructors to eliminate the prefix, and ensuring that the resulting
code will be easily readable.
2007-03-05 Canonical Homomorphisms
Implement CanonicalHom
which allows easy creation of certain
canonical homomorphisms (and hopefully more readable code). Document clearly
which cases are covered by CanonicalHom
.
2007-02-27 Printing for DistrMPolyXXX objects The three DistrMPolyXXX implementations repeat virtually identical code for printing out the polynomials. This code could be moved up to SparsePolyRing so that there is only a single copy BUT then DistrMPoly objects would no longer be directly printable (for debugging). Perhaps this would not matter if they were not proper objects...?
2007-02-20 Index of examples The "examples/" directory needs an index page to help find and remind what the various examples illustrate. There are two levels of index: a brief "one-line" summary for each example, and a fuller description.
2007-02-08 Generate BuildInfo.C automatically Rather than generate BuildInfo.C automatically (which was deemed to be a bit too dynamic), an equivalent effect can be achieved simply by using special compilation flags for that one file. This removes the need for the ugly and complicated CXXFLAGS which we previously used for all files. In fact, CXXFLAGS was simplified further than expected: all the tricky stuff is concentrated inside the special case for BuildInfo.C. CoCoAServer.C needed some minor adjustment. A big benefit is that the command for compiling against the CoCoA library has become considerably simpler. Added a new example, updated the corresponding documentation.
2007-01-29 One line defns are obsolete Modify CoCoA4 so that one line fn defns produce an "obsolescent" warning, and replace all one line defns in the packages by proper fn defns.
2007-01-24 Unify three PolyRingHoms The implementations of the three PolyRingHoms (in the three different sort of SparsePolyRing) are virtually identical. Now we have polynomial iterators, it should be possibly to unify them into a single implementation in SparsePolyRingBase. Same thing for coeff embedding homs.
2007-01-18 Make TmpHilbertDir Make a separate directory for the Hilbert stuff. Perhaps following the scheme used for the factorizer code.
2007-01-16 Rename "raw" args Improve readability/comprehensibility of code by using "suggestive" names for fn args which are "raw" values. This conversion generally happens in parallel with other reviews of the code. It will eventually require a final "closing" assessment. While the task is simple, it is time-consuming to be sure that absolutely all changes have been effected. It does not seem possible to get the computer to check that the task is complete.
2007-01-15 SmartPtr in RingHom Use SmartPtrIRC in RingHom, probably as a data member. Was not as quick and simple as predicted, but did lead to an overhaul of the code (esp. regarding printing of homomorphisms).
2007-01-10 Use SmartPtrIRC in ring Put SmartPtrIRC in rings, modules; substitute ad hoc reference counting with reuse of SmartPtrIRC.
2007-01-11 Clean includes in header files Sutter's coding conventions suggest using forward declarations instead of including header files. This makes (re)compilation faster, and expresses more clearly the true dependencies in the code. Task should take at most 1 week, unless more unpleasant surprises surface.
2007-01-11 Fix typedef ring The use of a typedef for [ring] causes trouble as a typedef cannot be forward declared as a class can. [ring] should become a trivial class forwarding all its operations to a SmartPtrIRC data member. Everything can be inline. Task should take at most 1 day.
2007-01-10 Attach old factorizer Attach old CoCoA4 factorizer to CoCoALib; mostly involves fiddling with makefiles and the "build system". A working factorizer was put in CVS for version 0.9713. This stopgap solution should be enough for a few months.
2006-12-22 Minicourse Prepare CoCoALib minicourse (to be held in Dortmund); Bigatti might help. This task will occupy almost all of Abbott's time until the end of 2006.
2006-11-16 Migrate into SparsePolyRing The code for ideal in the multivariate polynomial rings is essentially repeated three times: simply copied for each of the specific ring implementations. This code should be migrated into SparsePolyRing, so that just a single copy exists. The migration should be possible, but this must be verified. It may also be possible for ideals in RingWeyl to be covered by this same migrated generic implementation -- again this must be assessed. Time estimate: 3-7 days.