Author: Ronan Lamy <[email protected]>
Branch: fix-result-types
Changeset: r77433:d348a2da2369
Date: 2015-05-20 20:18 +0100
http://bitbucket.org/pypy/pypy/changeset/d348a2da2369/

Log:    prepare find_result_type() for implementing correct handling of
        scalars

diff --git a/pypy/module/micronumpy/casting.py 
b/pypy/module/micronumpy/casting.py
--- a/pypy/module/micronumpy/casting.py
+++ b/pypy/module/micronumpy/casting.py
@@ -45,10 +45,37 @@
     elif not arrays_w and len(dtypes_w) == 1:
         return dtypes_w[0]
     result = None
+    all_scalars = True
+    max_scalar_kind = 0
+    max_array_kind = 0
     for w_array in arrays_w:
-        result = find_binop_result_dtype(space, result, w_array.get_dtype())
-    for dtype in dtypes_w:
-        result = find_binop_result_dtype(space, result, dtype)
+        if w_array.is_scalar():
+            kind = kind_ordering[w_array.get_dtype().kind]
+            if kind > max_scalar_kind:
+                max_scalar_kind = kind
+        else:
+            all_scalars = False
+            kind = kind_ordering[w_array.get_dtype().kind]
+            if kind > max_array_kind:
+                max_array_kind = kind
+    if arrays_w:
+        for dtype in dtypes_w:
+            kind = kind_ordering[dtype.kind]
+            if kind > max_array_kind:
+                max_array_kind = kind
+    #use_min_scalar = bool(arrays_w) and not all_scalars and max_array_kind >= 
max_scalar_kind
+    use_min_scalar = False
+    if not use_min_scalar:
+        for w_array in arrays_w:
+            if result is None:
+                result = w_array.get_dtype()
+            else:
+                result = _promote_types(space, result, w_array.get_dtype())
+        for dtype in dtypes_w:
+            if result is None:
+                result = dtype
+            else:
+                result = _promote_types(space, result, dtype)
     return result
 
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to