<?xml version="1.0"?>

<!--
   Copyright 2003-2005 The Apache Software Foundation

   Licensed 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.
  -->
  
<?xml-stylesheet type="text/xsl" href="xdoc.xsl"?>
<!-- $Revision$ $Date$ -->
<document>

 <properties>
  <title>Commons-Math: The Jakarta Mathematics Library</title>
 </properties>

 <body>

  <section name="Commons-Math: The Jakarta Mathematics Library" href="summary">
   <p>
    Commons Math is a library of lightweight, self-contained
    mathematics and statistics components addressing the most common
    problems not available in the Java programming language or Commons
    Lang.
   </p>
   <p>
    Guiding principles:
    <ol>
     <li>
      Real-world application use cases determine development
      priority.
     </li>
     <li>
      This package emphasizes small, easily integrated components
      rather than large libraries with complex dependencies and
      configurations.
     </li>
     <li>
      All algorithms are fully documented and follow generally
      accepted best practices.
     </li>
     <li>
      In situations where multiple standard algorithms exist, a
      Strategy pattern is used to support multiple
      implementations.
     </li>
     <li>
      Limited dependencies. No external dependencies beyond Commons
      components and the core Java 2 platform.
     </li>
    </ol>
   </p>
  </section>
  <section name="Download Math">
   <subsection name="Releases">
    <p>
      The latest release of Commons Math is available for download
      <a href="http://jakarta.apache.org/site/downloads/downloads_commons-math.cgi">
      here</a>
    </p>
   </subsection>
   <subsection name="Nightly Builds">
    <p>
     Nightly builds are built once a day from the current SVN HEAD.
     This is (nearly) the lastest code and so should be treated with
     caution!
    </p>
    <p>
     You can get the nightly builds from <a
     href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-math/">here</a>
    </p>
   </subsection>
  </section>
 </body>
</document>
