<?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>Apache Commons Numbers</title>
 </properties>

 <body>

  <section name="Commons Numbers: Extended number types and utilities" href="summary">
   <p>
     Commons Numbers provides implementations of extended number types such as
     <ul>
       <li>complex</li>
       <li>quaternion</li>
       <li>fraction</li>
     </ul>
   </p>
  </section>

  <section name="Download Commons Numbers">
    <subsection name="Releases">
      <p>There is no offcial release yet. Come and join development work!</p>
    <!--
      <p>
        Download the
        <a href="http://commons.apache.org/numbers/download_numbers.cgi">
          Latest Release</a> of Commons Numbers.
      </p>
    -->
    </subsection>

  </section>
 </body>
</document>
