Distributions.jl icon indicating copy to clipboard operation
Distributions.jl copied to clipboard

Add `SymmetricMvLaplace` distribution

Open dom-linkevicius opened this issue 3 months ago • 1 comments

As per title, I needed a multivariate Laplace distribution in some applications, Distributions.jl didn't seem to have it, so here is one of its versions (of the few possible). This PR follows the mathematical description provided here. A lot of the code is based on MvNormal implementation because externally they have lots of similarities.

Stuff done/to do (trying to follow the requirements outlined in the docs:

  • [x] length
  • [ ] sampler - it wasn't immediately obvious to me that a more efficient sampler for batches exists, so I didn't implement one. If I am missing something, please let me know and I'll try to implement it.
  • [x] eltype
  • [x] Distributions._rand!
  • [x] Distributions._logpdf
  • [x] mean
  • [x] var
  • [x] cov
  • [x] invcov

Feedback welcome!

dom-linkevicius avatar Oct 02 '25 10:10 dom-linkevicius

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 86.44%. Comparing base (bbdd4f1) to head (b3a6400).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2004      +/-   ##
==========================================
+ Coverage   86.35%   86.44%   +0.08%     
==========================================
  Files         146      147       +1     
  Lines        8782     8835      +53     
==========================================
+ Hits         7584     7637      +53     
  Misses       1198     1198              

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

codecov-commenter avatar Oct 02 '25 10:10 codecov-commenter