예제 #1
0
void build_kernel(Binary<expr::op::Sub, L, R> e, Kernel<T>& k)
{
  Kernel_builder<L, T>::apply(e.arg1(), k);
  Kernel<T> k2(k);
  Kernel_builder<R, T>::apply(e.arg2(), k2);
  k -= k2;
}
예제 #2
0
void build_kernel(Binary<expr::op::Mult, Binary<O, L, R>, S> e,
                  Kernel<T>& k)
{
  Kernel<T> k1(k);
  Kernel_builder<Binary<O, L, R>, T>::apply(e.arg1(), k1);
  k1 *= T(e.arg2());
  k += k1;
}
예제 #3
0
void build_kernel(Binary<expr::op::Div, Call<B, I, J>, S> e,
                  Kernel<T>& k)
{
  Kernel<T> k1(k);
  Kernel_builder<Call<B, I, J>, T>::apply(e.arg1(), k1);
  k1 /= T(e.arg2());
  k += k1;
}
예제 #4
0
void build_kernel(Binary<expr::op::Add, L, R> e, Kernel<T>& k)
{
  Kernel_builder<L, T>::apply(e.arg1(), k);
  Kernel_builder<R, T>::apply(e.arg2(), k);
}