# jalla: Higher level functions for linear algebra. Wraps BLAS and LAPACKE.

[ library, math ] [ Propose Tags ]

Jalla aims at providing high level functions for linear algebra computations which should be fast and easy enough to use. Under the hood, BLAS and LAPACKE are used (LAPACKE is a standard C interface to LAPACK which is part of LAPACK since version 3.4). Currently, I am adding new functions whenever I find some time. Please help, if you want to! There are not many tests yet, and we need some nicer error reporting (nicer than exceptions).

Versions 0.1.0, 0.1.0.1, 0.2, 0.2.0.1 base (>4.0.0 && <4.6.0), convertible, mtl, QuickCheck (>=2.4.2), random (>=1.0.1) [details] BSD-3-Clause 2011-2012, Christian Gosch Christian Gosch Christian Gosch Math https://github.com/cgo/jalla head: git clone git://github.com/cgo/jalla.git by ChristianGosch at Thu Mar 22 22:23:53 UTC 2012 NixOS:0.2.0.1 1308 total (16 in the last 30 days) (no votes yet) [estimated by rule of succession] λ λ λ Docs not available All reported builds failed as of 2016-12-25 Hackage Matrix CI

## Modules

• Numeric
• Numeric.Jalla
• Foreign
• Numeric.Jalla.Foreign.BLAS
• Numeric.Jalla.Foreign.BlasOps
• Numeric.Jalla.Foreign.LAPACKE
• Numeric.Jalla.Foreign.LapackeOps
• Numeric.Jalla.IMM
• Numeric.Jalla.Indexable
• Numeric.Jalla.InnerProduct
• Numeric.Jalla.Matrix
• Numeric.Jalla.Test
• Numeric.Jalla.Types
• Numeric.Jalla.Vector

## Flags

NameDescriptionDefaultType
build_lapacke

If true, try to build lapacke in the ./lapacke directory of the jalla package.

DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

#### Maintainer's Corner

For package maintainers and hackage trustees

[back to package description]
Jalla aims at providing high level functions for linear algebra computations,
which should be fast and easy enough to use.
It also contains a Haskell wrapper for cblas and lapacke, a C interface for LAPACK written by Intel.
Jalla is written and maintained by Christian Gosch (github at goschs dot de) and
was started as a little project to learn Haskell.

Jalla (probably) needs ghc, it has not been tested with other Haskell implementations.
It is developed with ghc > 7.0.

You need to have CBLAS and LAPACK installed, e.g. by installing ATLAS generated libraries
on you computer.
In Ubuntu, there are packages for CBLAS and LAPACK which you can install with apt-get,
synaptic, or any other such tool.
Lapacke must be compiled "by hand".

0. Get the jalla sources; say they are located in the directory "jalla/"
1. a) LAPACKE is part of LAPACK since version 3.4.
If you have that version, use that. Otherwise, follow b).
b) Get Lapacke at <http://www.netlib.org/lapack/lapacke.tgz>
or at <http://www.netlib.org/lapack/#_standard_c_language_apis_for_lapack>
2. Unpack lapacke into "./lapacke" in the top jalla directory.
3. (Follow lapacke's instructions to build)
/OR/ use the shiny new SCons file provided to build lapacke
for use with jalla, which can be found in the lapacke/ sub-directory
in the jalla source code.

Note that now, you can also let the Setup.hs script do the work right before configuring:
should build lapacke right before configuring jalla.

If you don't use the provided SCons file,
note that Jalla expects the LAPACKE_... naming scheme, i.e. LAPACKE in upper case,
the rest in lower case. That scheme is called LAPACK_NAME_PATTERN_MC in the LAPACKE make.inc
file.
Jalla also expects the define LAPACK_COMPLEX_STRUCTURE in the same make.inc.
This means that complex numbers are represented as C struct.
4. In jalla/, call
cabal configure
cabal build
5. Look at the generated documentation, which is getting better now.

Documentation
-------------
I will add more. The most important things are documented.

Status
------
The code may change in some places, and will definitely be growing as soon as I need more functionality.
Please let me know if you have suggestions.

Please also tell me if you have a greater interest in this project and want to participate!