Release Notes
The most recent version of this document can be found at the Colt
Homepage. Also see the list of
Known Problems
Colt 1.0.2
New Features
- Added GenericSorting.mergeSort for "stable" in-place sorting of
arbitrary shaped data
- Upgraded the ViolinStrings package to V1.0. Michael Schmeling reports that
two split methods which were contributed by Eric Jablow have been added and
some minor documentation bugs have been fixed.
- Upgraded package util.concurrent from version 1.2.5 to 1.3.0
- Added 2d matrix versions of daxpy(), dcopy(), dscal(), dswap() to Blas,
SeqBlas, SmpBlas (Martin.Schimschak@dresdner-bank.com)
- MersenneTwister now also allows zero seed (Martin.Schimschak@dresdner-bank.com)
Performance Improvements
- Fix for serious SparseDoubleMatrix2D and OpenMap performance degradation
- RCDoubleMatrix2D.assign(otherMatrix) got faster
- RCDoubleMatrix2D.assign(double) got faster
- DenseDoubleMatrix{1,2,3}D.assign(double) got faster
- DenseDoubleMatrix2D.zMult got a bit faster for very large problem sizes
Bug fixes
- Algebra.normInfinity(DoubleMatrix1D x) and Algebra.normInfinity(DoubleMatrix2D
A) were incorrect (Martin.Schimschak@dresdner-bank.com)
- SeqBlas.dger() and SeqBlas.dtrmv() were incorrect (Martin.Schimschak@dresdner-bank.com)
- ObjectArrayList.toList() threw IndexOutOfBoundsException
- RCDoubleMatrix2D was unnecessarily restricted in shape (double)columns*rows
<= Integer.MAX_VALUE). Is now only limited by nonZeroes <= Integer.MAX_VALUE
- cern.colt.matrix.linalg.Property.equals(..) gave wrong results when comparing
exotic special cases NaN, inf, -inf.
- cern.colt.matrix.doublealgo.Sorting was not NaN aware. In compliance with
the JDK sorts, it now swaps NaNs to the end.
- Property.isIdentity bug fix
- Polynomial.p1evl javadoc was misleading
Changes
- Added matrix mergesorts. Matrix quicksorts alone were not enough, because
matrices are frequently sorted successively by multiple columns. In order
to preserve the relative order of equal elements a so-called "stable"
sort was needed. Mergesort is such a thing.
To enable this, some minor changes were necessary. Please update your
source code as follows
Old style |
New style |
cern.colt.matrix.doublealgo.Sorting.quickSort(...) |
cern.colt.matrix.doublealgo.Sorting.quickSort.sort(...)
or
cern.colt.matrix.doublealgo.Sorting.mergeSort.sort(...)
|
- matrix.viewSorted(...) methods now use mergesort instead of quicksort.
Colt 1.0.1
New Features
- New blocked algorithm improved performance of out-of-cache matrix-matrix
and matrix-vector mult (Blas.dgemm and dgemv).
- Added parallel implementations of assign(function) to the BLAS (Basic Linear
Algebra System). See cern.colt.matrix.linalg.
Bug fixes
- Fixed a bad bug in GenericPermuting. This one caused incorrect results to
LU solving.
- SmpBlas.dgemm and dgemv threw exceptions when asking for transpositions.
Changes
Colt 1.0.0
The major new feature of this release are
- Powerful, extendible and performant histogram abstractions, improving ways
for the statistical study of experimental data.
- Matrix functionality and performance improvements
New Features
- Sequential and parallel implementations of the BLAS (Basic Linear Algebra
System). See cern.colt.matrix.linalg.
- Sparse row compressed matrix implementation - RCDoubleMatrix2D
- Major performance improvements for many matrix operations, in particular
optimizations detecting function objects for scaling (+,-,*,/, ...), delegating
to optimized internal implementations
- For performance added generalized matrix-matrix and matrix-vector mult:
C = alpha*A*B + beta*C and z = alpha*A*y + beta*z with or
without transpositions
- Added the long awaited histogram packages hep.aida , hep.aida.ref
and hep.aida.bin. The stable bins formerly found in cern.jet.histo
have been moved to hep.aida.bin and cern.jet.histo has been dropped.
- Added histogram and OLAP cube operators to cern.colt.matrix.doublealgo.Statistic.
- Added sampling views to cern.colt.matrix.doublealgo.Statistic
- Efficient matrix quicksort using precomputation; added to cern.colt.matrix.doublealgo.Sorting
- Stencil methods for finite difference operations in cern.colt.matrix.doublealgo.Stencil
Bug fixes
- DoubleMatrix1D.getNonZeros(IntArrayList indexList, DoubleArrayList valueList,
int maxCardinality) had a bug, hence Algebra.inverse sometimes produced wrong
answers.
- QRDecomposition
- matrix.viewStrides() sometimes gave wrong shape
- matrix.zMult(...) sometimes threw ArrayIndexOutOfBoundsExceptions
- DynamicBin1D.max() sometimes gave wrong answer -infinity
Changes
- Distance matrix in cern.colt.matrix.doublealgo.Statistic now works on user
defined distance functions
- Moved cern.colt.matrix.DoubleTransform to cern.colt.matrix.doublealgo.Transform
(sorry)
Colt 1.0 Beta 4-1
This is a minor bug fix release concerned with improving the build process.
Changes
- Improved build process. The makefile is now truly cross-platform (unless
you prove us wrong).
- Renamed to lower case: EDU.oswego.cs.dl.util.concurrent --> edu.oswego.cs.dl.util.concurrent (resolves collisions of multiple edu packages)
Colt 1.0 Beta 4
This release is mainly focussed on matrices, linear algebra and parallel programming.
Bug fixes
- cern.colt.matrix.linalg.Algebra.trace() now returns a double.
Changes
- Improved build process (makefile)
- package cern.colt.matrix - bug fixes and performance improvements
- Stronger separation of matrix interfaces and matrix implementations:
- the implementations of matrix data structures moved from package cern.colt.matrix
to package cern.colt.matrix.imp
- matrix factories moved from cern.colt.matrix.algo to cern.colt.matrix
- Formatter objects - Matrix formatting much extended and now also possible
using java.lang.Double.toString(double)
- Moved cern.jet.math.Unit and cern.jet.math.PhysicalConstants to cern.clhep
- Uniform.nextDouble() now returns a value between min and max, as specified
upon instance construction
New Features
- package cern.colt.matrix.linalg - Linear Algebra
- Additional convenience methods in matrix factories
- cern.colt.matrix.DoubleTransform: Additional convenience methods for element-by-element
transformations
- Introduced Object matrices
- A few additional methods in DynamicBin1D related to sampling, bootstrapping,
correlation
- Performance log of compute intensive matrix computations
- Now also redistributing util.concurrent framework - Standardized,
efficient utility classes commonly encountered in concurrent programming
- package cern.clhep - Starting to port CLHEP (C++)
Colt 1.0 Beta 3
Changes
A big package reorganization was necessary to allow for future growth. We decided
to do it better sooner than later.
- packages ch.cern.* are now named cern.*
- Packages that were named in plural are now named in singular (i.e. ch.cern.colt.lists
--> cern.colt.list)
New features
There are many new features in this version, however the most significant are
the addition of
- package cern.colt.map - Templated Hash Maps
- package cern.colt.matrix - Dense and sparse multi-dimensional matrices (arrays)
- package cern.colt.matrix.doublealgo - Algorithms on mult-dimensional matrices
- packages cern.jet.* - Math, Statistics, Data Analysis, Histogramming, Random
Numbers and Distributions
- package corejava - C-like print formatting
- package com.imsl.math - Math
- Improved and automated build process
Colt 1.0 Beta 2
Bug fixes
- Minor fixes in ch.cern.colt.lists.
- Minor fixes in ch.cern.colt.bitvector.BitVector.
Added ch.cern.it.hepdobms.kernel.HepPersistentObject
- Now this is the root class for all persistent capable (serializable) classes.
Allows to introduce and change shared behaviour with minimum effort.
package ch.cern.colt.lists
- Introduced more flexibility: Added abstract superclasses AbstractXXXList
to allow different implementations of lists. Signatures and semantics
of classes and methods of V1.0 Beta 1 are still the same.
- Added XXXArrayList.quickGet(...) and quickSet(...,...).
These are unsafe non bounds checking getters and setters. 3-5 times faster
than safe versions.
- Added DistinctNumberList and MinMaxNumberList.
Added package ch.cern.colt.lists.adapters
- Makes Colt lists compatible with the JDK 1.2 Collections Framework. Specifically,
added ObjectListAdapter, IntListAdapter, LongListAdapter,
FloatListAdapter, DoubleListAdapter.
package ch.cern.colt.bitvectors
- Removed QuickBitVector.get(BitVector bitVector, ...).
- Removed QuickBitVector.set(BitVector bitVector, ...).
- Instead added BitVector.quickGet(...) and quickSet(...,...).
These are unsafe non bounds checking getters and setters.
- Removed QuickBitMatrix.
- Instead added BitMatrix.quickGet(...) and quickSet(...,...).
These are unsafe non bounds checking getters and setters.
- Major performance improvements for all methods replacing or extracting parts
of bitvectors and bitmatrices. This is now lightning fast
- Minor bug fixes.
package ch.cern.it.util.random
- Random
- Renamed gaussian() and powLaw() to nextGaussian()
and nextPowLaw(), respectively.
- Added MersenneTwister, one of the strongest pseudo-random number
generators known so far. It is not only strong but also quick.
package edu.cornell.lassp.houle.RngPack
- RandomElement
- Fixed bug in choose(...) and choose(..., ...). (These
bugs have been known for a long time. ch.cern.it.util.random.Random
was never affected. It has always worked around them).
- gaussian() is now faster.
- Added clone() to ease maintainance of random generators producing
exactly the same sequence.
- Ranecu, Ranmar and Ranlux are now a bit faster.
- Fixed some javadoc.