Replace "CMAESOptimizer.Sigma" with "Sigma".
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java
index d657330..7606cee 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
-import org.apache.commons.math4.legacy.exception.NotPositiveException;
 import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException;
 import org.apache.commons.math4.legacy.exception.OutOfRangeException;
 import org.apache.commons.math4.legacy.exception.TooManyEvaluationsException;
@@ -35,6 +34,7 @@
 import org.apache.commons.math4.legacy.optim.PointValuePair;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.GoalType;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.PopulationSize;
+import org.apache.commons.math4.legacy.optim.nonlinear.scalar.Sigma;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.MultivariateOptimizer;
 import org.apache.commons.rng.UniformRandomProvider;
 import org.apache.commons.statistics.distribution.ContinuousDistribution;
@@ -78,14 +78,6 @@
  *  <li><a href="http://en.wikipedia.org/wiki/CMA-ES">Wikipedia</a></li>
  * </ul>
  *
- * <p>
- * The {@link PopulationSize number of offsprings} is the primary strategy
- * parameter. In the absence of better clues, a good default could be an integer
- * close to {@code 4 + 3 ln(n)}, where {@code n} is the number of optimized
- * parameters. Increasing the population size improves global search properties
- * at the expense of speed (which in general decreases at most linearly with
- * increasing population size).
- *
  * @since 3.0
  */
 public class CMAESOptimizer
@@ -279,58 +271,38 @@
     }
 
     /**
-     * Input sigma values.
-     * They define the initial coordinate-wise standard deviations for
-     * sampling new search points around the initial guess.
-     * It is suggested to set them to the estimated distance from the
-     * initial to the desired optimum.
-     * Small values induce the search to be more local (and very small
-     * values are more likely to find a local optimum close to the initial
-     * guess).
-     * Too small values might however lead to early termination.
-     */
-    public static class Sigma implements OptimizationData {
-        /** Sigma values. */
-        private final double[] sigma;
-
-        /**
-         * @param s Sigma values.
-         * @throws NotPositiveException if any of the array entries is smaller
-         * than zero.
-         */
-        public Sigma(double[] s) {
-            for (int i = 0; i < s.length; i++) {
-                if (s[i] < 0) {
-                    throw new NotPositiveException(s[i]);
-                }
-            }
-
-            sigma = s.clone();
-        }
-
-        /**
-         * @return the sigma values.
-         */
-        public double[] getSigma() {
-            return sigma.clone();
-        }
-    }
-
-    /**
      * {@inheritDoc}
      *
      * @param optData Optimization data. In addition to those documented in
      * {@link MultivariateOptimizer#parseOptimizationData(OptimizationData[])
      * MultivariateOptimizer}, this method will register the following data:
      * <ul>
-     *  <li>{@link Sigma}</li>
-     *  <li>{@link PopulationSize}</li>
+     *  <li>
+     *   {@link Sigma} values define the initial coordinate-wise standard
+     *   deviations for sampling new search points around the initial guess.
+     *   It is suggested to set them to the estimated distance from the
+     *   initial to the desired optimum.
+     *   Small values induce the search to be more local (and very small
+     *   values are more likely to find a local optimum close to the initial
+     *   guess).
+     *   Too small values might however lead to early termination.
+     *  </li>
+     *  <li>
+     *   {@link PopulationSize} is the number of offsprings and the primary
+     *   strategy parameter.
+     *   In the absence of better clues, a good default could be an integer
+     *   close to {@code 4 + 3 ln(n)}, where {@code n} is the number of
+     *   optimized parameters.
+     *   Increasing the population size improves global search properties at
+     *   the expense of speed (which in general decreases at most linearly
+     *   with increasing population size).
+     *  </li>
      * </ul>
      * @return {@inheritDoc}
-     * @throws TooManyEvaluationsException if the maximal number of
-     * evaluations is exceeded.
-     * @throws DimensionMismatchException if the initial guess, target, and weight
-     * arguments have inconsistent dimensions.
+     * @throws TooManyEvaluationsException if the maximal number of evaluations
+     * is exceeded.
+     * @throws DimensionMismatchException if the initial guess, target, and
+     * weight arguments have inconsistent dimensions.
      */
     @Override
     public PointValuePair optimize(OptimizationData... optData) {
diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizerTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizerTest.java
index 830b753..bf2a609 100644
--- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizerTest.java
+++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizerTest.java
@@ -18,7 +18,7 @@
 
 import org.apache.commons.math4.legacy.analysis.MultivariateFunction;
 import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
-import org.apache.commons.math4.legacy.exception.NotPositiveException;
+import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException;
 import org.apache.commons.math4.legacy.exception.NumberIsTooLargeException;
 import org.apache.commons.math4.legacy.exception.NumberIsTooSmallException;
 import org.apache.commons.math4.legacy.exception.OutOfRangeException;
@@ -28,6 +28,7 @@
 import org.apache.commons.math4.legacy.optim.SimpleBounds;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.GoalType;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.PopulationSize;
+import org.apache.commons.math4.legacy.optim.nonlinear.scalar.Sigma;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.ObjectiveFunction;
 import org.apache.commons.math4.legacy.optim.nonlinear.scalar.TestFunction;
 import org.apache.commons.rng.simple.RandomSource;
@@ -81,7 +82,7 @@
                 1e-13, 1e-6, 100000, expected);
     }
 
