/* We used to ICE because EXPAND_SUM was being used for all recursive calls to expand_expr. */ struct TSparseEntry { int feat_index; double entry; }; struct TSparse { int vec_index; int num_feat_entries; struct TSparseEntry *features; }; void get_full_feature_matrix (struct TSparse* sparse_feature_matrix, int num_vec) { double *fm; int v, f; for (v=0; v < num_vec; v++) { for (f=0; f < sparse_feature_matrix[v].num_feat_entries; f++) { long long offs = sparse_feature_matrix[v].vec_index + sparse_feature_matrix[v].features[f].feat_index; fm[offs] = sparse_feature_matrix[v].features[f].entry; } } }