55 template<
typename dtype>
64 const auto inShape = inArray.
shape();
72 for (
uint32 col = 0; col < inShape.cols; ++col)
74 returnArray(0, col) =
static_cast<double>(inArray(1, col)) -
static_cast<double>(inArray(0, col));
75 returnArray(-1, col) =
static_cast<double>(inArray(-1, col)) -
static_cast<double>(inArray(-2, col));
79 for (
uint32 col = 0; col < inShape.cols; ++col)
81 for (
uint32 row = 1; row < inShape.rows - 1; ++row)
83 returnArray(row, col) = (
static_cast<double>(inArray(row + 1, col)) -
static_cast<double>(inArray(row - 1, col))) / 2.0;
91 const auto inShape = inArray.
shape();
99 for (
uint32 row = 0; row < inShape.rows; ++row)
101 returnArray(row, 0) =
static_cast<double>(inArray(row, 1)) -
static_cast<double>(inArray(row, 0));
102 returnArray(row, -1) =
static_cast<double>(inArray(row, -1)) -
static_cast<double>(inArray(row, -2));
106 for (
uint32 row = 0; row < inShape.rows; ++row)
108 for (
uint32 col = 1; col < inShape.cols - 1; ++col)
110 returnArray(row, col) = (
static_cast<double>(inArray(row, col + 1)) -
static_cast<double>(inArray(row, col - 1))) / 2.0;
119 if (inArray.
size() < 2)
125 returnArray[0] =
static_cast<double>(inArray[1]) -
static_cast<double>(inArray[0]);
126 returnArray[-1] =
static_cast<double>(inArray[-1]) -
static_cast<double>(inArray[-2]);
129 [](dtype value1, dtype value2) ->
double
131 return (static_cast<double>(value1) - static_cast<double>(value2)) / 2.0;
151 template<
typename dtype>
160 const auto inShape = inArray.shape();
161 if (inShape.rows < 2)
168 for (
uint32 col = 0; col < inShape.cols; ++col)
170 returnArray(0, col) = complex_cast<double>(inArray(1, col)) - complex_cast<double>(inArray(0, col));
171 returnArray(-1, col) = complex_cast<double>(inArray(-1, col)) - complex_cast<double>(inArray(-2, col));
175 for (
uint32 col = 0; col < inShape.cols; ++col)
177 for (
uint32 row = 1; row < inShape.rows - 1; ++row)
179 returnArray(row, col) = (complex_cast<double>(inArray(row + 1, col)) -
180 complex_cast<double>(inArray(row - 1, col))) / 2.0;
188 const auto inShape = inArray.shape();
189 if (inShape.cols < 2)
196 for (
uint32 row = 0; row < inShape.rows; ++row)
198 returnArray(row, 0) = complex_cast<double>(inArray(row, 1)) - complex_cast<double>(inArray(row, 0));
199 returnArray(row, -1) = complex_cast<double>(inArray(row, -1)) - complex_cast<double>(inArray(row, -2));
203 for (
uint32 row = 0; row < inShape.rows; ++row)
205 for (
uint32 col = 1; col < inShape.cols - 1; ++col)
207 returnArray(row, col) = (complex_cast<double>(inArray(row, col + 1)) -
208 complex_cast<double>(inArray(row, col - 1))) / 2.0;
217 if (inArray.size() < 2)
223 returnArray[0] = complex_cast<double>(inArray[1]) - complex_cast<double>(inArray[0]);
224 returnArray[-1] = complex_cast<double>(inArray[-1]) - complex_cast<double>(inArray[-2]);
227 [](
const std::complex<dtype>& value1,
const std::complex<dtype>& value2) -> std::complex<double>
229 return (complex_cast<double>(value1) - complex_cast<double>(value2)) / 2.0;