[PYTHON MATRIX-SIG] type coercion one more time

James Hugunin jjh@Goldilocks.LCS.MIT.EDU
Thu, 25 Jan 96 08:13:02 EST

I've been working to design a stable version of automatic type
coercion that everybody (including myself) can be happy with.  The
following is what I have.  Much of this is in line with the C rules
for type coercion (at least according to my old K&R).  I will use the
standard C type names (double means a python float).

Only the following three automatic coercions are allowed:

1) Any integer type can be coerced to a float, a double, a complex float or
a complex double.

2) A float can only be coerced to a complex float.

3) A double can only be coerced to a complex double.


The following type hierarchy is assumed:


Within each level there are a number of possible precisions.  No
automatic coercion will take place between these precisions.

This remains completely consistent with the existing python automatic
type coercion.


a_t = array([x,y,z,...], 't') # Where t is a legal typecode

1 - signed byte
l - long
f - float
d - double
F - complex float
D - complex double

a_l * a_d = a_d
a_f * a_l = a_f
a_f * a_d = TypeError Exception raised
a_d * a_D = a_D
a_1 * a_l = TypeError Exception raised

Comments? - Jim

MATRIX-SIG  - SIG on Matrix Math for Python

send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org