diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2024-06-10 10:02:59 +0200 | 
|---|---|---|
| committer | Tom Smeding <t.j.smeding@uu.nl> | 2024-06-10 16:17:09 +0200 | 
| commit | 205a20fd581bb7c5728fd457a15e4f78fbee9e75 (patch) | |
| tree | f6669ea87b56dde0f6168c109b3d7d7fcbf06136 /src/Data/Array/Mixed/Internal/Arith | |
| parent | c211316a4ab43cf34d6567c6919a3922d5840ae0 (diff) | |
Dot product
Diffstat (limited to 'src/Data/Array/Mixed/Internal/Arith')
| -rw-r--r-- | src/Data/Array/Mixed/Internal/Arith/Foreign.hs | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/src/Data/Array/Mixed/Internal/Arith/Foreign.hs b/src/Data/Array/Mixed/Internal/Arith/Foreign.hs index 0bd72e8..96a85d1 100644 --- a/src/Data/Array/Mixed/Internal/Arith/Foreign.hs +++ b/src/Data/Array/Mixed/Internal/Arith/Foreign.hs @@ -60,3 +60,12 @@ $(fmap concat . forM typesList $ \arithtype ->        let base = "extremum_" ++ fname ++ "_" ++ atCName arithtype        pure . ForeignD . ImportF CCall Unsafe ("oxarop_" ++ base) (mkName ("c_" ++ base)) <$>          [t| Ptr Int64 -> Int64 -> Ptr Int64 -> Ptr Int64 -> Ptr $ttyp -> IO () |]) + +$(fmap concat . forM typesList $ \arithtype -> do +    let ttyp = conT (atType arithtype) +    let base = "dotprod_" ++ atCName arithtype +    sequence +      [ForeignD . ImportF CCall Unsafe ("oxarop_" ++ base) (mkName ("c_" ++ base)) <$> +         [t| Int64 -> Ptr $ttyp -> Ptr $ttyp -> IO $ttyp |] +      ,ForeignD . ImportF CCall Unsafe ("oxarop_" ++ base ++ "_strided") (mkName ("c_" ++ base ++ "_strided")) <$> +         [t| Int64 -> Int64 -> Int64 -> Ptr $ttyp -> Int64 -> Int64 -> Ptr $ttyp -> IO $ttyp |]]) | 
