64 const std::vector<double> &y_values_,
65 const unsigned int n_intervals,
70 "Your input data needs to contain at least one input vector."));
72 ExcMessage(
"The number of intervals needs to be at least one."));
73 for (
unsigned int i = 0; i < values.size(); ++i)
75 Assert(values.size() == y_values_.size(),
83 number min_value = 0, max_value = 0;
84 switch (interval_spacing)
88 min_value = *std::min_element(values[0].
begin(), values[0].
end());
89 max_value = *std::max_element(values[0].
begin(), values[0].
end());
91 for (
unsigned int i = 1; i < values.size(); ++i)
95 *std::min_element(values[i].
begin(), values[i].
end()));
98 *std::max_element(values[i].
begin(), values[i].
end()));
106 const auto logarithmic_less_function =
107 &Histogram::template logarithmic_less<number>;
109 min_value = *std::min_element(values[0].
begin(),
111 logarithmic_less_function);
113 max_value = *std::max_element(values[0].
begin(),
115 logarithmic_less_function);
117 for (
unsigned int i = 1; i < values.size(); ++i)
120 *std::min_element(values[i].
begin(),
122 logarithmic_less_function),
123 logarithmic_less_function);
126 *std::max_element(values[i].
begin(),
128 logarithmic_less_function),
129 logarithmic_less_function);
144 if (max_value <= min_value)
145 max_value = min_value + 1;
158 switch (interval_spacing)
162 const float delta = (max_value - min_value) / n_intervals;
164 for (
unsigned int n = 0; n < n_intervals; ++n)
165 intervals[0].emplace_back(min_value + n * delta,
166 min_value + (n + 1) * delta);
176 for (
unsigned int n = 0; n < n_intervals; ++n)
189 for (
unsigned int i = 1; i < values.size(); ++i)
194 for (
unsigned int i = 0; i < values.size(); ++i)
205 for (
unsigned int n = 0; n < n_intervals; ++n)
236 ExcMessage(
"There is nothing to write into the output file. "
237 "Did you forget to call the evaluate() function?"));
243 for (
const auto &interval :
intervals[0])
244 out << interval.left_point <<
' ' << interval.content << std::endl
245 << interval.right_point <<
' ' << interval.content << std::endl;
256 for (
int i =
intervals.size() - 1; i >= 0; --i)
258 for (
unsigned int n = 0; n <
intervals[i].size(); ++n)
260 << (i <
static_cast<int>(
intervals.size()) - 1 ?
263 <<
' ' <<
intervals[i][n].content << std::endl
265 << (i < static_cast<int>(
intervals.size()) - 1 ?
268 <<
' ' <<
intervals[i][n].content << std::endl;
271 for (
unsigned int n = 0; n <
intervals[i].size(); ++n)
::VectorizedArray< Number, width > min(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)