From 9e5945120bbcfeff15ee7356398e06ab5ba25561 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Mon, 27 May 2024 14:10:57 +0200 Subject: Fast (C) Floating ops --- bench/Main.hs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'bench/Main.hs') diff --git a/bench/Main.hs b/bench/Main.hs index 8f3b670..41eb3b3 100644 --- a/bench/Main.hs +++ b/bench/Main.hs @@ -6,7 +6,7 @@ import qualified Numeric.LinearAlgebra as LA import Test.Tasty.Bench import Data.Array.Nested -import Data.Array.Nested.Internal (mliftPrim2, arithPromoteRanked2) +import Data.Array.Nested.Internal (mliftPrim, mliftPrim2, arithPromoteRanked, arithPromoteRanked2) main :: IO () @@ -24,6 +24,14 @@ main = defaultMain let n = 1_000_000 in nf (\(a, b) -> runScalar (rsumOuter1 (arithPromoteRanked2 (mliftPrim2 (/)) a b))) (riota @Double n, riota n) + ,bench "sum(**) Double [1e6]" $ + let n = 1_000_000 + in nf (\(a, b) -> runScalar (rsumOuter1 (arithPromoteRanked2 (mliftPrim2 (**)) a b))) + (riota @Double n, riota n) + ,bench "sum(sin) Double [1e6]" $ + let n = 1_000_000 + in nf (\a -> runScalar (rsumOuter1 (arithPromoteRanked (mliftPrim sin) a))) + (riota @Double n) ,bench "sum Double [1e6]" $ let n = 1_000_000 in nf (\a -> runScalar (rsumOuter1 a)) @@ -42,6 +50,14 @@ main = defaultMain let n = 1_000_000 in nf (\(a, b) -> runScalar (rsumOuter1 (a / b))) (riota @Double n, riota n) + ,bench "sum(**) Double [1e6]" $ + let n = 1_000_000 + in nf (\(a, b) -> runScalar (rsumOuter1 (a ** b))) + (riota @Double n, riota n) + ,bench "sum(sin) Double [1e6]" $ + let n = 1_000_000 + in nf (\a -> runScalar (rsumOuter1 (sin a))) + (riota @Double n) ,bench "sum Double [1e6]" $ let n = 1_000_000 in nf (\a -> runScalar (rsumOuter1 a)) @@ -63,6 +79,15 @@ main = defaultMain in nf (\(a, b) -> LA.sumElements (a / b)) (LA.linspace @Double n (0.0, fromIntegral (n - 1)) ,LA.linspace @Double n (0.0, fromIntegral (n - 1))) + ,bench "sum(**) Double [1e6]" $ + let n = 1_000_000 + in nf (\(a, b) -> LA.sumElements (a ** b)) + (LA.linspace @Double n (0.0, fromIntegral (n - 1)) + ,LA.linspace @Double n (0.0, fromIntegral (n - 1))) + ,bench "sum(sin) Double [1e6]" $ + let n = 1_000_000 + in nf (\a -> LA.sumElements (sin a)) + (LA.linspace @Double n (0.0, fromIntegral (n - 1))) ,bench "sum Double [1e6]" $ let n = 1_000_000 in nf (\a -> LA.sumElements a) -- cgit v1.2.3-70-g09d2