<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
   Copyright 2003-2004 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.
  -->
<!DOCTYPE org.apache.commons.menus SYSTEM '../../commons-build/menus/menus.dtd'>

<project name="Math">

  <title>Math</title>
  <organizationLogo href="/images/jakarta-logo-blue.gif">
   Jakarta
  </organizationLogo>

  <body>
    <links>
      <item name="Jakarta"                   
            href="http://jakarta.apache.org"/>
      <item name="Jakarta Commons"                   
            href="http://jakarta.apache.org/commons/"/>
    </links>

    <menu name="Math">
      <item name="Overview"                href="/index.html"/>
      <item name="Proposal"                href="/proposal.html"/>
      <item name="Developers Guide"        href="/developers.html"/>
      <item name="Javadoc (1.0 release)"                 href="api/index.html"/>
      <item name="Javadoc (1.1-dev)"                 href="apidocs/index.html"/>
      <item name="Source Repository (current)"  
       href="http://svn.apache.org/viewcvs.cgi/jakarta/commons/proper/math/trunk"/>
      <item name="Wiki (Wish List)"  
            href="http://wiki.apache.org/jakarta-commons/MathWishList"/>
    </menu>
    <menu name="User Guide">
      <item name="Contents"                href="/userguide/index.html"/>
      <item name="Overview"                href="/userguide/overview.html"/>
      <item name="Statistics"              href="/userguide/stat.html"/>
      <item name="Data Generation"         href="/userguide/random.html"/>
      <item name="Linear Algebra"          href="/userguide/linear.html"/>
      <item name="Numerical Analysis"      href="/userguide/analysis.html"/>
      <item name="Special Functions"       href="/userguide/special.html"/>
      <item name="Utilities"               href="/userguide/utilities.html"/>
      <item name="Complex Numbers"         href="/userguide/complex.html"/>
      <item name="Distributions"           href="/userguide/distribution.html"/>
      <item name="Fractions"           href="/userguide/fraction.html"/>
    </menu>
    
    &common-menus;

  </body>
</project>
