| <?xml version="1.0"?> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <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.math3</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>dev@commons.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> |