package lacaml

  1. Overview
  2. Docs

11.0.10 (2023-05-16)

  • Fixed platform configuration bug

11.0.9 (2023-05-05)

  • Fixed a bug in the bytecode bindings for lamch, which also affected syevr. These functions should now not crash anymore when compiling to bytecode or using the OCaml interpreter.

    Thanks to Philippe Veber for the bug report!

  • Added support for Apple Silicon.

    Thanks to Marcello Seri for this contribution!

  • Improved Dune build rules

11.0.8 (2020-08-15)

  • Improved detection of (complex) dotu and dotc calling conventions.

11.0.7 (2020-07-30)

  • Removed package dependencies on stdio and base. This allows testing with the new OCaml multicore compiler, which as of now does not yet support these libraries.

    Thanks to Anthony Scemama for this contribution!

  • Added support for const char strings in stubs due to stricter handling in newer OCaml runtimes. This eliminates C-compiler warnings.

11.0.6 (2020-01-23)

  • Switched to OPAM file generation via dune-project

  • Added missing autogenerated dependencies to dune file to avoid build system race conditions.

11.0.5 (2019-10-11)

  • Fixed warnings in C-stubs

11.0.4 (2019-05-21)

  • Fixed an API misspecification in ptsv, which leads to incorrect results.

Thanks to Nicolas Ratier for the bug report!

11.0.3 (2018-12-31)

  • Fixed a portability bug in (complex) dotu and dotc due to BLAS API incompatibilities between different platforms.

11.0.2 (2018-10-24)

  • Switched to dune, dune-release, and OPAM 2.0

11.0.1 (2018-05-23)

  • Fixed warnings and errors in configuration code due to upstream changes.

  • Fixed bug in Vec.ssqr.

11.0.0 (2018-02-28)


  • User code changes in existing code required! User code may still compile, but can behave differently!

    The following functions are affected:

    • potrf

    • potri

    • potrs

    The above functions now do not support the jitter argument anymore. Users should remove the flag from calls to the above functions and call the new Mat.add_const_diag function if they need to add jitter. This call should happen right before the (now required) call to potrf.

    More importantly, potri and potrs now do not support the factorize flag anymore, which would call potrf automatically beforehand. This was the (ill-conceived) default, which makes it harder to port LAPACK code to Lacaml. In order to upgrade your code, please do the following:

    • If potri or potrs were passed ~factorize:false, just remove the flag.

    • If potri or potrs were passed ~factorize:true or were called without the factorize flag, remove the flag if necessary and call potrf with the exactly corresponding arguments before.

    Luckily, these functions are typically used rarely, and the changes are trivial. Apologies anyway for the churn!

  • New functions

    • Mat.add_const_diag for adding a constant to the diagonal of a (sub-)matrix.

  • orgqr now detects if m < n and raises an exception instead of printing a Fortran error message and continuing.

  • Eigenvalue offsets should now work correctly.

  • Improved documentation.

10.0.2 (2017-11-08)

  • Fixed bugs accessing lower pentagonal matrix patterns

  • Fixed library override issue on Mac OS X

10.0.1 (2017-10-21)

  • Fixed wrongly capitalized build targets missed due to Mac OS X file system case insensitivity.

10.0.0 (2017-10-20)

  • Switched to jbuilder and topkg

  • API changes

    • trmm and trsm now do not label argument a anymore

    • Many matrix functions now support an optional patt argument, which can be used to specify rectangular, triagonal, trapezoidal, and pentagonal patterns on which to perform an operation.

    • New functions

      • Mat.sum_prod computes the sum of element-wise products of two matrices. Some use cases are already covered by Mat.gemm_trace, but the latter does not support patterns.

  • Improved C-code to better support SIMD compiler optimizations

  • Many internal improvements, including untagged and unboxed passing of parameters to and from external functions.

  • Compilation now uses -march=native -O3 -ffast-math by default, which should be safe and exploit SIMD on platforms that support it to greatly improve performance of some operations.

  • Improved documentation

  • Improved configuration and build process