packages feed

hmatrix-morpheus-0.1.0.2: hmatrix-morpheus.cabal

name:                hmatrix-morpheus
version:             0.1.0.2
synopsis:            Low-level machine learning auxiliary functions.
description:
  Purely functional interface to morpheus based on hmatrix.
  Morpheus library contains a bunch of cache line aware numerical algorithms
  suitable for using as a low-level primitives to build machine learning applications.
  .
  Examples are in "Numeric.Morpheus" module.
homepage:            https://github.com/Alexander-Ignatyev/morpheus/tree/master/hmatrix-morpheus
license:             BSD3
license-file:        LICENSE
author:              Alexander Ignatyev
maintainer:          ignatyev.alexander@gmail.com
copyright:           Alexander Ignatyev
category:            math
build-type:          Simple
extra-source-files:  hmatrix-morpheus/README.md
                   , hmatrix-morpheus/CHANGELOG.md
cabal-version:       >=1.10
extra-source-files:  src/types.h
                   , src/lapack.h
                   , src/simple_blas.h
                   , src/matrix_reduce.h
                   , src/activation.h

flag openblas
  description:    Link with OpenBLAS (https://github.com/xianyi/OpenBLAS) optimized libraries.
  default:        False
  manual: True

library
  hs-source-dirs:      hmatrix-morpheus/src
  exposed-modules:     Numeric.Morpheus
                     , Numeric.Morpheus.Activation
                     , Numeric.Morpheus.MatrixReduce
  build-depends:       base >= 4.7 && < 5
                     , hmatrix >= 0.17.0.1
  default-language:    Haskell2010
  default-extensions:  ForeignFunctionInterface
  include-dirs:        src
  C-sources:           src/simple_blas.c
                     , src/matrix_reduce.c
                     , src/activation.c
  cc-options:         -O3 -Wall -std=c99
  if arch(x86_64)
    cc-options:       -msse2
  if arch(i386)
    cc-options:       -msse2

  if os(OSX)
    frameworks:       Accelerate
    cc-options:       -DACCELERATE
    extra-lib-dirs:   /opt/local/lib/
    include-dirs:     /opt/local/include/
    extra-lib-dirs:   /usr/local/lib/
    include-dirs:     /usr/local/include/
    if arch(i386)
      cc-options:     -arch i386

  if os(linux)
    if flag(openblas)
      extra-lib-dirs:     /usr/lib/openblas/lib
      extra-libraries:    openblas
    else
      extra-libraries:    blas lapack

    if arch(x86_64)
      cc-options: -fPIC

test-suite hmatrix-morpheus-test
  type:                exitcode-stdio-1.0
  hs-source-dirs:      hmatrix-morpheus/test
  main-is:             Main.hs
  other-modules:       Test.HUnit.Approx
                     , Test.HUnit.Plus
                     , Numeric.Morpheus.ActivationTest
                     , Numeric.Morpheus.MatrixReduceTest
  build-depends:       base
                     , hmatrix-morpheus
                     , hmatrix >= 0.17.0.1
                     , MonadRandom >= 0.4.2.3
                     , test-framework >= 0.8.1.1
                     , test-framework-hunit >= 0.3.0.2
                     , test-framework-quickcheck2 >= 0.3.0.3
                     , HUnit >= 1.3.1.1
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010

benchmark hmatrix-morpheus-bench
  type:                exitcode-stdio-1.0
  hs-source-dirs:      hmatrix-morpheus/bench
  main-is:             Main.hs
  other-modules:       Naive
  build-depends:       base
                     , hmatrix-morpheus
                     , hmatrix >= 0.17.0.1
                     , criterion
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010
  default-extensions:  BangPatterns
  if os(OSX)
    extra-lib-dirs:    /usr/lib

executable hmatrix-morpheus-example
  hs-source-dirs:      hmatrix-morpheus/examples
  main-is:             Main.hs
  build-depends:       base
                     , hmatrix-morpheus
                     , hmatrix >= 0.17.0.1
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010

source-repository head
  type:     git
  location: https://github.com/alexander-ignatyev/morpheus