diff options
author | Tom Smeding <tom@tomsmeding.com> | 2024-06-10 23:31:59 +0200 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2024-06-10 23:32:08 +0200 |
commit | 42b8c69a978b54001aeae62c8c37ce80500d6428 (patch) | |
tree | 2318a443fe2cd659cc432dbc6d7c53e8206ac4e8 /src/Data/Array/Nested/Internal/Mixed.hs | |
parent | 5f6a64660b16d8f188caca5216e55debf4264611 (diff) |
Add (temporary version of) more general mdot
Diffstat (limited to 'src/Data/Array/Nested/Internal/Mixed.hs')
-rw-r--r-- | src/Data/Array/Nested/Internal/Mixed.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Data/Array/Nested/Internal/Mixed.hs b/src/Data/Array/Nested/Internal/Mixed.hs index 69df52a..7dbff83 100644 --- a/src/Data/Array/Nested/Internal/Mixed.hs +++ b/src/Data/Array/Nested/Internal/Mixed.hs @@ -812,10 +812,16 @@ mmaxIndexPrim :: (PrimElt a, NumElt a) => Mixed sh a -> IIxX sh mmaxIndexPrim (toPrimitive -> M_Primitive sh (XArray arr)) = ixxFromList (ssxFromShape sh) (numEltMaxIndex arr) -mdot :: (PrimElt a, NumElt a) => Mixed '[n] a -> Mixed '[n] a -> a -mdot (toPrimitive -> M_Primitive _ (XArray arr1)) (toPrimitive -> M_Primitive _ (XArray arr2)) = +mdot1 :: (PrimElt a, NumElt a) => Mixed '[n] a -> Mixed '[n] a -> a +mdot1 (toPrimitive -> M_Primitive _ (XArray arr1)) (toPrimitive -> M_Primitive _ (XArray arr2)) = numEltDotprod arr1 arr2 +-- | This has a temporary, suboptimal implementation in terms of 'mflatten'. +-- Prefer 'mdot1' if applicable. +mdot :: (PrimElt a, NumElt a) => Mixed sh a -> Mixed sh a -> a +mdot a b = mdot1 (fromPrimitive (mflatten (toPrimitive a))) + (fromPrimitive (mflatten (toPrimitive b))) + mtoXArrayPrimP :: Mixed sh (Primitive a) -> (IShX sh, XArray sh a) mtoXArrayPrimP (M_Primitive sh arr) = (sh, arr) |