/******************************************************* * Copyright (c) 2014, ArrayFire * All rights reserved. * * This file is distributed under 3-clause BSD license. * The complete license agreement can be obtained at: * http://arrayfire.com/licenses/BSD-3-Clause ********************************************************/ #include #include #include #include #include namespace cpu { template Array diff1(const Array &in, const int dim) { // Decrement dimension of select dimension af::dim4 dims = in.dims(); dims[dim]--; Array outArray = createEmptyArray(dims); getQueue().enqueue(kernel::diff1, outArray, in, dim); return outArray; } template Array diff2(const Array &in, const int dim) { // Decrement dimension of select dimension af::dim4 dims = in.dims(); dims[dim] -= 2; Array outArray = createEmptyArray(dims); getQueue().enqueue(kernel::diff2, outArray, in, dim); return outArray; } #define INSTANTIATE(T) \ template Array diff1(const Array &in, const int dim); \ template Array diff2(const Array &in, const int dim); INSTANTIATE(float) INSTANTIATE(double) INSTANTIATE(cfloat) INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) INSTANTIATE(intl) INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) INSTANTIATE(ushort) INSTANTIATE(short) } // namespace cpu