/** * @brief Globally set the current precision of mp variables * * @param s The <code>mps_context</code> of the computation. * @param prec The precision that is desired for the next MP computations. */ void mps_mp_set_prec (mps_context * s, long int prec) { s->mpwp = (prec / 64 + 1) * 64; rdpe_set_2dl (s->mp_epsilon, 1.0, -s->mpwp); if (s->debug_level & MPS_DEBUG_MEMORY) MPS_DEBUG_RDPE (s, s->mp_epsilon, "Increased precision to %ld bits. Machine epsilon set to eps", s->mpwp); }
/** * @brief Dump all the current approximation to the logstr selected * in the current mps_context. * * @param s A pointer to the current mps_context. * * This function is tipically used when encountering some errors. */ void mps_dump (mps_context * s) { int i; FILE * dmpstr = s->logstr; MPS_DEBUG (s, "Dumping the approximations:"); /* output current status */ /* fprintf (dmpstr, */ /* "Phase=%d, In=%d, Out=%d, Uncertain=%d, Zero=%d, Clusters=%ld\n", */ /* s->lastphase, s->count[0], s->count[1], s->count[2], s->zero_roots, */ /* s->clusterization->n); */ MPS_DEBUG (s, "Phase = %s, In = %d, Out = %d, Uncertain = %d, Zero = %d, Cluster = %ld", MPS_PHASE_TO_STRING (s->lastphase), s->count[0], s->count[1], s->count[2], s->zero_roots, s->clusterization->n); /* output current approximations */ /* fprintf (dmpstr, "\nCurrent approximations:\n"); */ MPS_DEBUG (s, "Current approximations:"); for (i = 0; i < s->n; i++) { switch (s->lastphase) { case no_phase: case float_phase: MPS_DEBUG_CPLX (s, s->root[i]->fvalue, "Approximation %4d", i); break; case dpe_phase: MPS_DEBUG_CDPE (s, s->root[i]->dvalue, "Approximation %4d", i); break; case mp_phase: MPS_DEBUG_MPC (s, s->mpwp, s->root[i]->mvalue, "Approximation %4d", i); break; } } /* output radii */ MPS_DEBUG (s, "Current radii:"); for (i = 0; i < s->n; i++) { switch (s->lastphase) { case no_phase: case float_phase: MPS_DEBUG (s, "Radius of root %4d = %e", i, s->root[i]->frad); break; case dpe_phase: case mp_phase: MPS_DEBUG_RDPE (s, s->root[i]->drad, "Radius of root %4d", i); break; } } MPS_DEBUG (s, " "); mps_dump_status (s, dmpstr); }