The CUBA library provides four general-purpose multidimensional numerical integration algorithms: Vegas, Suave, Divonne, and Cuhre. These algorithms are designed to handle vector integrands and offer similar interfaces in Fortran, C/C++, and Mathematica. Each algorithm has unique features and strengths:
- **Vegas**: A Monte Carlo method that uses importance sampling for variance reduction. It has been improved with Sobol quasi-random numbers and the ability to increase the number of samples in each iteration.
- **Suave**: Combines importance sampling with a globally adaptive subdivision strategy. It divides the integration region into subregions and selects the subregion with the largest error for further subdivision.
- **Divonne**: Uses stratified sampling and numerical optimization to find the minimum and maximum of the integrand. It includes features like specifying peak locations and handling integrands near the integration border.
- **Cuhre**: A deterministic algorithm that uses a globally adaptive subdivision scheme with cubature rules. It is particularly effective in moderate dimensions.
All algorithms are available for download and compilation, with detailed usage instructions provided for Fortran, C/C++, and Mathematica. The library has been thoroughly tested, and the author welcomes feedback and reports of bugs and performance issues.The CUBA library provides four general-purpose multidimensional numerical integration algorithms: Vegas, Suave, Divonne, and Cuhre. These algorithms are designed to handle vector integrands and offer similar interfaces in Fortran, C/C++, and Mathematica. Each algorithm has unique features and strengths:
- **Vegas**: A Monte Carlo method that uses importance sampling for variance reduction. It has been improved with Sobol quasi-random numbers and the ability to increase the number of samples in each iteration.
- **Suave**: Combines importance sampling with a globally adaptive subdivision strategy. It divides the integration region into subregions and selects the subregion with the largest error for further subdivision.
- **Divonne**: Uses stratified sampling and numerical optimization to find the minimum and maximum of the integrand. It includes features like specifying peak locations and handling integrands near the integration border.
- **Cuhre**: A deterministic algorithm that uses a globally adaptive subdivision scheme with cubature rules. It is particularly effective in moderate dimensions.
All algorithms are available for download and compilation, with detailed usage instructions provided for Fortran, C/C++, and Mathematica. The library has been thoroughly tested, and the author welcomes feedback and reports of bugs and performance issues.