115 lines
4.4 KiB
XML
115 lines
4.4 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<document>
|
|
|
|
<properties>
|
|
<title>Proposal for math Package</title>
|
|
<author email="martin@mvdb.net">Robert Burrell Donkin</author>
|
|
</properties>
|
|
|
|
<body>
|
|
|
|
<section name='Proposal for math Package'>
|
|
|
|
<subsection name='(0) Rationale'>
|
|
<p>The Java programming language and the math extensions in commons-lang provide implementations
|
|
for only the most basic mathematical algorithms. Routine development tasks such as computing
|
|
basic statistics or solving a system of linear equations require components not available in java
|
|
or commons-lang.</p>
|
|
|
|
<p>Most basic mathematical or statistical algorithms are available in open source implementations,
|
|
but to assemble a simple set of capabilities one has to use multiple libraries, many of which have
|
|
more restrictive licensing terms than the ASF. In addition, many of the best open source
|
|
implementations (e.g. the R statistical package) are either not available in Java or require large
|
|
support libraries and/or external dependencies to work.</p>
|
|
|
|
<p>A commons-math community will provide a productive environment for aggregation, testing and
|
|
support of efficient Java implementations of commonly used mathematical and statistical algorithms.</p>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='(1) Scope of the Package'>
|
|
|
|
<p>The Math project shall create and maintain a library of lightweight, self-contained mathematics
|
|
and statistics components addressing the most common practical problems not immediately available in
|
|
the Java programming language or commons-lang. The guiding principles for commons-math will be:
|
|
|
|
<ol>
|
|
<li>Real-world application use cases determine priority</li>
|
|
<li>Emphasis on small, easily integrated components rather than large libraries with complex
|
|
dependencies</li>
|
|
<li>All algorithms are fully documented and follow generally accepted best practices</li>
|
|
<li>In situations where multiple standard algorithms exist, use the Strategy pattern to support
|
|
multiple implementations</li>
|
|
<li>Limited dependencies. No external dependencies beyond Commons components and the JDK</li>
|
|
</ol>
|
|
</p>
|
|
</subsection>
|
|
|
|
<subsection name='(1.5) Interaction With Other Packages'>
|
|
|
|
<p><em>math</em> relies only on standard JDK 1.2 (or later) APIs for
|
|
production deployment. It utilizes the JUnit unit testing framework for
|
|
developing and executing unit tests, but this is of interest only to
|
|
developers of the component.</p>
|
|
|
|
<p>No external configuration files are utilized.</p>
|
|
|
|
</subsection>
|
|
<subsection name='(2) Initial Source of the Package'>
|
|
|
|
<p>The initial codebase will consist of implementations of basic statistical algorithms such
|
|
as the following:
|
|
<ul>
|
|
<li>Simple univariate statistics (mean, standard deviation, n, confidence intervals)</li>
|
|
<li>Frequency distributions</li>
|
|
<li>t-test, chi-square test</li>
|
|
<li>Random numbers from Gaussian, Exponential, Poisson distributions</li>
|
|
<li>Random sampling/resampling</li>
|
|
<li>Bivariate regression, corellation</li>
|
|
</ul>
|
|
|
|
and mathematical algorithms such as the following:
|
|
<ul>
|
|
<li>Basic Complex Number representation with algebraic operations</li>
|
|
<li>Newton's method for finding roots</li>
|
|
<li>Binomial coefficients</li>
|
|
<li>Exponential growth and decay (set up for financial applications)</li>
|
|
<li>Polynomial Interpolation (curve fitting)</li>
|
|
<li>Basic Matrix representation with algebraic operations</li>
|
|
</ul>
|
|
</p>
|
|
|
|
<p>The proposed package name for the new component is
|
|
<code>org.apache.commons.math</code>.</p>
|
|
|
|
</subsection>
|
|
<subsection name='(3) Required Jakarta-Commons Resources'>
|
|
|
|
<ul>
|
|
<li>CVS Repository - New directory <code>math</code> in the
|
|
<code>jakarta-commons</code> CVS repository.</li>
|
|
<li>Mailing List - Discussions will take place on the general
|
|
<em>commons-dev@jakarta.apache.org</em> mailing list. To help
|
|
list subscribers identify messages of interest, it is suggested that
|
|
the message subject of messages about this component be prefixed with
|
|
[math].</li>
|
|
<li>Bugzilla - New component "math" under the "Commons" product
|
|
category, with appropriate version identifiers as needed.</li>
|
|
<li>Jyve FAQ - New category "commons-math" (when available).</li>
|
|
</ul>
|
|
|
|
</subsection>
|
|
<subsection name='(4) Initial Committers'>
|
|
|
|
<p>The initial committers on the math component shall be:
|
|
<ul>
|
|
<li><a href="mailto:rdonkin@apache.org">Robert Burrell Donkin</a></li>
|
|
<li><a href="mailto:tobrien@apache.org">Tim O'Brien</a></li>
|
|
</ul>
|
|
</p>
|
|
</subsection>
|
|
</section>
|
|
</body>
|
|
</document>
|