* \param[in] a: `magmaDoubleComplex *` Pointer to the first element of the non-inverted matrix on host.
* \param[in] m: `const magma_int_t` Number of rows / columns in a.
* \param[in,out] d_a: `magmaDoubleComplex *` Pointer to the matrix on the GPU.
* \param[in] queue: `magma_queue_t` GPU communication queue.
* \return err: `magma_int_t` An error code (MAGMA_SUCCESS, if everything was fine).
*/
magma_int_tmagma_newton(
@@ -77,39 +150,4 @@ magma_int_t magma_newton(
magmaDoubleComplex*d_a,magma_queue_tqueue
);
/* \brief Invert a complex matrix with double precision elements, applying iterative refinement of the solution
*
* call magma_zinvert1() to perform the first matrix inversion, then magma_refine() to do the refinement (only if maxrefiters is >0)
*
* \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 jer: `int &` Reference to an integer return flag.
* \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 control the refinement mode.
* \param device_id: `int` ID of the device for matrix inversion offloading.
* \param output_path: `const string &` Path where the output needs to be placed.
* \param jxi488: `int` Index of the current wavelength calculation.
*/
//void magma_zinvert_and_refine(dcomplex **mat, np_int n, int &jer, int &maxrefiters, double &accuracygoal, int refinemode, int device_id, const string& output_path, int jxi488);
/* \brief Apply iterative refinement of the solution of a matrix inversion.
*
* Iteratively compute and apply a correction to the inverse `inva` of the complex
* matrix `aorig`, for a maximum number of `maxiters` times, or until achieving a
* maximum residual better than `accuracygoal`.
*
* \param aorig: pointer to the first element of the matrix of complex to be inverted.
* \param inva: pointer to the first element of inverse.
* \param n: `np_int` The number of rows and columns of the [n x n] matrices.
* \param jer: `int &` Reference to an integer return flag.
* \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 for refinement mode selection.
* \param device_id: `int` ID of the device for matrix inversion offloading.
* \param output_path: `const string &` Path where the output needs to be placed.
* \param jxi488: `int` Index of the current wavelength calculation.
*/
// void magma_refine(dcomplex *aorig, dcomplex *inva, np_int n, int &jer, int &maxrefiters, double &accuracygoal, int refinemode, int device_id, const std::string& output_path, int jxi488);