unittest: Proposal to add failUnlessNear
tim.peters at gmail.com
Thu Jul 22 00:17:07 CEST 2004
>>> In addition, you're going to have to do significant
>>> type checking if you want to combine floats and
>>> complex in the same method call. That's just
>>> poor design.
[Christopher T King]
>> Why would you have to do that? The Python operators, as well as every
>> function in cmath, transparently support both floats and complex numbers
>> (as they should). Every operation between floats and complex numbers is
> Because the "distance" between two floats is
> abs(a - b)
> while the "distance" between two complex numbers
> is something like
> math.sqrt(diff.real ** 2 + diff.imag ** 2)
> This requires a type check to differentiate which
> formula you need to use.
Nope. abs(a - b) works for both cases, although for complex numbers
Python uses a numerical method less prone to spurious
overflow/underflow than the "square root of the sum of the squares"
>>> abs((12+29j) - (9+25j))
which = sqrt((12-9)**2 + (29-25)**2) = sqrt(3**2 + 4**2) = sqrt(9 +
16) = sqrt(25).
Note that if the difference in the imaginary components is 0, the
formula reduces to
which = |diff.real|. IOW, the definition of real abs() is a special
case of the definition of complex abs().
More information about the Python-list