equal
deleted
inserted
replaced
1 import System.Environment |
1 import System.Environment |
2 import Data.List |
2 import Data.List |
3 import Text.Printf |
3 import Text.Printf |
4 import Control.Exception |
4 import Control.Exception |
5 import System.CPUTime |
5 import System.CPUTime |
6 import Control.Parallel.Strategies |
6 --import Control.Parallel.Strategies |
7 import Control.Monad |
7 import Control.Monad |
|
8 import Control.DeepSeq |
8 |
9 |
9 lim :: Int |
10 lim :: Int |
10 lim = 1 |
11 lim = 1 |
11 -- lim = 10^6 |
12 -- lim = 10^6 |
12 |
13 |
13 time :: (Num t, NFData t) => t -> IO () |
14 time :: (Num t, NFData t) => t -> IO () |
14 time y = do |
15 time y = do |
15 start <- getCPUTime |
16 start <- getCPUTime |
16 replicateM_ lim $ do |
17 replicateM_ lim $ do |
17 x <- evaluate $ 1 + y |
18 x <- evaluate $ 1 + y |
18 rdeepseq x `seq` return () |
19 deepseq x `seq` return () |
19 end <- getCPUTime |
20 end <- getCPUTime |
20 let diff = (fromIntegral (end - start)) / (10^12) |
21 let diff = (fromIntegral (end - start)) / (10^12) |
21 printf "%0.9f\n" (diff :: Double) |
22 printf "%0.9f\n" (diff :: Double) |
22 return () |
23 return () |
23 |
24 |
243 (case (r1d, r2s) of |
244 (case (r1d, r2s) of |
244 (ZERO, _) -> (ZERO, f_id) |
245 (ZERO, _) -> (ZERO, f_id) |
245 (_, ZERO) -> (ZERO, f_id) |
246 (_, ZERO) -> (ZERO, f_id) |
246 (ONE, _) -> (r2s, f_seq_void1 f1d f2s) |
247 (ONE, _) -> (r2s, f_seq_void1 f1d f2s) |
247 (_, ONE) -> (r1d, f_seq_void2 f1d f2s) |
248 (_, ONE) -> (r1d, f_seq_void2 f1d f2s) |
248 (_, _) -> (SEQ r1d r2s, f_seq f1d f2s)) |
249 (_, _) -> (SEQ r1d r2s, f_seq f1d f2s)) |
249 STAR r1 -> |
250 STAR r1 -> |
250 let (r1d, f1d) = der_simp c r1 |
251 let (r1d, f1d) = der_simp c r1 |
251 in |
252 in |
252 (case r1d of |
253 (case r1d of |
253 ZERO -> (ZERO, f_id) |
254 ZERO -> (ZERO, f_id) |