MPSolve 3.2.1
Loading...
Searching...
No Matches
improve.h File Reference

Refining of isolated approximations by means of Newton method. More...

#include <mps/mps.h>

Go to the source code of this file.

Functions

MPS_BEGIN_DECLS void mps_improve (mps_context *s)
 Improve all the approximations up to prec_out digits. More...
 

Detailed Description

Refining of isolated approximations by means of Newton method.

Function Documentation

◆ mps_improve()

MPS_BEGIN_DECLS void mps_improve ( mps_context ctx)

Improve all the approximations up to prec_out digits.

For each approximation compute the value of sigma such that, given some approximations $x_j$ of the roots, $r_j$ the values of the inclusion radii and $d_i$ the number of correct digits:

\[
  e_j < e_0 * \sigma^{2^j} \qquad \sigma=\frac{k}{k-1}=\frac{1}{1-t} \qquad k=\frac{1}{t}
\]

and

\[
  t = \min_j |z_i-z_j|-r_j
\]

Then compute the number of digits needed for the j-th iteration i.e., if $cond$ is the conditioning of the root:

\[
  d_j = \log(\frac{e_j}{|x|}) + cond
\]

where

\[
  \log(\frac{e_j}{|x|}) = (f+g){2j} \qquad
  cond = \log(\frac{rad}{\epsilon})
\]

and

\[
  cond \approx \lVert p \rVert (1+ \frac{|x_i|}{a_n \prod_{j \neq i} |x_i-x_j|}
\]

and

\[
  cond \approx \frac{r_i}{\epsilon |x_i|}
\]

for user-defined polynomials.

s->mpwp denotes the number of bits of the current working precision.

Parameters
ctxThe mps_context associated with the computation.