Tagged 1.2-RC1

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/tags/MATH_1_2_RC1@620414 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
new file mode 100644
index 0000000..f5f0748
--- /dev/null
+++ b/RELEASE-NOTES.txt
@@ -0,0 +1,153 @@
+
+                        Apache Commons Math Version 1.2-RC1 
+                                   RELEASE NOTES
+
+      
+This release combines bug fixes and new features. Most notable among the new 
+features are the estimation, optimization, geometry and ode packages added 
+from the Mantissa library. Implementations of fast Fourier transform, QR 
+decomposition and several numerical integration algorithms have also been 
+added, along with enhancements and extensions to packages included in Commons 
+Math 1.1. This release is source and binary compatible with earlier versions 
+of Commons Math. 
+
+For more information on Apache Commons Math, see
+http://commons.apache.org/math/
+      
+      
+                             SUMMARY OF CHANGES
+
+ADDITIONS
+
+* Added the estimation, optimization, geometry and ode packages from the 
+  Mantissa library. 
+          
+* MATH-120. Added Pascal distribution implementation. Thanks to Todd C. 
+  Parnell. 
+          
+* MATH-148. Added QR Decomposition. Thanks to Joni Salonen. 
+          
+* MATH-140. Added Fast Fourier Transform implementation. Thanks to Xiaogang 
+  Zhang. 
+          
+* MATH-173. Added one-way ANOVA implementation. Thanks to Bob MacCallum. 
+          
+* Added an angle normalization method in MathUtils to force angles in some 
+  user-defined interval 
+          
+* Added vectorial covariance computation (either sample or population 
+  covariance) 
+          
+* Added multivariate summary statistics. 
+          
+
+BUG FIXES
+
+* Fixed numerous warnings in test code. 
+          
+* MATH-156. Use the initial guess provided by the user in 
+  BrentSolver.solve(), thus improving speed. Thanks to Tyler Ward. 
+          
+* MATH-18. Made ComplexFormat format double values with a provided 
+  NumberFormat instance instead of using the real part format for all values. 
+  Thanks to Phil Steitz. 
+          
+* MATH-60. Modified ProperFractionFormat to reject embedded minus signs. 
+  Thanks to Nhung Nnguyen. 
+          
+* MATH-151. Added a nextAfter method in MathUtils to return the next 
+  machine-representable number in a specified direction from a given floating 
+  point number. Used this to ensure that MathUtils.round does not return 
+  incorrect results for numbers with bad IEEE754 representations. Thanks to 
+  Luc Maisonobe. 
+          
+* MATH-85. Modified getSumSquaredErrors method in SimpleRegression to always 
+  return a non-negative result. Thanks to Mark Osborn, Luc Maisonobe. 
+          
+* MATH-153. Corrected nextInt and nextLong to handle wide value ranges. 
+  Thanks to Remi Arntzen. 
+          
+* MATH-166. Increased default precision of Gamma and Beta functions. Thanks 
+  to Lukas Theussl. 
+          
+* MATH-167. Modified NormalDistributionImpl.cumulativeProbablity to catch 
+  MaxIterationsExceededException and return 0 or 1, resp. if the argument is 
+  more than 20 standard deviations from the mean. 
+          
+* MATH-174. Changed Mean.evaluate() to use a two-pass algorithm, improving 
+  accuracy by exploiting the the fact that this method has access to the full 
+  array of data values. 
+          
+* MATH-175. Added check and rescaling of expected counts to sum to sum of 
+  expected counts if necessary in ChiSquare test. Thanks to Carl Anderson. 
+          
+* MATH-164. Handle multiplication of Complex numbers with infinite parts 
+  specially. 
+          
+* MATH-182. Add integer overflow checks in Fraction constructor using double 
+  parameter. 
+          
+* MATH-185. Throw EOFException when using empty files with ValueServer in 
+  replay and digest modes. 
+          
+* MATH-184. Fixed AbstractIntegerDistribution cumulativeProbablility(-,-) to 
+  correctly handle double arguments. Thanks to Yegor Bryukhov. 
+          
+
+UPDATES
+
+* MATH-158. Added log function to MathUtils. Thanks to Hasan Diwan. 
+          
+* MATH-160. Added two sample (binned comparison) ChiSquare test. Thanks to 
+  Matthias Hummel. 
+          
+* MATH-170. Added SynchronizedDescriptiveStatistics class. Thanks to David J. 
+  M. Karlsen. 
+          
+* MATH-154. Added addAndCheck, mulAndCheck, and subAndCheck MathUtils methods 
+  for long integer arguments. Thanks to Remi Arntzen. 
+          
+* MATH-171. Merged most functions from ComplexUtils into Complex class, added 
+  static factory method to Complex. Thanks to Niall Pemberton. 
+          
+* Deprecated abstract factory methods and made DescriptiveStatistics and and 
+  SummaryStatistics concrete classes. Pushed implementations up from 
+  DescriptiveStatisticsImpl, SummaryStatisticsImpl. Made implementations of 
+  statistics configurable via setters. 
+          
+* MATH-176. Add errors guessing to least-squares estimators. Thanks to 
+  Kazuhiro Koshino. 
+          
+* MATH-179. Add tests for Fraction constructor using double parameter. Thanks 
+  to Niall Pemberton. 
+          
+* MATH-181. Add Fraction constructor using max denominator value. Thanks to 
+  Niall Pemberton. 
+          
+* Added a equals and hash methods in MathUtils to check for double arrays 
+          
+* MATH-191. Added getSumOfLogs method to SummaryStatistics and made SumOfLogs 
+  instance used by GeometricMean configurable. 
+          
+* MATH-188. Made numerator and denominator final in Fraction and deprecated 
+  protected real and imaginary parts fields in Complex, making Fraction 
+  immutable and preparing Complex to become fully immutable in 2.0. Thanks to 
+  Sebastian Bazley. 
+          
+DEPRECATIONS SUMMARY
+
+* The abstract factory pattern used to enable pluggable implementations in the
+  statistics, analysis and distributions packages has been deprecated and
+  replaced by setter injection.  
+  
+* Non-localized exception messages and associated constructors have been
+  deprecated and replaced by localized versions.
+  
+* Most methods from the ComplexUtils class have been deprecated, with
+  implementations moved to the Complex class.
+  
+See "clirr-report.html" included in the binary distribution for a detailed list
+of API changes. The "errors" reported at the top of the report are due to
+protected fields being moved to superclasses.  These fields are still available,
+so there is no backward compatibility issue.
+
diff --git a/pom.xml b/pom.xml
index a557dc8..f9376f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>commons-math</groupId>
   <artifactId>commons-math</artifactId>
-  <version>1.2-SNAPSHOT</version>
+  <version>1.2-RC1</version>
   <name>Commons Math</name>
 
   <inceptionYear>2003</inceptionYear>
@@ -270,6 +270,7 @@
 org.apache.commons.math.transform;version=${project.version},
 org.apache.commons.math.util;version=${project.version}
                 </Import-Package>
+                <Built-By>psteitz</Built-By>
               </manifestEntries>
             </archive>
           </configuration>
@@ -284,6 +285,7 @@
             </descriptors>
           </configuration>
         </plugin>
+        <!--
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>cobertura-maven-plugin</artifactId>
@@ -296,6 +298,7 @@
             </execution>
           </executions>
         </plugin>
+        -->
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>clirr-maven-plugin</artifactId>
@@ -322,11 +325,13 @@
           <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
       </plugin>
+      <!--
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>2.0</version>
       </plugin>
+      -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-changes-plugin</artifactId>
diff --git a/project.xml b/project.xml
index 019a6e5..23a8e0f 100644
--- a/project.xml
+++ b/project.xml
@@ -23,7 +23,7 @@
   <name>Math</name>
   <groupId>commons-math</groupId>
   <artifactId>commons-math</artifactId>
-  <currentVersion>1.2-SNAPSHOT</currentVersion>
+  <currentVersion>1.2-RC1</currentVersion>
   <inceptionYear>2003</inceptionYear>
   <shortDescription>Commons Math</shortDescription>
   <description>The Math project is 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.</description>
@@ -107,9 +107,9 @@
       <tag>MATH_1_1</tag>
     </version>
     <version>
-      <id>1.2-SNAPSHOT</id>
-      <name>1.1</name>
-      <tag>trunk</tag>
+      <id>1.2-RC1</id>
+      <name>1.2</name>
+      <tag>MATH_1_2_RC1</tag>
     </version>
   </versions>
   <developers>
diff --git a/release-notes.jsl b/release-notes.jsl
index 3772735..e1be17d 100644
--- a/release-notes.jsl
+++ b/release-notes.jsl
@@ -108,7 +108,26 @@
           <x:set var="item" select="."/><jsl:applyTemplates select="$action"/>
         </j:forEach>
       </j:if>
-    </j:if>
+<j:whitespace trim="false">
+DEPRECATIONS SUMMARY
+
+* The abstract factory pattern used to enable pluggable implementations in the
+  statistics, analysis and distributions packages has been deprecated and
+  replaced by setter injection.  
+  
+* Non-localized exception messages and associated constructors have been
+  deprecated and replaced by localized versions.
+  
+* Most methods from the ComplexUtils class have been deprecated, with
+  implementations moved to the Complex class.
+  
+See "clirr-report.html" included in the binary distribution for a detailed list
+of API changes. The "errors" reported at the top of the report are due to
+protected fields being moved to superclasses.  These fields are still available,
+so there is no backward compatibility issue.
+
+</j:whitespace>
+     </j:if>
   </jsl:template>
   
   <jsl:template match="action" trim="true">
@@ -140,7 +159,5 @@
   </jsl:template>
 
   <jsl:template match="@*"/>
-
   <jsl:template match="text()"/>
-
 </jsl:stylesheet>
diff --git a/src/assembly/src.xml b/src/assembly/src.xml
index 56c61df..1fa9551 100644
--- a/src/assembly/src.xml
+++ b/src/assembly/src.xml
@@ -37,19 +37,16 @@
         <include>build.properties.sample</include>
         <include>checkstyle.xml</include>
         <include>RELEASE-NOTES*</include>
-        <include>license-header.txt</include>
-        <include>PROPOSAL.html</include>
         <include>release-notes.jsl</include>
-        <include>test-jar.xml</include>
-        <include>testOnly.sh</include>
         <include>findbugs-exclude-filter.xml</include>
       </includes>
     </fileSet>
     <fileSet>
       <directory>src</directory>
