void setJustDiagonal(T const& onDiag) { size_type const N = std::min(rows_, cols_); if (N) { size_type const stride = cols_ + 1; T* a = arrayBegin(container_); a[0] = onDiag; // e.g. square N*N: (stride=N+1)*(N-1) = N^2-1 = size - 1 for (size_type i = stride, toofar = stride * N; i < toofar; i += stride) a[i] = onDiag; } }
FloatT optimize(DataObjectiveFunction<FloatT>& objFct, std::vector<FloatT>& params) { return optimize(objFct, arrayBegin(params), params.size()); }
inline std::string substring(std::string const& str, TokenSpan span) { Pchar data = arrayBegin(str); return std::string(data + span.first, data + span.second); }
inline Slice toSlice(std::string const& str, TokenSpan span) { Pchar data = arrayBegin(str); return Slice(data + span.first, data + span.second); }