/*! \brief Invert a complex matrix with double precision elements, applying iterative refinement of the solution
*
* Use CUBLAS to perform matrix inversion for a complex
* matrix with double precision elements.
*
* \param mat: Matrix of complex. The matrix to be inverted.
* \param n: `np_int` The number of rows and columns of the [n x n] matrix.
* \param maxrefiters: `int` Maximum number of refinement iterations to apply.
* \param accuracygoal: `double &` Accuracy to achieve in iterative refinement, defined as the module of the maximum difference between the identity matrix and the matrix product of the (approximate) inverse times the original matrix. On return, it contains the actually achieved accuracy.
* \param refinemode: `int` Flag to choose the refinement mode.
* \param device_id: `int` ID of the device for matrix inversion offloading.