aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikolaj Konarski <mikolaj.konarski@funktory.com>2025-11-27 11:09:19 +0100
committerMikolaj Konarski <mikolaj.konarski@funktory.com>2025-11-27 11:16:29 +0100
commit4d762c306901e694286363ad0846d69a770acd63 (patch)
treef5450ddf626612c6a08ca4ecbe9538b5daf91d52
parent14327cb54fb3ba7ae81c00d7865c47cdd8ec9578 (diff)
Optimize X.index, but measurements unconclusive
-rw-r--r--src/Data/Array/XArray.hs6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/Data/Array/XArray.hs b/src/Data/Array/XArray.hs
index 948a50e..0f87168 100644
--- a/src/Data/Array/XArray.hs
+++ b/src/Data/Array/XArray.hs
@@ -119,10 +119,8 @@ indexPartial (XArray arr) ZIX = XArray arr
indexPartial (XArray arr) (i :.% idx) = indexPartial (XArray (S.index arr i)) idx
index :: forall sh a. Storable a => XArray sh a -> IIxX sh -> a
-index xarr i
- | Refl <- lemAppNil @sh
- = let XArray arr' = indexPartial xarr i :: XArray '[] a
- in S.unScalar arr'
+index (XArray (ORS.A (ORG.A _ t))) i =
+ OI.values t VS.! (OI.offset t + sum (zipWith (*) (toList i) (OI.strides t)))
append :: forall n m sh a. Storable a
=> StaticShX sh -> XArray (n : sh) a -> XArray (m : sh) a -> XArray (AddMaybe n m : sh) a