Tim Rowe wrote:
2008/12/18 Scott David Daniels <scott.dani...@acm.org>:

def quadsolve(a, b, c):
   try:
       discriminant = sqrt(b**2 - 4 * a * c)

The discriminant of a quadratic is more usually just the b**2 - 4 * a
* c part, not the square root of it. Testing that for negative, zero
or positive avoids the need to use an exception for a normal case.

Absolutely right.  Blame the oversight on my old CPU-stingy days.  When
the CPU was slow, avoiding a sqrt here or there (if you didn't have a
sqrt opcode) was so important that I do it without thinking these days.
Since I still have that disease, perhaps the variable should be renamed
root_discriminant.

As for the testing, I find using math.sqrt catches the negative cases
and raises an exception by itself, leaving only the issue of whether
or not to return a pair or singleton.  Usually for my purposes, I'd let
the exception fly and not return an (?the?) empty tuple.

--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to