Am 24.10.2011 08:37, schrieb Aaron Meurer:
On Sun, Oct 23, 2011 at 11:33 PM, Aaron Meurer<asmeu...@gmail.com>  wrote:
On Sat, Oct 22, 2011 at 3:57 AM, Joachim Durchholz<j...@durchholz.org>  wrote:
I'm seeing parameters that select primes by index, and parameters that
select primes by magnitude. I'm assuming they should all be protected, not
just those two that are mentioned in the issue report.
Correct?

Yes, anything that is a public function should do some kind of type
check to prevent against this problem.

Okay.

Those that select by index should be limited to integers.
Those that select by defining a minimum and/or maximum range should be
limited to floats.
Correct?

I think since the range is over the integers, you can also just cast
these to int(), and if that fails then it is incorrect.

The docstring of primepi(n) says:
"Return the value of the prime counting function pi(n) = the number of prime numbers less than or equal to n. The number n need not necessarily be an integer."

The reasoning behind the definition of the pi function could (and, IMVHO, should) be extended to the likes of prevprime(n) ("Return the largest prime smaller than n.") and primerange(a, b) ("Generate a list of all prime numbers in the range [a, b).")

The issue report suggests testing for non-"intness" via
  int(N) != N
What's the best way to test for "floatness" in Python?

This is not what the issue suggests.

Why is this important?
More specifically, I do not fully understand why extending the issue to cover more functions is okay, but extending the domain of parameter values is not. Might be some ramifications that I don't know yet - in which case I'd like to know :-)

>> It says that you should just
cast it to int, and if it works, then it is correct, and if not, then
it will raise a TypeError, which is what it should do in that case.

More specifically, just add

n = int(n)

to the top of the function.

Sounds good to me.

If anybody comes up with a passage in the style guide that disallows assigning to parameters, I still think it's okay to assign to a parameter. Once, at the top of the function, for normalization purposes.

Regards,
Jo

--
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to