You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Luc Maisonobe <Lu...@free.fr> on 2006/05/21 21:45:12 UTC

[math] contributing Levenberg-Marquardt, Gauss-Newton, ODE, Brendt solver and more

Hello,

I am the creator of the Mantissa library 
(http://www.spaceroots.org/software/mantissa/index.html), a Java library 
providing some mathematical algorithms.

Mantissa provides several algorithms that could be useful for 
Commons-Math. I think the objectives of the two libraries are quite 
similar, but I don't know (yet) the point were you consider "commons 
problems" addressed by Commons-Math end and where problems are 
considered too specific to be provided here.

I would be very glad to donate parts of Mantissa code to Commons-Math if 
you wish so. Mantissa is released under a revised-BSD type license, but 
I am quite happy with Apache license too and ready to change.

I don't think everything in Mantissa is useful for Commons-Math. IMHO, 
the most interesting parts are :

  - the estimation package
    Gauss-Newton estimator (based on LU decomposition),
    Levenberg-Marquardt estimator (based on QR decomposition)
  - the fitting package (curve fitting, using the estimation package)
  - the Ordinary Differential Equations package
    this is clearly THE best package in Mantissa, with several
    state of the art integrators with fixed steps, variable stepsize
    (including Dormand-Prince 8 (5,3) and Gragg-Bulirsch-Stoer),
    all of them supporting continuous output and multiple switching
    functions (can be used for G-stop, but not limited to that), well
   tested and used
  - the roots package
   provides a Brent algorithm when the derivatives are not available


Some package that may be interesting are :

 - the geometry package
   mainly for the 3D rotations implementations using quaternions
   internally and axes/angles, Cardan angles, Euler angles, matrices,
   single or double vectors pairs and quaternions in the interface
 - the functions package
   providing notions like computable or sampled functions
 - the quadrature package
   (Riemann, trapezoid, enhanced Simpson, Gauss-Legendre up
    to 5 points, easily extended)
 - the utilities package
   for the array mapping paradigm

Some package that are probably not interesting are :

 - the algebra package
   orthogonal polynomials, inefficient and awkward implementation
 - the raw linear algebra package
   basic implementation developped for speed ... not sure the goal was
   achieved and using only straightforward algorithms, not state of the art
 - the random number generators
   supports correlated vectors generation


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [math] contributing Levenberg-Marquardt, Gauss-Newton, ODE, Brendt solver and more

Posted by Luc Maisonobe <Lu...@free.fr>.
Luc Maisonobe wrote :

> I don't think everything in Mantissa is useful for Commons-Math. IMHO, 
> the most interesting parts are :
> 
>  - the estimation package
>    Gauss-Newton estimator (based on LU decomposition),
>    Levenberg-Marquardt estimator (based on QR decomposition)
>  - the fitting package (curve fitting, using the estimation package)
>  - the Ordinary Differential Equations package
>    this is clearly THE best package in Mantissa, with several
>    state of the art integrators with fixed steps, variable stepsize
>    (including Dormand-Prince 8 (5,3) and Gragg-Bulirsch-Stoer),
>    all of them supporting continuous output and multiple switching
>    functions (can be used for G-stop, but not limited to that), well
>   tested and used
>  - the roots package
>   provides a Brent algorithm when the derivatives are not available

I forgot to talk about the optimization package (direct search methods 
using only functions values, without derivatives). This could also be 
interesting in addition to the estimation package. It provides one 
generic abstract solver and two implementations, Nelder-Mead and 
Virginia Torczon's mutidirectional search.

Luc


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


[all] Re: [math] contributing Levenberg-Marquardt, Gauss-Newton, ODE, Brendt solver and more

Posted by Phil Steitz <ph...@gmail.com>.
Excellent.  I will follow up to make sure the CLA and SG have been
received / acked.

Then, IIUC, the next thing for us to do is either [vote] to accept the
entire donation or start discussing individual bits, to be submitted
as separate patches.  My personal preference would be to accept and
commit the entire codebase into /experimental and then refactor and
merge into the 1.2, etc release branches incrementally as we discuss
APIs and such.  The downside of this approach is that some of the code
committed to /experimental may never get released (at least while we
are in j-c).

I am having a hard time locating Robert's notes here and at incubator
on how this was done for [pool].  Any process pointers, or opinions on
which way to go above, would be greatly appreciated.

Phil

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [math] contributing Levenberg-Marquardt, Gauss-Newton, ODE, Brendt solver and more

Posted by lu...@free.fr.
Selon Phil Steitz <ph...@gmail.com>:


> First, thanks for your interest in joining forces.

You're welcome.

> So if your
> interest is in bringing in code and maybe more contributors and
> working on it here, then that will be great.

This is what I want, contributing. Mantissa is one of my pet projects, it is
reliable and successfull, and used in several places. But I failed to gather
myself a community around this project, and this is a major weakness. I am the
sole developper behind Mantissa (except for one class which was contributed by
a user and redesigned by me before inclusion). One developper means only one
way of thinking, no peers reviews except from users, and a single point of
failure. For now, I have been able to cope with this without problems and there
are currently no identified bugs in the code base.

Joining Apache will remove most of these problems. Of course, I will be the one
who knows this part better at the beginning, but I hope others will look at
this code and discuss about it to say what they like (I hope they will like
some parts) and what they don't like, why and how it could be better done. This
would be the best thing for this piece of code and its users.

Another benefit for joining Apache is a much larger user base. This is mandatory
for an open-source project.

> One housekeeping thing that we need to consider before we start to
> have real fun with Mantissa is to make sure that you *can* relicense
> and contribute portions of this code to apache.

I can. I am the owner and developper of everything except for one contributed
class, which is probably not interesting for Commons-Math (it is the Robert M.
ZIff four-tap random numbers generator contributed to Mantissa by Bill Maier
and redesigned by me). Everything was developped on my own spare time, and in
addition I do have a specific clause concerning my open-source work in my
contract with the company I work for, just to make sure there is no
interference between private and paid work.

> Please have a look at
> the sections on this page http://www.apache.org/licenses/#clas on CLAs
> and Software Grants.  If you and / or other Mantissa team members
> decide to contribute code to Apache based on Mantissa, you will need
> to be able to sign CLAs and, depending on how the code comes in,
> possibly a Software Grant (if we bring in a substantial amount of code
> in a lump instead of small, refactored bits incrementally, we need to
> do the Grant).

I have read that. I will sign and send both the Individual Contributor License
Agreement and the Software Grant (except for the FourTapRandom class, as I
consider I do not have sufficient rights on it). I will snail mail both to the
Forrest Hill Apache premises.

> Don't worry about the process stuff, I can handle
> that.  The important thing is to make sure that a) you want to join
> the community and b) you can comply with the CLA and freely donate
> contributions.  Feel free to ask questions here or offline.

