[PYTHON MATRIX-SIG] type coercion one more time
Hinsen Konrad
hinsenk@ere.umontreal.ca
Thu, 25 Jan 1996 12:09:17 -0500
On the other hand, I see the other types as being used for cases where
the programmer really wants to use a particular precision, ie. 2-byte
integers for dealing with 16-bit sound data. In a case like this it
seems decidely unfriendly to automatically coerce to another
precision.
I wouldn't call it "decidedly unfriendly" (you can always avoid
coercion by making sure that all variables have the same type), but it
makes sense. It should also be noted that one of the main reasons to
have float->double coercion in C is to make it possible to call
functions written for double with float arguments. This problem does
not exist in Python.
4) Coercion to a higher precision is allowed within the main
groupings.
What are "main groupings"?
5) The precision of a python scalar is allowed to change to match the
other arguments (3.14 can be either a float or a double depending on
which one is "desired").
I don't like this rule for two reasons:
1) You can lose precision without noticing it.
2) It creates a subtle distinction between scalars and arrays of rank 0,
which can only confuse users.
On the other hand, I do see the problem you want to solve. It doesn't
make any code easier to read if you have to convert every constant to
a rank-0 float array. If I get an ingenious idea for solving this
problem, I'll let you know immediately...
-------------------------------------------------------------------------------
Konrad Hinsen | E-Mail: hinsenk@ere.umontreal.ca
Departement de chimie | Tel.: +1-514-343-6111 ext. 3953
Universite de Montreal | Fax: +1-514-343-7586
C.P. 6128, succ. Centre-Ville | Deutsch/Esperanto/English/Nederlands/
Montreal (QC) H3C 3J7 | Francais (phase experimentale)
-------------------------------------------------------------------------------
=================
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org
=================