Wolfgang Hoschek

# Changelog

# Version 1.2.0 (Sep 10, 2004)

- Removed com.isml.math.* package (If you need Complex numbers, download and use Jakarta Commons Math instead)
- Documentation is now auto generated
- Fixed Algebra.normInfinity(DoubleMatrix1D x) (T.J.Hunt@open.ac.uk)
- Upgraded package util.concurrent from version 1.3.2 to 1.3.4 (package name edu.oswego... becomes EDU.oswego...)

# Version 1.1.0 (Oct 29, 2003)

- This version breaks the 1.9 Gflop/s barrier on JDK ibm-1.4.1, RedHat 9.0, 2x IntelXeon@2.8 GHz.
- Redesigned documentation and web site
- Moved build system to ANT
- Upgraded package util.concurrent from version 1.3.1 to 1.3.2, which is now a separate jar
- Upgraded package corejava to corejava-2002-11-16, which is now licensed under LGPL.
- Removed packages ViolinStrings, edu.cornell.lassp.houle.RngPack, jal.*
- Colt now requires jdk 1.2.x
- Fixed covariance bug in cern.jet.stat.Descriptive (scott white "scottw@eml.cc")
- Fixed bug in cern.jet.random.Normal.nextDouble in combination with setState() (nick.collier@verizon.net)
- Fixed bug in cern.jet.stat.quantile.EquiDepthHistogram (Brett Neumeier random@rnd.cx)
- RCDoubleMatrix2D was unnecessarily restricted in shape (double)columns*rows <= Integer.MAX_VALUE). Is now only limited by nonZeroes <= Integer.MAX_VALUE

# Version 1.0.3 (Nov 22, 2002)

- This version breaks the 1.3 Gflop barrier on JDK ibm-1.4.1, RedHat 8.0, 2x Pentium4@2.2 GHz.
- Upgraded package util.concurrent from version 1.3.0 to 1.3.1
- Fixed bug in cern.jet.random.Uniform.nextInt (jan.cheyns@intec.rug.ac.be)
- Fixed small bug in cern.colt.Partitioning and cern.colt.matrix.doublealgo.Partitioning
- Fixed Poisson.staticNextInt()
- Fixed infinite loop in Logarithmic.nextDouble() for some parameter combinations
- Fix for CholeskyDecomposition.solve (MG Ferreira "mgf@webmail.co.za")
- cern.jet.stat.quantile.QuantileFinderFactory should ignore N if if known_N is false.
- class PrintFormat is unreliable - do not use it. matrix print formatting is now reverted back to use corejava.Format instead.
- MersenneTwister had a small problem, which is now fixed with Matsumotos code from 2002/1/26.
- cern.jet.stat.Probability.studentT and cern.jet.random.StudentT were only defined for values >= 0
- cern.colt.bitvector.BitVector.replaceFromToWith(int from, int to, boolean value) treated leading partial unit incorrectly (Olivier Janssens "oj@adhoc.be")

# Version 1.0.2 (Nov 08, 2001)

- 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)
- Fix for serious SparseDoubleMatrix2D and Open<type>Map 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
- 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
- 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.

# Version 1.0.1 (May 15, 2000)

- 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.
- Fixed a bad bug in GenericPermuting. This one caused incorrect results to LU solving.
- SmpBlas.dgemm and dgemv threw exceptions when asking for transpositions.

# Version 1.0.0

- Powerful, extendible and performant histogram abstractions, improving ways for the statistical study of experimental data.
- Matrix functionality and performance improvements
- 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
- 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
- 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)

# Version 1.0 Beta4

- Renamed to lower case: EDU.oswego.cs.dl.util.concurrent --> edu.oswego.cs.dl.util.concurrent (resolves collisions of multiple edu packages)
- cern.colt.matrix.linalg.Algebra.trace() now returns a double.
- 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
- 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++)