#pragma once #include "./utils/vector.h" #include "./utils/matrix.h" namespace numerics{ template void inplace_vecclip_high(utils::Vector& a, T high){ uint64_t N = a.size(); for (uint64_t i = 0; i < N; ++i){ if (a[i] > high){ a[i] = high; } } } template void inplace_vecclip_low(utils::Vector& a, T low){ uint64_t N = a.size(); for (uint64_t i = 0; i < N; ++i){ if (a[i] < low){ a[i] = low; } } } template void inplace_vecclip(utils::Vector& a, T low, T high){ uint64_t N = a.size(); for (uint64_t i = 0; i < N; ++i){ if (a[i] > high){ a[i] = high; }else if (a[i] < low){ a[i] = low; } } } template utils::Vector vecclip_high(const utils::Vector& a, Td high){ utils::Vector b = a; inplace_vecclip_high(b, high); return b; } template utils::Vector vecclip_low(const utils::Vector& a, Td low){ utils::Vector b = a; inplace_vecclip_low(b, low); return b; } template utils::Vector vecclip(const utils::Vector& a, Td low, Td high){ utils::Vector b = a; inplace_vecclip(b, low, high); return b; } } // namespace numerics