\subsection{Description}

After solving step, it is possible to call for refinement is the
precision of the solution is not sufficient.

\subsection{Parameters}

To call for refinement, \iparm{IPARM\_START\_TASK} must be
lower than \texttt{API\_TASK\_REFINEMENT} and
\iparm{IPARM\_END\_TASK} must be greater than
\texttt{API\_TASK\_REFINEMENT}.

A list of parameters can be used to setup refinement step :
\begin{description}
\item[\iparm{IPARM\_ITERMAX}~:] Maximum number of iteration in
  refinement step,
\item[\texttt{IPARM\_REFINEMENT}~:] Type of refinement~:
  \begin{description}
  \item[\texttt{API\_RAF\_GMRES}~:] GMRES algorithm,
  \item[\texttt{API\_RAF\_PIVOT}~:] a simple iterative algorithm, can
    only be used with $LL^t$ or $LDL^t$ factorization (the
    corresponding \texttt{iparm} must be correctly set),
  \item[\texttt{API\_RAF\_GRAD}~:] conjugate gradient algorithm, can
    only be used with $LU$ factorization (the
    corresponding \texttt{iparm} must be correctly set).
  \end{description}
\item[\iparm{IPARM\_GMRES\_IM}~:] syze of the Krylov space used in GMRES,
\item[\dparm{DPARM\_EPSILON\_REFINEMENT}~:] Desired solution
  precision.
\end{description}

\subsection{Output}

After refinement, \iparm{IPARM\_NBITER} will be set to the
number of iteration performed during refinement.

The value \dparm{DPARM\_RELATIVE\_ERROR} will be the error
between $AX$ and $B$. It should be smaller than
\dparm{DPARM\_EPSILON\_REFINEMENT}.

\dparm{DPARM\_RAFF\_TIME} contains the time spent
computing solve step, in second.


