X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Flevene.c;h=5193c86a1a453f001456ecc7f747870cf346548b;hb=fb38178d67da062cf6bbbce5ad560aeca8e259c3;hp=fe04d294e1acfbf214dadea6a53717ccc9a37646;hpb=32ee0e0402d6d56674f53a47d879ec5c07dabe09;p=pspp diff --git a/src/math/levene.c b/src/math/levene.c index fe04d294e1..5193c86a1a 100644 --- a/src/math/levene.c +++ b/src/math/levene.c @@ -22,6 +22,7 @@ #include "libpspp/misc.h" #include "libpspp/hmap.h" #include "data/value.h" +#include "data/val-type.h" #include #include @@ -223,12 +224,16 @@ levene_calculate (struct levene *nl) double numerator = 0.0; double nn = 0.0; - if ( nl->pass == 3 ) - { - nl->pass = 4; - } - assert (nl->pass == 4); + /* The Levene calculation requires three passes. + Normally this should have been done prior to calling this function. + However, in abnormal circumstances (eg. the dataset is empty) there + will have been no passes. + */ + assert (nl->pass == 0 || nl->pass == 3); + + if ( nl->pass == 0 ) + return SYSMIS; nl->denominator *= hmap_count (&nl->hmap) - 1;