56 template<
typename dtype>
65 const auto inShape = inArray.
shape();
73 for (
uint32 col = 0; col < inShape.cols; ++col)
75 returnArray(0, col) =
static_cast<double>(inArray(1, col)) -
static_cast<double>(inArray(0, col));
76 returnArray(-1, col) =
static_cast<double>(inArray(-1, col)) -
static_cast<double>(inArray(-2, col));
80 for (
uint32 col = 0; col < inShape.cols; ++col)
82 for (
uint32 row = 1; row < inShape.rows - 1; ++row)
84 returnArray(row, col) = (
static_cast<double>(inArray(row + 1, col)) -
static_cast<double>(inArray(row - 1, col))) / 2.0;
92 const auto inShape = inArray.
shape();
100 for (
uint32 row = 0; row < inShape.rows; ++row)
102 returnArray(row, 0) =
static_cast<double>(inArray(row, 1)) -
static_cast<double>(inArray(row, 0));
103 returnArray(row, -1) =
static_cast<double>(inArray(row, -1)) -
static_cast<double>(inArray(row, -2));
107 for (
uint32 row = 0; row < inShape.rows; ++row)
109 for (
uint32 col = 1; col < inShape.cols - 1; ++col)
111 returnArray(row, col) = (
static_cast<double>(inArray(row, col + 1)) -
static_cast<double>(inArray(row, col - 1))) / 2.0;
120 if (inArray.
size() < 2)
126 returnArray[0] =
static_cast<double>(inArray[1]) -
static_cast<double>(inArray[0]);
127 returnArray[-1] =
static_cast<double>(inArray[-1]) -
static_cast<double>(inArray[-2]);
130 [](dtype value1, dtype value2) ->
double
132 return (static_cast<double>(value1) - static_cast<double>(value2)) / 2.0;
152 template<
typename dtype>
161 const auto inShape = inArray.shape();
162 if (inShape.rows < 2)
169 for (
uint32 col = 0; col < inShape.cols; ++col)
171 returnArray(0, col) = complex_cast<double>(inArray(1, col)) - complex_cast<double>(inArray(0, col));
172 returnArray(-1, col) = complex_cast<double>(inArray(-1, col)) - complex_cast<double>(inArray(-2, col));
176 for (
uint32 col = 0; col < inShape.cols; ++col)
178 for (
uint32 row = 1; row < inShape.rows - 1; ++row)
180 returnArray(row, col) = (complex_cast<double>(inArray(row + 1, col)) -
181 complex_cast<double>(inArray(row - 1, col))) / 2.0;
189 const auto inShape = inArray.shape();
190 if (inShape.cols < 2)
197 for (
uint32 row = 0; row < inShape.rows; ++row)
199 returnArray(row, 0) = complex_cast<double>(inArray(row, 1)) - complex_cast<double>(inArray(row, 0));
200 returnArray(row, -1) = complex_cast<double>(inArray(row, -1)) - complex_cast<double>(inArray(row, -2));
204 for (
uint32 row = 0; row < inShape.rows; ++row)
206 for (
uint32 col = 1; col < inShape.cols - 1; ++col)
208 returnArray(row, col) = (complex_cast<double>(inArray(row, col + 1)) -
209 complex_cast<double>(inArray(row, col - 1))) / 2.0;
218 if (inArray.size() < 2)
224 returnArray[0] = complex_cast<double>(inArray[1]) - complex_cast<double>(inArray[0]);
225 returnArray[-1] = complex_cast<double>(inArray[-1]) - complex_cast<double>(inArray[-2]);
228 [](
const std::complex<dtype>& value1,
const std::complex<dtype>& value2) -> std::complex<double>
230 return (complex_cast<double>(value1) - complex_cast<double>(value2)) / 2.0;