Thanks much, that helps and I am pretty sure I understand what is going on! 

On Monday, March 24, 2014 10:49:18 AM UTC-4, Peter Bruin wrote:
>
> Hello, 
>
> > I am working on a Z80 project and I needed 72 bits of precision for 64 
> > elements of the form log2(1+2^-i) (so log2(3/2), log2(5/4),...). I 
> > needed to convert these to hexadecimal, and it worked until I tried 
> > the following for i=56: 
> > int(256*log(1+2^-56,2)) 
> > 
> > This returns 1, when in fact it should be 0. Actually, instead of 
> > multiplying by 256, multiplying by 65536, or 600, or many other 
> > numbers would also return the integer part as 1. 
> > 
> > As a note, I used RealField(80) as my precision. 
>
> Typing log(1 + 2^-56, 2) gives the result as a symbolic expression, not 
> as an element of a real field.  Applying int() to this internally uses a 
> RealIntervalField with 53 bits of precision, which is not enough in this 
> case.  Here is a way to get the desired precision: 
>
> sage: x = RealField(80)(256*log(1+2^-56,2)) 
> sage: x 
> 5.1254824061038682620123e-15 
> sage: int(x) 
> 0 
>
> Peter 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to