Author: Maciej Fijalkowski <[email protected]>
Branch: numpy-refactor
Changeset: r57121:527742bb4035
Date: 2012-09-04 13:03 +0200
http://bitbucket.org/pypy/pypy/changeset/527742bb4035/

Log:    scalars in ufuncs

diff --git a/pypy/module/micronumpy/interp_numarray.py 
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -247,10 +247,10 @@
 
     def descr_mean(self, space, w_axis=None, w_out=None):
         if space.is_w(w_axis, space.w_None):
-            w_denom = space.wrap(support.product(self.shape))
+            w_denom = space.wrap(self.get_size())
         else:
-            axis = unwrap_axis_arg(space, len(self.shape), w_axis)
-            w_denom = space.wrap(self.shape[axis])
+            axis = unwrap_axis_arg(space, len(self.get_shape()), w_axis)
+            w_denom = space.wrap(self.get_shape()[axis])
         return space.div(self.descr_sum_promote(space, w_axis, w_out), w_denom)
 
 
diff --git a/pypy/module/micronumpy/interp_ufuncs.py 
b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -209,6 +209,7 @@
         return res
 
     def do_axis_reduce(self, obj, dtype, axis, result):
+        xxx
         from pypy.module.micronumpy.interp_numarray import AxisReduce
         arr = AxisReduce(self.func, self.name, self.identity, obj.shape, dtype,
                          result, obj, axis)
@@ -251,15 +252,15 @@
         else:
             res_dtype = calc_dtype
         if w_obj.is_scalar():
-            xxx
-            arr = self.func(calc_dtype, w_obj.value.convert_to(calc_dtype))
-            if isinstance(out,Scalar):
-                out.value = arr
-            elif isinstance(out, BaseArray):
-                out.fill(space, arr)
+            w_val = self.func(calc_dtype,
+                              w_obj.get_scalar_value().convert_to(calc_dtype))
+            if out is None:
+                return w_val
+            if out.is_scalar():
+                out.set_scalar_value(w_val)
             else:
-                out = arr
-            return space.wrap(out)
+                out.fill(space, w_val)
+            return out
         shape =  shape_agreement(space, w_obj.get_shape(), out)
         return loop.call1(shape, self.func, self.name, calc_dtype, res_dtype,
                           w_obj, out)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to