[CoCoA logo]
Home Page
CoCoA System
Computations in Commutative Algebra


  • CoCoALib is a free GPL3 C++ library for doing Computations in Commutative Algebra.
  • CoCoALib is the C++ mathematical kernel for CoCoA-5, the interactive Computer Algebra System. (contains also the code for the interactive system)
  • Following the CoCoA philosophy CoCoALib is designed to be easy and pleasant to use, so there is no need to be an expert C++ programmer, no need to understand inheritance, no need to know about memory allocation!
  • ...and if you don't like programming in C++ you may use most of its features through CoCoA-5!
Last modified
22 Oct 2021


Please cite CoCoALib:
John Abbott and Anna Maria Bigatti
CoCoALib: a C++ library for doing Computations in Commutative Algebra.
Available at http://cocoa.dima.unige.it/cocoalib
22 Oct 2021

abc152aaf1336758102fa9d1a6d534f7686a5a4eadb69cbf54c706fbd93c8caf *CoCoALib-0.99717.tgz
Sources for CoCoA-5.3.3e for CA course in Passau Oct 21
10 Oct 2021

30b057470b5ca483167ed1ffaffe5143249d9edfee82852c840f1eb57164f297 *CoCoALib-0.99716.tgz
Sources for CoCoA/CoCoALib course Kassel+online 11-15 Oct 21
01 Jun 2021

ab7635daef352b0b75de23a918ad818622f2142a7e0960212e1240837380f541 *CoCoALib-0.99713.tgz
Sources for CoCoA-5.3.3c - snapshot 1Jun21
22 Dec 2020

eff4432565d0be2ac2e7c7ace7f404dba370eb7d3d71e321bcb8b439489d11d3 *CoCoALib-0.99712.tgz
snapshot 22Dec20
06 Nov 2020

257ea3cedb91433efb82a342394f8635ec19aa258a961b634039b0405dd0ef69 *CoCoALib-0.99711.tgz
Sources for CoCoA-5.3.3 snapshot 6Nov20
07 May 2020

