CoCoALib Task Table (Genova)

Task table Task descriptions Recently completed tasks Older tasks

The Task Table

This table summarises the state of current and imminent tasks in CoCoALib. The first tasks are considered to be the most pressing. Full descriptions of the tasks are given below.
All time estimates and completion dates are to be considered approximate.

Task Who Status Progress Last news Completion
CoCoA5 language Abbott, Bigatti, Lagorio (+Figari) active Stage 3ab 2011-02 2011-??
CoCoA5 manual Abbott active Stage 3a 2011-02 2011-??
Self-saturating (and cleanup for GB code) Bigatti+Caboara+Abbott waiting Stage 2c 2009-11
Clean up DistrMPoly etc. Abbott+Bigatti inactive Stage 1 2009-09
Redesign implementation of ideals Abbott+Bigatti active Stage 1 2010-06 2011-??
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 resting 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
Permutation iterator Abbott inactive Stage 2 2010-03
Clean up ReductionCog inheritance Bigatti waiting Stage 1 2009-08
Inheritance-ready GReductor/Do_GBasis Caboara active Stage 1 2010-06 ??
GBEmbeddings for ideal/module operations Bigatti+Caboara active Stage 1 2010-06 ??
ChangeCoeffHom Abbott+Bigatti inactive Stage 1 2009-11 2010-??
RingElemVector (same ring, ref counted) Abbott+Bigatti waiting Stage 2abc 2011-01 ??
Homogeneous lists Abbott+Bigatti active Stage 1 2010-06 ??
Names for I/O fns in CoCoAServer Abbott+Bigatti inactive Stage 1 2009-05
Printing Polynomials Bigatti COMPLETED2011-01-28
lcm Abbott+Bigatti COMPLETED2011-01-19
Examples and tests use cout/cerr Abbott COMPLETED2010-12-15
GlobalManager incorporates GMPMemMgr Abbott COMPLETED2010-11-11
Memory leak on test-hilbert1 Bigatti COMPLETED2010-10-29
Integration with Normaliz Abbott, Bigatti, Söger COMPLETED2010-10-12
Better Makefiles Abbott COMPLETED2010-10-08
Exception safety Abbott COMPLETED2010-10-06
PPMonoid homomorphisms Abbott COMPLETED2010-07-09
Generators for random ZZs Abbott COMPLETED2010-06-29
Tests and bug fixes for ZZ Abbott COMPLETED2010-03-22
Added iterator classes for continued fractions Abbott COMPLETED2010-03-22
Add ctors for ZZ and QQ from a string Abbott COMPLETED2010-03-18
Example using monomial Bigatti COMPLETED2010-03-18
Rational coeffs in monomial Abbott COMPLETED2010-03-18
index.html for examples directory Bigatti COMPLETED2010-03-11
Revised CoCoALib build system Abbott COMPLETED2010-03
New pseudo-ctors for polynomial rings Abbott COMPLETED2010-03
Multiplicative Order Modulo an Integer Abbott COMPLETED2010-03
Random machine integers Abbott COMPLETED2010-02
Revised CoCoALib build system Abbott COMPLETED2010-02
RingTwinFloat theory and implementation Abbott COMPLETED2010-01
Improve separation of library & server code Abbott+Bigatti inactive Stage 1 2010-12
Registration system for dtor of globals Abbott inactive Stage 1 2010-10
Check use of global variables Abbott inactive Stage 1 2010-10
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
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
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 or GMP's mpz_class? Abbott inactive Stage 1 2010-10-06
ZZ ref count Abbott inactive Stage 1 2009-12-30
Task table Task descriptions Recently completed tasks Older tasks

Task descriptions (Alphabetical order)

This section contains a short description of each task. A time estimate for a task assumes "full-time" working; as ever for software, time estimates can be wildly inaccurate (usually hopelessly optimistic).

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 now at first prototype (i.e. stage (2abc)). This task should split into several more focussed smaller tasks. Roughly the recent news are:

See more at CoCoALib-functions.html

CoCoA5 manual The manual for cocoa5 will still use the CoCoAHelp.xml file and structure. The html and the latex version will use the same xsl code, and the online version should be treated by ad-hoc code in CoCoA-5 (OnlineHelp.[HC]). First prototype seems to work quite well and faster that the CoCoaLanguage code for cocoa4. Needs polishing and developing. Time estimate: 1 week.

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.

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?