-    </fileSet>
-    <fileSet>
-      <directory>xdocs</directory>
+      <excludes>
+        <exclude>**/mantissa/**</exclude>
+        <exclude>**/experimental/**</exclude>
+      </excludes>
     </fileSet>
   </fileSets>
 </assembly>
diff --git a/src/java/org/apache/commons/math/ArgumentOutsideDomainException.java b/src/java/org/apache/commons/math/ArgumentOutsideDomainException.java
index 239b954..20efc0d 100644
--- a/src/java/org/apache/commons/math/ArgumentOutsideDomainException.java
+++ b/src/java/org/apache/commons/math/ArgumentOutsideDomainException.java
@@ -20,6 +20,7 @@
 /**
  * Error thrown when a method is called with an out of bounds argument.
  *
+ * @since 1.2
  * @version $Revision$ $Date$
  */
 public class ArgumentOutsideDomainException extends FunctionEvaluationException {
diff --git a/src/java/org/apache/commons/math/ConvergenceException.java b/src/java/org/apache/commons/math/ConvergenceException.java
index 77feb08..985ee20 100644
--- a/src/java/org/apache/commons/math/ConvergenceException.java
+++ b/src/java/org/apache/commons/math/ConvergenceException.java
@@ -39,6 +39,7 @@
      * Message formatting is delegated to {@link java.text.MessageFormat}.
      * @param pattern format specifier
      * @param arguments format arguments
+     * @since 1.2
      */
     public ConvergenceException(String pattern, Object[] arguments) {
         super(pattern, arguments);
@@ -58,6 +59,7 @@
      * @param pattern format specifier
      * @param arguments format arguments
      * @param cause  the exception or error that caused this exception to be thrown
+     * @since 1.2
      */
     public ConvergenceException(String pattern, Object[] arguments, Throwable cause) {
         super(pattern, arguments, cause);
diff --git a/src/java/org/apache/commons/math/DimensionMismatchException.java b/src/java/org/apache/commons/math/DimensionMismatchException.java
index 4e00205..0fdd0a1 100644
--- a/src/java/org/apache/commons/math/DimensionMismatchException.java
+++ b/src/java/org/apache/commons/math/DimensionMismatchException.java
@@ -18,6 +18,8 @@
 
 /**
  * Error thrown when two dimensions differ.
+ * 
+ * @since 1.2
  * @version $Revision$ $Date$
  */
 public class DimensionMismatchException extends MathException {
diff --git a/src/java/org/apache/commons/math/DuplicateSampleAbscissaException.java b/src/java/org/apache/commons/math/DuplicateSampleAbscissaException.java
index c204bf7..2d1be1b 100644
--- a/src/java/org/apache/commons/math/DuplicateSampleAbscissaException.java
+++ b/src/java/org/apache/commons/math/DuplicateSampleAbscissaException.java
@@ -18,6 +18,8 @@
 
 /**
  * Exeption thrown when a sample contains several entries at the same abscissa.
+ * 
+ * @since 1.2
  * @version $Revision$ $Date$
  */
 public class DuplicateSampleAbscissaException extends MathException  {
diff --git a/src/java/org/apache/commons/math/FunctionEvaluationException.java b/src/java/org/apache/commons/math/FunctionEvaluationException.java
index ae37ca7..13916e7 100644
--- a/src/java/org/apache/commons/math/FunctionEvaluationException.java
+++ b/src/java/org/apache/commons/math/FunctionEvaluationException.java
@@ -63,6 +63,7 @@
      * @param argument  the failing function argument 
      * @param pattern format specifier
      * @param arguments format arguments
+     * @since 1.2
      */
     public FunctionEvaluationException(double argument,
                                        String pattern, Object[] arguments) {
@@ -89,6 +90,7 @@
      * Message formatting is delegated to {@link java.text.MessageFormat}.
      * @param argument  the failing function argument 
      * @param cause  the exception or error that caused this exception to be thrown
+     * @since 1.2
      */
     public FunctionEvaluationException(double argument, Throwable cause) {
         super(cause);
@@ -102,6 +104,7 @@
      * @param pattern format specifier
      * @param arguments format arguments
      * @param cause  the exception or error that caused this exception to be thrown
+     * @since 1.2
      */
     public FunctionEvaluationException(double argument,
                                        String pattern, Object[] arguments,
diff --git a/src/java/org/apache/commons/math/MathConfigurationException.java b/src/java/org/apache/commons/math/MathConfigurationException.java
index 5391a85..dd8bdad 100644
--- a/src/java/org/apache/commons/math/MathConfigurationException.java
+++ b/src/java/org/apache/commons/math/MathConfigurationException.java
@@ -47,6 +47,7 @@
      * Message formatting is delegated to {@link java.text.MessageFormat}.
      * @param pattern format specifier
      * @param arguments format arguments
+     * @since 1.2
      */
     public MathConfigurationException(String pattern, Object[] arguments) {
         super(pattern, arguments);
@@ -76,6 +77,7 @@
      * @param pattern format specifier
      * @param arguments format arguments
      * @param cause  the exception or error that caused this exception to be thrown
+     * @since 1.2
      */
     public MathConfigurationException(String pattern, Object[] arguments, Throwable cause) {
         super(pattern, arguments, cause);
diff --git a/src/java/org/apache/commons/math/MathException.java b/src/java/org/apache/commons/math/MathException.java
index 7f82eb2..e142e3f 100644
--- a/src/java/org/apache/commons/math/MathException.java
+++ b/src/java/org/apache/commons/math/MathException.java
@@ -191,8 +191,9 @@
      * Message formatting is delegated to {@link java.text.MessageFormat}.
      * @param pattern format specifier
      * @param arguments format arguments
-     * @param rootCause  the exception or error that caused this exception
-     *                   to be thrown.
+     * @param rootCause the exception or error that caused this exception
+     * to be thrown.
+     * @since 1.2
      */
     public MathException(String pattern, Object[] arguments, Throwable rootCause) {
       super(buildMessage(pattern, arguments, Locale.US));
@@ -204,6 +205,7 @@
     /** Gets the pattern used to build the message of this throwable.
      *
      * @return the pattern used to build the message of this throwable
+     * @since 1.2
      */
     public String getPattern() {
         return pattern;
@@ -212,6 +214,7 @@
     /** Gets the arguments used to build the message of this throwable.
      *
      * @return the arguments used to build the message of this throwable
+     * @since 1.2
      */
     public Object[] getArguments() {
         return (Object[]) arguments.clone();
@@ -222,6 +225,7 @@
      * @param locale Locale in which the message should be translated
      * 
      * @return localized message
+     * @since 1.2
      */
     public String getMessage(Locale locale) {
         return (pattern == null) ? null : buildMessage(pattern, arguments, locale);
diff --git a/src/java/org/apache/commons/math/MaxIterationsExceededException.java b/src/java/org/apache/commons/math/MaxIterationsExceededException.java
index a9103ee..ecc59de9 100644
--- a/src/java/org/apache/commons/math/MaxIterationsExceededException.java
+++ b/src/java/org/apache/commons/math/MaxIterationsExceededException.java
@@ -24,6 +24,7 @@
  * number of iterations.
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class MaxIterationsExceededException extends ConvergenceException {
 
diff --git a/src/java/org/apache/commons/math/MessagesResources_fr.java b/src/java/org/apache/commons/math/MessagesResources_fr.java
index 7bff490..c1beffc 100644
--- a/src/java/org/apache/commons/math/MessagesResources_fr.java
+++ b/src/java/org/apache/commons/math/MessagesResources_fr.java
@@ -19,18 +19,22 @@
 
 import java.util.ListResourceBundle;
 
-/** French localization message resources for the commons-math library.
+/** 
+ * French localization message resources for the commons-math library.
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class MessagesResources_fr
   extends ListResourceBundle {
 
-  /** Simple constructor.
+  /** 
+   * Simple constructor.
    */
   public MessagesResources_fr() {
   }
 
-  /** Get the non-translated/translated messages arrays from this resource bundle.
+  /** 
+   * Get the non-translated/translated messages arrays from this resource bundle.
    * @return non-translated/translated messages arrays
    */
   public Object[][] getContents() {
diff --git a/src/java/org/apache/commons/math/analysis/DividedDifferenceInterpolator.java b/src/java/org/apache/commons/math/analysis/DividedDifferenceInterpolator.java
index e28e2e1..3739b83 100644
--- a/src/java/org/apache/commons/math/analysis/DividedDifferenceInterpolator.java
+++ b/src/java/org/apache/commons/math/analysis/DividedDifferenceInterpolator.java
@@ -31,6 +31,7 @@
  * this class provides an easy-to-use interface to it.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class DividedDifferenceInterpolator implements UnivariateRealInterpolator,
     Serializable {
diff --git a/src/java/org/apache/commons/math/analysis/LaguerreSolver.java b/src/java/org/apache/commons/math/analysis/LaguerreSolver.java
index 30f2b8b..546a411 100644
--- a/src/java/org/apache/commons/math/analysis/LaguerreSolver.java
+++ b/src/java/org/apache/commons/math/analysis/LaguerreSolver.java
@@ -31,6 +31,7 @@
  * approximation and be able to solve all roots from that point.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class LaguerreSolver extends UnivariateRealSolverImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/MullerSolver.java b/src/java/org/apache/commons/math/analysis/MullerSolver.java
index ee460d7..6784e23 100644
--- a/src/java/org/apache/commons/math/analysis/MullerSolver.java
+++ b/src/java/org/apache/commons/math/analysis/MullerSolver.java
@@ -31,6 +31,7 @@
  * real zeros, using different ways to bypass complex arithmetics.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class MullerSolver extends UnivariateRealSolverImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/NevilleInterpolator.java b/src/java/org/apache/commons/math/analysis/NevilleInterpolator.java
index b2b0931..5aaf894 100644
--- a/src/java/org/apache/commons/math/analysis/NevilleInterpolator.java
+++ b/src/java/org/apache/commons/math/analysis/NevilleInterpolator.java
@@ -29,6 +29,7 @@
  * this class provides an easy-to-use interface to it.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class NevilleInterpolator implements UnivariateRealInterpolator,
     Serializable {
diff --git a/src/java/org/apache/commons/math/analysis/PolynomialFunctionLagrangeForm.java b/src/java/org/apache/commons/math/analysis/PolynomialFunctionLagrangeForm.java
index 2cd82ac..7cf0212 100644
--- a/src/java/org/apache/commons/math/analysis/PolynomialFunctionLagrangeForm.java
+++ b/src/java/org/apache/commons/math/analysis/PolynomialFunctionLagrangeForm.java
@@ -31,6 +31,7 @@
  * to work well. Otherwise, consider using splines instead.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class PolynomialFunctionLagrangeForm implements UnivariateRealFunction,
     Serializable {
diff --git a/src/java/org/apache/commons/math/analysis/PolynomialFunctionNewtonForm.java b/src/java/org/apache/commons/math/analysis/PolynomialFunctionNewtonForm.java
index 6ad3c3b..b9da774 100644
--- a/src/java/org/apache/commons/math/analysis/PolynomialFunctionNewtonForm.java
+++ b/src/java/org/apache/commons/math/analysis/PolynomialFunctionNewtonForm.java
@@ -30,6 +30,7 @@
  * Note that the length of a[] is one more than the length of c[]</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class PolynomialFunctionNewtonForm implements UnivariateRealFunction,
     Serializable {
diff --git a/src/java/org/apache/commons/math/analysis/RiddersSolver.java b/src/java/org/apache/commons/math/analysis/RiddersSolver.java
index e9e6144..d46be02 100644
--- a/src/java/org/apache/commons/math/analysis/RiddersSolver.java
+++ b/src/java/org/apache/commons/math/analysis/RiddersSolver.java
@@ -30,6 +30,7 @@
  * The function should be continuous but not necessarily smooth.</p>
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class RiddersSolver extends UnivariateRealSolverImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/RombergIntegrator.java b/src/java/org/apache/commons/math/analysis/RombergIntegrator.java
index 5095e8d..9cf8582 100644
--- a/src/java/org/apache/commons/math/analysis/RombergIntegrator.java
+++ b/src/java/org/apache/commons/math/analysis/RombergIntegrator.java
@@ -30,6 +30,7 @@
  * is a special case of k = 2.</p>
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class RombergIntegrator extends UnivariateRealIntegratorImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/SimpsonIntegrator.java b/src/java/org/apache/commons/math/analysis/SimpsonIntegrator.java
index b5ed5f3..cb0db9d 100644
--- a/src/java/org/apache/commons/math/analysis/SimpsonIntegrator.java
+++ b/src/java/org/apache/commons/math/analysis/SimpsonIntegrator.java
@@ -29,6 +29,7 @@
  * calculate the Simpson's rule of alternating 2/3 and 4/3.</p>
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class SimpsonIntegrator extends UnivariateRealIntegratorImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/TrapezoidIntegrator.java b/src/java/org/apache/commons/math/analysis/TrapezoidIntegrator.java
index 2dce7d2..9458446 100644
--- a/src/java/org/apache/commons/math/analysis/TrapezoidIntegrator.java
+++ b/src/java/org/apache/commons/math/analysis/TrapezoidIntegrator.java
@@ -28,6 +28,7 @@
  * The function should be integrable.</p>
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class TrapezoidIntegrator extends UnivariateRealIntegratorImpl {
 
diff --git a/src/java/org/apache/commons/math/analysis/UnivariateRealIntegrator.java b/src/java/org/apache/commons/math/analysis/UnivariateRealIntegrator.java
index 7941557..3972523 100644
--- a/src/java/org/apache/commons/math/analysis/UnivariateRealIntegrator.java
+++ b/src/java/org/apache/commons/math/analysis/UnivariateRealIntegrator.java
@@ -23,6 +23,7 @@
  * Interface for univariate real integration algorithms.
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public interface UnivariateRealIntegrator {
 
diff --git a/src/java/org/apache/commons/math/analysis/UnivariateRealIntegratorImpl.java b/src/java/org/apache/commons/math/analysis/UnivariateRealIntegratorImpl.java
index 5e78349..911c55b 100644
--- a/src/java/org/apache/commons/math/analysis/UnivariateRealIntegratorImpl.java
+++ b/src/java/org/apache/commons/math/analysis/UnivariateRealIntegratorImpl.java
@@ -22,6 +22,7 @@
  * Provide a default implementation for several generic functions.
  *  
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public abstract class UnivariateRealIntegratorImpl implements
     UnivariateRealIntegrator, Serializable {
diff --git a/src/java/org/apache/commons/math/complex/Complex.java b/src/java/org/apache/commons/math/complex/Complex.java
index bcfb613..4bcf6d4 100644
--- a/src/java/org/apache/commons/math/complex/Complex.java
+++ b/src/java/org/apache/commons/math/complex/Complex.java
@@ -34,7 +34,6 @@
  * or imaginary part - e.g., <pre>
  * <code>1 + NaNi  == NaN + i == NaN + NaNi.</code></pre></p>
  *
- * @author Apache Software Foundation
  * @version $Revision$ $Date$
  */
 public class Complex implements Serializable  {
@@ -57,10 +56,16 @@
     /** A complex number representing "0.0 + 0.0i" */    
     public static final Complex ZERO = new Complex(0.0, 0.0);
     
-    /** The imaginary part */
+    /** 
+     * The imaginary part 
+     * @deprecated to be made final and private in 2.0
+     */
     protected double imaginary;
     
-    /** The real part */
+    /** 
+     * The real part 
+     * @deprecated to be made final and private in 2.0
+     */
     protected double real;
     
     /**
diff --git a/src/java/org/apache/commons/math/distribution/AbstractIntegerDistribution.java b/src/java/org/apache/commons/math/distribution/AbstractIntegerDistribution.java
index 23d32f2..41210c5 100644
--- a/src/java/org/apache/commons/math/distribution/AbstractIntegerDistribution.java
+++ b/src/java/org/apache/commons/math/distribution/AbstractIntegerDistribution.java
@@ -62,6 +62,34 @@
     
     /**
      * For a random variable X whose values are distributed according
+     * to this distribution, this method returns P(x0 &le; X &le; x1).
+     * 
+     * @param x0 the (inclusive) lower bound
+     * @param x1 the (inclusive) upper bound
+     * @return the probability that a random variable with this distribution
+     * will take a value between <code>x0</code> and <code>x1</code>,
+     * including the endpoints.
+     * @throws MathException if the cumulative probability can not be
+     * computed due to convergence or other numerical errors.
+     * @throws IllegalArgumentException if <code>x0 > x1</code>
+     */
+    public double cumulativeProbability(double x0, double x1)
+        throws MathException {
+        if (x0 > x1) {
+            throw new IllegalArgumentException
+            ("lower endpoint must be less than or equal to upper endpoint");
+        }
+        if (Math.floor(x0) < x0) {
+            return cumulativeProbability(((int) Math.floor(x0)) + 1,
+               (int) Math.floor(x1)); // don't want to count mass below x0
+        } else { // x0 is mathematical integer, so use as is
+            return cumulativeProbability((int) Math.floor(x0),
+                (int) Math.floor(x1)); 
+        }
+    }
+    
+    /**
+     * For a random variable X whose values are distributed according
      * to this distribution, this method returns P(X &le; x).  In other words,
      * this method represents the probability distribution function, or PDF,
      * for this distribution.
diff --git a/src/java/org/apache/commons/math/estimation/AbstractEstimator.java b/src/java/org/apache/commons/math/estimation/AbstractEstimator.java
index e12173e..1c0e5ad 100644
--- a/src/java/org/apache/commons/math/estimation/AbstractEstimator.java
+++ b/src/java/org/apache/commons/math/estimation/AbstractEstimator.java
@@ -27,6 +27,7 @@
  * <p>This base class handles the boilerplates methods associated to thresholds
  * settings, jacobian and error estimation.</p>
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 public abstract class AbstractEstimator implements Estimator {
diff --git a/src/java/org/apache/commons/math/estimation/EstimatedParameter.java b/src/java/org/apache/commons/math/estimation/EstimatedParameter.java
index d5a75e3..b00d976 100644
--- a/src/java/org/apache/commons/math/estimation/EstimatedParameter.java
+++ b/src/java/org/apache/commons/math/estimation/EstimatedParameter.java
@@ -28,6 +28,7 @@
  * satisfy convergence criterions specific to each solver.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/estimation/EstimationException.java b/src/java/org/apache/commons/math/estimation/EstimationException.java
index baa9d74..5d6e651 100644
--- a/src/java/org/apache/commons/math/estimation/EstimationException.java
+++ b/src/java/org/apache/commons/math/estimation/EstimationException.java
@@ -23,6 +23,7 @@
  * This class represents exceptions thrown by the estimation solvers.
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/estimation/EstimationProblem.java b/src/java/org/apache/commons/math/estimation/EstimationProblem.java
index 3c1103f..4063c56 100644
--- a/src/java/org/apache/commons/math/estimation/EstimationProblem.java
+++ b/src/java/org/apache/commons/math/estimation/EstimationProblem.java
@@ -39,6 +39,7 @@
  * @see WeightedMeasurement
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/estimation/Estimator.java b/src/java/org/apache/commons/math/estimation/Estimator.java
index d9e4440..1ba9f21 100644
--- a/src/java/org/apache/commons/math/estimation/Estimator.java
+++ b/src/java/org/apache/commons/math/estimation/Estimator.java
@@ -31,6 +31,7 @@
  * @see EstimationProblem
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/estimation/GaussNewtonEstimator.java b/src/java/org/apache/commons/math/estimation/GaussNewtonEstimator.java
index 55246db..b2732b0 100644
--- a/src/java/org/apache/commons/math/estimation/GaussNewtonEstimator.java
+++ b/src/java/org/apache/commons/math/estimation/GaussNewtonEstimator.java
@@ -31,6 +31,7 @@
  * Gauss-Newton algorithm.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/estimation/LevenbergMarquardtEstimator.java b/src/java/org/apache/commons/math/estimation/LevenbergMarquardtEstimator.java
index 4c1702e..248ebf3 100644
--- a/src/java/org/apache/commons/math/estimation/LevenbergMarquardtEstimator.java
+++ b/src/java/org/apache/commons/math/estimation/LevenbergMarquardtEstimator.java
@@ -94,7 +94,8 @@
  * @author Jorge J. More (original fortran)
 
  * @version $Revision$ $Date$
-
+ * @since 1.2
+ *
  */
 public class LevenbergMarquardtEstimator extends AbstractEstimator implements Serializable {
 
diff --git a/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java b/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
index f3b3719..96d817d 100644
--- a/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
+++ b/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
@@ -36,6 +36,7 @@
  * various parameters and their current estimate.</p>
 
  * @version $Revision$ $Date$
+ * @since 1.2
 
  */
 public class SimpleEstimationProblem implements EstimationProblem {
diff --git a/src/java/org/apache/commons/math/estimation/WeightedMeasurement.java b/src/java/org/apache/commons/math/estimation/WeightedMeasurement.java
index 4ac52b3..aa268c8 100644
--- a/src/java/org/apache/commons/math/estimation/WeightedMeasurement.java
+++ b/src/java/org/apache/commons/math/estimation/WeightedMeasurement.java
@@ -45,6 +45,7 @@
  * @see EstimationProblem
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/fraction/Fraction.java b/src/java/org/apache/commons/math/fraction/Fraction.java
index 1711720..4f9015c 100644
--- a/src/java/org/apache/commons/math/fraction/Fraction.java
+++ b/src/java/org/apache/commons/math/fraction/Fraction.java
@@ -37,10 +37,10 @@
     private static final long serialVersionUID = -8958519416450949235L;
     
     /** The denominator. */
-    private int denominator;
+    private final int denominator;
     
     /** The numerator. */
-    private int numerator;
+    private final int numerator;
 
     /**
      * Create a fraction given the double value.
@@ -210,9 +210,20 @@
             num = -num;
             den = -den;
         }
+        // reduce numerator and denominator by greatest common denominator.
+        int d = MathUtils.gcd(num, den);
+        if (d > 1) {
+            num /= d;
+            den /= d;
+        }
+        
+        // move sign to numerator.
+        if (den < 0) {
+            num *= -1;
+            den *= -1;
+        }
         this.numerator = num;
         this.denominator = den;
-        reduce();
     }
     
     /**
@@ -531,23 +542,4 @@
         denominator /= gcd;
         return new Fraction(numerator, denominator);
     }
-    
-    /**
-     * Reduce this fraction to lowest terms.  This is accomplished by dividing
-     * both numerator and denominator by their greatest common divisor.
-     */
-    private void reduce() {
-        // reduce numerator and denominator by greatest common denominator.
-        int d = MathUtils.gcd(numerator, denominator);
-        if (d > 1) {
-            numerator /= d;
-            denominator /= d;
-        }
-
-        // move sign to numerator.
-        if (denominator < 0) {
-            numerator *= -1;
-            denominator *= -1;
-        }
-    }
 }
diff --git a/src/java/org/apache/commons/math/fraction/FractionConversionException.java b/src/java/org/apache/commons/math/fraction/FractionConversionException.java
index b9a34ad..1cde8d5 100644
--- a/src/java/org/apache/commons/math/fraction/FractionConversionException.java
+++ b/src/java/org/apache/commons/math/fraction/FractionConversionException.java
@@ -24,6 +24,7 @@
  * in the allowed number of iterations.
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class FractionConversionException extends ConvergenceException {
 
diff --git a/src/java/org/apache/commons/math/geometry/CardanEulerSingularityException.java b/src/java/org/apache/commons/math/geometry/CardanEulerSingularityException.java
index babbd3f..d3b3427 100644
--- a/src/java/org/apache/commons/math/geometry/CardanEulerSingularityException.java
+++ b/src/java/org/apache/commons/math/geometry/CardanEulerSingularityException.java
@@ -23,12 +23,13 @@
  * or Euler angles from a rotation.
 
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 public class CardanEulerSingularityException
   extends MathException {
 
-  /** Simple constructor.
+  /** 
+   * Simple constructor.
    * build an exception with a default message.
    * @param isCardan if true, the rotation is related to Cardan angles,
    * if false it is related to EulerAngles
diff --git a/src/java/org/apache/commons/math/geometry/NotARotationMatrixException.java b/src/java/org/apache/commons/math/geometry/NotARotationMatrixException.java
index a6a7c37..44e4fe1 100644
--- a/src/java/org/apache/commons/math/geometry/NotARotationMatrixException.java
+++ b/src/java/org/apache/commons/math/geometry/NotARotationMatrixException.java
@@ -19,17 +19,19 @@
 
 import org.apache.commons.math.MathException;
 
-/** This class represents exceptions thrown while building rotations
+/** 
+ * This class represents exceptions thrown while building rotations
  * from matrices.
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class NotARotationMatrixException
   extends MathException {
 
-  /** Simple constructor.
+  /** 
+   * Simple constructor.
    * Build an exception by translating and formating a message
    * @param specifier format specifier (to be translated)
    * @param parts to insert in the format (no translation)
diff --git a/src/java/org/apache/commons/math/geometry/Rotation.java b/src/java/org/apache/commons/math/geometry/Rotation.java
index 1800b4a..c85429d 100644
--- a/src/java/org/apache/commons/math/geometry/Rotation.java
+++ b/src/java/org/apache/commons/math/geometry/Rotation.java
@@ -21,7 +21,7 @@
 
 /**
  * This class implements rotations in a three-dimensional space.
-
+ *
  * <p>Rotations can be represented by several different mathematical
  * entities (matrices, axe and angle, Cardan or Euler angles,
  * quaternions). This class presents an higher level abstraction, more
@@ -59,14 +59,14 @@
  * need to transform the observing direction in the topocentric frame into the
  * observing direction in inertial frame taking into account the observatory
  * location and the Earth rotation.</p>
-
+ *
  * <p>These examples show that a rotation is what the user wants it to be, so this
  * class does not push the user towards one specific definition and hence does not
  * provide methods like <code>projectVectorIntoDestinationFrame</code> or
  * <code>computeTransformedDirection</code>. It provides simpler and more generic
  * methods: {@link #applyTo(Vector3D) applyTo(Vector3D)} and {@link
  * #applyInverseTo(Vector3D) applyInverseTo(Vector3D)}.</p>
-
+ *
  * <p>Since a rotation is basically a vectorial operator, several rotations can be
  * composed together and the composite operation <code>r = r<sub>1</sub> o
  * r<sub>2</sub></code> (which means that for each vector <code>u</code>,
@@ -77,13 +77,13 @@
  * we get is <code>r = r<sub>1</sub> o r<sub>2</sub></code>. For this purpose, the
  * class provides the methods: {@link #applyTo(Rotation) applyTo(Rotation)} and
  * {@link #applyInverseTo(Rotation) applyInverseTo(Rotation)}.</p>
-
+ *
  * <p>Rotations are guaranteed to be immutable objects.</p>
-
+ *
  * @version $Revision$ $Date$
  * @see Vector3D
  * @see RotationOrder
-
+ * @since 1.2
  */
 
 public class Rotation implements Serializable {
diff --git a/src/java/org/apache/commons/math/geometry/RotationOrder.java b/src/java/org/apache/commons/math/geometry/RotationOrder.java
index 976cb12..34e12a1 100644
--- a/src/java/org/apache/commons/math/geometry/RotationOrder.java
+++ b/src/java/org/apache/commons/math/geometry/RotationOrder.java
@@ -20,14 +20,14 @@
 /**
  * This class is a utility representing a rotation order specification
  * for Cardan or Euler angles specification.
-
+ *
  * This class cannot be instanciated by the user. He can only use one
  * of the twelve predefined supported orders as an argument to either
  * the {@link Rotation#Rotation(RotationOrder,double,double,double)}
  * constructor or the {@link Rotation#getAngles} method.
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 public final class RotationOrder {
 
diff --git a/src/java/org/apache/commons/math/geometry/Vector3D.java b/src/java/org/apache/commons/math/geometry/Vector3D.java
index c54975e..d00bba0 100644
--- a/src/java/org/apache/commons/math/geometry/Vector3D.java
+++ b/src/java/org/apache/commons/math/geometry/Vector3D.java
@@ -19,9 +19,11 @@
 
 import java.io.Serializable;
 
-/** This class implements vectors in a three-dimensional space.
+/** 
+ * This class implements vectors in a three-dimensional space.
  * <p>Instance of this class are guaranteed to be immutable.</p>
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 
 public class Vector3D
diff --git a/src/java/org/apache/commons/math/linear/MatrixUtils.java b/src/java/org/apache/commons/math/linear/MatrixUtils.java
index e5df082..6f08dd0 100644
--- a/src/java/org/apache/commons/math/linear/MatrixUtils.java
+++ b/src/java/org/apache/commons/math/linear/MatrixUtils.java
@@ -27,7 +27,7 @@
 public class MatrixUtils {
 
     /**
-     * Default constructor.  Package scope to prevent unwanted instantiation. 
+     * Default constructor.
      */
     public MatrixUtils() {
         super();
diff --git a/src/java/org/apache/commons/math/linear/QRDecomposition.java b/src/java/org/apache/commons/math/linear/QRDecomposition.java
index 9970c61..72b9b3e 100644
--- a/src/java/org/apache/commons/math/linear/QRDecomposition.java
+++ b/src/java/org/apache/commons/math/linear/QRDecomposition.java
@@ -23,8 +23,8 @@
  *   
  * @see <a href="http://mathworld.wolfram.com/QRDecomposition.html">MathWorld</a>
  * @see <a href="http://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</a>
- * 
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public interface QRDecomposition {
 
diff --git a/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java b/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java
index 41d7c20..5f9c05f 100644
--- a/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java
+++ b/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java
@@ -23,13 +23,13 @@
  * orthogonal (Q<sup>T</sup>Q = I), and R is upper triangular. If A is
  * m&times;n, Q is m&times;m and R m&times;n. 
  * <p>
- * Implemented using Householder reflectors.
- *
+ * Implemented using Householder reflectors.</p>
  *
  * @see <a href="http://mathworld.wolfram.com/QRDecomposition.html">MathWorld</a>
  * @see <a href="http://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</a>
  * 
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class QRDecompositionImpl implements QRDecomposition {
 
diff --git a/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java b/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java
index b55548e..3efcbdc 100644
--- a/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java
@@ -34,6 +34,7 @@
  * @see StepHandler
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  *
  */
 
diff --git a/src/java/org/apache/commons/math/ode/AdaptiveStepsizeIntegrator.java b/src/java/org/apache/commons/math/ode/AdaptiveStepsizeIntegrator.java
index 131886d..ad54155 100644
--- a/src/java/org/apache/commons/math/ode/AdaptiveStepsizeIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/AdaptiveStepsizeIntegrator.java
@@ -20,7 +20,7 @@
 /**
  * This abstract class holds the common part of all adaptive
  * stepsize integrators for Ordinary Differential Equations.
-
+ *
  * <p>These algorithms perform integration with stepsize control, which
  * means the user does not specify the integration step but rather a
  * tolerance on error. The error threshold is computed as
@@ -31,18 +31,19 @@
  * state vector and relTol_i is the relative tolerance for the same
  * component. The user can also use only two scalar values absTol and
  * relTol which will be used for all components.</p>
-
+ *
  * <p>If the estimated error for ym+1 is such that
  * <pre>
  * sqrt((sum (errEst_i / threshold_i)^2 ) / n) < 1
  * </pre>
-
+ *
  * (where n is the state vector dimension) then the step is accepted,
  * otherwise the step is rejected and a new attempt is made with a new
  * stepsize.</p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
+ *
  */
 
 public abstract class AdaptiveStepsizeIntegrator
diff --git a/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaIntegrator.java b/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaIntegrator.java
index 1e8f71f..5c281c1 100644
--- a/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaIntegrator.java
@@ -21,7 +21,7 @@
  * This class implements the classical fourth order Runge-Kutta
  * integrator for Ordinary Differential Equations (it is the most
  * often used Runge-Kutta method).
-
+ *
  * <p>This method is an explicit Runge-Kutta method, its Butcher-array
  * is the following one :
  * <pre>
@@ -33,14 +33,13 @@
  *       | 1/6  1/3  1/3  1/6
  * </pre>
  * </p>
-
+ *
  * @see EulerIntegrator
  * @see GillIntegrator
  * @see MidpointIntegrator
  * @see ThreeEighthesIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class ClassicalRungeKuttaIntegrator
diff --git a/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaStepInterpolator.java b/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaStepInterpolator.java
index b826162..b1dec9a 100644
--- a/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/ClassicalRungeKuttaStepInterpolator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements a step interpolator for the classical fourth
  * order Runge-Kutta integrator.
-
+ *
  * <p>This interpolator allows to compute dense output inside the last
  * step computed. The interpolation equation is consistent with the
  * integration scheme :
@@ -32,15 +32,14 @@
  *                                          -(4 theta^2 +   theta + 1) y'_4
  *                                        ]
  * </pre>
-
+ *
  * where theta belongs to [0 ; 1] and where y'_1 to y'_4 are the four
  * evaluations of the derivatives already computed during the
  * step.</p>
-
+ *
  * @see ClassicalRungeKuttaIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 class ClassicalRungeKuttaStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/ContinuousOutputModel.java b/src/java/org/apache/commons/math/ode/ContinuousOutputModel.java
index f956b55..e5be615 100644
--- a/src/java/org/apache/commons/math/ode/ContinuousOutputModel.java
+++ b/src/java/org/apache/commons/math/ode/ContinuousOutputModel.java
@@ -25,7 +25,7 @@
  * This class stores all information provided by an ODE integrator
  * during the integration process and build a continuous model of the
  * solution from this.
-
+ *
  * <p>This class act as a step handler from the integrator point of
  * view. It is called iteratively during the integration process and
  * stores a copy of all steps information in a sorted collection for
@@ -36,14 +36,14 @@
  * integration to be over before attempting to call {@link
  * #setInterpolatedTime setInterpolatedTime} because some internal
  * variables are set only once the last step has been handled.</p>
-
+ *
  * <p>This is useful for example if the main loop of the user
  * application should remain independent from the integration process
  * or if one needs to mimic the behaviour of an analytical model
  * despite a numerical model is used (i.e. one needs the ability to
  * get the model value at any time or to navigate through the
  * data).</p>
-
+ *
  * <p>If problem modelization is done with several separate
  * integration phases for contiguous intervals, the same
  * ContinuousOutputModel can be used as step handler for all
@@ -57,7 +57,7 @@
  * output model handles the steps of all integration phases, the user
  * do not need to bother when the maneuver begins or ends, he has all
  * the data available in a transparent manner.</p>
-
+ *
  * <p>An important feature of this class is that it implements the
  * <code>Serializable</code> interface. This means that the result of
  * an integration can be serialized and reused later (if stored into a
@@ -65,18 +65,17 @@
  * sent to another application). Only the result of the integration is
  * stored, there is no reference to the integrated problem by
  * itself.</p>
-
+ *
  * <p>One should be aware that the amount of data stored in a
  * ContinuousOutputModel instance can be important if the state vector
  * is large, if the integration interval is long or if the steps are
  * small (which can result from small tolerance settings in {@link
  * AdaptiveStepsizeIntegrator adaptive step size integrators}).</p>
-
+ *
  * @see StepHandler
  * @see StepInterpolator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class ContinuousOutputModel
diff --git a/src/java/org/apache/commons/math/ode/DerivativeException.java b/src/java/org/apache/commons/math/ode/DerivativeException.java
index a0922e8..4233b3c 100644
--- a/src/java/org/apache/commons/math/ode/DerivativeException.java
+++ b/src/java/org/apache/commons/math/ode/DerivativeException.java
@@ -24,6 +24,7 @@
  * the error conditions that are trigegred while computing
  * the differential equations.
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class DerivativeException
   extends MathException {
diff --git a/src/java/org/apache/commons/math/ode/DormandPrince54Integrator.java b/src/java/org/apache/commons/math/ode/DormandPrince54Integrator.java
index c89b098..b33a376 100644
--- a/src/java/org/apache/commons/math/ode/DormandPrince54Integrator.java
+++ b/src/java/org/apache/commons/math/ode/DormandPrince54Integrator.java
@@ -29,7 +29,7 @@
  * is an <i>fsal</i>, the last evaluation of one step is the same as
  * the first evaluation of the next step and hence can be avoided. So
  * the cost is really 6 functions evaluations per step.</p>
-
+ *
  * <p>This method has been published (whithout the continuous output
  * that was added by Shampine in 1986) in the following article :
  * <pre>
@@ -38,9 +38,9 @@
  *  Journal of Computational and Applied Mathematics
  *  volume 6, no 1, 1980, pp. 19-26
  * </pre></p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class DormandPrince54Integrator
diff --git a/src/java/org/apache/commons/math/ode/DormandPrince54StepInterpolator.java b/src/java/org/apache/commons/math/ode/DormandPrince54StepInterpolator.java
index 2dc6f1e..f66a92d 100644
--- a/src/java/org/apache/commons/math/ode/DormandPrince54StepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/DormandPrince54StepInterpolator.java
@@ -24,7 +24,7 @@
  * @see DormandPrince54Integrator
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 class DormandPrince54StepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/DormandPrince853Integrator.java b/src/java/org/apache/commons/math/ode/DormandPrince853Integrator.java
index 72a1a24..71736bf 100644
--- a/src/java/org/apache/commons/math/ode/DormandPrince853Integrator.java
+++ b/src/java/org/apache/commons/math/ode/DormandPrince853Integrator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements the 8(5,3) Dormand-Prince integrator for Ordinary
  * Differential Equations.
-
+ *
  * <p>This integrator is an embedded Runge-Kutta integrator
  * of order 8(5,3) used in local extrapolation mode (i.e. the solution
  * is computed using the high order formula) with stepsize control
@@ -33,7 +33,7 @@
  * <i>fsal</i>. Hence, despite we have 13 stages here, the cost is
  * really 12 evaluations per step even if no interpolation is done,
  * and the overcost of interpolation is only 3 evaluations.</p>
-
+ *
  * <p>This method is based on an 8(6) method by Dormand and Prince
  * (i.e. order 8 for the integration and order 6 for error estimation)
  * modified by Hairer and Wanner to use a 5th order error estimator
@@ -46,9 +46,9 @@
  * Problems) of the reference book by Hairer, Norsett and Wanner:
  * <i>Solving Ordinary Differential Equations</i> (Springer-Verlag,
  * ISBN 3-540-56670-8).</p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class DormandPrince853Integrator
diff --git a/src/java/org/apache/commons/math/ode/DormandPrince853StepInterpolator.java b/src/java/org/apache/commons/math/ode/DormandPrince853StepInterpolator.java
index 2e5bf36..a6d9ed7 100644
--- a/src/java/org/apache/commons/math/ode/DormandPrince853StepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/DormandPrince853StepInterpolator.java
@@ -28,7 +28,7 @@
  * @see DormandPrince853Integrator
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 class DormandPrince853StepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/DummyStepHandler.java b/src/java/org/apache/commons/math/ode/DummyStepHandler.java
index 77d6068..14ff484 100644
--- a/src/java/org/apache/commons/math/ode/DummyStepHandler.java
+++ b/src/java/org/apache/commons/math/ode/DummyStepHandler.java
@@ -25,16 +25,15 @@
  * <p>This class is provided as a convenience for users who are only
  * interested in the final state of an integration and not in the
  * intermediate steps. Its handleStep method does nothing.</p>
-
+ *
  * <p>Since this class has no internal state, it is implemented using
  * the Singleton design pattern. This means that only one instance is
  * ever created, which can be retrieved using the getInstance
  * method. This explains why there is no public constructor.</p>
-
+ *
  * @see StepHandler
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class DummyStepHandler
diff --git a/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java b/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java
index 12083e6..9d9aee7 100644
--- a/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java
@@ -32,7 +32,7 @@
  * @see StepHandler
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 public class DummyStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/EmbeddedRungeKuttaIntegrator.java b/src/java/org/apache/commons/math/ode/EmbeddedRungeKuttaIntegrator.java
index c0d0cf3..585846a 100644
--- a/src/java/org/apache/commons/math/ode/EmbeddedRungeKuttaIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/EmbeddedRungeKuttaIntegrator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements the common part of all embedded Runge-Kutta
  * integrators for Ordinary Differential Equations.
-
+ *
  * <p>These methods are embedded explicit Runge-Kutta methods with two
  * sets of coefficients allowing to estimate the error, their Butcher
  * arrays are as follows :
@@ -35,11 +35,11 @@
  *       |  b'1  b'2 ...   b's-1 b's
  * </pre>
  * </p>
-
+ *
  * <p>In fact, we rather use the array defined by ej = bj - b'j to
  * compute directly the error rather than computing two estimates and
  * then comparing them.</p>
-
+ *
  * <p>Some methods are qualified as <i>fsal</i> (first same as last)
  * methods. This means the last evaluation of the derivatives in one
  * step is the same as the first in the next step. Then, this
@@ -49,9 +49,9 @@
  * the step is rejected after the error estimation phase, no
  * evaluation is saved. For an <i>fsal</i> method, we have cs = 1 and
  * asi = bi for all i.</p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public abstract class EmbeddedRungeKuttaIntegrator
diff --git a/src/java/org/apache/commons/math/ode/EulerIntegrator.java b/src/java/org/apache/commons/math/ode/EulerIntegrator.java
index 6b84ee3..6ad7c3e 100644
--- a/src/java/org/apache/commons/math/ode/EulerIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/EulerIntegrator.java
@@ -20,30 +20,29 @@
 /**
  * This class implements a simple Euler integrator for Ordinary
  * Differential Equations.
-
+ *
  * <p>The Euler algorithm is the simplest one that can be used to
  * integrate ordinary differential equations. It is a simple inversion
  * of the forward difference expression :
  * <code>f'=(f(t+h)-f(t))/h</code> which leads to
  * <code>f(t+h)=f(t)+hf'</code>. The interpolation scheme used for
  * dense output is the linear scheme already used for integration.</p>
-
+ *
  * <p>This algorithm looks cheap because it needs only one function
  * evaluation per step. However, as it uses linear estimates, it needs
  * very small steps to achieve high accuracy, and small steps lead to
  * numerical errors and instabilities.</p>
-
+ *
  * <p>This algorithm is almost never used and has been included in
  * this package only as a comparison reference for more useful
  * integrators.</p>
-
+ *
  * @see MidpointIntegrator
  * @see ClassicalRungeKuttaIntegrator
  * @see GillIntegrator
  * @see ThreeEighthesIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class EulerIntegrator
diff --git a/src/java/org/apache/commons/math/ode/EulerStepInterpolator.java b/src/java/org/apache/commons/math/ode/EulerStepInterpolator.java
index 994aff2..6fabe0d 100644
--- a/src/java/org/apache/commons/math/ode/EulerStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/EulerStepInterpolator.java
@@ -19,22 +19,21 @@
 
 /**
  * This class implements a linear interpolator for step.
-
+ *
  * <p>This interpolator allow to compute dense output inside the last
  * step computed. The interpolation equation is consistent with the
  * integration scheme :
-
+ *
  * <pre>
  *   y(t_n + theta h) = y (t_n + h) - (1-theta) h y'
  * </pre>
-
+ *
  * where theta belongs to [0 ; 1] and where y' is the evaluation of
  * the derivatives already computed during the step.</p>
-
+ *
  * @see EulerIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 class EulerStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/FirstOrderConverter.java b/src/java/org/apache/commons/math/ode/FirstOrderConverter.java
index d0c5d0a..ef6ae31 100644
--- a/src/java/org/apache/commons/math/ode/FirstOrderConverter.java
+++ b/src/java/org/apache/commons/math/ode/FirstOrderConverter.java
@@ -19,11 +19,11 @@
 
 /** This class converts second order differential equations to first
  * order ones.
-
+ *
  * <p>This class is a wrapper around a {@link
  * SecondOrderDifferentialEquations} which allow to use a {@link
  * FirstOrderIntegrator} to integrate it.</p>
-
+ *
  * <p>The transformation is done by changing the n dimension state
  * vector to a 2n dimension vector, where the first n components are
  * the initial state variables and the n last components are their
@@ -31,7 +31,7 @@
  * vector then really contains both the first and second time
  * derivative of the initial state vector, which can be handled by the
  * underlying second order equations set.</p>
-
+ *
  * <p>One should be aware that the data is duplicated during the
  * transformation process and that for each call to {@link
  * #computeDerivatives computeDerivatives}, this wrapper does copy 4n
@@ -45,13 +45,12 @@
  * avoid this duplication is to perform the transformation at the
  * problem level, i.e. to implement the problem as a first order one
  * and then avoid using this class.</p>
-
+ *
  * @see FirstOrderIntegrator
  * @see FirstOrderDifferentialEquations
  * @see SecondOrderDifferentialEquations
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class FirstOrderConverter
diff --git a/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java b/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java
index 4b41190..91e6a3d 100644
--- a/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java
+++ b/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java
@@ -41,7 +41,7 @@
  * @see SecondOrderDifferentialEquations
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 public interface FirstOrderDifferentialEquations {
diff --git a/src/java/org/apache/commons/math/ode/FirstOrderIntegrator.java b/src/java/org/apache/commons/math/ode/FirstOrderIntegrator.java
index 9a437cc..b931d22 100644
--- a/src/java/org/apache/commons/math/ode/FirstOrderIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/FirstOrderIntegrator.java
@@ -24,13 +24,12 @@
  * equations should implement this interface. The problems which can
  * be handled should implement the {@link
  * FirstOrderDifferentialEquations} interface.</p>
-
+ *
  * @see FirstOrderDifferentialEquations
  * @see StepHandler
  * @see SwitchingFunction
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface FirstOrderIntegrator {
diff --git a/src/java/org/apache/commons/math/ode/FixedStepHandler.java b/src/java/org/apache/commons/math/ode/FixedStepHandler.java
index 19dd65a..915931c 100644
--- a/src/java/org/apache/commons/math/ode/FixedStepHandler.java
+++ b/src/java/org/apache/commons/math/ode/FixedStepHandler.java
@@ -29,12 +29,11 @@
  * {@link StepNormalizer} object is called according to the integrator
  * internal algorithms and it calls objects implementing this
  * interface as necessary at fixed time steps.</p>
-
+ *
  * @see StepHandler
  * @see StepNormalizer
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface FixedStepHandler {
diff --git a/src/java/org/apache/commons/math/ode/GillIntegrator.java b/src/java/org/apache/commons/math/ode/GillIntegrator.java
index 7d55b47..a791ea1 100644
--- a/src/java/org/apache/commons/math/ode/GillIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/GillIntegrator.java
@@ -32,14 +32,13 @@
  *       |   1/6    (2-q)/6 (2+q)/6  1/6
  * </pre>
  * where q = sqrt(2)</p>
-
+ *
  * @see EulerIntegrator
  * @see ClassicalRungeKuttaIntegrator
  * @see MidpointIntegrator
  * @see ThreeEighthesIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class GillIntegrator
diff --git a/src/java/org/apache/commons/math/ode/GillStepInterpolator.java b/src/java/org/apache/commons/math/ode/GillStepInterpolator.java
index fb681ea..9bf5361 100644
--- a/src/java/org/apache/commons/math/ode/GillStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/GillStepInterpolator.java
@@ -20,11 +20,11 @@
 /**
  * This class implements a step interpolator for the Gill fourth
  * order Runge-Kutta integrator.
-
+ *
  * <p>This interpolator allows to compute dense output inside the last
  * step computed. The interpolation equation is consistent with the
  * integration scheme :
-
+ *
  * <pre>
  *   y(t_n + theta h) = y (t_n + h)
  *                    - (1 - theta) (h/6) [ (1 - theta) (1 - 4 theta) y'_1
@@ -35,11 +35,10 @@
  * where theta belongs to [0 ; 1], q = sqrt(2) and where y'_1 to y'_4
  * are the four evaluations of the derivatives already computed during
  * the step.</p>
-
+ *
  * @see GillIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 class GillStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/GraggBulirschStoerIntegrator.java b/src/java/org/apache/commons/math/ode/GraggBulirschStoerIntegrator.java
index e195c8a..6db761f 100644
--- a/src/java/org/apache/commons/math/ode/GraggBulirschStoerIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/GraggBulirschStoerIntegrator.java
@@ -20,12 +20,12 @@
 /**
  * This class implements a Gragg-Bulirsch-Stoer integrator for
  * Ordinary Differential Equations.
-
+ *
  * <p>The Gragg-Bulirsch-Stoer algorithm is one of the most efficient
  * ones currently available for smooth problems. It uses Richardson
  * extrapolation to estimate what would be the solution if the step
  * size could be decreased down to zero.</p>
-
+ *
  * <p>
  * This method changes both the step size and the order during
  * integration, in order to minimize computation cost. It is
@@ -41,7 +41,7 @@
  * bodies (pleiades problem, involving quasi-collisions for which
  * <i>automatic step size control is essential</i>).
  * </p>
-
+ *
  * <p>
  * This implementation is basically a reimplementation in Java of the
  * <a
@@ -51,10 +51,10 @@
  * href="http://www.unige.ch/~hairer/prog/licence.txt">here</a>, for
  * convenience, it is reproduced below.</p>
  * </p>
-
+ *
  * <table border="0" width="80%" cellpadding="10" align="center" bgcolor="#E0E0E0">
  * <tr><td>Copyright (c) 2004, Ernst Hairer</td></tr>
-
+ *
  * <tr><td>Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
  * conditions are met:
@@ -65,7 +65,7 @@
  *      notice, this list of conditions and the following disclaimer in the
  *      documentation and/or other materials provided with the distribution.</li>
  * </ul></td></tr>
-
+ *
  * <tr><td><strong>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -78,10 +78,10 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</strong></td></tr>
  * </table>
-
+ *
  * @author E. Hairer and G. Wanner (fortran version)
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class GraggBulirschStoerIntegrator
diff --git a/src/java/org/apache/commons/math/ode/GraggBulirschStoerStepInterpolator.java b/src/java/org/apache/commons/math/ode/GraggBulirschStoerStepInterpolator.java
index 85252d6..fc102d6 100644
--- a/src/java/org/apache/commons/math/ode/GraggBulirschStoerStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/GraggBulirschStoerStepInterpolator.java
@@ -24,10 +24,10 @@
 /**
  * This class implements an interpolator for the Gragg-Bulirsch-Stoer
  * integrator.
-
+ *
  * <p>This interpolator compute dense output inside the last step
  * produced by a Gragg-Bulirsch-Stoer integrator.</p>
-
+ *
  * <p>
  * This implementation is basically a reimplementation in Java of the
  * <a
@@ -37,10 +37,10 @@
  * href="http://www.unige.ch/~hairer/prog/licence.txt">here</a>, for
  * convenience, it is reproduced below.</p>
  * </p>
-
+ *
  * <table border="0" width="80%" cellpadding="10" align="center" bgcolor="#E0E0E0">
  * <tr><td>Copyright (c) 2004, Ernst Hairer</td></tr>
-
+ *
  * <tr><td>Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
  * conditions are met:
@@ -51,7 +51,7 @@
  *      notice, this list of conditions and the following disclaimer in the
  *      documentation and/or other materials provided with the distribution.</li>
  * </ul></td></tr>
-
+ *
  * <tr><td><strong>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -64,12 +64,11 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</strong></td></tr>
  * </table>
-
+ *
  * @see GraggBulirschStoerIntegrator
-
  * @version $Revision$ $Date$
  * @author E. Hairer and G. Wanner (fortran version)
-
+ * @since 1.2
  */
 
 class GraggBulirschStoerStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/HighamHall54Integrator.java b/src/java/org/apache/commons/math/ode/HighamHall54Integrator.java
index 48f8882..ef6e0ce 100644
--- a/src/java/org/apache/commons/math/ode/HighamHall54Integrator.java
+++ b/src/java/org/apache/commons/math/ode/HighamHall54Integrator.java
@@ -20,15 +20,15 @@
 /**
  * This class implements the 5(4) Higham and Hall integrator for
  * Ordinary Differential Equations.
-
+ *
  * <p>This integrator is an embedded Runge-Kutta integrator
  * of order 5(4) used in local extrapolation mode (i.e. the solution
  * is computed using the high order formula) with stepsize control
  * (and automatic step initialization) and continuous output. This
  * method uses 7 functions evaluations per step.</p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class HighamHall54Integrator
diff --git a/src/java/org/apache/commons/math/ode/HighamHall54StepInterpolator.java b/src/java/org/apache/commons/math/ode/HighamHall54StepInterpolator.java
index 5e99499..a97dcdf 100644
--- a/src/java/org/apache/commons/math/ode/HighamHall54StepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/HighamHall54StepInterpolator.java
@@ -24,7 +24,7 @@
  * @see HighamHall54Integrator
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 class HighamHall54StepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/IntegratorException.java b/src/java/org/apache/commons/math/ode/IntegratorException.java
index 2e5dab0..683eef1 100644
--- a/src/java/org/apache/commons/math/ode/IntegratorException.java
+++ b/src/java/org/apache/commons/math/ode/IntegratorException.java
@@ -23,6 +23,7 @@
  * This exception is made available to users to report
  * the error conditions that are triggered during integration
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class IntegratorException
   extends MathException {
diff --git a/src/java/org/apache/commons/math/ode/MidpointIntegrator.java b/src/java/org/apache/commons/math/ode/MidpointIntegrator.java
index cd8cefb..ba330b7 100644
--- a/src/java/org/apache/commons/math/ode/MidpointIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/MidpointIntegrator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements a second order Runge-Kutta integrator for
  * Ordinary Differential Equations.
-
+ *
  * <p>This method is an explicit Runge-Kutta method, its Butcher-array
  * is the following one :
  * <pre>
@@ -30,13 +30,13 @@
  *       |  0    1
  * </pre>
  * </p>
-
+ *
  * @see EulerIntegrator
  * @see ClassicalRungeKuttaIntegrator
  * @see GillIntegrator
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class MidpointIntegrator
diff --git a/src/java/org/apache/commons/math/ode/MidpointStepInterpolator.java b/src/java/org/apache/commons/math/ode/MidpointStepInterpolator.java
index dfe7db4f..ec9a4bb 100644
--- a/src/java/org/apache/commons/math/ode/MidpointStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/MidpointStepInterpolator.java
@@ -20,23 +20,22 @@
 /**
  * This class implements a step interpolator for second order
  * Runge-Kutta integrator.
-
+ *
  * <p>This interpolator allow to compute dense output inside the last
  * step computed. The interpolation equation is consistent with the
  * integration scheme :
-
+ *
  * <pre>
  *   y(t_n + theta h) = y (t_n + h) + (1-theta) h [theta y'_1 - (1+theta) y'_2]
  * </pre>
-
+ *
  * where theta belongs to [0 ; 1] and where y'_1 and y'_2 are the two
  * evaluations of the derivatives already computed during the
  * step.</p>
-
+ *
  * @see MidpointIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 class MidpointStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/RungeKuttaIntegrator.java b/src/java/org/apache/commons/math/ode/RungeKuttaIntegrator.java
index 4cede3b..ebd2140 100644
--- a/src/java/org/apache/commons/math/ode/RungeKuttaIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/RungeKuttaIntegrator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements the common part of all fixed step Runge-Kutta
  * integrators for Ordinary Differential Equations.
-
+ *
  * <p>These methods are explicit Runge-Kutta methods, their Butcher
  * arrays are as follows :
  * <pre>
@@ -33,14 +33,13 @@
  *       |  b1   b2  ...   bs-1  bs
  * </pre>
  * </p>
-
+ *
  * @see EulerIntegrator
  * @see ClassicalRungeKuttaIntegrator
  * @see GillIntegrator
  * @see MidpointIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public abstract class RungeKuttaIntegrator
diff --git a/src/java/org/apache/commons/math/ode/RungeKuttaStepInterpolator.java b/src/java/org/apache/commons/math/ode/RungeKuttaStepInterpolator.java
index f9523be..2175987 100644
--- a/src/java/org/apache/commons/math/ode/RungeKuttaStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/RungeKuttaStepInterpolator.java
@@ -28,7 +28,7 @@
  * @see EmbeddedRungeKuttaIntegrator
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 abstract class RungeKuttaStepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java b/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java
index 956335d..e813df1 100644
--- a/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java
+++ b/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java
@@ -22,7 +22,7 @@
  * <p>This interface should be implemented by all real second order
  * differential equation problems before they can be handled by the
  * integrators {@link SecondOrderIntegrator#integrate} method.</p>
-
+ *
  * <p>A second order differential equations problem, as seen by an
  * integrator is the second time derivative <code>d2Y/dt^2</code> of a
  * state vector <code>Y</code>, both being one dimensional
@@ -30,19 +30,18 @@
  * only on the current time <code>t</code>, on the state vector
  * <code>Y</code> and on the first time derivative of the state
  * vector.</p>
-
+ *
  * <p>For real problems, the derivative depends also on parameters
  * that do not belong to the state vector (dynamical model constants
  * for example). These constants are completely outside of the scope
  * of this interface, the classes that implement it are allowed to
  * handle them as they want.</p>
-
+ *
  * @see SecondOrderIntegrator
  * @see FirstOrderConverter
  * @see FirstOrderDifferentialEquations
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface SecondOrderDifferentialEquations {
diff --git a/src/java/org/apache/commons/math/ode/SecondOrderIntegrator.java b/src/java/org/apache/commons/math/ode/SecondOrderIntegrator.java
index d997809..9a6fb2b 100644
--- a/src/java/org/apache/commons/math/ode/SecondOrderIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/SecondOrderIntegrator.java
@@ -19,16 +19,15 @@
 
 /** This interface represents a second order integrator for
  * differential equations.
-
+ *
  * <p>The classes which are devoted to solve second order differential
  * equations should implement this interface. The problems which can
  * be handled should implement the {@link
  * SecondOrderDifferentialEquations} interface.</p>
-
+ *
  * @see SecondOrderDifferentialEquations
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface SecondOrderIntegrator {
diff --git a/src/java/org/apache/commons/math/ode/StepHandler.java b/src/java/org/apache/commons/math/ode/StepHandler.java
index 00aa4a5..a5f6cfe 100644
--- a/src/java/org/apache/commons/math/ode/StepHandler.java
+++ b/src/java/org/apache/commons/math/ode/StepHandler.java
@@ -20,7 +20,7 @@
 /**
  * This interface represents a handler that should be called after
  * each successful step.
-
+ *
  * <p>The ODE integrators compute the evolution of the state vector at
  * some grid points that depend on their own internal algorithm. Once
  * they have found a new grid point (possibly after having computed
@@ -29,13 +29,12 @@
  * typically either ignore the intermediate steps and wait for the
  * last one, store the points in an ephemeris, or forward them to
  * specialized processing or output methods.</p>
-
+ *
  * @see FirstOrderIntegrator
  * @see SecondOrderIntegrator
  * @see StepInterpolator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface StepHandler {
diff --git a/src/java/org/apache/commons/math/ode/StepInterpolator.java b/src/java/org/apache/commons/math/ode/StepInterpolator.java
index 6914746..5bdd06b 100644
--- a/src/java/org/apache/commons/math/ode/StepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/StepInterpolator.java
@@ -32,9 +32,8 @@
  * @see FirstOrderIntegrator
  * @see SecondOrderIntegrator
  * @see StepHandler
- *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 public interface StepInterpolator
diff --git a/src/java/org/apache/commons/math/ode/StepNormalizer.java b/src/java/org/apache/commons/math/ode/StepNormalizer.java
index 4e1d937..7c21b6e 100644
--- a/src/java/org/apache/commons/math/ode/StepNormalizer.java
+++ b/src/java/org/apache/commons/math/ode/StepNormalizer.java
@@ -25,7 +25,7 @@
  * integrators which cannot guaranty their integration steps will
  * remain constant and therefore only accept general step
  * handlers.</p>
-
+ *
  * <p>The stepsize used is selected at construction time. The {@link
  * FixedStepHandler#handleStep handleStep} method of the underlying
  * {@link FixedStepHandler} object is called at the beginning time of
@@ -34,16 +34,15 @@
  * last point handled will be the endpoint of the integration tend, if
  * not, the last point will belong to the interval [tend - h ;
  * tend].</p>
-
+ *
  * <p>There is no constraint on the integrator, it can use any
  * timestep it needs (time steps longer or shorter than the fixed time
  * step and non-integer ratios are all allowed).</p>
-
+ *
  * @see StepHandler
  * @see FixedStepHandler
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class StepNormalizer
diff --git a/src/java/org/apache/commons/math/ode/SwitchState.java b/src/java/org/apache/commons/math/ode/SwitchState.java
index cf280aa..d729d36 100644
--- a/src/java/org/apache/commons/math/ode/SwitchState.java
+++ b/src/java/org/apache/commons/math/ode/SwitchState.java
@@ -37,7 +37,7 @@
  * occurs at a bound rather than inside the step).</p>
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 class SwitchState implements Serializable {
 
diff --git a/src/java/org/apache/commons/math/ode/SwitchingFunction.java b/src/java/org/apache/commons/math/ode/SwitchingFunction.java
index ff6d1e8..06ef10b 100644
--- a/src/java/org/apache/commons/math/ode/SwitchingFunction.java
+++ b/src/java/org/apache/commons/math/ode/SwitchingFunction.java
@@ -45,7 +45,7 @@
  * fixed step ones).</p>
  *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 public interface SwitchingFunction extends Serializable {
diff --git a/src/java/org/apache/commons/math/ode/SwitchingFunctionsHandler.java b/src/java/org/apache/commons/math/ode/SwitchingFunctionsHandler.java
index d5e2ef0..1f98943 100644
--- a/src/java/org/apache/commons/math/ode/SwitchingFunctionsHandler.java
+++ b/src/java/org/apache/commons/math/ode/SwitchingFunctionsHandler.java
@@ -27,9 +27,8 @@
  * functions} during integration.
  *
  * @see SwitchingFunction
- *
  * @version $Revision$ $Date$
- *
+ * @since 1.2
  */
 
 public class SwitchingFunctionsHandler {
diff --git a/src/java/org/apache/commons/math/ode/ThreeEighthesIntegrator.java b/src/java/org/apache/commons/math/ode/ThreeEighthesIntegrator.java
index 4eb698f..da1fda1 100644
--- a/src/java/org/apache/commons/math/ode/ThreeEighthesIntegrator.java
+++ b/src/java/org/apache/commons/math/ode/ThreeEighthesIntegrator.java
@@ -20,7 +20,7 @@
 /**
  * This class implements the 3/8 fourth order Runge-Kutta
  * integrator for Ordinary Differential Equations.
-
+ *
  * <p>This method is an explicit Runge-Kutta method, its Butcher-array
  * is the following one :
  * <pre>
@@ -32,14 +32,13 @@
  *       | 1/8  3/8  3/8  1/8
  * </pre>
  * </p>
-
+ *
  * @see EulerIntegrator
  * @see ClassicalRungeKuttaIntegrator
  * @see GillIntegrator
  * @see MidpointIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class ThreeEighthesIntegrator
diff --git a/src/java/org/apache/commons/math/ode/ThreeEighthesStepInterpolator.java b/src/java/org/apache/commons/math/ode/ThreeEighthesStepInterpolator.java
index c3883fd..11137ab 100644
--- a/src/java/org/apache/commons/math/ode/ThreeEighthesStepInterpolator.java
+++ b/src/java/org/apache/commons/math/ode/ThreeEighthesStepInterpolator.java
@@ -20,11 +20,11 @@
 /**
  * This class implements a step interpolator for the 3/8 fourth
  * order Runge-Kutta integrator.
-
+ *
  * <p>This interpolator allows to compute dense output inside the last
  * step computed. The interpolation equation is consistent with the
  * integration scheme :
-
+ *
  * <pre>
  *   y(t_n + theta h) = y (t_n + h)
  *                    - (1 - theta) (h/8) [ (1 - 7 theta + 8 theta^2) y'_1
@@ -33,15 +33,14 @@
  *                                      +   (1 +   theta + 4 theta^2) y'_4
  *                                        ]
  * </pre>
-
+ *
  * where theta belongs to [0 ; 1] and where y'_1 to y'_4 are the four
  * evaluations of the derivatives already computed during the
  * step.</p>
-
+ *
  * @see ThreeEighthesIntegrator
-
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 class ThreeEighthesStepInterpolator
diff --git a/src/java/org/apache/commons/math/optimization/ConvergenceChecker.java b/src/java/org/apache/commons/math/optimization/ConvergenceChecker.java
index 88215fe..34c74f9 100644
--- a/src/java/org/apache/commons/math/optimization/ConvergenceChecker.java
+++ b/src/java/org/apache/commons/math/optimization/ConvergenceChecker.java
@@ -19,14 +19,14 @@
 
 /** This interface specifies how to check if a {@link
  * DirectSearchOptimizer direct search method} has converged.
-
+ *
  * <p>Deciding if convergence has been reached is a problem-dependent
  * issue. The user should provide a class implementing this interface
  * to allow the optimization algorithm to stop its search according to
  * the problem at hand.</p>
-
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public interface ConvergenceChecker {
diff --git a/src/java/org/apache/commons/math/optimization/CostException.java b/src/java/org/apache/commons/math/optimization/CostException.java
index 66b12e6..7d8fe4f 100644
--- a/src/java/org/apache/commons/math/optimization/CostException.java
+++ b/src/java/org/apache/commons/math/optimization/CostException.java
@@ -19,10 +19,11 @@
 
 import org.apache.commons.math.MathException;
 
-/** This class represents exceptions thrown by cost functions.
-
+/** 
+ * This class represents exceptions thrown by cost functions.
+ *
  * @version $Revision$ $Date$
-
+ * @since 1.2
  */
 
 public class CostException
diff --git a/src/java/org/apache/commons/math/optimization/CostFunction.java b/src/java/org/apache/commons/math/optimization/CostFunction.java
index 03dd1c4..bbe0c27 100644
--- a/src/java/org/apache/commons/math/optimization/CostFunction.java
+++ b/src/java/org/apache/commons/math/optimization/CostFunction.java
@@ -17,13 +17,16 @@
 
 package org.apache.commons.math.optimization;
 
-/** This interface represents a cost function to be minimized.
+/** 
+ * This interface represents a cost function to be minimized.
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public interface CostFunction {
 
 
-  /** Compute the cost associated to the given parameters array.
+  /** 
+   * Compute the cost associated to the given parameters array.
    * @param x parameters array
    * @return cost associated to the parameters array
    * @exception CostException if no cost can be computed for the parameters
diff --git a/src/java/org/apache/commons/math/optimization/DirectSearchOptimizer.java b/src/java/org/apache/commons/math/optimization/DirectSearchOptimizer.java
index b8dd21e..a61d6ab 100644
--- a/src/java/org/apache/commons/math/optimization/DirectSearchOptimizer.java
+++ b/src/java/org/apache/commons/math/optimization/DirectSearchOptimizer.java
@@ -33,9 +33,10 @@
 import org.apache.commons.math.stat.descriptive.moment.VectorialCovariance;
 import org.apache.commons.math.stat.descriptive.moment.VectorialMean;
 
-/** This class implements simplex-based direct search optimization
+/** 
+ * This class implements simplex-based direct search optimization
  * algorithms.
-
+ *
  * <p>Direct search methods only use cost function values, they don't
  * need derivatives and don't either try to compute approximation of
  * the derivatives. According to a 1996 paper by Margaret H. Wright
@@ -47,12 +48,12 @@
  * <em>not too bad</em> point is desired. In the latter cases, an
  * optimum is desired but cannot be reasonably found. In all cases
  * direct search methods can be useful.</p>
-
+ *
  * <p>Simplex-based direct search methods are based on comparison of
  * the cost function values at the vertices of a simplex (which is a
  * set of n+1 points in dimension n) that is updated by the algorithms
  * steps.</p>
-
+ *
  * <p>Minimization can be attempted either in single-start or in
  * multi-start mode. Multi-start is a traditional way to try to avoid
  * being trapped in a local minimum and miss the global minimum of a
@@ -63,16 +64,17 @@
  * minima from all starts (including the one already provided by the
  * {@link #minimizes(CostFunction, int, ConvergenceChecker, double[],
  * double[]) minimizes} method).</p>
-
+ *
  * <p>This class is the base class performing the boilerplate simplex
  * initialization and handling. The simplex update by itself is
  * performed by the derived classes according to the implemented
  * algorithms.</p>
-
- * @version $Revision$ $Date$
+ *
  * @see CostFunction
  * @see NelderMead
  * @see MultiDirectional
+ * @version $Revision$ $Date$
+ * @since 1.2
  */
 public abstract class DirectSearchOptimizer {
 
diff --git a/src/java/org/apache/commons/math/optimization/MultiDirectional.java b/src/java/org/apache/commons/math/optimization/MultiDirectional.java
index e80238c..a940b71 100644
--- a/src/java/org/apache/commons/math/optimization/MultiDirectional.java
+++ b/src/java/org/apache/commons/math/optimization/MultiDirectional.java
@@ -17,10 +17,12 @@
 
 package org.apache.commons.math.optimization;
 
-/** This class implements the multi-directional direct search method.
-
+/** 
+ * This class implements the multi-directional direct search method.
+ *
  * @version $Revision$ $Date$
  * @see NelderMead
+ * @since 1.2
  */
 public class MultiDirectional
   extends DirectSearchOptimizer {
diff --git a/src/java/org/apache/commons/math/optimization/NelderMead.java b/src/java/org/apache/commons/math/optimization/NelderMead.java
index 29d8826..caa43e6 100644
--- a/src/java/org/apache/commons/math/optimization/NelderMead.java
+++ b/src/java/org/apache/commons/math/optimization/NelderMead.java
@@ -17,10 +17,12 @@
 
 package org.apache.commons.math.optimization;
 
-/** This class implements the Nelder-Mead direct search method.
-
+/** 
+ * This class implements the Nelder-Mead direct search method.
+ *
  * @version $Revision$ $Date$
  * @see MultiDirectional
+ * @since 1.2
  */
 public class NelderMead
   extends DirectSearchOptimizer {
diff --git a/src/java/org/apache/commons/math/optimization/PointCostPair.java b/src/java/org/apache/commons/math/optimization/PointCostPair.java
index 4e4bd4f..b712146 100644
--- a/src/java/org/apache/commons/math/optimization/PointCostPair.java
+++ b/src/java/org/apache/commons/math/optimization/PointCostPair.java
@@ -17,10 +17,12 @@
 
 package org.apache.commons.math.optimization;
 
-/** This class holds a point and its associated cost.
+/** 
+ * This class holds a point and its associated cost.
  * <p>This is a simple immutable container.</p>
  * @version $Revision$ $Date$
  * @see CostFunction
+ * @since 1.2
  */
 public class PointCostPair {
 
diff --git a/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java b/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java
index 2c47f40..06de222 100644
--- a/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java
+++ b/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java
@@ -53,9 +53,9 @@
  * uncorrelated random vector that is needed to compute the component
  * of the correlated vector. This class handles this situation
  * automatically.</p>
-
- * @version $Revision:$ $Date$
-
+ *
+ * @version $Revision$ $Date$
+ * @since 1.2
  */
 
 public class CorrelatedRandomVectorGenerator
diff --git a/src/java/org/apache/commons/math/random/GaussianRandomGenerator.java b/src/java/org/apache/commons/math/random/GaussianRandomGenerator.java
index 76e7681..f1395e8 100644
--- a/src/java/org/apache/commons/math/random/GaussianRandomGenerator.java
+++ b/src/java/org/apache/commons/math/random/GaussianRandomGenerator.java
@@ -17,10 +17,12 @@
 
 package org.apache.commons.math.random;
 
-/** This class is a gaussian normalized random generator for scalars.
+/** 
+ * This class is a gaussian normalized random generator for scalars.
  * <p>This class is a simple wrapper around the {@link
  * RandomGenerator#nextGaussian} method.</p>
- * @version $Revision:$ $Date$
+ * @version $Revision$ $Date$
+ * @since 1.2
  */
 
 public class GaussianRandomGenerator implements NormalizedRandomGenerator {
diff --git a/src/java/org/apache/commons/math/random/JDKRandomGenerator.java b/src/java/org/apache/commons/math/random/JDKRandomGenerator.java
index 7367908..278991f 100644
--- a/src/java/org/apache/commons/math/random/JDKRandomGenerator.java
+++ b/src/java/org/apache/commons/math/random/JDKRandomGenerator.java
@@ -23,7 +23,7 @@
  * {@link RandomGenerator}.
  *
  * @since 1.1
- * @version $Revision:$ $Date$
+ * @version $Revision$ $Date$
  */
 public class JDKRandomGenerator extends Random implements RandomGenerator {
     /** Serializable version identifier */
diff --git a/src/java/org/apache/commons/math/random/NormalizedRandomGenerator.java b/src/java/org/apache/commons/math/random/NormalizedRandomGenerator.java
index 4e033f2..800c68a 100644
--- a/src/java/org/apache/commons/math/random/NormalizedRandomGenerator.java
+++ b/src/java/org/apache/commons/math/random/NormalizedRandomGenerator.java
@@ -17,10 +17,12 @@
 
 package org.apache.commons.math.random;
 
-/** This interface represent a normalized random generator for
+/** 
+ * This interface represent a normalized random generator for
  * scalars.
  * Normalized generator provide null mean and unit standard deviation scalars.
- * @version $Revision:$ $Date$
+ * @version $Revision$ $Date$
+ * @since 1.2
  */
 public interface NormalizedRandomGenerator {
 
diff --git a/src/java/org/apache/commons/math/random/RandomAdaptor.java b/src/java/org/apache/commons/math/random/RandomAdaptor.java
index c065bd1..8eb56de 100644
--- a/src/java/org/apache/commons/math/random/RandomAdaptor.java
+++ b/src/java/org/apache/commons/math/random/RandomAdaptor.java
@@ -23,7 +23,7 @@
  * {@link RandomGenerator}.   
  *
  * @since 1.1
- * @version $Revision:$ $Date$
+ * @version $Revision$ $Date$
  */
 public class RandomAdaptor extends Random implements RandomGenerator {
     
diff --git a/src/java/org/apache/commons/math/random/RandomGenerator.java b/src/java/org/apache/commons/math/random/RandomGenerator.java
index c9fac56..02ee3d9 100644
--- a/src/java/org/apache/commons/math/random/RandomGenerator.java
+++ b/src/java/org/apache/commons/math/random/RandomGenerator.java
@@ -23,7 +23,7 @@
  * implemented by {@link AbstractRandomGenerator}.  
  *
  * @since 1.1
- * @version $Revision:$ $Date$
+ * @version $Revision$ $Date$
  */
 public interface RandomGenerator extends Serializable {
     
diff --git a/src/java/org/apache/commons/math/random/UncorrelatedRandomVectorGenerator.java b/src/java/org/apache/commons/math/random/UncorrelatedRandomVectorGenerator.java
index 16d49eb..887c244 100644
--- a/src/java/org/apache/commons/math/random/UncorrelatedRandomVectorGenerator.java
+++ b/src/java/org/apache/commons/math/random/UncorrelatedRandomVectorGenerator.java
@@ -25,6 +25,7 @@
  * distributions, with parameters supplied in the constructor.
  * 
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 
 public class UncorrelatedRandomVectorGenerator
diff --git a/src/java/org/apache/commons/math/stat/descriptive/DescriptiveStatistics.java b/src/java/org/apache/commons/math/stat/descriptive/DescriptiveStatistics.java
index 5ba7610..cbf9724 100644
--- a/src/java/org/apache/commons/math/stat/descriptive/DescriptiveStatistics.java
+++ b/src/java/org/apache/commons/math/stat/descriptive/DescriptiveStatistics.java
@@ -435,28 +435,42 @@
     // Implementation getters and setter
     
     /**
-     * @return the meanImpl
+     * Returns the currently configured mean implementation.
+     * 
+     * @return the UnivariateStatistic implementing the mean
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getMeanImpl() {
         return meanImpl;
     }
 
     /**
-     * @param meanImpl the meanImpl to set
+     * <p>Sets the implementation for the mean.</p>
+     * 
+     * @param meanImpl the UnivariateStatistic instance to use
+     * for computing the mean
+     * @since 1.2
      */
     public synchronized void setMeanImpl(UnivariateStatistic meanImpl) {
         this.meanImpl = meanImpl;
     }
 
     /**
-     * @return the geometricMeanImpl
+     * Returns the currently configured geometric mean implementation.
+     * 
+     * @return the UnivariateStatistic implementing the geometric mean
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getGeometricMeanImpl() {
         return geometricMeanImpl;
     }
 
     /**
-     * @param geometricMeanImpl the geometricMeanImpl to set
+     * <p>Sets the implementation for the gemoetric mean.</p>
+     * 
+     * @param geometricMeanImpl the UnivariateStatistic instance to use
+     * for computing the geometric mean
+     * @since 1.2
      */
     public synchronized void setGeometricMeanImpl(
             UnivariateStatistic geometricMeanImpl) {
@@ -464,49 +478,73 @@
     }
 
     /**
-     * @return the kurtosisImpl
+     * Returns the currently configured kurtosis implementation.
+     * 
+     * @return the UnivariateStatistic implementing the kurtosis
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getKurtosisImpl() {
         return kurtosisImpl;
     }
 
     /**
-     * @param kurtosisImpl the kurtosisImpl to set
+     * <p>Sets the implementation for the kurtosis.</p>
+     * 
+     * @param kurtosisImpl the UnivariateStatistic instance to use
+     * for computing the kurtosis
+     * @since 1.2
      */
     public synchronized void setKurtosisImpl(UnivariateStatistic kurtosisImpl) {
         this.kurtosisImpl = kurtosisImpl;
     }
 
     /**
-     * @return the maxImpl
+     * Returns the currently configured maximum implementation.
+     * 
+     * @return the UnivariateStatistic implementing the maximum
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getMaxImpl() {
         return maxImpl;
     }
 
     /**
-     * @param maxImpl the maxImpl to set
+     * <p>Sets the implementation for the maximum.</p>
+     * 
+     * @param maxImpl the UnivariateStatistic instance to use
+     * for computing the maximum
+     * @since 1.2
      */
     public synchronized void setMaxImpl(UnivariateStatistic maxImpl) {
         this.maxImpl = maxImpl;
     }
 
     /**
-     * @return the minImpl
+     * Returns the currently configured minimum implementation.
+     * 
+     * @return the UnivariateStatistic implementing the minimum
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getMinImpl() {
         return minImpl;
     }
 
     /**
-     * @param minImpl the minImpl to set
+     * <p>Sets the implementation for the minimum.</p>
+     * 
+     * @param minImpl the UnivariateStatistic instance to use
+     * for computing the minimum
+     * @since 1.2
      */
     public synchronized void setMinImpl(UnivariateStatistic minImpl) {
         this.minImpl = minImpl;
     }
 
     /**
-     * @return the percentileImpl
+     * Returns the currently configured percentile implementation.
+     * 
+     * @return the UnivariateStatistic implementing the percentile
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getPercentileImpl() {
         return percentileImpl;
@@ -521,6 +559,7 @@
      * @param percentileImpl the percentileImpl to set
      * @throws IllegalArgumentException if the supplied implementation does not
      *  provide a <code>setQuantile</code> method
+     * @since 1.2
      */
     public synchronized void setPercentileImpl(
             UnivariateStatistic percentileImpl) {
@@ -542,14 +581,21 @@
     }
 
     /**
-     * @return the skewnessImpl
+     * Returns the currently configured skewness implementation.
+     * 
+     * @return the UnivariateStatistic implementing the skewness
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getSkewnessImpl() {
         return skewnessImpl;
     }
 
     /**
-     * @param skewnessImpl the skewnessImpl to set
+     * <p>Sets the implementation for the skewness.</p>
+     * 
+     * @param skewnessImpl the UnivariateStatistic instance to use
+     * for computing the skewness
+     * @since 1.2
      */
     public synchronized void setSkewnessImpl(
             UnivariateStatistic skewnessImpl) {
@@ -557,14 +603,21 @@
     }
 
     /**
-     * @return the varianceImpl
+     * Returns the currently configured variance implementation.
+     * 
+     * @return the UnivariateStatistic implementing the variance
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getVarianceImpl() {
         return varianceImpl;
     }
 
     /**
-     * @param varianceImpl the varianceImpl to set
+     * <p>Sets the implementation for the variance.</p>
+     * 
+     * @param varianceImpl the UnivariateStatistic instance to use
+     * for computing the variance
+     * @since 1.2
      */
     public synchronized void setVarianceImpl(
             UnivariateStatistic varianceImpl) {
@@ -572,28 +625,42 @@
     }
 
     /**
-     * @return the sumsqImpl
+     * Returns the currently configured sum of squares implementation.
+     * 
+     * @return the UnivariateStatistic implementing the sum of squares
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getSumsqImpl() {
         return sumsqImpl;
     }
 
     /**
-     * @param sumsqImpl the sumsqImpl to set
+     * <p>Sets the implementation for the sum of squares.</p>
+     * 
+     * @param sumsqImpl the UnivariateStatistic instance to use
+     * for computing the sum of squares
+     * @since 1.2
      */
     public synchronized void setSumsqImpl(UnivariateStatistic sumsqImpl) {
         this.sumsqImpl = sumsqImpl;
     }
 
     /**
-     * @return the sumImpl
+     * Returns the currently configured sum implementation.
+     * 
+     * @return the UnivariateStatistic implementing the sum
+     * @since 1.2
      */
     public synchronized UnivariateStatistic getSumImpl() {
         return sumImpl;
     }
 
     /**
-     * @param sumImpl the sumImpl to set
+     * <p>Sets the implementation for the sum.</p>
+     * 
+     * @param sumImpl the UnivariateStatistic instance to use
+     * for computing the sum
+     * @since 1.2
      */
     public synchronized void setSumImpl(UnivariateStatistic sumImpl) {
         this.sumImpl = sumImpl;
diff --git a/src/java/org/apache/commons/math/stat/descriptive/SummaryStatistics.java b/src/java/org/apache/commons/math/stat/descriptive/SummaryStatistics.java
index bed7f06..dee7312 100644
--- a/src/java/org/apache/commons/math/stat/descriptive/SummaryStatistics.java
+++ b/src/java/org/apache/commons/math/stat/descriptive/SummaryStatistics.java
@@ -303,7 +303,8 @@
      * <p>
      *  Double.NaN is returned if no values have been added.</p>
      *
-     * @return the sum of logs  
+     * @return the sum of logs
+     * @since 1.2
      */
     public double getSumOfLogs() {
         return sumLogImpl.getResult();
@@ -314,6 +315,7 @@
      * summary statistics from values that
      * have been added.
      * @return String with line feeds displaying statistics
+     * @since 1.2
      */
     public String toString() {
         StringBuffer outBuffer = new StringBuffer();
@@ -398,6 +400,7 @@
      * Returns the currently configured Sum implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the sum
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getSumImpl() {
         return sumImpl;
@@ -413,6 +416,7 @@
      * for computing the Sum
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setSumImpl(StorelessUnivariateStatistic sumImpl) {
         checkEmpty();
@@ -423,6 +427,7 @@
      * Returns the currently configured sum of squares implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the sum of squares
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getSumsqImpl() {
         return sumsqImpl;
@@ -438,6 +443,7 @@
      * for computing the sum of squares
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setSumsqImpl(
             StorelessUnivariateStatistic sumsqImpl) {
@@ -449,6 +455,7 @@
      * Returns the currently configured minimum implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the minimum
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getMinImpl() {
         return minImpl;
@@ -464,6 +471,7 @@
      * for computing the minimum
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setMinImpl(StorelessUnivariateStatistic minImpl) {
         checkEmpty();
@@ -474,6 +482,7 @@
      * Returns the currently configured maximum implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the maximum
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getMaxImpl() {
         return maxImpl;
@@ -489,6 +498,7 @@
      * for computing the maximum
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setMaxImpl(StorelessUnivariateStatistic maxImpl) {
         checkEmpty();
@@ -499,6 +509,7 @@
      * Returns the currently configured sum of logs implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the log sum
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getSumLogImpl() {
         return sumLogImpl;
@@ -514,6 +525,7 @@
      * for computing the log sum
      * @throws IllegalStateException if data has already been added 
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setSumLogImpl(
             StorelessUnivariateStatistic sumLogImpl) {
@@ -526,6 +538,7 @@
      * Returns the currently configured geometric mean implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the geometric mean
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getGeoMeanImpl() {
         return geoMeanImpl;
@@ -541,6 +554,7 @@
      * for computing the geometric mean
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setGeoMeanImpl(
             StorelessUnivariateStatistic geoMeanImpl) {
@@ -552,6 +566,7 @@
      * Returns the currently configured mean implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the mean
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getMeanImpl() {
         return meanImpl;
@@ -567,6 +582,7 @@
      * for computing the mean
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setMeanImpl(
             StorelessUnivariateStatistic meanImpl) {
@@ -578,6 +594,7 @@
      * Returns the currently configured variance implementation
      * 
      * @return the StorelessUnivariateStatistic implementing the variance
+     * @since 1.2
      */
     public StorelessUnivariateStatistic getVarianceImpl() {
         return varianceImpl;
@@ -593,6 +610,7 @@
      * for computing the variance
      * @throws IllegalStateException if data has already been added
      *  (i.e if n > 0)
+     * @since 1.2
      */
     public void setVarianceImpl(
             StorelessUnivariateStatistic varianceImpl) {
diff --git a/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java b/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
index ffa1af9..d9a4efe 100644
--- a/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
+++ b/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
@@ -210,6 +210,7 @@
      * @param observed2 array of observed frequency counts of the second data set
      * @return chi-square test statistic
      * @throws IllegalArgumentException if preconditions are not met
+     * @since 1.2
      */
     public double chiSquareDataSetsComparison(long[] observed1, long[] observed2)
         throws IllegalArgumentException {
@@ -272,6 +273,7 @@
      * @return p-value
      * @throws IllegalArgumentException if preconditions are not met
      * @throws MathException if an error occurs computing the p-value
+     * @since 1.2
      */
     public double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2)
         throws IllegalArgumentException, MathException {
@@ -288,6 +290,7 @@
      * 1 - alpha
      * @throws IllegalArgumentException if preconditions are not met
      * @throws MathException if an error occurs performing the test
+     * @since 1.2
      */
     public boolean chiSquareTestDataSetsComparison(long[] observed1, long[] observed2,
             double alpha) throws IllegalArgumentException, MathException {
diff --git a/src/java/org/apache/commons/math/stat/inference/UnknownDistributionChiSquareTest.java b/src/java/org/apache/commons/math/stat/inference/UnknownDistributionChiSquareTest.java
index 1cbb05c..db4a62e 100644
--- a/src/java/org/apache/commons/math/stat/inference/UnknownDistributionChiSquareTest.java
+++ b/src/java/org/apache/commons/math/stat/inference/UnknownDistributionChiSquareTest.java
@@ -23,7 +23,8 @@
  * <p>Two samples tests are used when the distribution is unknown <i>a priori</i>
  * but provided by one sample. We compare the second sample against the first.</p>
  *
- * @version $Revision$ $Date$ 
+ * @version $Revision$ $Date$
+ * @since 1.2 
  */
 public interface UnknownDistributionChiSquareTest extends ChiSquareTest {
      
diff --git a/src/java/org/apache/commons/math/transform/FastCosineTransformer.java b/src/java/org/apache/commons/math/transform/FastCosineTransformer.java
index 9b347bf..a9e3f63 100644
--- a/src/java/org/apache/commons/math/transform/FastCosineTransformer.java
+++ b/src/java/org/apache/commons/math/transform/FastCosineTransformer.java
@@ -35,6 +35,7 @@
  * function transformation on how this affects the sampling.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class FastCosineTransformer implements Serializable {
 
diff --git a/src/java/org/apache/commons/math/transform/FastFourierTransformer.java b/src/java/org/apache/commons/math/transform/FastFourierTransformer.java
index a9b45c2..c2baa5d 100644
--- a/src/java/org/apache/commons/math/transform/FastFourierTransformer.java
+++ b/src/java/org/apache/commons/math/transform/FastFourierTransformer.java
@@ -38,6 +38,7 @@
  * 32 (1978), 175 - 199.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class FastFourierTransformer implements Serializable {
 
diff --git a/src/java/org/apache/commons/math/transform/FastSineTransformer.java b/src/java/org/apache/commons/math/transform/FastSineTransformer.java
index e84ce89..9303462 100644
--- a/src/java/org/apache/commons/math/transform/FastSineTransformer.java
+++ b/src/java/org/apache/commons/math/transform/FastSineTransformer.java
@@ -35,6 +35,7 @@
  * transformation after sampling.</p>
  *
  * @version $Revision$ $Date$
+ * @since 1.2
  */
 public class FastSineTransformer implements Serializable {
 
diff --git a/src/java/org/apache/commons/math/util/MathUtils.java b/src/java/org/apache/commons/math/util/MathUtils.java
index 121dcda..0b87cae 100644
--- a/src/java/org/apache/commons/math/util/MathUtils.java
+++ b/src/java/org/apache/commons/math/util/MathUtils.java
@@ -286,6 +286,7 @@
      * @param y second array
      * @return true if the values are both null or have same dimension
      * and equal elements
+     * @since 1.2
      */
     public static boolean equals(double[] x, double[] y) {
         if ((x == null) || (y == null)) {
@@ -464,6 +465,7 @@
      * 
      * @param value the value to be hashed (may be null)
      * @return the hash code
+     * @since 1.2
      */
     public static int hash(double[] value) {
         if (value == null) {
@@ -574,6 +576,7 @@
      * @param base the base of the logarithm, must be greater than 0
      * @param x argument, must be greater than 0
      * @return the value of the logarithm - the number y such that base^y = x.
+     * @since 1.2
      */ 
     public static double log(double base, double x) {
         return Math.log(x)/Math.log(base);
@@ -667,6 +670,7 @@
      * @param direction (the only important thing is whether
      * direction is greater or smaller than d)
      * @return the next machine representable number in the specified direction
+     * @since 1.2
      */
     public static double nextAfter(double d, double direction) {
 
@@ -725,6 +729,7 @@
      * @param a angle to normalize
      * @param center center of the desired 2&pi; interval for the result
      * @return a-2k&pi; with integer k and center-&pi; &lt;= a-2k&pi; &lt;= center+&pi;
+     * @since 1.2
      */
      public static double normalizeAngle(double a, double center) {
          return a - TWO_PI * Math.floor((a + Math.PI - center) / TWO_PI);
diff --git a/src/site/site.xml b/src/site/site.xml
index 2ba95fa..44ffc7c 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -27,11 +27,11 @@
       <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="http://commons.apache.org/math/api-1.0/index.html"/>
+      <item name="Javadoc (1.2 release)" href="apidocs/index.html"/>
       <item name="Javadoc (1.1 release)"   
          href="http://commons.apache.org/math/api-1.1/index.html"/>
-      <item name="Javadoc (1.2-SNAPSHOT)" href="apidocs/index.html"/>
+      <item name="Javadoc (1.0 release)"
+         href="http://commons.apache.org/math/api-1.0/index.html"/>
       <item name="Source Repository (current)" 
          href="http://svn.apache.org/viewvc/commons/proper/math/trunk"/>
       <item name="Issue Tracking" href="/issue-tracking.html"/>
diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml
index 6372067..253ec7e 100644
--- a/src/site/xdoc/changes.xml
+++ b/src/site/xdoc/changes.xml
@@ -39,14 +39,14 @@
 Commons Math Release Notes</title>
   </properties>
   <body>
-    <release version="1.2-SNAPSHOT" date="TBD"
+    <release version="1.2-RC1" date="TBD"
     description="This release combines bug fixes and new features. Most notable
     among the new features are the estimation, optimization, geometry and ode
     packages added from the Mantissa library. Implementations of fast Fourier
-    transform and QR decomposition have also been added, along with
-    enhancements and extensions to packages included in Commons Math 1.1. This
-    release is source and binary compatible with earlier versions of
-    Commons Math.">
+    transform, QR decomposition and several numerical integration algorithms
+    have also been added, along with enhancements and extensions to packages
+    included in Commons Math 1.1. This release is source and binary compatible
+    with earlier versions of Commons Math.">
       <action dev="luc" type="fix">
         Fixed numerous warnings in test code.
       </action>
@@ -168,6 +168,16 @@
         Added getSumOfLogs method to SummaryStatistics and made SumOfLogs
         instance used by GeometricMean configurable.
       </action>
+      <action dev="psteitz" type="fix" issue="MATH-184" due-to="Yegor Bryukhov">
+        Fixed AbstractIntegerDistribution cumulativeProbablility(-,-)
+        to correctly handle double arguments.
+      </action>
+      <action dev="psteitz" type="update" issue="MATH-188" due-to="Sebastian Bazley">
+        Made numerator and denominator final in Fraction and
+        deprecated protected real and imaginary parts fields in Complex,
+        making Fraction immutable and preparing Complex to become fully
+        immutable in 2.0.
+      </action>
     </release>
     <release version="1.1" date="2005-12-17"  
  description="This is a maintenance release containing bug fixes and enhancements.
diff --git a/src/test/org/apache/commons/math/distribution/IntegerDistributionAbstractTest.java b/src/test/org/apache/commons/math/distribution/IntegerDistributionAbstractTest.java
index 664d7b8..14eb85f 100644
--- a/src/test/org/apache/commons/math/distribution/IntegerDistributionAbstractTest.java
+++ b/src/test/org/apache/commons/math/distribution/IntegerDistributionAbstractTest.java
@@ -156,6 +156,7 @@
         }           
     }
     
+    
     /**
      * Verifies that inverse cumulative probability density calculations match expected values
      * using current test instance data
@@ -187,6 +188,55 @@
     }
     
     /**
+     * Verifies that floating point arguments are correctly handled by
+     * cumulativeProbablility(-,-)
+     * JIRA: MATH-184
+     */
+    public void testFloatingPointArguments() throws Exception {
+        for (int i = 0; i < cumulativeTestPoints.length; i++) {
+            double arg = (double) cumulativeTestPoints[i];
+            assertEquals(
+                    "Incorrect cumulative probability value returned for " +
+                    cumulativeTestPoints[i],
+                    cumulativeTestValues[i], 
+                    distribution.cumulativeProbability(arg), tolerance);
+            if (i < cumulativeTestPoints.length - 1) {
+                double arg2 = (double) cumulativeTestPoints[i + 1];
+                assertEquals("Inconsistent probability for discrete range " +
+                        "[ " + arg + "," + arg2 + " ]",
+                   distribution.cumulativeProbability(
+                           cumulativeTestPoints[i],
+                           cumulativeTestPoints[i + 1]),
+                   distribution.cumulativeProbability(arg, arg2), tolerance);
+                arg = arg - Math.random();
+                arg2 = arg2 + Math.random();
+                assertEquals("Inconsistent probability for discrete range " +
+                        "[ " + arg + "," + arg2 + " ]",
+                   distribution.cumulativeProbability(
+                           cumulativeTestPoints[i],
+                           cumulativeTestPoints[i + 1]),
+                   distribution.cumulativeProbability(arg, arg2), tolerance);
+            }
+        } 
+        int one = 1;
+        int ten = 10;
+        int two = 2;
+        double oned = (double) one;
+        double twod = (double) two;
+        double tend = (double) ten;
+        assertEquals(distribution.cumulativeProbability(one, two), 
+                distribution.cumulativeProbability(oned, twod), tolerance);
+        assertEquals(distribution.cumulativeProbability(one, two), 
+                distribution.cumulativeProbability(oned - tolerance,
+                        twod + 0.9), tolerance);
+        assertEquals(distribution.cumulativeProbability(two, ten), 
+                distribution.cumulativeProbability(twod, tend), tolerance);
+        assertEquals(distribution.cumulativeProbability(two, ten), 
+                distribution.cumulativeProbability(twod - tolerance,
+                        tend + 0.9), tolerance);
+    }
+    
+    /**
      * Verifies that inverse cumulative probability density calculations match expected values
      * using default test instance data
      */