80d472fd74c7972f8f2a239679e7ad8ae8a43676e3c259c2218ae2480a6267a8 *CoCoALib-0.99710.tgz
Sources for CoCoA-5.3.2
redmine for 0.99710 -- redmine for CoCoA-5.3.2
List of principal changes made:
  • added new functions:
    • ConstantTerm (see redmine #1299)
  • Fixed bug in factor (see redmine #1449)
  • Fixed bug in Emacs interface (see redmine #1448)
20 Mar 2020
Sources for CoCoA-5.3.0
redmine for 0.99700 -- redmine for CoCoA-5.3.0
List of principal changes made:
  • added new functions:
    • GetCol, GetCols, GetRow, GetRows
    • SylvesterMat (#1334)
    • LawrenceMat (#1427)
    • IndetsIn and IndetsProd (redmine #658)
    • IsZeroDet (impl is still just a prototype)
    • CoeffVecWRTBasis (for Vietnam school)
    • DicksonPoly(x, N, alpha)
    • FixedDivisor(f)
    • HomogCompt(f,d)
    • IsSquare(N)
    • IsEvenPoly(f), IsOddPoly(f)
    • HasPositiveGrading(Kxyz)
    • RandomPermutation(L)
    • LawrenceMat(M)
  • modified functions:
    • new API for CpuTimeLimit object
    • renamed jacobian to JacobianMat (see redmine #1334)
    • fn IsZeroDim has been improved (was buggy)
    • fn RowReducedForm replaced by rref
  • new/renamed files:
    • SparsePolyOps-RingElem-homog.C
  • obsolescent:
see also https://cocoa.dima.unige.it/redmine/projects/cocoalib/issues?query_id=39
22 Nov 2019
List of principal changes made:
  • NO LONGER C++03 compatible! We are moving towards C++14 (#891, ..)
    • Removed ThreadsafeCounter (#1259)
  • added new functions:
    • RingElems(ring, string) -- converts string into list of RingElem (#1332)
    • constructor of PPVector from vector of RingElem (#1347)
    • primorial -- #1301
    • FixedDivisor -- #1297
    • HasPositiveGrading -- #1209
  • improved Primary Decompositon (zero-dim) slow cases -- #1105
  • changed names iroot to FloorRoot, and IsExactIroot to IsExactFloorRoot
  • added new syntax with string for NewQuotientRing #1330 and PolyAlgebraHom #1329 (related to RingElems)
  • corrected bug in CoprimeFactorBasis (when an arg is negative; actually fixed in 0.99610)
  • renamed files:
    • SparsePolyOps-IdealZeroDim --> SparsePolyOps-ideal-ZeroDim
    • SparsePolyOps-IdealOfPoints --> SparsePolyOps-ideal-points
    • SparsePolyOps-MonomialIdeal --> SparsePolyOps-ideal-monomial
  • obsolescent:
    • NewPolyRing(ring, long) -- now user must choose the names for the indeterminates (#1223)
see also https://cocoa.dima.unige.it/redmine/projects/cocoalib/issues?query_id=38
11 Mar 2019
This release is effectively identical to 0.99600, so its documentation refers to version 0.99600.
The only difference in 0.99601 is the deletion of some pre-generated configuration files which were released by mistake in 0.99600. Their existence might be problematic under some special conditions.
09 Aug 2018
Sources for CoCoA-5.2.4
redmine for 0.99600 -- redmine for CoCoA-5.2.4 original package in cocoa-5 by E.Palezzato -- part of the translation by Alice Moallemy)
  • Many files have been renamed or created with prefix SparsePolyOps- for tidying and better structure of related operations
  • RandomUnimodularMat now produces results with det +1 or -1 (prev. only +1)
  • added new class SmallPrime
  • added new class VerificationLevel
  • added new fn EratosthenesRange
  • added new fn IsNonNegGrading
  • added new fn IsSigmaGoodPrime, DenSigma,
  • added new fn Radical0dim, IsRadical0dim, IsPrimary
  • added new fn RandomSmallPrime
  • added new fn SturmSeq
  • added new fn RandomLinearForm
  • added new fns GCDFreeBasis_BigInt and GCDFreeBasis_RingElem (bad names!)
  • added new iterators PrimeSeq and PrimeSeqForCRT
  • added new BigRatInterval with basic arithmetic
  • better handling of det of matrix over QQ (by mapping to matrix over ZZ)
  • ctors for BigInt and BigRat from string and GMP native objects now replaced by pseudo-ctors!
  • extended: CommonDenom for vector of polynomials over QQ
  • extended: PrimaryDecomposition for 0dim
  • extended: factor for coefficients in Algebraic extension
  • fixed bug: in multivariate factorization over QQ (sign of RemainingFactor could be wrong)
  • fixed bug: SyzOfGens with 0 generators
  • functions for zero-dimensional ideal now in cocoalib (from
  • improved (first part) communication with MathSAT
  • improved impl of determinant for matrices over ZZ; special cases now up to dimension 5x5
  • files

  • added: SparsePolyIter.H (from SparsePolyRing)
  • added: SparsePolyOps-IdealZeroDim.[HC]
  • added: SparsePolyOps-ideal.[HC] (from SparsePolyRing)
  • renamed: IdealsOfPoints.[HC] into SparsePolyOps-IdealOfPoints.[HC]
  • renamed: IntOperations.[HC] into BigIntOps.[HC]
  • renamed: MatrixOperations.[HC] into MatrixOps.[HC]
  • renamed: MinPoly.[HC] into SparsePolyOps-MinPoly.[HC]
  • renamed: MonomialIdeals.[HC] into SparsePolyOps-MonomialIdeal.[HC]
  • renamed: VectorOperations.[HC] into VectorOps.[HC]
  • split: BigRat.[HC] into BigRat and BigRatOps
  • split: NumTheory into NumTheory and NumTheory-prime
  • 0.99564
    15 Jun 2018
    Sources for CoCoA-5.2.3 (unstable)
    redmine for 0.99600 -- redmine for CoCoA-5.2.4
  • Many new file names like SparsePolyOps-XXX.H,C for splitting SparsePolyRing.H,C and higlight correlations
  • functions for zero-dimensional ideal now in cocoalib (from original package in cocoa-5 by E.Palezzato -- part of the translation by Alice Moallemy)
  • 0.99560
    16 Jan 2018
    Sources for CoCoA-5.2.2 (Release Notes)
    Main changes from 0.99550
  • MinPolyQuot (modular) now has no limit on number of primes
  • added new "timeout" capability -- see CpuTimeLimit
  • redesigned interrupt mechanism (now "more polite", and works with "timeout" impl)
  • added new fns IsInRadical and MinPowerInIdeal
  • added new fn CutLF (for iterating over the homog parts of a polynomial)
  • ExternalLibs-MathSAT.[CH] -- interface class for msat_env and function msat_solve (see #1091)
  • assignment of ideals may now change ring (see redmine #1065)
  • added SmallestNonDivisor (see #979)
  • improved Makefiles: rebuilding of Makefile_dependencies is more robust when interrupted
  • renamed ERR::SERIOUS to ERR::ShouldNeverReachHere (see redmine #1097)
  • added IsCoprime
  • added RootBound and graeffe
  • added ChebyshevPoly, HermitePoly and LaguerrePoly (families of orthogonal polynomials)
  • added HilbertMat (create matrix over QQ with (i,j) entry being 1/(i+j-1))
  • added RandomSparseNonSing01Mat (create a random sparse non-singular (0,1) matrix)
  • revised InvMod so that caller can choose between exception or 0 result if inverse does not exist
  • More on redmine for 0.99560 -- redmine for CoCoA-5.2.2
    09 Aug 2017
    Sources for CoCoA-5.2.1 (unstable) (Release Notes)
    Main changes from 0.99550
  • MinPolyQuot and Implicit now properly deal with ugly primes
  • Improved/ing constuctor matrix-defined orderings for many variables
  • Improved factor
  • Added timeout interrupt
  • Added prototype for MathSat
  • ... see also https://cocoa.dima.unige.it/redmine/issues/1056#note-3
  • More on redmine for 0.99560 -- redmine for CoCoA-5.2.2
    04 May 2017
    Sources for CoCoA-5.2.0 (Release Notes)
    Main changes from 0.99542
  • Fixed serious bug on pre-computed infos in operations with monomial ideals
  • Enhanced user experience: added verbosity levels and improved interrupt
  • new constructor RingElem(ring, string) takes expressions (as ReadExpr)
  • new functions IsMaximal, IsRadical for SparsePolyRing ideals
  • new function FrobeniusMat in file MinPoly.C (by E.Palezzato)
  • new function MinPolyXXX in file MinPoly.C (by E.Palezzato)
  • new function HasGBasis
  • new functions IdealOfGBasis, IdealOfMinGens
  • new function IdealOfProjectivePoints
  • new functions DimQuot(ideal) MultiplicityQuot(ideal)
  • Improved TwinFloat comparisons
  • More on redmine for 0.99550 -- redmine for CoCoA-5.2.0
    22 Mar 2016
    Sources for CoCoA-5.1.4 (Release Notes)
    Main changes from 0.99540
  • minor adjustments from CoCoA-5.1.3 after CoCoA School
  • new CoCoA-5 function depth
  • new file MinPoly.C
  • 0.99540
    19 Feb 2016
    Sources for CoCoA-5.1.3
    Main changes from 0.99538
    (0.99539: working version from 0.99538 to 0.99540)
  • new external library: Gfan
  • Groebner Fan in CoCoA-5
  • More on redmine for 0.99539 -- redmine for CoCoA-5.1.3
    31 Jul 2015
    Sources for CoCoA-5.1.2
  • redmine for 0.99538 -- redmine for CoCoA-5.1.2
  • 0.99536
    03 Jul 2015
    Sources for CoCoA-5.1.2 (July first pre-release)
  • Lots of cleaning, tidying.
  • redmine for 0.99536 -- redmine for CoCoA-5.1.2
  • 0.99535 Download
    11 Sep 2014
    Sources for CoCoA-5.1.1 (September release)
    Main changes from 0.99534
  • Fixed bug in passing matrix as argument
  • Improvements related with CoCoA-5: manual, BuiltInFunctions, ...
  • Lots of cleaning, tidying, ...
  • redmine for 0.99535 -- redmine for CoCoA-5.1.1
  • 0.99534 Download
    01 Aug 2014
    Sources for CoCoA-5.1.1 (August pre-release)
    Main changes from 0.99533
  • Improved configuration
  • Simplified type/function names for BuiltInFunctions
  • CoCoA-5 manual: highlighted obsolete/obsolescent functions
  • Lots of cleaning, tidying, ...
  • redmine for 0.99534
  • 0.99533 Download
    04 Jun 2014
    Sources for CoCoA-5.1.0
    Main changes from 0.99532
  • Resolutions (naive implementation, but it works)
  • redmine for 0.99533
  • 0.99532 Download
    28 Mar 2014
    Sources for CoCoA-5.0.9
    Main changes from 0.9953
  • Improving Thread safety
  • Improved integration of external library Normaliz
  • Modules and functions on modules
  • More robust operations in QuotientRing
  • IdealOfPoints: optimized and general implementation
  • New function for reading polynomials from string/input
  • New function MinGens/minimalised
  • New function SquarefreeFactorization
  • Unique copy of RingQQt(n) (QQ[t[1..n]])
  • ... and much more
  • 0.99531 Download
    30 Oct 2013
  • redmine for 0.99531
  • 0.9953 Download
    19 Jun 2013
  • redmine for 0.9953
  • 0.9952 Download
    15 Oct 2012
    Sources for cocoa-5.0.3
    redmine CoCoALib-0.9952
    0.9951 Download
    30 May 2012

    redmine CoCoALib-0.9951
    0.9950 Download
    04 Apr 2012
    A jump in version number for a big change:
  • ZZ is now called BigInt
  • QQ is now called BigRat
  • and some more things:
    redmine CoCoALib-0.9950
  • 0.9949 Download
    30 Sep 2011
    This is a temporary version while getting ready for 0.9950: it is fully working, but a few files and classes still need renaming. It will updated daily (just if you cannot wait ;-) until 0.9950 is ready, then it'll disappear.
    0.9946 Download
    29 Jul 2011
    Version for summer holidays 2011
  • updated integration of Normaliz and Frobby
  • some minor changes and bug fixes; more details coming soon... end of August... Recently completed tasks
  • 0.9945 Download
    20 Jul 2011
    Version for MonICA School 2011
  • New file TmpMonomialIdeal for operations on monomial ideals (chosen automatically is gens are monomial)
  • more details coming soon Recently completed tasks
  • 0.9944 Download
    01 Jun 2011
    Version for CoCoASchool 2011
  • details coming soon
  • 0.9943 Download
    30 Mar 2011
  • ALWAYS USE LONG is the new rule for CoCoALib
    • this is an endless debate in C circles, but everyone agrees a public library should use the intersection of the signed and unsigned ranges for safety checks
    • all machine-integer arguments and return values in CoCoALib are now of type "long" (and also local variables, member fields,..)
    • added template function len(v) returning "v.size()" as "long"
    • Added ULong2Long: an inline fn to convert unsigned long into long
  • added ExternalLibs-GSL (interface for the numerical library GSL)
  • first prototype for boost search in configuration (for normaliz)
  • matrix: added x*M, det3x3, IsSymmetric, IsAntiSymmetric, IsDiagonal, TensorMat, FilledMat, NewDenseMatStdDegLex, NewDenseMatXel, NewDenseMatStdDegRevLex
  • ideal: added GBasis, operator!=
  • QQ: added CFApprox, IsOneNum; RingHom applied to QQ
  • PolyRing: added ClearDenom, IsIndet, IsIndetPosPower; removed indet(PolyRing,ZZ)
  • PPMonoid: added IsIndet, IsIndetPosPower
  • FractionField improved printing
  • RingFp..: IsGoodForXXX, IsGoodCtorArg fns to test whether a given arg is suitable as characteristic for the given type of small prime finite field (used by pseudo-ctors for RingFp, RingFpLog, RingFpDouble)
  • Added MantissaAndExponent, FloatStr
  • Improved ILogBase
  • Added IsConvertible(long&, double)

  • CoCoA-5:
  • improvements in the interpreter: more macros and template functions for easier integration of new operations
  • added IDEAL type to cocoa5
  • new functions in CoCoA-5 (see CoCoALib-functions) and futher improved manual search
  • 0.9942 Download
    17 Feb 2011
    Mainly working on extending cocoa-5. This showed some missing functions and minor bugs in CoCoALib.
  • new version for new files: MatrixSpecial.[CH]
  • ZZ: isqrt, iroot, IsExactIroot, IsSquare, IsPower
  • matrix: added + and -, jacobian, myIsEqual (default and optimized impl), mySetEntry/SetEntry with QQ argument; fixed SetEntry using myIsWritable
  • RingElem: added monic/myMonic, lcm/myLcm, myElim; fixed HasUniqueOwner for empty lists; improved printing of polynomials
  • added symbols(vector s)
  • fixed a minor bug in power (QQ)
  • CoCoA-5:
  • improvements in the interpreter: new macros and template functions (for arguments, and creating/reading lists) allow easier integration of new operations
  • new file CoCoALibSupplement.[CH] with "CoCoALib operations" written solely for cocoa-5.
  • added RINGHOM and MAT types to cocoa5
  • new functions in CoCoA-5 (see CoCoALib-functions) and futher improved manual search
  • 0.9941
  • Completed revision of GlobalManager (and GMPAllocator)
  • Uniformization of i/o for tests and examples: i/o is on standard C++ streams (rather than GlobalInput(), etc. to be used only for CoCoAServer)
  • Updated MemPool so user can specify on which streams to print logging info and errors (when in verbose mode).
  • Added new class RandomSource and example
  • Added ILogBase function (to ZZ & QQ).
  • About indeterminate "names":
    • new function (my)IndetsCalled
    • new RingElem constructor RingElem(ring, symbol)
    • renamed (my)IndetName into (my)IndetSymbol
    • removed spaces in indices: c[1, 2] is now printed c[1,2]
  • Changed interface to ANNOUNCE function: now it requires the ostream to passed in
  • new functions in CoCoA-5 (see CoCoALib-functions) and improved manual search
  • modified IsZeroAddMul with temporary variable (slug found with cyclotomic)
  • Frobby Dimension renamed into dimension
  • 0.9940 Download
    25 Nov 2010
  • GMPAllocator has been replaced by subclass GlobalManager::GMPMemMgr
  • GlobalManager: new way of specifying use of GMPAllocator (now default)
  • fixed memory management for Hilbert function (globals in GlobalManager)
  • Added new GMPAllocator example
  • Added IndetsCalled/myIndetsCalled
  • Improved interface with Normaliz, examples and more functions
  • TmpNormaliz renamed into ExternalLibs-Normaliz
  • TmpFrobby renamed into ExternalLibs-Frobby
  • ExternalLibs-Frobby: Dimension renamed into dimension
  • Added functions in CoCoA5 and CoCoALib: IndetsCalled, ZZExponents, indet(*, ZZ), IsHomog, indets, NewFractionField. monomials_forC5, support_forC5, LT_forC5, LPP_forC5, LM_forC5
  • fix for CoCoA-5 online manual
  • 0.9939 Download
    12 Oct 2010
  • Integration with Normaliz and examples
  • Documentation for Frobby and Normaliz (ExternalLibs)
  • test-hilbert1 fails, we know about it: it is a "controlled" memory leak we are taking care of
  • improved exception safety of ring/PPMonoid ctors
  • makefile cleaning
  • Replaced explicit recursive calls to "make" by calls to "$(MAKE)"
  • added "wildcard" for convenient compilation of non-official examples (warning: working only with gmake?)
  • renamed (Ring)DistrMPoly.html --> (Ring)DistrMPolyClean.html
  • added mySymbolValue/RingElem(R, sym), improved examples
  • Added thread safety checks
  • 0.9937 Download
    23 Mar 2010
  • Tests and bug fixes for ZZ
  • Added iterator classes for continued fractions
  • Add ctors for ZZ and QQ from a string
  • ex-PolyRing2.C using monomial
  • Rational coeffs in monomial
  • index.html for examples directory
  • Revised CoCoALib build system
  • New pseudo-ctors for polynomial rings
  • Multiplicative Order Modulo an Integer
  • Random machine integers
  • RingTwinFloat theory and implementation
  • 0.9936 Download
    10 Mar 2010
  • !!! Working version for CoCoAMonomialDays !!!
  • 0.9935 Download
    21 Jan 2010
  • latest RingTwinFloat code
  • fixed a bug about intersection of polynomial ideals (non-monomial)
  • .... to be completed...
  • 0.9933 Download
    03 Nov 2009
  • fixed server-client communication bug under Linux, needs new cocoa5.cpkg (1.03) to become effective
  • new MVT functions by Eduardo Saenz de Cabezon
  • 0.9932 Download
    28 Oct 2009
  • new MVT functions by Eduardo Saenz de Cabezon
  • new round/RoundDiv functions
  • new SugarDegree code used in Groebner Bases computation
  • new constructors for ideal (ideal(x1, x2), ideal(x1, x2, x3), ideal(x1, x2, x3, x4))
  • some work on server-client communication bug under Linux (possible fix found; still investigating)
  • unique implementation of myIsDivisible and myDeriv for SparsePolyRing; unique implementation of myDiv for PolyRing
  • added document about CoCoA-5 Language
  • 0.9931 Download
    24 Jul 2009
  • improved configuration for 32/64 bit
  • new class and example for factor
  • new class SugarDegree
  • starting new abstract class QQ
  • new files NumTheory.C/H
  • new constructors for ideals (ideal(x), ideal(gens))
  • HasUniqueOwner checks if all elements in a vector have the same owner
  • 0.9930 Download
    10 Jun 2009
    (during the CoCoASchool)
  • 0.9928 Download
    11 Feb 2009
  • Configuration for optimization/debugging using --flags=ARG
  • Configuration for linking frobby using --with-libfrobby=ARG and added tests (just to check the linking has been successful) in cocoalib and cocoa4.
  • 0.9927 Download
    09 Feb 2009

    Many small impovements to the server: added "-d" option for debugging, added WriteIdeal, WriteMatrix, ..
    Abstract class for sugar
    Integration with Frobby (with configuration by hand)
    0.9925 Download
    08 Jan 2009
    Now using MachineInteger type whenever a machine integer value is used in place of RingElem. This avoids nasty surprised when C++ silently converts signed value into unsigned (or vice versa).
    Fixed a bug in RegisterServerOps.C the server call to MayerVietorisTree.
    0.9924 Download
    16 Dec 2008
    Changed Makefiles for compatibility with Solaris make [make -C dir blah ==> (cd dir; make blah)]

    changes to symbol and MachineInteger
    0.9923 Download
    23 Nov 2008
    Version for release of cocoa-4.7.4

    Some changes for SOI and NBM...
    0.9922 Download
    18 Nov 2008
    Added ceil, floor ...

    Fixed ideal inheritance code for RingWeyl

    Optimized operations on monomial ideals: TidyGens, intersect
    8 Oct 2008
    Modified the error ID objects so that they contain (and print out) alphanumeric codes (as well as all the information which was printed out before).

    Changed the way to check the type of error in an ErrorInfo object (and herein lies the backward incompatibility). The new way should be simpler to use.
    0.9920 Download
    22 Sep 2008
    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
    0.9919 Download
    18 Jul 2008
    • version for CoCoA-4 pre-relese
    • improved gmp-version-check.sh
    • improved TmpMayerVietorisTree
    • cleaned up TmpFactorDir
    0.9918 Download
    18 Jun 2008
    • moved code for monomial ideals into TmpPPVector
    • added code TmpMayerVietorisTree for irreducible decomposition of monomial ideals by Eduardo Saenz de Cabezon
    • added stable order ideal algorithm (SOI)
    • fixed multivariate GCD, same as CoCoA-4.7.4
    • removed functions IsPositive and IsNegative for ZZ values (optimized ">0" and "<0").
    • completed implementation of adjoint by adding AdjointByDetOfMinors
    • moved fns related to matrices and PPOrderings into a new file (MatrixForOrdering.H/C), and added some matrix norms to MatrixArith
    • exponent overflow (and underflow) should now be detected when CoCoA_DEBUG is set.
    0.9915 Download
    12 Mar 2008
    • completed DenseUPolyRing
    • added IsIrred function for RingElem
    • changed IsHomogeneous into IsHomog
    0.9914 Download
    12 Feb 2008
    • improved GMP identification during configuration
    • added NumCompts function for ModuleElems
    • added useless dummy functions to utils.C and AnnaUtils.C to silence ranlib on MacOS
    0.9913 Download
    05 Dec 2007
    • log/myLog(pp, i) renamed into exponent/myExponent(pp, i)
    • log/myLog(poly, i) renamed into MaxExponent/myMaxExponent(poly, i)
    • return type for StdDeg/myStdDeg changed from size_t to long.
    0.9912 Download
    31 Oct 2007
    Source code is now "GPL-3 or later".
    0.9911 Download
    19 Oct 2007
    Another step in rewriting the Hilbert-Poincare code:
    • added TmpPoincare.[CH] using DenseUPolyRing instead of unipoly (the old C code)
    • modified TmpHilbert.C so that it can call the new code (HilbertNumeratorMod) as well as the old one (HilbertNumeratorMod_C).
    0.9910 Download
    05 Oct 2007
    • added abstract class DenseUPolyRing for representing dense univariate polynomials
    • added concrete class RingDenseUPolyClean, the cleanest implementation
    • just for testing, still horribly inefficient and incomplete
    • mainly fixes to remove warnings with the new compiler.
    • Moreover, to get more precise information about the running CoCoAServer
      • each ServerOp includes infos about the library it is defined in
      • CoCoAServer no longer prints its own version
      • CoCoAServer prints all included libraries and their versions (or all offered operations)
      • CoCoAServer can change stat_level (Max's verbosity) at runtime
    0.9908 Download
    25 Jun 2007
    • RingFloat renamed to RingTwinFloat.
    0.9907 Download
    13 Jun 2007
    • RandomBitStream is back (complete with doc and example). [Needs GMP >= 4.2]
    0.9906 Download
    05 Jun 2007
    • added to symbol.H AreDistinct(syms); AreArityConsistent(syms);
    • default implementation for IamCommutative, IamIntegralDomain, IamGCDDomain, IamField, myCharacteristic in PolyRing.H/.C
    • default implementation for mySymbols in SparsePolyRing.H/.C
    • cleaned up pseudo-ctors and PushBacks
    • the function myIsValid now returns true/false (used to throw an error in case of invalid polynomial)
    • added Arri's "reuse addr" idea to SocketStream.C
    • CoCoAServer now produces a more comprehensible error if the socket cannot be opened.
    • All attempts to compute the zeroth power of zero now produce errors (previously some cases were not checked).
    • fixed benchmarks directory (and cleaned it)
    0.9905 Download
    31 May 2007
    • Renamed function IsUnit to IsInvertible.
    • Renamed function ndigits to NumDigits.
    • Improved the documentation in ZZ.txt.
    • Changed returned type of exponent and NumDigits.
    • Some error conditions in functions on ZZ values are now signalled using standard CoCoA error codes rather than the nonstandard one.
    • Now accepting 0 coefficient for PushBack/PushFront (fairly invasive change).
    21 May
    • Major change to operations between ZZ and machine integers;
    • new class MachineInteger.
    • Non-exact integer division by a negative value now gives error.
    15 May
      This will be the base structure of CoCoALib for the paired-libraries release. Removed from CoCoALib tree:
      • the numerical directory (and the Num***.H files)
      • from AlgebraicCore directory the files TmpBorderBasis.C, TmpFGLM.C, TmpLESystemSolver.C, TmpOrderIdeal.C (and the related .H, .txt, example and test files)

    03 May
    • Added new PPMonoid with (virtually) unlimited exponents, and improved the documentation for PPMonoids.
    • Pseudo-ctor for new PPMonoid is NewPPMonoidEvZZ
    27 Apr
    • Most of the code in CoCoAServer.C has migrated into AlgebraicCore.
    • New registration procedure for server operations (with documentation in doc/)
    • OperationMill renamed into ServerOp
    • Dortmund ServerOps are not checked in (but running correctly in my local version of the new structure for the libraries)