Task table | Task descriptions | Recently completed tasks | Older tasks |
---|
Task | Who | Status | Progress | Last news | Completion |
---|---|---|---|---|---|
Self-saturating (and cleanup for GB code) | Bigatti+Caboara+Abbott | waiting | Stage 2c | 2009-11 | 2010-03 |
Clean up DistrMPoly etc. | Abbott+Bigatti | inactive | Stage 1 | 2009-09 | |
CoCoA5 language | Abbott+Bigatti+Lagorio(+Figari) | active | Stage 3ab | 2009-09 | 2010-06 |
Redesign implementation of ideals | Abbott+Bigatti | active | Stage 1 | 2010-03 | 2010-05 |
More operations on ideals generated by monomials | Bigatti | resting | Stage 3a | 2008-11 | |
Hilbert: optimized use of PPWithMask | Bigatti | inactive | Stage 1 | 2009-01 | |
Simplify CoCoAServer output | Bigatti | active | Stage 1 | 2009-01 | |
Improve documentation for adding new operations | Bigatti | inactive | Stage 1 | 2009-11 | |
Socket Test | Bigatti | inactive | Stage 1 | 2009-09 | |
Examples for convert and IsInteger and IsRational |
Abbott | inactive | Stage 1 | 2007-05-21 | |
Integration with Normaliz | Bigatti | waiting | Stage 1 | 2009-04 | |
Permutation iterator | Abbott | inactive | Stage 2 | 2010-03 | |
Clean up ReductionCog inheritance | Bigatti | active | Stage 1 | 2009-08 | 2009-10 |
Inheritance-ready GReductor/Do_GBasis | Caboara | active | Stage 1 | 2009-04 | 2009-09 |
GBEmbeddings for ideal/module operations | Bigatti+Caboara | active | Stage 1 | 2009-11 | 2009-11 |
ChangeCoeffHom | Abbott+Bigatti | inactive | Stage 1 | 2009-11 | 2009-11 |
Homogeneous lists | Abbott+Bigatti | inactive | Stage 1 | 2009-07 | 2009-10 |
Generators for random ZZs | Abbott+Bigatti | inactive | Stage 1 | 2010-02 | |
Names for I/O fns in CoCoAServer | Abbott+Bigatti | inactive | Stage 1 | 2009-05 | |
Tests and bug fixes for ZZ | Abbott | COMPLETED | 2010-03-22 | ||
Added iterator classes for continued fractions | Abbott | COMPLETED | 2010-03-22 | ||
Add ctors for ZZ and QQ from a string | Abbott | COMPLETED | 2010-03-18 | ||
Example using monomial |
Bigatti | COMPLETED | 2010-03-18 | ||
Rational coeffs in monomial |
Abbott | COMPLETED | 2010-03-18 | ||
index.html for examples directory | Bigatti | COMPLETED | 2010-03-11 | ||
Revised CoCoALib build system | Abbott | COMPLETED | 2010-03 | ||
New pseudo-ctors for polynomial rings | Abbott | COMPLETED | 2010-03 | ||
Multiplicative Order Modulo an Integer | Abbott | COMPLETED | 2010-03 | ||
Random machine integers | Abbott | COMPLETED | 2010-02 | ||
Revised CoCoALib build system | Abbott | COMPLETED | 2010-02 | ||
RingTwinFloat theory and implementation | Abbott | COMPLETED | 2010-01 | ||
Removed ZZ::rtn proxy class | Abbott | COMPLETED | 2009-12-29 | ||
NumericCast | Abbott | COMPLETED | 2009-12-23 | ||
IsConvertible | Abbott | COMPLETED | 2009-12-11 | ||
Rename EFGModule into FGModule? | Abbott | COMPLETED | 2009-12-03 | ||
Convert sugar into inheritance classes | Bigatti | COMPLETED | 2009-10-28 | ||
Unique implementation for div and deriv | Bigatti+Abbott | COMPLETED | 2009-09-28 | ||
IsHomog wrt first rows of weight | Bigatti | COMPLETED | 2009-09-22 | ||
Constructors for ideals | Abbott+Bigatti | COMPLETED | 2009-07-30 | ||
All tests to produce output on GlobalOutput | Abbott | inactive | Stage 1 | 2010-01 | |
GlobalMgr to check debug compatibility | Abbott | inactive | Stage 1 | 2009-01-29 | |
Documentation for OrdvArith and PPOrdering | Abbott | inactive | Stage 1 | 2009-12-14 | |
DensePoly | Bigatti+Abbott | resting | Stage 4bd | 2009-01 | |
Improve CanonicalHom | Abbott | inactive | Stage 2 | 2009-07 | |
Abstract Gaussian Reduction | Abbott | inactive | Stage 2 | 2009-07 | |
Reduce wasteful alloc/free in RingTwinFloat | Abbott | inactive | Stage 1 | 2010-01 | |
Ring of infinitesimals | Abbott | inactive | Stage 1 | 2007-04-04 | |
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 | |
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 OpenMath | Abbott+Bigatti | inactive | Stage 1 | 2010-03 | |
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 | |
Module and FGModule | Abbott+Bigatti | inactive | Stage 1 | 2008-02-11 | |
IsMonomial and IsHomog for DUP | Abbott+Bigatti | inactive | Stage 1 | 2008-04-24 | |
Compatibility of IsRational and IsInteger |
Abbott | inactive | Stage 1 | 2007-03-26 | |
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 | |
Mysterious test failures on Digital Alpha | Bigatti+Abbott | inactive | Stage 2 | 2007-12-07 | |
Sundries | Abbott | inactive | Pipe dream | 2007-xx-xx | |
ZZ ref count | Abbott | inactive | Stage 1 | 2009-12-30 |
Task table | Task descriptions | Recently completed tasks | Older tasks |
---|
Abstract Gaussian Reduction
Currently matrix gaussian (row) reduction is implemented several times (e.g. for
DetByGauss
and RankByGauss
). Make a single generalized "abstract"
implementation. Time est.: 3 weeks.
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.
Documentation for OrdvArith and PPOrdering
The documentation for OrdvArith
and PPOrdering
is mixed up and
very incomplete. Make a clean separation, and complete it.
Time est.: 1 week.
ChangeCoeffHom PolyRingHom can be quite inefficient when one just want to change coefficients (e.g. R[x] into K[x]). No operation of pp's exponents is needed, just copy the pp. Time estimate: 1 day.
Clean up 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. Before redesigning (see task), some cleaning up should be done to highlight unused features. Time estimate: 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 ReductionCog inheritance ReductionCog concrete classes are based on Poly or Geobucket. Make two Abstract classes to avoid repeated code.
Clean up OpenMath The OpenMath code looks to be hasty first prototype. It needs to be cleaned (and probably redesigned). Many of the input operations are missing or dodgy. Time est.: 2-3 weeks (for new design and impl).
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.
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.: 4 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.
GBEmbeddings for ideal/module operations GBEmbeddings need to be cleaned up, made easier and more complete (including case of FractionField coefficients). In some ideal/module operations embeddings are done and undone uselessly?
All tests to produce output on GlobalOutput
Make sure all tests produce output on the standard CoCoALib output channels: GlobalOutput
and/or GlobalErrput
Time est.: 2 days
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.: ???
Homogeneous 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.... [2009-07: first step for actual implementation: "HasUniqueOwner" in tmp.H]
Implement IsZeroDivisor
Implement a function IsZeroDivisor
for ring elements.
(NB the function IsInvertible
exists; do we really need the
extra fineness of IsZeroDivisor
?)
Time est.: 1/2 week.
Improve CanonicalHom
Could modify CanonicalHom
so that it can cope with more than a "single step"
in the tower of ring ctors. Is this idea worth implementing? Time est.: 2 weeks (= 1 week
deciding, and 1 week impl and testing).
Improve documentation for adding new operations Improve documentation for ServerOp and RegisterServerOps. Just collect neatly all emails with Eduardo for adding new operations to the server. Time est.: 1 day.
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. Waiting for new version of Normaliz
Permutation iterator
Write a permutation iterator: defining operator++
and operator[]
for accessing the k-th index.
The following algorithm (taken from Wikipedia) generates the next permutation lexicographically after a given permutation. It changes the given permutation in-place.
1. Find the largest index j such that a[j] < a[j + 1]. If no such index exists, the permutation is the last permutation. 2. Find the largest index l such that a[j] < a[l]. Since j + 1 is such an index, l is well defined and satisfies j < l. 3. Swap a[j] with a[l]. 4. Reverse the sequence from a[j + 1] up to and including the final element a[n].Time est: 2-3 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. Workshop in Logrono February 2010.
Generator for random ZZs
Following the style of RandomLongStream
make a class for generators
of random ZZs. Does anyone actually need such large random numbers? Maybe it
is best to include such a class just for uniformity? Time est.: 1-2 days.
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. Time est.: 1 day.
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. Time est.: ???
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: at least 3-4 weeks
Module and FGModule
Decide whether module
and FGModule
should be
merged or kept distinct. Note that the documentation for FGModule
is largely absent. A considerable overhaul is needed. Time est.: 3 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. Time est.: <1 week
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 at 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. Time est.: 1-2 weeks
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.
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 2-3 weeks. Consequential
rewrite will take 2-3 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.
The real problem is that BOOST is huge.
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.
Revise CoCoALib "build system" Review and update the Makefiles and configuration scripts after the new source code reorganization. Time est.: ~1 week
Reduce wasteful alloc/free in RingTwinFloat Several internal ops in the impl of RingTwinFloat make wasteful alloc/free cycles. Replace most of these by use of "workspaces" held by the ring (so alloc/free occur only when ring is created/destroyed) Time est.: 1 week (mostly for testing).
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).
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.
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).
Socket Test The way the cocoa-4 function testing whether the socket and server are working provokes an error from CoCoAServer. This is a bad design! Time est.: 2-3 days (for design, impl, and testing).
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.
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 ref count Decide whether to use reference counts inside ZZ values. This would avoid the wasteful copying when ZZ values are returned from functions (but the new C++ standard offers a completely general mechanism for avoid these wasteful copies). Could reference counting provide benefits in other cases? Time est.: 1 week to decide, and 2 weeks to implement (if the decision favours implementation).
Task table | Task descriptions | Recently completed tasks | Older tasks |
---|
2010-03-22
New version 0.9937 New version to signal the fixing of many minor
bug and the embarrassing bug in subtraction of a machine integer from
a ZZ
. Upgrading strongly recommended.
Abbott
2010-03-22
Tests and bug fixes for ZZ
Added tests for ZZ
. Fixed several bugs which were discovered.
Abbott
2010-03-22 Add iterator classes for continued fractions Two new classes: one for producing the partial quotient, the for producing the convergents. I've preferred simplicity of ultimate speed. Abbott
2010-03-18 Add ctors for ZZ and QQ from a string Done. Abbott
2010-03-18
Example using monomial
Added ex-PolyRing2.C
showing how to write a simple function to pass exponent vectors
to the function monomial.
This way looks more natural than calling
power many times when writing complicated
power-products.
Bigatti
2010-03-18
Rational coeffs in monomial
, also for principal ideals
Added new pseudo-ctors for monomials which accept rational coefficients.
Similarly for principal ideals.
Abbott
2010-03-11 index.html for examples directory Automatic generation of examples/index.html with description of examples. (also to be loaded on cocoalib web page examples/index.html) Bigatti
2010-03-10
Revised CoCoALib build system
The configure
script now works better, and will get some compilation
flags automatically from the GMP header file. Solved a problem about
GMP version number (on Werner's new computer).
Abbott
2010-03-05
New pseudo-ctors for polynomial rings
Added new pseudo-ctors for polynomial rings which accept PPOrderingCtor
values; this makes it easier for the user to specify the ordering.
Abbott
2010-03-05
Multiplicative Order Modulo an Integer
Added new function to NumTheory
for computing the
order of an element in the multiplicative group of coprime residues
modulo an integer.
Abbott
2010-02-15
Random machine integers
Added new class RandomLongStream
to represent generators of
random machine integers (in a given range).
Abbott
2010-02-10
Revised CoCoALib build system
The configure
script now works better, and will get some compilation
flags automatically from the GMP header file. Also makes it relatively to specify
a specific compiler and/or compilation flags.
Abbott
2010-02-05 New version 0.9936 New version to mark the inclusion of many special functions for monomial ideals. Many thanks to Eduardo and the participants at the workshop in Ortigosa/Logroño. Bigatti
2010-01-20 New version 0.9935 New version to "celebrate" finally completing the update of twin floats (famous last words?) Abbott
2010-01-20 RingTwinFloat theory and implementation Updated twin float implementation in accordance with revised theoretical ideas. Abbott
2009-12-29
ZZ max/min bug
Removed the proxy class ZZ::rtn
which caused a SEGV bug
(see test-bug4.C
). May lead to poor performance for
arithmetic on ZZ values.
Abbott
2009-12-23
Further refinement to conversion functions: NumericCast
Added new conversion function NumericCast
. This is just a
placeholder for the corresponding feature in the BOOST library. Also
added two new conversions from QQ to machine integers.
Abbott
2009-12-11
New version 0.9934
New version because changes to convert
are not backward compatible.
Abbott
2009-12-11
Rename the function convert
into IsConvertible
The new name gives a clearer indication of what it does. Introduced a procedure
called convert
which throws in case of failure; there is a new error
ERR::BadConvert
for these failing cases.
Abbott
2009-12-03 Rename EFGModule into FGModule? The emphasis on the word "effectively" seems useless here. When an object name suggests a property that property is effective. Abbott
2009-10-29 New version 0.9933 A new version number because the handshaking introduced in the CoCoAServer is not backward compatible (with CoCoA 4.7.5 or earlier). Abbott
2009-10-29 Implement proper handshake at end of session CoCoA4-CoCoAServer Modified CoCoAServer and the communications part of CoCoA4 so that they effect a proper handshake at the end of the session. This seems to solve the (intermittent) problems observed on some Linux boxes (where a race condition could let the socket die too early). Abbott
2009-10-28 Convert sugar into inheritance classes There are different kinds of sugar (StdDeg, wdeg, saturating,..): an abstract class representing gives clean code for the reduction process, and possibly also to the GroebnerMill. Bigatti
2009-10-08 RoundDiv function for pairs of integers Added a new function for computing the rounded quotient of pairs of integers. Abbott
2009-09-28
Unique implementation for div and deriv
Like for other functions, also div
and deriv
have
a unique implementation in SparsePolyRing.C instead of 3 copies in the
DistrMPolyXX.C files.
Bigatti
2009-09-22 IsHomog wrt first rows of weight Now we have IsHomogPartial and CmpWDegPartial considering the first i rows of weights (with i <= GradingDim) Bigatti
2009-07-30
Constructors for ideals
We used to have
ideal(ring), ideal(ring, RingElem), ideal(ring, vector
2009-07-15 Round, floor, ceiling Make ordered rings offer round, floor & ceiling functions (since these cannot be implemented efficiently using the existing interface). This was actually completed some time ago (but I forgot to update the task table). Abbott
2009-07-08 Improved QQ
Improved the QQ implementation: added functions floor
and ceil
.
Corrected the embedding of QQ values into RingTwinFloat. Added ex-QQ1
example program.
Abbott
2009-07-02 New Version Made version 0.9931 in recognition of the substantial changes since the previous version (see below). Abbott
2009-07-02 New class for rationals
Added the new class QQ
for representing rational numbers.
There are some basic arithmetic operations too.
Abbott
2009-07-02 Improved NumTheory Varius functions in the recent NumTheory file have been improved: e.g. better interface, fewer bugs, clearer documentation. Thanks to the participants of the recent CoCoA School in Barcelona whose opinions help answer some philosophical design questions. Abbott
2009-06-05 New Version Made version 0.9930 in recognition of the substantial changes since the previous version. Abbott
2009-06-05 Basic Number Theory Functions Basic number theory functions (such as gcd and lcm) have been put together in a new file (namely NumTheory.C); some were simply moved from ZZ.C while others are new. The function signatures have been made more coherent, and more complete (i.e. allowing machine integers and ZZs to be used interchangeably). The IsPrime function now works over a wider range. IsPPrime has been renamed to IsProbPrime as the new name is more meaningful and memorable. Added several new functions: EulerPhi, PrimitiveRoot, SmoothFactor and factor. Added a new template class factorization to hold the results of factorizations. The code should also work correctly on both 32 and 64 bit computers (but in fact does not, sigh). Abbott
2009-05-20 Improved printing for residues (in quotients of Z) 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. Abbott+Bigatti
2009-05-20 Faster Makefiles 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. Abbott
2009-02-20 Documentation converted to txt2tags 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. Bigatti
2009-02-13 Better matrix examples 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