23 const std::string &data_column_key,
24 const std::string &reference_column_key,
26 const unsigned int dim)
32 if (rate_mode ==
none)
39 std::vector<internal::TableEntry> &entries =
columns[data_column_key].entries;
40 std::vector<internal::TableEntry> &ref_entries =
41 columns[reference_column_key].entries;
42 std::string rate_key = data_column_key +
"...";
44 const unsigned int n = entries.size();
45 const unsigned int n_ref = ref_entries.size();
48 std::vector<double> values(n);
49 std::vector<double> ref_values(n_ref);
51 for (
unsigned int i = 0; i < n; ++i)
53 values[i] = entries[i].get_numeric_value();
54 ref_values[i] = ref_entries[i].get_numeric_value();
57 unsigned int no_rate_entries = 0;
63 rate_key +=
"red.rate";
64 no_rate_entries =
columns[rate_key].entries.size();
66 for (
unsigned int i = no_rate_entries; i < n; ++i)
76 values[i - 1] / values[i] * ref_values[i] /
82 rate_key +=
"red.rate.log2";
83 no_rate_entries =
columns[rate_key].entries.size();
85 for (
unsigned int i = no_rate_entries; i < n; ++i)
95 dim *
std::log(std::fabs(values[i - 1] / values[i])) /
97 std::fabs(ref_values[i] / ref_values[i - 1])));
109 const std::string &superkey = data_column_key;
117 if (no_rate_entries == 0)
135 std::vector<internal::TableEntry> &entries =
columns[data_column_key].entries;
136 std::string rate_key = data_column_key +
"...";
138 const unsigned int n = entries.size();
140 std::vector<double> values(n);
141 for (
unsigned int i = 0; i < n; ++i)
142 values[i] = entries[i].get_numeric_value();
144 unsigned int no_rate_entries = 0;
152 rate_key +=
"red.rate";
153 no_rate_entries =
columns[rate_key].entries.size();
155 for (
unsigned int i = no_rate_entries; i < n; ++i)
164 add_value(rate_key, values[i - 1] / values[i]);
170 rate_key +=
"red.rate.log2";
171 no_rate_entries =
columns[rate_key].entries.size();
173 for (
unsigned int i = no_rate_entries; i < n; ++i)
183 std::log(std::fabs(values[i - 1] / values[i])) /
198 const std::string &superkey = data_column_key;
208 if (no_rate_entries == 0)