# set precision for pari in Sage

In the pari program, we can use \pb 256 to set the precision. For the pari in Sage, how to use this command ?

1

To change real precision in gp run `gp.default("realprecision",256)`

.

However, this issue in your code is not in pari's precision per se, but in loss of precision when pari's object is converted to Sage (it may be a bug in `cypari2`

). Here is an equivalent code with explicit precision control (for both Sage and Pari) based on `gp.`

interface:

```
myC = ComplexField(200) # precision in bits, we use it for conversion to Sage
gp.default("realprecision",60) # precision in decimal digits for pari's routines
K.<a>=CyclotomicField(3)
E=gp.ellinit([0,0,0,0,-432*(1+3*a)^4])
S=gp.mfinit([63,2,Mod(37,63)])
L=gp.mfeigenbasis(S)
symb = gp.mfsymbol(L[1])
def phiE(c):
return myC(gp.mfsymboleval(symb,[gp.oo(), c]))*2*myC(pi)*I
print(phiE(gp.oo()))
print(phiE(0))
print(phiE(1/1000))
```

1

maybe

```
pari.set_real_precision(prec)
```

Get its documentation with `?`

:

```
sage: pari.set_real_precision?
Signature: pari.set_real_precision(n)
Docstring:
Sets the PARI default real precision in decimal digits.
This is used both for creation of new objects from strings and for
printing. It is the number of digits *IN DECIMAL* in which real
numbers are printed. It also determines the precision of objects
created by parsing strings (e.g. pari('1.2')), which is *not* the
normal way of creating new PARI objects in CyPari2. It has *no*
effect on the precision of computations within the pari library.
Returns the previous PARI real precision.
See also: "set_real_precision_bits()" to set the precision in bits.
Examples:
>>> import cypari2
>>> pari = cypari2.Pari()
>>> pari.set_real_precision(60)
15
>>> pari('1.2')
1.20000000000000000000000000000000000000000000000000000000000
>>> pari.set_real_precision(15)
60
Init docstring: Initialize self. See help(type(self)) for accurate signature.
File:
Type: method
```

Type `pari.set`

and press the `TAB`

key for a list of similar functions.

```
sage: pari.set
pari.set_debug_level
pari.set_real_precision
pari.set_real_precision_bits
pari.set_series_precision
pari.setbinop
pari.setintersect
pari.setisset
pari.setminus
pari.setrand
pari.setsearch
pari.setunion
```

For example, I run the following code in sage

```
from cypari2 import Pari
pari = Pari()
print(R)
K.<a>=CyclotomicField(3)
E=pari([0,0,0,0,-432*(1+3*a.n(3000))^4]).ellinit()
S=pari([63,2,Mod(37,63)]).mfinit()
L=pari(S).mfeigenbasis()
symb=L[0].mfsymbol();
def phiE(c):
#return E.ellztopoint(pari(symb.mfsymboleval([oo, c])*2*pi*I).polcoef(0))
return symb.mfsymboleval([oo, c])*2*pi*I
#return pari(symb.mfsymboleval([oo, c])*2*pi*I).polcoef(0)
print(phiE(oo))
print(phiE(0))
print(phiE(1/1000))
```

the output is with very little precision. How can I get the output with high precision?

This is not an issue with precision in pari but rather a loss of precision when pari object `symb.mfsymboleval([oo, c])`

is converted to Sage. Perhaps, it's a bug in cypari2.

Please start posting anonymously - your entry will be published after you log in or create a new account.

Asked: ** 2022-03-23 08:37:44 +0200 **

Seen: **168 times**

Last updated: **Mar 26**

how to get output in a mixed fraction?

HowTo Compute Past Largest Cython Supported Wordsize (efficiently)?

Sage binary system requirements

2D plotting in sage looks wrong

Set global precision for reals?

How to find if computation is in a notebook or sage prompt ?

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.