double density (const VectorXf & x) { const size_t I = x.size(); double sum_x1 = 0; double sum_x2 = 0; const float * restrict x_ = x.data(); for (size_t i = 0; i < I; ++i) { double xi = x_[i]; sum_x1 += max(-xi,xi); sum_x2 += xi * xi; } return sqr(sum_x1) / sum_x2 / I; }
Vector<float> as_vector (const VectorXf & x) { return Vector<float>(x.size(), const_cast<float *>(x.data())); }