❗️ ndslice was reworked and moved to Mir-Algorithm.
The last Mir version with old ndslice is v0.22.1
.
❗️ Mir GLAS was moved to https://github.com/libmir/mir-glas.
Mir
Generic Numerical Library for Science and Machine Learning.
Separated Mir Projects
- Mir Algorithm - Multidimensional arrays (ndslice), iterators, algorithms.
- Mir Random - Professional Random Number Generators
- Mir GLAS - Linear Algebra Library (Experimental, not supported for now)
- Mir BLAS - Bindings to libraries with CBLAS API like OpenBLAS and Intel MKL.
- Mir LAPACK - Bindings to libraries with LAPACK API like OpenBLAS and Intel MKL.
- Mir Optim - Nonlinear Solvers.
- Mir CPUID - CPU Identification routines (less buggy then Phobos).
Documentation
Documentation API can be found here.
Contents
mir.glas
- Generic Linear Algebra Subroutinesmir.sparse
Sparse TensorsSparse
- DOK format- Different ranges for COO format
CompressedTensor
- CSR/CSC formatsmir.sparse.blas
- Sparse BLAS forCompressedTensor
mir.model.lda.hoffman
- Online variational Bayes for latent Dirichlet allocation (Online VB LDA) for sparse documents. LDA is used for topic modeling.mir.combinatorics
Combinations, combinations with repeats, cartesian power, permutations.
Compatibility
Linux | Mac OS X | Windows | |
---|---|---|---|
64-bit | |||
32-bit | N/A | N/A |
Example
/+dub.sdl:
dependency "mir" version="~>3.1.0"
+/
import std.stdio;
import mir.combinatorics;
void main(string[] args)
{
writeln([1, 2].combinations);
}
Fast setup with the dub package manager
Dub is the D's package manager. You can create a new project with:
dub init <project-name>
Now you need to edit the dub.json
add mir
as dependency.
{
...
"dependencies": {
"mir": "~><current-version>"
},
"dflags-ldc": ["-mcpu=native"]
}
Now you can create an app.d
file in the source
folder and run your code with
dub --compiler=ldmd2
Flag --build=release
and can be added for a performance boost:
dub --compiler=ldmd2 --build=release
ldmd2
is a shell on top of LDC (LLVM D Compiler).
"dflags-ldc": ["-mcpu=native"]
allows LDC to optimize Mir for your CPU.
Contributing
See our TODO List. Mir is very young and we are open for contributing to source code, documentation, examples and benchmarks.