26 template <
typename A,
typename F >
27 void runRange(A from, A to, A step, F&& go) {
28 #define GO(x) go(Tuple<RamDomain, 1>{ramBitCast(x)})
30 for (
auto x = from; x < to; x += step) {
33 }
else if (step < 0) {
34 for (
auto x = from; to < x; x += step) {
37 }
else if (from != to) {
44 template <
typename A,
typename F >
45 void runRange(A from, A to, F&& go) {
46 return runRange(from, to, A(from <= to ? 1 : -1), std::forward<F>(go));
52 if constexpr (std::is_same_v<RamFloat, A>) {
54 }
else if constexpr (std::is_same_v<RamSigned, A>) {
56 }
else if constexpr (std::is_same_v<RamUnsigned, A>) {
60 tfm::format(std::cerr,
"error: wrong string provided by `to_number(\"%s\")` functor.\n", src);
68 return (x || y) && (!x != !y);