28 lines
906 B
C++
28 lines
906 B
C++
#include <cstdio>
|
|
#include <cmath>
|
|
#include <pfor/pfor.h>
|
|
|
|
std::size_t pfor::ParallelForParameters::nThreads = 16;
|
|
|
|
constexpr long n = 16;
|
|
|
|
int main() {
|
|
std::array<int, n> a_; pfor::Operand<decltype(a_), class IDa> a{a_};
|
|
std::array<int, n> b_; pfor::Operand<decltype(b_), class IDb> b{b_};
|
|
std::array<int, n> c_; pfor::Operand<decltype(c_), class IDc> c{c_};
|
|
std::array<int, n> d_; pfor::Operand<decltype(d_), class IDd> d{d_};
|
|
std::array<int, n> e_; pfor::Operand<decltype(e_), class IDe> e{e_};
|
|
std::array<int, n> f_; pfor::Operand<decltype(f_), class IDf> f{f_};
|
|
|
|
auto pow = pfor::makeOperator<float(&)(float, float)>(std::pow);
|
|
|
|
pfor::Index i;
|
|
pfor::parallelFor<pfor::ForLoopThread>(pfor::Range{0, static_cast<decltype(+n)>(std::sqrt(n))},
|
|
a[i] = a[i] * b[i],
|
|
c[i] = c[i+pfor::ctv<1>] - d[i],
|
|
b[i] = b[i] + i,
|
|
d[i] = pow(c[i], e[i]),
|
|
f[injective(i*i)] = 2 * f[injective(i*i)]
|
|
);
|
|
}
|