本文整理汇总了Java中org.apache.commons.math3.exception.util.LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING属性的典型用法代码示例。如果您正苦于以下问题:Java LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING属性的具体用法?Java LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING怎么用?Java LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类org.apache.commons.math3.exception.util.LocalizedFormats
的用法示例。
在下文中一共展示了LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING属性的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: exactLog2
/**
* Returns the base-2 logarithm of the specified {@code int}. Throws an
* exception if {@code n} is not a power of two.
*
* @param n the {@code int} whose base-2 logarithm is to be evaluated
* @return the base-2 logarithm of {@code n}
* @throws MathIllegalArgumentException if {@code n} is not a power of two
*/
public static int exactLog2(final int n)
throws MathIllegalArgumentException {
int index = Arrays.binarySearch(TransformUtils.POWERS_OF_TWO, n);
if (index < 0) {
throw new MathIllegalArgumentException(
LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING,
Integer.valueOf(n));
}
return index;
}
示例2: fst
/**
* Perform the FST algorithm (including inverse). The first element of the
* data set is required to be {@code 0}.
*
* @param f the real data array to be transformed
* @return the real transformed array
* @throws MathIllegalArgumentException if the length of the data array is
* not a power of two, or the first element of the data array is not zero
*/
protected double[] fst(double[] f) throws MathIllegalArgumentException {
final double[] transformed = new double[f.length];
if (!ArithmeticUtils.isPowerOfTwo(f.length)) {
throw new MathIllegalArgumentException(
LocalizedFormats.NOT_POWER_OF_TWO_CONSIDER_PADDING,
Integer.valueOf(f.length));
}
if (f[0] != 0.0) {
throw new MathIllegalArgumentException(
LocalizedFormats.FIRST_ELEMENT_NOT_ZERO,
Double.valueOf(f[0]));
}
final int n = f.length;
if (n == 1) { // trivial case
transformed[0] = 0.0;
return transformed;
}
// construct a new array and perform FFT on it
final double[] x = new double[n];
x[0] = 0.0;
x[n >> 1] = 2.0 * f[n >> 1];
for (int i = 1; i < (n >> 1); i++) {
final double a = FastMath.sin(i * FastMath.PI / n) * (f[i] + f[n - i]);
final double b = 0.5 * (f[i] - f[n - i]);
x[i] = a + b;
x[n - i] = a - b;
}
FastFourierTransformer transformer;
transformer = new FastFourierTransformer(DftNormalization.STANDARD);
Complex[] y = transformer.transform(x, TransformType.FORWARD);
// reconstruct the FST result for the original array
transformed[0] = 0.0;
transformed[1] = 0.5 * y[0].getReal();
for (int i = 1; i < (n >> 1); i++) {
transformed[2 * i] = -y[i].getImaginary();
transformed[2 * i + 1] = y[i].getReal() + transformed[2 * i - 1];
}
return transformed;
}