24 void label(
const char*);
30 inline std::vector<double>&
vec() {
34 inline double const*
data()
const {
42 inline size_t size()
const {
47 if (
n >
vec_.size()) {
53 inline void resize(
size_t n,
double fill_value) {
54 if (
n >
vec_.size()) {
57 vec_.resize(
n, fill_value);
64 inline auto begin() const -> std::vector<
double>::const_iterator {
68 inline auto end() const -> std::vector<
double>::const_iterator {
72 inline auto begin() -> std::vector<double>::iterator {
76 inline auto end() -> std::vector<double>::iterator {
84 #if NRN_ENABLE_THREADS
107 template <
class InputIterator>
108 double var(InputIterator begin, InputIterator end) {
109 const size_t size = end - begin;
110 const double sum = std::accumulate(begin, end, 0.0);
111 const double m = sum / size;
114 std::for_each(begin, end, [&](
const double d) { accum += (d - m) * (d - m); });
116 return accum / (size - 1);
119 template <
class InputIterator>
120 double stdDev(InputIterator begin, InputIterator end) {
IvocVect(Object *obj=NULL)
auto begin() const -> std::vector< double >::const_iterator
double & operator[](size_t index)
double const * data() const
std::vector< double > vec_
auto end() -> std::vector< double >::iterator
auto end() const -> std::vector< double >::const_iterator
void resize(size_t n, double fill_value)
std::vector< double > & vec()
auto begin() -> std::vector< double >::iterator
void notify_freed_val_array(double *p, size_t size)
void vector_set_label(IvocVect *, char *)
std::vector< double > ParentVect
double var(InputIterator begin, InputIterator end)
double stdDev(InputIterator begin, InputIterator end)
Object ** vector_temp_objvar(IvocVect *)
Object ** new_vect(IvocVect *v, ssize_t delta, ssize_t start, ssize_t step)
void vector_delete(IvocVect *)
char * vector_get_label(IvocVect *)
fixed_vector< double > IvocVect
int const size_t const size_t n
#define MUTCONSTRUCT(mkmut)