Karim Belabas on Fri, 05 Oct 2007 14:56:58 +0200


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

Re: two (stupid) questions


* Alessandro Languasco [2007-10-05 11:39]:
> Dear all,
> 
> I'm writing a pari/gp script and I have two problems that,
> for sure, are described and solved in the User's Guide.... but I wasn't
> able to find a solution there.... so I'm asking for your help.
> Thanks in advance !
> 
> 1) I would like to save the results of the gp-script on a file but  
> using just
> a part of the avalible decimal digits; i.e. I'm computing the results
> with 100 decimal digits but I would like that just the first
> 25 are saved on the file in TeX format. I think that
> some suffix has to be added to the writetex(namefile, result)
> istruction, but which one ?

Two possibilities:

1) Round the input to smaller accuracy, then print using the default
precision

  writetex(namefile, precision(result,28))

No way to obtain exactly 25 digits in this way [ either 28 or 19 ]

2) Use an ugly hack:

  oldprec = default(realprecision);
  default(realprecision,25);
  writetex(namefile, result)
  default(realprecision, oldprec);

N.B in most cases, you can keep the realprecision very low from some
point on and don't need to constantly change / restore as above: gp only
uses the realprecision for printing and to convert exact inputs to
inexact ones; the precision of the inputs is used otherwise.

3) The last one is so ugly I'd never recommend it, so it doesn't count towards
the two possibilities :-)

  writetex(namefile,
           Strchr( vecextract(Vec(Vecsmall(Str(result))), Str("..26")) )
  )

> 2) In my script I have two parts: a precomputation and
> a final part. I would like to be able to know the computation time for
> both of them but it is not clear to me
> how to use the timer in a script.

  gettime();  \\ initialize
  ...precompute...
  print("Precomputation: ", gettime());
  ...compute...
  print("Computation: ", gettime());

Cheers,

    K.B.
-- 
Karim Belabas                  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]