1 | initial version |

Hello, @john-bao! You could change the polynomial ring of the Taylor Polynomial. For example,

```
f(x) = sin(x)
T(x) = taylor(f, x, 1.0, 2)
R = PolynomialRing(RealIntervalField(10), 'x')
R(T)
```

This will give you something like

```
-0.421?*x^2 + 1.39?*x - 0.120?
```

The `?`

sign indicates you have a loss of precision. I am working with 10 bits, because 3 gives you very poor precision. If you don't like the `?`

s, you can change the `RealIntervalField(10)`

with `Reals(10)`

, for example.

I hope this helps!

2 | No.2 Revision |

Hello, @john-bao! You could change the polynomial ring of the Taylor Polynomial. For example,

```
f(x) = sin(x)
T(x) = taylor(f, x, 1.0, 2)
R = PolynomialRing(RealIntervalField(10), 'x')
R(T)
```

This will give you something like

```
-0.421?*x^2 + 1.39?*x - 0.120?
```

The `?`

sign indicates you have a loss of precision. I am working with 10 bits, because 3 gives you very poor precision. If you don't like the `?`

s, you can change the `RealIntervalField(10)`

with `Reals(10)`

, for ~~example.~~

`digits_to_bits`

function: ```
from sage.arith.numerical_approx import digits_to_bits
R = PolynomialRing(RealIntervalField(digits_to_bits(4)), 'x')
R(T)
```

Here is an alternative approach (although a little slower). This allows you to fix the number of bits or the number of digits (I'll use digits). Define the function:

```
def poly_prec(p, digits=4):
pol = 0
for op in p.operands():
if not op.is_constant():
ex = op.operands()
pol += ex[0] * N(ex[1], digits)
else:
pol += N(op, digits)
return pol
```

I hope this helps!

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.