HNumeric: Haskell Numeric Library with pure functionality, R & MATLAB Syntax.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Please see the README on GitHub at https://github.com/Axect/HNumeric#readme


[Skip to ReadMe]

Properties

Versions0.2.0.0, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.3.1.0, 0.3.2.0, 0.3.3.0, 0.4.0.0, 0.5.0.0, 0.5.0.1, 0.5.0.2
Change logChangeLog.md
Dependenciesbase (>=4.7 && <5), HNumeric, normaldistribution [details]
LicenseBSD-3-Clause
Copyright2018 Tae Geun Kim
AuthorTae Geun Kim
Maintaineredeftg@gmail.com
CategoryHNum, library, Numeric, LinearAlgebra, Statistics, bsd3
Home pagehttps://github.com/Axect/HNumeric#readme
Bug trackerhttps://github.com/Axect/HNumeric/issues
Source repositoryhead: git clone https://github.com/Axect/HNumeric
ExecutablesHNumeric-exe
UploadedThu Jun 7 07:03:35 UTC 2018 by edeftg

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for HNumeric-0.2.0.0

[back to package description]

HNumeric

Travis

Packages

Installation

1. Native Use

You can use this package just change app/Main.hs Then, just type next command

git clone https://github.com/Axect/HNumeric

2. Cabal Install

First, install prerequisite.

cabal install normaldistribution

Second, install tarball & unpack.

export VERSION=0.2.0.0

wget -O HNumeric-${VERSION}.tar.gz https://github.com/Axect/HNumeric/blob/master/dist/HNumeric-${VERSION}.tar.gz\?raw\=true

tar -xvf HNumeric-${VERSION}.tar.gz

Finally, build & install

cabal build
cabal install

Finish!

3. Import to Stack project

If you use this package to your own project, then you should change stack.yaml and package.yaml

1) Change stack.yaml

# In stack.yaml
extra-deps:
  - git: https://github.com/Axect/HNumeric.git
    commit: [Latest Commit]
  - normaldistribution-1.1.0,3

2) Change package.yaml

# In package.yaml
dependecies:
- base
- HNumeric
- normaldistribution

Then enjoy!

Usage

Import Module

Basic Vector Usage

-- HNumeric-0.2.0.0 Documentation

let a = vector [1,2,3] -- Vector declaration
let b = vector [4,5,6]

-- Print Vector
print a

-- You can (+1) by fmap (Vector is functor)
(+1) <$> a 

-- Or MATLAB-like operator (.+, .-, .*, ./, .^)
a .+ 1

-- You can make list from vector
toList a -- [1, 2, 3]

-- You can make vector from list
fromList [1,2,3] -- Vector [1,2,3]

-- You can add (subtract, multiply, divide) vectors
a + b -- Vector [5,7,9]

-- Also dot product is here.
a .*. b -- 1*4 + 2*5 + 3*6 = 32

-- Declare Matrix (Syntactic Sugar)
let c = matrix [[1,2],[3,4]]

-- or Declare using R Syntax
let d = Matrix {val = Vector [5,6,7,8], row = 2, col = 2, byRow = True}

-- Determinant
det c

-- Inverse
inv c

-- Transpose
transpose c

-- Matrix ops with Constant (+, -, *, /, ^)
c .+ 1 -- Matrix [[2,3],[4,5]]

-- Matrix ops with Matrix (+, -)
c + c -- Matrix [[2,4],[6,8]]

-- Matrix Multiplication
c %*% d

-- Matrix - Inverse Multiplication
c %/% d

-- Vector Concatenate
hcat a b -- Vector [1,2,3,4,5,6]
vcat a b -- Matrix [[1,2,3],[4,5,6]]

-- Matrix Concatenate
hcat c d -- Matrix [[1,2,5,6],[3,4,7,8]]
vcat c d -- Matrix [[1,2],[3,4],[5,6],[7,8]]

-- Insert Vector to Matrix
Vector [1, 2] .: c -- Matrix [[1,2],[1,2],[3,4]]

Basic Stats Usage

-- Sample Vector (import Vector)
v = Vector [1..10]
w = Vector [10, 9 .. 1]

-- Mean
mean v

-- Var
var v

-- Std
std v

-- Cov Matrix
cov v w

-- Only Cov
cov' v w

-- Linear Fit
(intercept, slope) = lm v w -- (11.0, -1.0) -- (Intercept, Slope)

-- Linear Fit function
lineFit (intercept, slope) (Vector [1 .. 20])

-- RSS
rss v w

-- RSE
rse v w

TODO