commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Heuer <>
Subject Re: [math] 1.2-RC1 available for review
Date Wed, 13 Feb 2008 02:25:38 GMT
On Sun, 10 Feb 2008, Phil Steitz wrote:

> The zips / tars are here:
> The site included in the binary distro is here:
> Release notes:
> Ant, Maven 1 and Maven 2 builds should all work from the unpacked
> source distribution.
> Comments / suggestions for improvement welcome!
> Phil

A few comments for consideration:

Null parameter checks are not consistent.

Some classes throw NPE (PolynomialFunction, Complex, ComplexUtils,
RealMatrixImpl, MatrixUtils, etc.)

Some classes throw IAE (UnivariateRealSolverUtils,
StorelessUnivariateStatistic, StatUtils, etc.)

Many classes do neither (AbstractEstimator, GaussNewtonEstimator,
LevenbergMarquardEstimator, Rotation, RotationOrder, BigMatrix,
BigMatrixImpl, QRDecompositionImpl, RealMatrix, RealMatrixImpl,
AbstractStepInterpolator, DirectSearchOptimizer,
CorrelatedRandomVectorGenerator, EmpiricalDistribution,
EmpiricalDistributionImpl, RandomData, RandomDataImpl,
UncorrelatedRandomVectorGenerator, VectorialCovariance, VectorialMean,

e.g. EmpiricalDistributionImpl.StreamDataAdapter ctr is especially
problematic since NPE wouldn't be thrown until later, when either
computeBinStats or computeStats was called


Complex and ComplexFormat could be final


AbstractEstimator has several protected fields and public methods that
are not final
SimpleEstimationProblem ArrayList unbound --> List unbound
SimpleEstimationProblem fields private ArrayList --> private final List


Fraction and FractionFormat could be final


Rotation minor javadoc fix "if axis norm is null" vs if (norm == 0) { ... }
the API of Vector3D should be similar to RealMatrix/BigMatrix and
follow the same implementation pattern


BigMatrixImpl minor javadoc fix (data vs. d parameter name)
RealMatrixImpl minor javadoc fix (data vs. d parameter name)


AbstractStepInterpolator has several methods that are protected and
modify private state or that are public and not final


method name change, DirectSearchOptimizer.minimizes(... --> minimize(...


refactor the decomposition in CorrelatedRandomVectorGenerator to a
separate class in linear package
ValueServer replace static ints with typesafe enum, minor javadoc fixes
(periods at end of sentences, etc.); candidate for its own package, with
interface and multiple implementations


better documentation as to difference between transform and transform2
and between inversetransform and inversetransform2
method name change, inversetransform --> inverseTransform
method name change, inversetransform2 --> inverseTransform2


DefaultTransformer, NumberTransformer, TransformerMap not related to the
transform package desipe their names, better to delegate to
commons-convert? (or possibly use a similar pattern, e.g.

For "later":

Generify matrix API
Package interfaces and implementation classes separately

I realize that some of these cannot happen in a 1.2 release because of
API compatibility.  I can provide patches for the others if desired.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message