Mark Chimley on Wed, 19 Sep 2001 19:27:08 +0100 (BST)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: truncation


On Sat, 15 Sep 2001, Karim Belabas wrote:

> On Wed, 1 Aug 2001, Mark Chimley wrote:
> > I have been using simplify (ground (x)) to convert x (a polynomial with
> > complex coefficients) into one with integer coefficients. The polynomial
> > is an approximation to a class equation of an imaginary quadratic field,
> > so is known to reside in Z[X]. The problem is, when the coefficients
> > become suitably large, I get the error, "precision loss in truncation".
> > I have tried using precision (x, n) to increase the number of decimal
> > places in x prior to rounding, and although this seemed to overcome the
> > error, simplify (x) did not give a polynomial with integer coefficients.
> > 
> > I think an example might be appropriate to explain the problem better,
> > so I shall log some output. In the meantime, I shall post this message
> > to see if there is anything obvious that I am doing wrong, and to ask
> > exactly what "precision loss in truncation" means.
> 
> You are trying to take the integral part (as a subroutine of round()) of a
> real number whose number of significant digits is too low for the operation
> to make sense, e.g round(1e30) at \p28 : 1e30 represents any real number x
> such that |x - 10^30| < 2^(99 - 3*32) = 8 [assuming 32bit machine;
> internally, we have significant bits, not digits: 1e30 has exponent 99 and
> \p28 translates to 3 significant words].  There is no unique integer with
> that property, hence the error message.
> 
> What you need to do is to increase the precision of your data _before_
> starting the computation, e.g. increase 'realprecision' before computing your
> transcendental functions. Using 'precision' to increase the internal
> precision of an object is a hack that inserts essentially random significant
> digits.

Thanks for the advice, but although I have looked in the manual for a
description of how to increase the "realprecision" in a program using
the PARI library, the only reference seems to be to the global
variable, prec. This, however, doesn't seem to exist in my system.

Mark.
-------------------------- 
Mark Chimley,
Department Of Mathematics,
University Of Bristol
--------------------------