X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fwilcoxon-sig.c;h=17484f1411d51adb170fd431c4b6193dce769f85;hb=320622191b3de640da6ba0e347a94d28493711ae;hp=d9a4bcae43d0020474cedb02ad60985f218ff5a4;hpb=8af88c0b7ea2fe75df7e45497988ed0371006a86;p=pspp diff --git a/src/math/wilcoxon-sig.c b/src/math/wilcoxon-sig.c index d9a4bcae43..17484f1411 100644 --- a/src/math/wilcoxon-sig.c +++ b/src/math/wilcoxon-sig.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -86,7 +86,7 @@ only 250,047. */ static unsigned long int -count_sums_to_W (unsigned long int n, unsigned long int w) +count_sums_to_W (unsigned long int n, long int w) { /* The array contain ints even though everything else is long, but no element in the array can have a value bigger than N, @@ -95,17 +95,18 @@ count_sums_to_W (unsigned long int n, unsigned long int w) unsigned long int max; int *array; + assert (w >= 0); assert (n < CHAR_BIT * sizeof (unsigned long int)); if (n == 0) return 0; - else if (w <= 0) + else if (w == 0) return 1 << n; else if (w > n * (n + 1) / 2) return 0; else if (n == 1) return 1; - array = xcalloc (sizeof *array, w + 1); + array = xcalloc (w + 1, sizeof *array); array[w] = 1; max = w;