On Mon, 25 Nov 2013 08:46:46 -0500, Brian Wignall wrote:
Hello, everyone.

I am new and hoping to make my first contribution. I read through the Wish
List, and I thought I could help quickly by starting with the special
functions request.

Thanks for your interest in Commons Math.
Contributions are very welcome, but contributors even more so.

By this, I mean that the most important thing is not to increase the
codebase, but to make it so that it is gracefully integrated in the
project.

I did not read your patch in detail, but it is enough to already detect
the drawbacks of automated translation from Fortran.
[We have an unfortunate example of this in the class "BOBYQAOptimizer".]

A few remarks (in no particular order):
* Existing functionality must be reused (e.g. "factorial").
* Public instance variables are forbidden.
* Variable name must not contain underscores (unless it is a global constant). * Variables must be defined at the smallest possible scope and must have
  names as meaningful as possible (unlike customary in Fortran!).
* Commons Math's exception must be used exclusively.
* Global constants must be "final" (and their name must be in all uppercase).
* Operators must be surrounded by space characters.
* ...

IMO, a very important thing is to make the code as readable as possible. I know that you had to work already to obtain this result from the output
of the translator, but some further improvements are needed so that the
contribution looks like a Java source coded from scratch.

Best regards,
Gilles


I created a JIRA (https://issues.apache.org/jira/browse/MATH-1066) that contains a patch for Bessel functions of the first kind. There are other Bessel functions that are relevant, but I figured I would post that, to get (minor, hopefully) suggestions or tweaks to get it ready, to streamline the
process for other functions.

The JIRA is a bit sparse, so some more details on the patch follow.

Like several other open source packages, I started from Fortran code in Netlib; in this case, http://www.netlib.org/specfun/rjbesl . As a first pass, I enabled the double-precision lines with IEEE values already in the
code and then put the Fortran code through f2j (
http://www.netlib.org/java/f2j/). This handled the straightforward parts, but it left in gotos and some other bits that needed cleaning. Getting the
output of f2j to a decent place took more time and effort than I had
anticipated, but it is passing the unit tests I put in (based on output
from R, which uses a translation of the same Fortran code).

I am looking forward to hearing thoughts and suggestions.

Kind regards,
Brian


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to