Hi.

On Mon, 20 Jun 2016 11:31:23 +0200, Eric Barnhill wrote:
Here's a proposed draft for how o.a.c.m might be split into a commons
component, and more sophisticated spin-out components, around which we might develop a new Math TLP or incubator project in which components of the project that find backers continue on, and those that do not are frozen at their current state for now but not discarded (henceforth I just call
this TLP).

As a general strategy, I think it works to move the Field and Field Element
superclasses into the TLP. Methods that use these elements or other
math-specific data classes (e.g. DerivativeStructure, Neuron,
AlternativeHypothesis) belong in the TLP. Array-based classes belong in commons. I see two exceptions to this. One is Complex objects which seem to me to belong in the commons remit. The other is the array of statistics objects (like Summary Statistics) as those statistics operations are right for commons. I think some refactoring of the stats packages may enable a clearer separation of the stats packages into those appropriate for commons and those appropriate for a TLP stats package, but I leave that for another
thread.

Also I call a package "dormant" when to my untrained eye it appears to have
been underdeveloped and should perhaps be put out of its misery.

Here is a list of usage count of CM packages (Github search[1]):
 o.a.c.math3.analysis      2
 o.a.c.math3.distribution 39
 o.a.c.math3.exception     3
 o.a.c.math3.linear       10
 o.a.c.math3.primes        1
 o.a.c.math3.random       25
 o.a.c.math3.special       2
 o.a.c.math3.stat         29
 o.a.c.math3.util         25

[Does someone know how to make this list more representative by adding
data from other sources?]


Here we go:
--
o.a.c.m. Field, FieldElement, RealFieldElement -> TLP

+1

o.a.c.m. Analysis -> TLP

Mostly yes, but some utilities are used by packages that would
be good components (e.g. "o.a.c.m.distribution").  For example,
an efficient and robust root solver ("BrentSolver").

o.a.c.m. complex.Complex, ComplexFormat, ComplexUtils -> commons

+1

o.a.c.m. complex.ComplexField, Quaternion, RootsOfUnity -> TLP

Not sure about "Quaternion"; could be in the "Complex" component.

o.a.c.m. dfp -> dormant

Not really (as Sebb pointed out already).
To be included in an "altmath" component together with "FastMath",
and other utilities for high precision testing.

o.a.c.m. exception -> commons

-1
Each component use its own exception set.
No hope to get a consensus on this subject. :-}

It would not be a good idea for a "core" package to have an exception
library as its sole dependency.
Also, for core packages, the exception machinery of CM is not necessary.
[Personally, I don't think that it is ever necessary.]

o.a.c.m. filter -> dormant

+0
There is an open issue:
  https://issues.apache.org/jira/browse/MATH-932

o.a.c.m. fraction -> all except Big FractionField to commons.

+1

BigFractionField to TLP

+1

o.a.c.m. genetics -> TLP

+1
But should be dropped there (IMO).  See discussions on the ML and on
JIRA.  [A few months ago, someone proposed to enhance it (as a GSOC
assignment).]

o.a.c.m. geometry -> TLP

+1

o.a.c.m. linear -> TLP

+1

o.a.c.m. ml -> TLP

+1
I thought it could be a component, but perhaps to sophisticated (?).

o.a.c.m. ode -> TLP

+1

o.a.c.m. optim and optimization -> combine into one TLP component

Just TLP.
[It's already a problem to get _one_ TLP. :-}]

o.a.c.m. random and distribution -> combine into one TLP component

"o.a.c.m.random" in 3.x is to be deprecated.

o.a.c.m.rng ("develop" branch) -> Commons component.

"o.a.c.m.random" in "develop" branch is WIP (TBD).

o.a.c.m.distribution -> Commons component (that depends on the "RNG"
component).

o.a.c.m. primes -> commons

+1

o.a.c.m. special -> dormant

A lot of work has been put into this (thanks to Sébastien Brisard) in
order to improve the accuracy.
It's used by several classes in "o.a.c.m.distribution"
Should be a Commons component

o.a.c.m. stat.frequency -> perhaps belongs with random and distribution?
o.a.c.m. stat.clustering -> dormant
o.a.c.m. stat.correlation -> array based methods to commons, Matrix methods
to TLP
o.a.c.m. stat.descriptive, inferences, interval, ranking, regression -> Matrix methods to TLP. Array methods to commons. Statistics objects should
be divided between both after a refactoring.

Not starting a discussion about this package...
[Basic flaws in the design were identified.]

o.a.c.m.transform -> commons

+1
[Maybe, included in the "complex" component.]

o.a.c.m.util -> commons, perhaps refactored so the classes are in more
informative package names

+1

But note that this was supposed to be an "internal" package.
In particular, utilities superseded by the JDK should be dropped.


Gilles

[1] Thanks to Christian Grobmeier for the hint.


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

Reply via email to