Improve separation of library & server code Several pieces of code specific to the server are in the directory containing the library source. If possible, move the server specific code into the directory for the server sources. The prime candidates are GlobalInput, GlobalOutput (and so on), and RegisterServerOps and its auxiliaries. Time est.: 2-3 weeks

Registration system for dtors of globals Consider implementing a registration system for dtors of global variables. To use a new global variable you just have to register a (pseudo-)dtor for it, so that it can be destroyed during destruction of the global manager. Time est.: 2-3 weeks

Check use of global variables In the interests of thread safety check the use of global(static) variables; rectify if necessary. 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]
[2010-06: second for actual implementation: example with RingElemVector]
[2011-01: STOP is it worth ref counting with new C++? study paper]

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.

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.

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.

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.

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.

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.

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). CHECK thread safety of this idea!! 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.

RingElemVector (same ring, ref counted) As a useful particular case of Homogenous lists (task) We have a prototype in RingElemVector: reference counted (copy on write) vector of RingElems in the same ring. It can be used for generators and gbases of ideals (in order to avoid copies)
[2010-06: first prototype as ex-RingElemVector]

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 or GMP's mpz_class? Do we want our own separate class for big integers, or should we simply use GMP's own mpz_class. If we use our own class, we can modify it as we like (e.g. put in ref counts, see next task), but then we also have to write lots of tedious forwarding functions. Time est.: 2 weeks to decide, and 2 weeks to implement (if the decision favours reimplementation).

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).

Development stages

To describe the progress of each subtask (contributing C++ code to the library), I suggest using the following scheme for identifying what has been done, and what is still to be done. The intention is that normally all lower numbered stages be completed before progressing to the higher numbered stages. For other types of task, the task description should give an indication of progress.
  • (1) subproject start (incl specification of subproject)

  • (2a) abstract algm design, choice of data-structures, etc.
  • (2b) initial test set
  • (2c) early prototype, mostly works, maybe some bugs

  • (3a) late prototype, fully working, almost no bugs
  • (3b) comprehensive test cases

  • (4a) final C++ version (incl. relevant build commands)
  • (4b) maybe extra tests
  • (4c) portability and quality control issues
  • (4d) documentation

  • (5a)-(5d) independent verification of stages (4a)-(4d)

Status

For each task, the table indicates the current "status". Here are the main choices for the status:
  • active being worked on currently
  • inactive not being worked on currently (but work should begin fairly soon)
  • waiting progress suspended until some other task has progressed enough
  • resting temporarily suspended (e.g. holiday)
  • other explanation of actual status is with task description
Task table Task descriptions Recently completed tasks Older tasks

Recently Completed Tasks (older tasks)

Tasks we believe to have been completed are moved from the table to here.
The dates are only approximate and this table is updated less often than it should (too much work on CoCoALib ;-).

2011

2011-01-28 Printing Polynomials First extensive testing of printing polynomials in several polynomial rings highlighted missing "style improvements". Improved, added test-output, updated documentation (in CoCoAReports) Bigatti

2011-01-19 lcm Implemented lcm so that it exists whenever gcd exists. Ported to cocoa-5. Abbott+Bigatti

2010

2010-12-15 Examples and tests use cout/cerr Example programs and tests now use the standard C++ iostreams (rather than GlobalOutput and so on). This change makes the code easier to understand, and prepares the way for moving GlobalOutput etc into the server directory. Abbott

2010-11-11 GlobalManager incorporates GMPMemMgr GlobalManager significantly revised. It now creates GMPAllocator internally (if told to do so). New simpler interface for ctor of GlobalManager. Updated documentation accordingly. Abbott

2010-10-29 Memory leak on test-hilbert1 After the recent improvement of GlobalManager and Reference Counting a sort of memory leak resulted in test-hilbert1: it was the global variable with precomputed powers of polynomials. Bigatti

2010-10-12 Integration with Normaliz Normaliz is now designed as a C++ library. It is still in a transition phase, but the foundations are set! Fruits of a 3 week visit in Genova of Christof Söger. Abbott, Bigatti, Söger

2010-10-08 Better Makefiles Improved various Makefiles: they work better with "-j" flag. Thanks to Christof Söger for his help. Abbott

2010-10-06 Exception safety Fixed subtle exception-safety bug in all ring and PPMonoid ctors. Abbott

2010-07-09 PPMonoid homomorphisms Implement homomorphisms for PPMonoids; first very simplistic implementation. Abbott

2010-06-29 Generators for random ZZs Following the style of RandomLongStream make a class for generators of random ZZs. Abbott

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

Older tasks