> I am thinking about how to get around it when I want to know whether a > number is some prime to some power. Like in here like n=2^j. An obvious way > for me in here is using modulo, but with high values of j, it won't work. > Any suggestion?
I think for powers of two, this might be fine but maybe not: log2(32768)%log2(2) But probably better to do: isprime(convert(Int, log2(32768))) This will throw an error if the decimal part is not zero. If that is not what you want, use isinteger to test. > On Sunday, 29 June 2014 21:42:01 UTC+2, Mauro wrote: >> >> > So a bug? >> >> Probably not a bug but an intrinsic limitation of floating point >> numbers. >> >> Python does the same: >> >>> from math import * >> >>> log(32768)%log(2) >> 0.6931471805599452 >> >> (Although Matlab gets it "right".) >> >> > On Saturday, 28 June 2014 13:59:22 UTC+2, Mauro wrote: >> >> >> >> I think that is a rounding issue. log(2)==0.693... Presumably it >> >> can't quite fit log(2) 15x into log(32768), thus it returns a reminder >> >> which is almost log(2): >> >> >> >> julia> rem(a,b)-log(2) >> >> -1.1102230246251565e-16 >> >> >> >> which is around machine precision: >> >> >> >> julia> eps(1.0) >> >> 2.220446049250313e-16 >> >> >> >> On Sat, 2014-06-28 at 10:40, [email protected] <javascript:> wrote: >> >> > When using the rem() function, I found out a mysterious thing. (Maybe >> >> only >> >> > my ignorance, hard to tell.) The log(32768)/log(2) gives 15.0, but >> >> > rem(log(32768),log(2)) gives 0.693... How so? >> >> >> >> >> >> --
