in commons-statistics-inference/src/main/java/org/apache/commons/statistics/inference/KolmogorovSmirnovDistribution.java [472:517]
static void computeA(int n, double t, int[] amt, int[] apt) {
final int l = (int) Math.floor(t);
final double f = t - l;
final int limit = 2 * n + 2;
// 3-cases
if (f > HALF) {
// Case (iii): 1/2 < f < 1
// for i = 1, 2, ...
for (int j = 2; j <= limit; j += 2) {
final int i = j >>> 1;
amt[j] = i - 2 - l;
apt[j] = i + l;
}
// for i = 0, 1, 2, ...
for (int j = 1; j <= limit; j += 2) {
final int i = j >>> 1;
amt[j] = i - 1 - l;
apt[j] = i + 1 + l;
}
} else if (f > 0) {
// Case (ii): 0 < f <= 1/2
amt[1] = -l - 1;
apt[1] = l + 1;
// for i = 1, 2, ...
for (int j = 2; j <= limit; j++) {
final int i = j >>> 1;
amt[j] = i - 1 - l;
apt[j] = i + l;
}
} else {
// Case (i): f = 0
// for i = 1, 2, ...
for (int j = 2; j <= limit; j += 2) {
final int i = j >>> 1;
amt[j] = i - 1 - l;
apt[j] = i - 1 + l;
}
// for i = 0, 1, 2, ...
for (int j = 1; j <= limit; j += 2) {
final int i = j >>> 1;
amt[j] = i - l;
apt[j] = i + l;
}
}
}