aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cbits/arith.c4
-rw-r--r--ops/Data/Array/Strided/Arith/Internal.hs1
2 files changed, 4 insertions, 1 deletions
diff --git a/cbits/arith.c b/cbits/arith.c
index 1066463..ee248a4 100644
--- a/cbits/arith.c
+++ b/cbits/arith.c
@@ -494,7 +494,9 @@ static void print_shape(FILE *stream, i64 rank, const i64 *shape) {
if (rank == 0) return arr[0]; \
typ result = 0; \
TARRAY_WALK_NOINNER(again, rank, shape, strides, { \
- REDUCE_BODY_CODE(op, typ, shape[rank - 1], strides[rank - 1], arr, arrlinidx, result); \
+ typ dest = 0; \
+ REDUCE_BODY_CODE(op, typ, shape[rank - 1], strides[rank - 1], arr, arrlinidx, dest); \
+ result = result op dest; \
}); \
return result; \
}
diff --git a/ops/Data/Array/Strided/Arith/Internal.hs b/ops/Data/Array/Strided/Arith/Internal.hs
index d94fc65..7578dd8 100644
--- a/ops/Data/Array/Strided/Arith/Internal.hs
+++ b/ops/Data/Array/Strided/Arith/Internal.hs
@@ -396,6 +396,7 @@ vectorRedInnerOp sn@SNat valconv ptrconv fscale fred array@(Array sh strides off
Nothing -> error "impossible"
-- TODO: test handling of negative strides
+-- TODO: simplify away normalised dimensions
-- | Reduce full array
{-# NOINLINE vectorRedFullOp #-}
vectorRedFullOp :: forall a b n. (Num a, Storable a)