www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Lubeck: Hight Level Linear Algebra for Dlang

reply 9il <ilyayaroshenko gmail.com> writes:
Hi

I am pleased to announce the Lubeck [1] linear algebra library 
for Dlang.
It is very easy to use and it has been tested in real world.

See the dub project example [9] to start. libblas, libcblas, and 
liblapack should be installed and defined in user's DUB 
configuration. Alternatively, user can install and link OpenBLAS, 
Apple Accelerate, ATLAS, or Intel MKL libraries.

The following functionality is implemented:

1. `mtimes` - General matrix-matrix, row-matrix, matrix-column, 
and row-column multiplications.

2. `mldivide` - Solve systems of linear equations AX = B for X. 
Computes minimum-norm solution to a linear least squares problem
if A is not a square matrix.

3. `inv` - Inverse of matrix.

4. `svd` - Singular value decomposition.

5. `pca` - Principal component analysis of raw data.

6. `pinv` - Moore-Penrose pseudoinverse of matrix.

7. `det`/`detSymmetric` - General/symmetric matrix determinant.

8. `eigSymmetric` - Eigenvalues and eigenvectors of symmetric 
matrix.


The package depends on mir-blas, mir-lapack, and mir-algorithm.

The dependency structure is:

---------------------------
cblas         ->
                    > mir-blas   ->
mir-algorithm ->                     > Lubeck
                    > mir-lapack ->
lapack        ->
---------------------------

cblas [2] and lapack [3] are plain D headers for CBLAS and LAPACK.

mir-blas [4] and mir-lapack [5] are minimal generic betterC 
NDSlice[6] wrappers for BLAS and LAPACK.

This work has been sponsored by Symmetry Investments[7] and 
Kaleidic Associates[8].

[1] http://code.dlang.org/packages/lubeck
[2] http://code.dlang.org/packages/cblas
[3] http://code.dlang.org/packages/lapack
[4] http://code.dlang.org/packages/mir-blas
[5] http://code.dlang.org/packages/mir-lapack
[6] http://code.dlang.org/packages/mir-algorithm
[7] http://symmetryinvestments.com/
[8] https://github.com/kaleidicassociates
[9] 
https://github.com/kaleidicassociates/lubeck/tree/master/example

Best regards,
Ilya
Jun 13
next sibling parent reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Tuesday, 13 June 2017 at 08:26:20 UTC, 9il wrote:
 [1] http://code.dlang.org/packages/lubeck
 https://github.com/kaleidicassociates/lubeck/tree/master/example
Nice. Will there be any matrix, vector, scalar, types with operator overloads?
Jun 15
parent reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Thursday, 15 June 2017 at 12:22:25 UTC, Nordlöw wrote:
 On Tuesday, 13 June 2017 at 08:26:20 UTC, 9il wrote:
 [1] http://code.dlang.org/packages/lubeck
 https://github.com/kaleidicassociates/lubeck/tree/master/example
Nice. Will there be any matrix, vector, scalar, types with operator overloads?
I'm guessing such a solution is not generic enough partly because D cannot define non-member operator overloads and partly because the algorithms operates on ranges.
Jun 15
parent reply jmh530 <john.michael.hall gmail.com> writes:
On Thursday, 15 June 2017 at 13:44:33 UTC, Nordlöw wrote:
 On Thursday, 15 June 2017 at 12:22:25 UTC, Nordlöw wrote:
 On Tuesday, 13 June 2017 at 08:26:20 UTC, 9il wrote:
 [1] http://code.dlang.org/packages/lubeck
 https://github.com/kaleidicassociates/lubeck/tree/master/example
Nice. Will there be any matrix, vector, scalar, types with operator overloads?
I'm guessing such a solution is not generic enough partly because D cannot define non-member operator overloads and partly because the algorithms operates on ranges.
mir.ndslice.slice has CanonicalMatrix/ContinguousMatrix, and similar versions for vectors and tensors and all the algorithms that operate on ranges in mir seem to work fine with them. Ilya has expressed his intention in the past for higher level abstractions on mir, including operator overloading. I brought up the operator overloading issue on the gradient descent thread: https://forum.dlang.org/post/ohjsuphzuapaxktgwfsp forum.dlang.org
Jun 15
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Thursday, 15 June 2017 at 14:23:29 UTC, jmh530 wrote:
 mir.ndslice.slice has CanonicalMatrix/ContinguousMatrix, and 
 similar versions for vectors and tensors and all the algorithms 
 that operate on ranges in mir seem to work fine with them.

 Ilya has expressed his intention in the past for higher level 
 abstractions on mir, including operator overloading. I brought 
 up the operator overloading issue on the gradient descent 
 thread:
 https://forum.dlang.org/post/ohjsuphzuapaxktgwfsp forum.dlang.org
Thanks.
Jun 15
prev sibling parent data pulverizer <data.pulverizer gmail.com> writes:
On Tuesday, 13 June 2017 at 08:26:20 UTC, 9il wrote:
 Hi

 I am pleased to announce the Lubeck [1] linear algebra library 
 for Dlang.
 It is very easy to use and it has been tested in real world.

 The following functionality is implemented:

 1. `mtimes` - General matrix-matrix, row-matrix, matrix-column, 
 and row-column multiplications.

 2. `mldivide` - Solve systems of linear equations AX = B for X. 
 Computes minimum-norm solution to a linear least squares problem
 if A is not a square matrix.

 3. `inv` - Inverse of matrix.

 4. `svd` - Singular value decomposition.

 5. `pca` - Principal component analysis of raw data.

 6. `pinv` - Moore-Penrose pseudoinverse of matrix.

 7. `det`/`detSymmetric` - General/symmetric matrix determinant.

 8. `eigSymmetric` - Eigenvalues and eigenvectors of symmetric 
 matrix.


 The package depends on mir-blas, mir-lapack, and mir-algorithm.
 This work has been sponsored by Symmetry Investments[7] and 
 Kaleidic Associates[8].

 Best regards,
 Ilya
This is great news! as I said in a previous discussion (https://forum.dlang.org/post/nrbcrpnvcrlqvpqholuv forum.dlang.org) a library like this is pretty important for numerical computing in D and together with Mir can form the basis of implementing algorithms for a myriad of applications in analysis. Many thanks to all those involved!
Jun 17