-    @Test(expected = NotPositiveException.class)
+    @Test(expected = NotStrictlyPositiveException.class)
     public void testInputSigmaNegative() {
         final int dim = 12;
         double[] startPoint = OptimTestUtils.point(dim, 0.5);
@@ -175,7 +176,7 @@
                                                    SimpleBounds.unbounded(1),
                                                    GoalType.MINIMIZE,
                                                    new PopulationSize(5),
-                                                   new CMAESOptimizer.Sigma(sigma),
+                                                   new Sigma(sigma),
                                                    new InitialGuess(start)).getPoint();
         Assert.assertEquals(0, result[0], 1e-7);
     }
@@ -396,7 +397,7 @@
                                                    new ObjectiveFunction(fitnessFunction),
                                                    GoalType.MINIMIZE,
                                                    new PopulationSize(5),
-                                                   new CMAESOptimizer.Sigma(sigma),
+                                                   new Sigma(sigma),
                                                    new InitialGuess(start),
                                                    new SimpleBounds(lower, upper)).getPoint();
         Assert.assertTrue("Out of bounds (" + result[0] + " > " + upper[0] + ")",
@@ -428,7 +429,7 @@
                                                    GoalType.MINIMIZE,
                                                    SimpleBounds.unbounded(1),
                                                    new PopulationSize(5),
-                                                   new CMAESOptimizer.Sigma(new double[] { 1e-1 }),
+                                                   new Sigma(new double[] { 1e-1 }),
                                                    new InitialGuess(start));
         final double resNoBound = result.getPoint()[0];
 
@@ -440,7 +441,7 @@
                                     new ObjectiveFunction(fitnessFunction),
                                     GoalType.MINIMIZE,
                                     new PopulationSize(5),
-                                    new CMAESOptimizer.Sigma(sigma),
+                                    new Sigma(sigma),
                                     new InitialGuess(start),
                                     new SimpleBounds(lower, upper));
         final double resNearLo = result.getPoint()[0];
@@ -452,7 +453,7 @@
                                     new ObjectiveFunction(fitnessFunction),
                                     GoalType.MINIMIZE,
                                     new PopulationSize(5),
-                                    new CMAESOptimizer.Sigma(sigma),
+                                    new Sigma(sigma),
                                     new InitialGuess(start),
                                     new SimpleBounds(lower, upper));
         final double resNearHi = result.getPoint()[0];
@@ -505,7 +506,7 @@
                            goal,
                            new InitialGuess(startPoint),
                            SimpleBounds.unbounded(dim),
-                           new CMAESOptimizer.Sigma(inSigma),
+                           new Sigma(inSigma),
                            new PopulationSize(lambda)) :
             optim.optimize(new MaxEval(maxEvaluations),
                            new ObjectiveFunction(func),
@@ -513,7 +514,7 @@
                            new SimpleBounds(boundaries[0],
                                             boundaries[1]),
                            new InitialGuess(startPoint),
-                           new CMAESOptimizer.Sigma(inSigma),
+                           new Sigma(inSigma),
                            new PopulationSize(lambda));
 
         Assert.assertEquals(expected.getValue(), result.getValue(), fTol);