About the code, the current version is
{{{
def is_prime(n):
try:
return n.is_prime()
except (AttributeError, NotImplementedError):
return ZZ(n).is_prime()
}}}
I think that we should change it to
{{{
from sage.structure.coerce import py_scalar_to_element
def is_prime(n):
return py_scalar_to_element(n).is_prime()
}}}
vincent
On 05/02/16 16:27, William Stein wrote:
On Fri, Feb 5, 2016 at 11:24 AM, Bruno Grenet <bruno.gre...@gmail.com> wrote:
Note that there is a difference between the example in the original email
and the answers: The original email was about is_prime(something) not
something.is_prime(). I do not know the mechanisms behind
is_prime(something) but would it be possible that in this case the behavior
is slightly different, say that the input is coerced to ZZ if possible? It
would be more user friendly I guess.
-1 to (2/1).is_prime() != is_prime(2/1). That just seems like a way
to increase confusion even further.
Bruno
On 5 février 2016 19:59:53 HNEC, William Stein <wst...@gmail.com> wrote:
On Friday, February 5, 2016, David Roe <roed.m...@gmail.com> wrote:
On Fri, Feb 5, 2016 at 1:20 PM, Vincent Delecroix
<20100.delecr...@gmail.com> wrote:
Hello,
Indeed, the definition given in the documentation of "is_prime" does not
coincide with what the method is doing.
The mathematical definition of prime *depends* on the ring. An element
of a ring is prime if the ideal it generates is prime. And the ideal (3) is
prime in ZZ but not in QQ. A less stupid example
sage: K = ZZ[I]
sage: K(3).is_prime()
True
sage: K(5).is_prime()
False
The Sage behavior of the function is_prime is perfectly coherent with
respect to this definition.
I would rather make a patch to modify the documentation and warns the
user about the difference between prime element in a ring and prime number.
+1
David
Maybe is_prime for field elements should just raise an exception?
Vincent
On 05/02/16 14:50, David Wong wrote:
prime_number = bignumber / 2
is_prime(prime_number) # -> False
prime_number = bignumber // 2
is_prime(prime_number) # -> True
prime_number = ZZ(bignumber / 2)
is_prime(prime_number) # -> True
I've spent a couple of days arguing with people about a number (not)
being
a prime. Turns out it fails silently if you're in the wrong field.
I guess a fix would be to ZZ() the number first in the function
is_prime.
If you guys agree I can submit a patch or something (never touched at
Sage's codebase and that would be a good opportunity)
David
--
You received this message because you are subscribed to the Google
Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.