Author: tn
Date: Wed Sep 11 22:42:15 2013
New Revision: 1522083
URL: http://svn.apache.org/r1522083
Log:
Formatting and javadoc.
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java?rev=1522083&r1=1522082&r2=1522083&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
Wed Sep 11 22:42:15 2013
@@ -1272,159 +1272,158 @@ public class MathArrays {
return true;
}
- /**
- * Normalizes an array to make it sum to a specified value.
- * Returns the result of the transformation <pre>
- * x |-> x * normalizedSum / sum
- * </pre>
- * applied to each non-NaN element x of the input array, where sum is the
- * sum of the non-NaN entries in the input array.</p>
- *
- * <p>Throws IllegalArgumentException if {@code normalizedSum} is infinite
- * or NaN and ArithmeticException if the input array contains any
infinite elements
- * or sums to 0.</p>
- *
- * <p>Ignores (i.e., copies unchanged to the output array) NaNs in the
input array.</p>
- *
- * @param values Input array to be normalized
- * @param normalizedSum Target sum for the normalized array
- * @return the normalized array.
- * @throws MathArithmeticException if the input array contains infinite
- * elements or sums to zero.
- * @throws MathIllegalArgumentException if the target sum is infinite or
{@code NaN}.
- * @since 2.1
- */
- public static double[] normalizeArray(double[] values, double
normalizedSum)
- throws MathIllegalArgumentException, MathArithmeticException {
- if (Double.isInfinite(normalizedSum)) {
- throw new
MathIllegalArgumentException(LocalizedFormats.NORMALIZE_INFINITE);
- }
- if (Double.isNaN(normalizedSum)) {
- throw new
MathIllegalArgumentException(LocalizedFormats.NORMALIZE_NAN);
- }
- double sum = 0d;
- final int len = values.length;
- double[] out = new double[len];
- for (int i = 0; i < len; i++) {
- if (Double.isInfinite(values[i])) {
- throw new
MathIllegalArgumentException(LocalizedFormats.INFINITE_ARRAY_ELEMENT,
values[i], i);
- }
- if (!Double.isNaN(values[i])) {
- sum += values[i];
- }
- }
- if (sum == 0) {
- throw new
MathArithmeticException(LocalizedFormats.ARRAY_SUMS_TO_ZERO);
- }
- for (int i = 0; i < len; i++) {
- if (Double.isNaN(values[i])) {
- out[i] = Double.NaN;
- } else {
- out[i] = values[i] * normalizedSum / sum;
- }
- }
- return out;
- }
-
- /** Build an array of elements.
- * <p>
- * Arrays are filled with field.getZero()
- * </p>
- * @param <T> the type of the field elements
- * @param field field to which array elements belong
- * @param length of the array
- * @return a new array
- * @since 3.2
- */
- public static <T> T[] buildArray(final Field<T> field, final int length) {
- @SuppressWarnings("unchecked") // OK because field must be correct
class
- T[] array = (T[]) Array.newInstance(field.getRuntimeClass(), length);
- Arrays.fill(array, field.getZero());
- return array;
- }
-
- /** Build a double dimension array of elements.
- * <p>
- * Arrays are filled with field.getZero()
- * </p>
- * @param <T> the type of the field elements
- * @param field field to which array elements belong
- * @param rows number of rows in the array
- * @param columns number of columns (may be negative to build partial
- * arrays in the same way <code>new Field[rows][]</code> works)
- * @return a new array
- * @since 3.2
- */
- @SuppressWarnings("unchecked")
+ /**
+ * Normalizes an array to make it sum to a specified value.
+ * Returns the result of the transformation
+ * <pre>
+ * x |-> x * normalizedSum / sum
+ * </pre>
+ * applied to each non-NaN element x of the input array, where sum is the
+ * sum of the non-NaN entries in the input array.
+ * <p>
+ * Throws IllegalArgumentException if {@code normalizedSum} is infinite
+ * or NaN and ArithmeticException if the input array contains any infinite
elements
+ * or sums to 0.
+ * <p>
+ * Ignores (i.e., copies unchanged to the output array) NaNs in the input
array.
+ *
+ * @param values Input array to be normalized
+ * @param normalizedSum Target sum for the normalized array
+ * @return the normalized array.
+ * @throws MathArithmeticException if the input array contains infinite
+ * elements or sums to zero.
+ * @throws MathIllegalArgumentException if the target sum is infinite or
{@code NaN}.
+ * @since 2.1
+ */
+ public static double[] normalizeArray(double[] values, double
normalizedSum)
+ throws MathIllegalArgumentException, MathArithmeticException {
+ if (Double.isInfinite(normalizedSum)) {
+ throw new
MathIllegalArgumentException(LocalizedFormats.NORMALIZE_INFINITE);
+ }
+ if (Double.isNaN(normalizedSum)) {
+ throw new
MathIllegalArgumentException(LocalizedFormats.NORMALIZE_NAN);
+ }
+ double sum = 0d;
+ final int len = values.length;
+ double[] out = new double[len];
+ for (int i = 0; i < len; i++) {
+ if (Double.isInfinite(values[i])) {
+ throw new
MathIllegalArgumentException(LocalizedFormats.INFINITE_ARRAY_ELEMENT,
values[i], i);
+ }
+ if (!Double.isNaN(values[i])) {
+ sum += values[i];
+ }
+ }
+ if (sum == 0) {
+ throw new
MathArithmeticException(LocalizedFormats.ARRAY_SUMS_TO_ZERO);
+ }
+ for (int i = 0; i < len; i++) {
+ if (Double.isNaN(values[i])) {
+ out[i] = Double.NaN;
+ } else {
+ out[i] = values[i] * normalizedSum / sum;
+ }
+ }
+ return out;
+ }
+
+ /** Build an array of elements.
+ * <p>
+ * Arrays are filled with field.getZero()
+ *
+ * @param <T> the type of the field elements
+ * @param field field to which array elements belong
+ * @param length of the array
+ * @return a new array
+ * @since 3.2
+ */
+ public static <T> T[] buildArray(final Field<T> field, final int length) {
+ @SuppressWarnings("unchecked") // OK because field must be correct
class
+ T[] array = (T[]) Array.newInstance(field.getRuntimeClass(), length);
+ Arrays.fill(array, field.getZero());
+ return array;
+ }
+
+ /** Build a double dimension array of elements.
+ * <p>
+ * Arrays are filled with field.getZero()
+ *
+ * @param <T> the type of the field elements
+ * @param field field to which array elements belong
+ * @param rows number of rows in the array
+ * @param columns number of columns (may be negative to build partial
+ * arrays in the same way <code>new Field[rows][]</code> works)
+ * @return a new array
+ * @since 3.2
+ */
+ @SuppressWarnings("unchecked")
public static <T> T[][] buildArray(final Field<T> field, final int rows,
final int columns) {
- final T[][] array;
- if (columns < 0) {
- T[] dummyRow = buildArray(field, 0);
- array = (T[][]) Array.newInstance(dummyRow.getClass(), rows);
- } else {
- array = (T[][]) Array.newInstance(field.getRuntimeClass(),
- new int[] {
- rows, columns
- });
- for (int i = 0; i < rows; ++i) {
- Arrays.fill(array[i], field.getZero());
- }
- }
- return array;
- }
-
- /**
- * Calculates the <a href="http://en.wikipedia.org/wiki/Convolution">
- * convolution</a> between two sequences.
- * The solution is obtained via straightforward computation of the
- * convolution sum (and not via FFT).
- * Whenever the computation needs an element that would be located
- * at an index outside the input arrays, the value is assumed to be
- * zero.
- *
- * @param x First sequence.
- * Typically, this sequence will represent an input signal to a system.
- * @param h Second sequence.
- * Typically, this sequence will represent the impulse response of the
- * system.
- * @return the convolution of {@code x} and {@code h}.
- * This array's length will be {@code x.length + h.length - 1}.
- * @throws NullArgumentException if either {@code x} or {@code h} is
- * {@code null}.
- * @throws NoDataException if either {@code x} or {@code h} is empty.
- *
- * @since 3.3
- */
- public static double[] convolve(double[] x, double[] h)
- throws NullArgumentException,
- NoDataException {
- MathUtils.checkNotNull(x);
- MathUtils.checkNotNull(h);
-
- final int xLen = x.length;
- final int hLen = h.length;
-
- if (xLen == 0 || hLen == 0) {
- throw new NoDataException();
- }
-
- // initialize the output array
- final int totalLength = xLen + hLen - 1;
- final double[] y = new double[totalLength];
-
- // straightforward implementation of the convolution sum
- for (int n = 0; n < totalLength; n++) {
- double yn = 0;
- int k = FastMath.max(0, n + 1 - xLen);
- int j = n - k;
- while (k < hLen && j >= 0) {
- yn += x[j--] * h[k++];
- }
- y[n] = yn;
- }
+ final T[][] array;
+ if (columns < 0) {
+ T[] dummyRow = buildArray(field, 0);
+ array = (T[][]) Array.newInstance(dummyRow.getClass(), rows);
+ } else {
+ array = (T[][]) Array.newInstance(field.getRuntimeClass(),
+ new int[] {
+ rows, columns
+ });
+ for (int i = 0; i < rows; ++i) {
+ Arrays.fill(array[i], field.getZero());
+ }
+ }
+ return array;
+ }
- return y;
- }
+ /**
+ * Calculates the <a href="http://en.wikipedia.org/wiki/Convolution">
+ * convolution</a> between two sequences.
+ * <p>
+ * The solution is obtained via straightforward computation of the
+ * convolution sum (and not via FFT). Whenever the computation needs
+ * an element that would be located at an index outside the input arrays,
+ * the value is assumed to be zero.
+ *
+ * @param x First sequence.
+ * Typically, this sequence will represent an input signal to a system.
+ * @param h Second sequence.
+ * Typically, this sequence will represent the impulse response of the
system.
+ * @return the convolution of {@code x} and {@code h}.
+ * This array's length will be {@code x.length + h.length - 1}.
+ * @throws NullArgumentException if either {@code x} or {@code h} is
{@code null}.
+ * @throws NoDataException if either {@code x} or {@code h} is empty.
+ *
+ * @since 3.3
+ */
+ public static double[] convolve(double[] x, double[] h)
+ throws NullArgumentException,
+ NoDataException {
+ MathUtils.checkNotNull(x);
+ MathUtils.checkNotNull(h);
+
+ final int xLen = x.length;
+ final int hLen = h.length;
+
+ if (xLen == 0 || hLen == 0) {
+ throw new NoDataException();
+ }
+
+ // initialize the output array
+ final int totalLength = xLen + hLen - 1;
+ final double[] y = new double[totalLength];
+
+ // straightforward implementation of the convolution sum
+ for (int n = 0; n < totalLength; n++) {
+ double yn = 0;
+ int k = FastMath.max(0, n + 1 - xLen);
+ int j = n - k;
+ while (k < hLen && j >= 0) {
+ yn += x[j--] * h[k++];
+ }
+ y[n] = yn;
+ }
+
+ return y;
+ }
/**
* Specification for indicating that some operation applies