OK. For this introduction, I prefered to answer online. Now we can switch to a
private discussion to avoid cluttering the list with this administrative stuff
concerning only myself.

> Once again, thanks for your interest in commons-math and we look
> forward to working with you!

Thanks to you to consider accepting my work.

Luc

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [math] contributing Levenberg-Marquardt, Gauss-Newton, ODE, Brendt solver and more

Posted by Phil Steitz <ph...@gmail.com>.
On 5/21/06, Luc Maisonobe <Lu...@free.fr> wrote:
> Hello,
>
> I am the creator of the Mantissa library
> (http://www.spaceroots.org/software/mantissa/index.html), a Java library
> providing some mathematical algorithms.
>
> Mantissa provides several algorithms that could be useful for
> Commons-Math. I think the objectives of the two libraries are quite
> similar, but I don't know (yet) the point were you consider "commons
> problems" addressed by Commons-Math end and where problems are
> considered too specific to be provided here.
>
> I would be very glad to donate parts of Mantissa code to Commons-Math if
> you wish so. Mantissa is released under a revised-BSD type license, but
> I am quite happy with Apache license too and ready to change.
>
> I don't think everything in Mantissa is useful for Commons-Math. IMHO,
> the most interesting parts are :
>
>  - the estimation package
>    Gauss-Newton estimator (based on LU decomposition),
>    Levenberg-Marquardt estimator (based on QR decomposition)
>  - the fitting package (curve fitting, using the estimation package)
>  - the Ordinary Differential Equations package
>    this is clearly THE best package in Mantissa, with several
>    state of the art integrators with fixed steps, variable stepsize
>    (including Dormand-Prince 8 (5,3) and Gragg-Bulirsch-Stoer),
>    all of them supporting continuous output and multiple switching
>    functions (can be used for G-stop, but not limited to that), well
>   tested and used
>  - the roots package
>   provides a Brent algorithm when the derivatives are not available
>
>
> Some package that may be interesting are :
>
>  - the geometry package
>   mainly for the 3D rotations implementations using quaternions
>   internally and axes/angles, Cardan angles, Euler angles, matrices,
>   single or double vectors pairs and quaternions in the interface
>  - the functions package
>   providing notions like computable or sampled functions
>  - the quadrature package
>   (Riemann, trapezoid, enhanced Simpson, Gauss-Legendre up
>    to 5 points, easily extended)
>  - the utilities package
>   for the array mapping paradigm
>
> Some package that are probably not interesting are :
>
>  - the algebra package
>   orthogonal polynomials, inefficient and awkward implementation
>  - the raw linear algebra package
>   basic implementation developped for speed ... not sure the goal was
>   achieved and using only straightforward algorithms, not state of the art
>  - the random number generators
>   supports correlated vectors generation

Luc.

First, thanks for your interest in joining forces.  We are always
looking for new contributors / collaborators at apache.  There are
certainly lots of things in the list above that would fit nicely in
commons-math or complement things that we have in development.  What
is most important to us here, as everywhere @apache, is that we grow
community around the code, not just the code itself.  So if your
interest is in bringing in code and maybe more contributors and
working on it here, then that will be great.  If you just want to
donate / relicense the code, then while we really appreciate your
thinking of us, what we can adopt and support will of necessity be
pretty limited.  I really hope you will consider getting involved
personally (as you have already ;-) and bringing in contributions as
we talk about them and they make sense.  Other collaborators are most
welcome as well.

One housekeeping thing that we need to consider before we start to
have real fun with Mantissa is to make sure that you *can* relicense
and contribute portions of this code to apache.  Please have a look at
the sections on this page http://www.apache.org/licenses/#clas on CLAs
and Software Grants.  If you and / or other Mantissa team members
decide to contribute code to Apache based on Mantissa, you will need
to be able to sign CLAs and, depending on how the code comes in,
possibly a Software Grant (if we bring in a substantial amount of code
in a lump instead of small, refactored bits incrementally, we need to
do the Grant).  Don't worry about the process stuff, I can handle
that.  The important thing is to make sure that a) you want to join
the community and b) you can comply with the CLA and freely donate
contributions.  Feel free to ask questions here or offline.

Once again, thanks for your interest in commons-math and we look
forward to working with you!

Phil

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org