Skip to content

Repository files navigation

QuasiMC.jl: Quasi-Monte Carlo Community Software in Julia

Doc/Unit Tests Docs and Demos Benchmarking

Benchmark Speed Benchmark Memory Contributors GitHub Stars

Unit Test Coverage Doctest Coverage Demo Coverage Benchmark Coverage

A Julia port of QMCPy — quasi-Monte Carlo point generators, measure transforms, and adaptive stopping criteria for high-dimensional numerical integration.

Quasi-Monte Carlo (QMC) methods approximate multivariate integrals using four interacting components: a discrete distribution (low-discrepancy sequence), a true measure (target probability space), an integrand (function to evaluate), and a stopping criterion (adaptive error control). QuasiMC.jl provides plug-and-play implementations of each, following the same abstract-type framework as QMCPy so that components from both libraries compose naturally.

Quick Start

From a terminal, start Julia:

julia

Then run:

using Pkg; Pkg.add(url="https://github.com/QMCSoftware/QuasiMC.jl")
using QuasiMC

dd = Lattice(3; randomize=true, seed=7)
f  = Keister(Gaussian(dd; covariance=0.5))
sc = CubQMCLatticeG(f; abs_tol=1e-3)

result = integrate(sc)
println("Estimate: $(round(result.solution, digits=5))")
println("Exact:    $(round(keister_exact(3), digits=5))")

Quit Julia with Ctrl-D or exit().

Resources

The QuasiMC.jl documentation contains a detailed API reference with doctests and a collection of rendered demo notebooks. Good starting points:

In the Julia REPL (Read-Eval-Print Loop, an interactive command-line environment for Julia), enter help mode by typing ? at the julia> prompt. The prompt changes to help?>, and then you can type the object name:

julia> using QuasiMC

julia> ?
help?> CubQMCLatticeG

From the normal Julia prompt, scripts, or notebooks, you can also inspect docstrings with:

@doc CubQMCLatticeG
@doc CubQMCBayesNetG

Installation

For users

Once QuasiMC.jl is registered in the Julia General Registry:

using Pkg
Pkg.add("QuasiMC")

Until then, install directly from GitHub:

using Pkg
Pkg.add(url="https://github.com/QMCSoftware/QuasiMC.jl")

IIDStdUniform is fully Julia-native. Lattice, DigitalNetB2, and Halton use the packaged QMCToolsCL shared library that ships through QuasiMC's staged QMCToolsCL_jll dependency, so no Python setup is required for core package usage.

Advanced users can override that shared library path before first use:

ENV["QUASIMC_QMCTOOLSCL_LIB"] = "/absolute/path/to/library"

For contributors

See the contributing guidelines for the full developer setup, testing instructions, and how to add new components.

Citation

If you find QuasiMC.jl helpful in your work, please cite:

@misc{quasimcjl2026,
  author = {Sou-Cheng T. Choi and Fred J. Hickernell and Aleksei G. Sorokin and contributors},
  title  = {{QuasiMC.jl}: Quasi-Monte Carlo Community Software in Julia},
  year   = {2026},
  url    = {https://github.com/QMCSoftware/QuasiMC.jl}
}

We maintain a list of publications on the development and use of QuasiMC.jl and QMCPy.

Development

Want to contribute to QuasiMC.jl? Please see our guidelines for contributors, which cover developer setup, running tests, building documentation, code style, and how to add new component types.

This software would not be possible without the efforts of the QMC community including our steering council, collaborators, contributors, and sponsors.

Some repository content was produced with the help of AI tools (Claude, GPT) and reviewed by the authors and contributors.

License

Apache 2.0 — see LICENSE for details.

About

QMCJu: Quasi-Monte Carlo Community Software in Julia

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages