| 23 | using detail::cfloat; |
| 24 | |
| 25 | af_err af_fir(af_array* y, const af_array b, const af_array x) { |
| 26 | try { |
| 27 | af_array out; |
| 28 | AF_CHECK(af_convolve1(&out, x, b, AF_CONV_EXPAND, AF_CONV_AUTO)); |
| 29 | |
| 30 | dim4 xdims = getInfo(x).dims(); |
| 31 | af_seq seqs[] = {af_span, af_span, af_span, af_span}; |
| 32 | seqs[0].begin = 0.; |
| 33 | seqs[0].end = static_cast<double>(xdims[0]) - 1.; |
| 34 | seqs[0].step = 1.; |
| 35 | af_array res; |
| 36 | AF_CHECK(af_index(&res, out, 4, seqs)); |
| 37 | AF_CHECK(af_release_array(out)); |
| 38 | std::swap(*y, res); |
| 39 | } |
| 40 | CATCHALL; |
| 41 | return AF_SUCCESS; |
| 42 | } |
| 43 | |
| 44 | template<typename T> |
| 45 | inline static af_array iir(const af_array b, const af_array a, |
no test coverage detected