static void grad_op_normal(const linop_data_t* _data, complex float* dst, const complex float* src) { const struct grad_s* data = CAST_DOWN(grad_s, _data); complex float* tmp = md_alloc_sameplace(data->N, data->dims, CFL_SIZE, dst); // this could be implemented more efficiently grad_op(data->N, data->dims, data->flags, tmp, src); grad_adjoint(data->N, data->dims, data->flags, dst, tmp); md_free(tmp); }
static void grad_op_adjoint(const linop_data_t* _data, complex float* dst, const complex float* src) { const auto data = CAST_DOWN(grad_s, _data); grad_adjoint(data->N, data->dims, data->flags, dst, src); }