111
|
1 /* We used to ICE because EXPAND_SUM was being used for all recursive calls
|
|
2 to expand_expr. */
|
|
3 struct TSparseEntry
|
|
4 {
|
|
5 int feat_index;
|
|
6 double entry;
|
|
7 };
|
|
8
|
|
9 struct TSparse
|
|
10 {
|
|
11 int vec_index;
|
|
12 int num_feat_entries;
|
|
13 struct TSparseEntry *features;
|
|
14 };
|
|
15
|
|
16 void
|
|
17 get_full_feature_matrix (struct TSparse* sparse_feature_matrix, int num_vec)
|
|
18 {
|
|
19 double *fm;
|
|
20 int v, f;
|
|
21
|
|
22 for (v=0; v < num_vec; v++)
|
|
23 {
|
|
24 for (f=0; f < sparse_feature_matrix[v].num_feat_entries; f++)
|
|
25 {
|
|
26 long long offs = sparse_feature_matrix[v].vec_index
|
|
27 + sparse_feature_matrix[v].features[f].feat_index;
|
|
28 fm[offs] = sparse_feature_matrix[v].features[f].entry;
|
|
29 }
|
|
30 }
|
|
31 }
|
|
32
|