Avoid numerical problems with missing weights on non-linear cases.
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 26 Sep 2021 14:53:38 +0000 (16:53 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 26 Sep 2021 14:53:38 +0000 (16:53 +0200)
* src/math/order-stats.c (order_stats_accumulate_idx): Ignore cases
  with missing weight values.

src/math/order-stats.c

index 1a4aef891ae173d84147ddc27d014b7e22618222..e8e078f4b6f066913d1081aadab2c7692886d19a 100644 (file)
@@ -128,6 +128,9 @@ order_stats_accumulate_idx (struct order_stats **os, size_t nos,
       const double weight = wt_idx == -1 ? 1.0 : case_num_idx (cx, wt_idx);
       const double this_value = case_num_idx (cx, val_idx);
 
+      if (weight == SYSMIS)
+        continue;
+
       /* The casereader MUST be sorted */
       assert (this_value >= prev_value);
 
@@ -169,4 +172,3 @@ order_stats_accumulate (struct order_stats **os, size_t nos,
                               wv ? var_get_case_index (wv) : -1,
                               var_get_case_index (var));
 }
-