packages feed

elliptic-curve-0.2.1: benchmarks/EdwardsBenchmarks.hs

module EdwardsBenchmarks where

import Criterion.Main
import qualified Curve.Edwards.Curve1174  as Curve1174
import qualified Curve.Edwards.Curve41417 as Curve41417
import qualified Curve.Edwards.E222       as E222
import qualified Curve.Edwards.E382       as E382
import qualified Curve.Edwards.E521       as E521
import qualified Curve.Edwards.Ed448      as Ed448
import qualified Curve.Edwards.Ed3363     as Ed3363
import qualified Curve.Edwards.Ed25519    as Ed25519
import qualified Curve.Edwards.JubJub     as JubJub

import GroupBenchmarks

benchmarkEdwards :: Benchmark
benchmarkEdwards = bgroup "Edwards"
  [ benchmarkEdwards'  "Curve1174"  Curve1174.gA  Curve1174.gP
  , benchmarkEdwards' "Curve41417" Curve41417.gA Curve41417.gP
  , benchmarkEdwards'       "E222"       E222.gA       E222.gP
  , benchmarkEdwards'       "E382"       E382.gA       E382.gP
  , benchmarkEdwards'       "E521"       E521.gA       E521.gP
  , benchmarkEdwards'      "Ed448"      Ed448.gA      Ed448.gP
  , benchmarkEdwards'     "Ed3363"     Ed3363.gA     Ed3363.gP
  , benchmarkEdwards'    "Ed25519"    Ed25519.gA    Ed25519.gP
  , benchmarkEdwards'     "JubJub"     JubJub.gA     JubJub.gP
  ]
  where
    benchmarkEdwards' curve affine projective = bgroup curve
      [ benchmark "Affine" affine
      , benchmark "Projective" projective
      ]