File: LargeWords.hs

package info (click to toggle)
haskell-foundation 0.0.30-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 928 kB
  • sloc: haskell: 9,124; ansic: 570; makefile: 6
file content (45 lines) | stat: -rw-r--r-- 1,477 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RebindableSyntax #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module LargeWords where

import Foundation
import Basement.From
import Basement.Types.Word128 (Word128)
import Basement.Types.Word256 (Word256)
import qualified Basement.Types.Word128 as Word128
import qualified Basement.Types.Word256 as Word256
import BenchUtil.Common

largeNumber64 :: Natural
largeNumber64 = 0xffffffffffffffff

largeNumber128 :: Natural
largeNumber128 = 0xfffffffffffffffffffffffffffffff

largeNumber256 :: Natural
largeNumber256 = 0xffffffffffffffffffffffffffffffffffffffffffffffff

benchLargeWords =
    [ bgroup "Addition"
        [ bgroup "Word128"
            [ bench "Word128" $ whnf (+ 1240) (Word128.fromNatural largeNumber128)
            , bench "Natural" $ whnf (+ 1240) largeNumber128
            ]
        , bgroup "Word256"
            [ bench "Word256" $ whnf (+ 200) (Word256.fromNatural largeNumber256)
            , bench "Natural" $ whnf (+ 200) largeNumber256
            ]
        ]
    , bgroup "Multiplication"
        [ bgroup "Word128"
            [ bench "Word128" $ whnf (* 1240) (Word128.fromNatural largeNumber128)
            , bench "Natural" $ whnf (* 1240) largeNumber128
            ]
        , bgroup "Word256"
            [ bench "Word256" $ whnf (* 200) (Word256.fromNatural largeNumber256)
            , bench "Natural" $ whnf (* 200) largeNumber256
            ]
        ]
    ]