X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fwilcoxon-sig.c;h=a9d9b70dbc9b94c5241365a2cf5580f5b78fd435;hb=f447ebdf19acf26d2d46cee1595e99c3620ee30d;hp=d9a4bcae43d0020474cedb02ad60985f218ff5a4;hpb=3bbb4370239deb29ebbf813d258aef6249e2a431;p=pspp diff --git a/src/math/wilcoxon-sig.c b/src/math/wilcoxon-sig.c index d9a4bcae43..a9d9b70dbc 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,26 +86,26 @@ 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, and using int will save some memory on 64-bit systems. */ unsigned long int total; 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); + int *array = XCALLOC (w + 1, int); array[w] = 1; max = w;