commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz" <>
Subject Re: [math] Release 1.2 planning, incorporating Mantissa
Date Wed, 20 Dec 2006 15:33:22 GMT
On 12/20/06, <> wrote:
> Selon Phil Steitz <>:
> > We have added a lot of new functionality to [math] since the 1.1
> > release, and Mantissa includes quite a bit more.  We need a 1.2
> > release plan, incorporating some elements of Mantissa.  Here is a
> > straw man - please any and all jump in to comment and most of all
> > volunteer to take on tasks.
> >
> > 1. Start with a list of Mantissa features to introduce into [math]
> Agreed. In order to help the choice, here is the complete list of packages
> provided by Mantissa, with my own comments about them :
>   algebra    : univariate polynomials, orthogonal polynomials
>                (very basic, straightforward and inefficient implementation)
>   estimation : general estimation, least squares,
>                Gauss-Newton, Levenberg-Marquardt
>                (the package based on interfaces for problems and solvers,
>                which should be in a approach similar to commons-math)
>   fitting    : general curve fitting, polynomials, harmonic series
>                (this is a simple wrapper around estimation, except for
>                harmonic fitting which is more complex, but is it useful ?)
>   functions  : scalar and vectorial functions interfaces definitions
>                (was created for the sake of quadrature and fitting, I
>                think commons-math provides something better)
>   geometry   : vectors and rotation in 3D
>                (tiny package, the most important thing is Rotation3D which
>                is quite elaborated and whose code is validated in real life
>                space applications)
>   linalg     : linear algebra
>                (very basic, straightforward, inefficient and incomplete
>                implementation)
>   ode        : Ordinary Differential Equation
>                (this this the most important and polished package, most
>                Mantissa users downloaded it only for this package which is
>                is quite elaborated, provides state of the art algorithm with
>                all bells and whistles like continuous output, multiple
>                switching functions supporting G-stop and discontinuities,
>                integration driven in slave or master mode ...)
>   quadrature : functions quadrature, Riemann, Trapezoid, enhanced Simpson, Gauss
>                (classical package, use the function package)
>   random     : random generators and basic statistics
>                (to be compared with commons-math)
>   roots      : simple root finding
>                (only a Brent implementation)
> > 1.2, based on the WishList and review of the Mantissa code base.  Here
> > is my suggested list for math 1.2:
> >    a. The entire Mantissa estimation package
> >    b. The entire Mantissa optimization package
> I would strongly suggest to add also the ode and geometry packages.
OK - I suggested starting with the ones above only because they looked
pretty consistent with the commons-math design approach and quite
honestly are the ones I have looked most closely at.  I agree that the
others are very useful and should come in.  I just thought we might
want to limit scope for 1.2.  Based on your comments, I say lets add
geometry and ode to 1.2.  We can look at algebra, et al for subsequent

> > 2. Repackage and refactor Mantissa code - not much, actually - to be
> > consistent with the rest of [math] (interface encapsulation, pluggable
> > implementations using new approach - see 5 below)
> Agreed. I also think some work needs to be done to merge error handling.
> Mantissa provides a way to localize messages, it could be a useful addition to
> commons-math.

+1 - that is a weakness in [math] now.  We just have to be careful
about backward compatibility until we bump to 2.0.

> > 3. Replace suboptimal implementations in math random and analysis
> > packages with better impls in Mantissa, where this makes sense (TBD -
> > comments / suggestions welcome). Also, leverage relevant bits and code
> > recently contributed in MATH-157 to implement SVD.
> I'm not sure Mantissa has more optimal implementations :-( I am not a
> statistician and only implemented what I needed for my own work. I never had
> any feedback on these parts.
Let's take a close look and see.  I will look carefully at the random
stuff.  Can you pick up the thread on SVD?

> > 4. Clean up things added to math trunk since 1.1
> >
> > 5. Replace commons-discovery dependency injection mechanism with
> > spring-compatible approach - patches welcome!
> I don't have a sufficient knowledge on commons-math yet to have an opinion on
> these tasks.

Have a look at, e.g. the distributions package.  We use an abstract
factory pattern there that allows implementations to be plugged in
dynamically at run time.  We use commons-discovery as the mechanism
for configuring what concrete implementation to load at runtime.  I am
suggesting that we provide support for dependency injection via
spring.  We can hold off on this if there is not sufficient interest.
I just thought I would suggest it and see if there was.
> > 6. Get to zarro boogs (or a pretty Jira screen, I guess ;-)
> Yes :-)
> > Comments, volunteers, patches, welcome!
> I can do all Mantissa refactoring tasks to merge it into the main tree once the
> merged parts are chosen.
> I would suggest to perform step 2 in Phil's proposal starting with error
> handling, followed by packages renaming, followed by interfaces refactoring.

+1 - just remember we need somehow to maintain backward compatiblity
for the error handling piece.  Lets go ahead with {estimation,
optimization, geometry, ode}


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

View raw message