Files
Flux-openbuild/include/utils/generators/linspace.h
2025-10-06 20:14:13 +00:00

37 lines
633 B
C++

#pragma once
#include "utils/vector.h"
namespace utils{
template <typename T>
void inplace_linspace(utils::Vector<T>& a, T start, T stop, bool endpoint=true){
uint64_t N = a.size();
T step;
if (endpoint){
step = (stop - start) / static_cast<T>(N - 1);
}else{
step = (stop - start) / static_cast<T>(N);
}
for (uint64_t i = 0; i < N; ++i){
a[i] = start + (step*static_cast<T>(i));
}
}
template <typename T>
utils::Vector<T> linspace(T start, T stop, uint64_t N, bool endpoint=true){
utils::Vector<T> a(N);
inplace_linspace(a, start, stop, endpoint);
return a;
}
} // end namespace utils