From 72362f3404bb1f36d8828e0b18e04de7ee98780e Mon Sep 17 00:00:00 2001 From: Andrei Fedorov Date: Thu, 22 Aug 2024 11:14:09 +0200 Subject: [PATCH] [oneMKL][RNG] Extend parameter type for random distributions (#557) * make changes for poisson_v * fix markup * generalize type * more fixes for lambda * added more distributions --- .../rng/host_api/mkl-rng-gaussian_mv.rst | 31 ++++++++++--------- .../rng/host_api/mkl-rng-multinomial.rst | 23 ++++++++------ .../rng/host_api/mkl-rng-poisson_v.rst | 28 ++++++++++------- 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-gaussian_mv.rst b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-gaussian_mv.rst index 07233ac45e..1232a5377d 100755 --- a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-gaussian_mv.rst +++ b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-gaussian_mv.rst @@ -26,6 +26,9 @@ The probability density function is given by: class gaussian_mv ----------------- +Let ``SequenceContainerOrView`` be a type that can be one of C++ Sequence containers or C++ Views (``span``, ``mdspan``). +It's implementation defined which type ``SequenceContainerOrView`` represents. + .. rubric:: Syntax .. code-block:: cpp @@ -36,10 +39,10 @@ class gaussian_mv public: using method_type = Method; using result_type = RealType; - explicit gaussian_mv(std::uint32_t dimen, std::vector mean, std::vector matrix); + explicit gaussian_mv(std::uint32_t dimen, SequenceContainerOrView mean, SequenceContainerOrView matrix); std::int32_t dimen() const; - std::vector mean() const; - std::vector matrix() const; + SequenceContainerOrView mean() const; + SequenceContainerOrView matrix() const; }; } @@ -85,13 +88,13 @@ class gaussian_mv * - Routine - Description - * - `explicit gaussian_mv(std::uint32_t dimen, std::vector mean, std::vector matrix)`_ + * - `explicit gaussian_mv(std::uint32_t dimen, SequenceContainerOrView mean, SequenceContainerOrView matrix)`_ - Constructor with parameters * - `std::int32_t dimen() const`_ - Method to obtain number of dimensions in output random vectors - * - `std::vector mean() const`_ + * - `SequenceContainerOrView mean() const`_ - Method to obtain mean vector `a` of dimension d. - * - `std::vector matrix() const`_ + * - `SequenceContainerOrView matrix() const`_ - Method to obtain variance-covariance matrix `C` .. container:: section @@ -128,17 +131,17 @@ class gaussian_mv .. container:: section - .. _`explicit gaussian_mv(std::uint32_t dimen, std::vector mean, std::vector matrix)`: + .. _`explicit gaussian_mv(std::uint32_t dimen, SequenceContainerOrView mean, SequenceContainerOrView matrix)`: .. code-block:: cpp - explicit gaussian_mv::gaussian_mv(std::uint32_t dimen, std::vector mean, std::vector matrix) + explicit gaussian_mv::gaussian_mv(std::uint32_t dimen, SequenceContainerOrView mean, SequenceContainerOrView matrix) .. container:: section .. rubric:: Description - Constructor with parameters. `dimen` is the number of dimensions, `mean` is a mean vector, `matrix` is a variance-covariance matrix. + Constructor with parameters. ``dimen`` is the number of dimensions, ``mean`` is a mean vector, ``matrix`` is a variance-covariance matrix. .. container:: section @@ -167,11 +170,11 @@ class gaussian_mv .. container:: section - .. _`std::vector mean() const`: + .. _`SequenceContainerOrView mean() const`: .. code-block:: cpp - std::vector gaussian_mv::mean() const + SequenceContainerOrView gaussian_mv::mean() const .. container:: section @@ -181,11 +184,11 @@ class gaussian_mv .. container:: section - .. _`std::vector matrix() const`: + .. _`SequenceContainerOrView matrix() const`: .. code-block:: cpp - std::vector gaussian_mv::matrix() const + SequenceContainerOrView gaussian_mv::matrix() const .. container:: section @@ -193,4 +196,4 @@ class gaussian_mv Returns the variance-covariance matrix. -**Parent topic:** :ref:`onemkl_rng_distributions` +**Parent topic:** :ref:`onemkl_rng_distributions` diff --git a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-multinomial.rst b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-multinomial.rst index c98a9e1b95..5cd9433328 100644 --- a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-multinomial.rst +++ b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-multinomial.rst @@ -26,6 +26,9 @@ The probability distribution is given by: class multinomial ----------------- +Let ``SequenceContainerOrView`` be a type that can be one of C++ Sequence containers or C++ Views (``span``, ``mdspan``). +It's implementation defined which type ``SequenceContainerOrView`` represents. + .. rubric:: Syntax .. code-block:: cpp @@ -36,9 +39,9 @@ class multinomial public: using method_type = Method; using result_type = IntType; - explicit multinomial(double ntrial, std::vector p); + explicit multinomial(double ntrial, SequenceContainerOrView p); std::int32_t ntrial() const; - std::vector p() const; + SequenceContainerOrView p() const; }; } @@ -72,12 +75,12 @@ class multinomial * - Routine - Description - * - `explicit multinomial(double ntrial, std::vector p)`_ + * - `explicit multinomial(double ntrial, SequenceContainerOrView p)`_ - Constructor with parameters * - `std::int32_t ntrial() const`_ - Method to obtain number of independent trials - * - `std::vector p() const`_ - - Method to obtain probability vector of possible outcomes + * - `SequenceContainerOrView p() const`_ + - Method to obtain a probability parameter of possible outcomes .. container:: section @@ -113,17 +116,17 @@ class multinomial .. container:: section - .. _`explicit multinomial(double ntrial, std::vector p)`: + .. _`explicit multinomial(double ntrial, SequenceContainerOrView p)`: .. code-block:: cpp - explicit multinomial::multinomial(double ntrial, std::vector p) + explicit multinomial::multinomial(double ntrial, SequenceContainerOrView p) .. container:: section .. rubric:: Description - Constructor with parameters. `ntrial` is a number of independent trials, `p` is a probability vector. + Constructor with parameters. ``ntrial`` is a number of independent trials, ``p`` is a probability parameter. .. container:: section @@ -152,11 +155,11 @@ class multinomial .. container:: section - .. _`std::vector p() const`: + .. _`SequenceContainerOrView p() const`: .. code-block:: cpp - std::vector multinomial::p() const + SequenceContainerOrView multinomial::p() const .. container:: section diff --git a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-poisson_v.rst b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-poisson_v.rst index 7f85dcc0ce..9d699eab2e 100644 --- a/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-poisson_v.rst +++ b/source/elements/oneMKL/source/domains/rng/host_api/mkl-rng-poisson_v.rst @@ -13,7 +13,8 @@ Class is used for generation of Poisson distributed integer types random numbers .. rubric:: Description -The class object is used in the :ref:`oneapi::mkl::rng::generate()` function to provide n random numbers Poisson distributed, with distribution parameter :math:`\lambda_i`, where :math:`\lambda_i \in R; \lambda_i > 0; i = 1, ... , n`. +The class object is used in the :ref:`oneapi::mkl::rng::generate()` function to provide +n random numbers Poisson distributed, with distribution parameter :math:`\lambda_i`, where :math:`\lambda_i \in R; \lambda_i > 0; i = 1, ... , n`. The probability distribution is given by: @@ -32,6 +33,9 @@ The cumulative distribution function is as follows: class poisson_v --------------- +Let ``SequenceContainerOrView`` be a type that can be one of C++ Sequence containers or C++ Views (``span``, ``mdspan``). +It's implementation defined which type ``SequenceContainerOrView`` represents. + .. rubric:: Syntax .. code-block:: cpp @@ -42,8 +46,8 @@ class poisson_v public: using method_type = Method; using result_type = IntType; - explicit poisson_v(std::vector lambda); - std::vector lambda() const; + explicit poisson_v(SequenceContainerOrView lambda); + SequenceContainerOrView lambda() const; }; } @@ -76,9 +80,9 @@ class poisson_v * - Routine - Description - * - `explicit poisson_v(std::vector lambda)`_ + * - `explicit poisson_v(SequenceContainerOrView lambda)`_ - Constructor with parameters - * - `std::vector lambda() const`_ + * - `SequenceContainerOrView lambda() const`_ - Method to obtain distribution parameter .. container:: section @@ -115,17 +119,17 @@ class poisson_v .. container:: section - .. _`explicit poisson_v(std::vector lambda)`: + .. _`explicit poisson_v(SequenceContainerOrView lambda)`: .. code-block:: cpp - explicit poisson_v::poisson_v(std::vector lambda) + explicit poisson_v::poisson_v(SequenceContainerOrView lambda) .. container:: section .. rubric:: Description - Constructor with parameters. `lambda` is a distribution parameter. + Constructor with parameters. ``lambda`` is a distribution parameter. .. container:: section @@ -140,16 +144,16 @@ class poisson_v .. container:: section - .. _`std::vector lambda() const`: + .. _`SequenceContainerOrView lambda() const`: .. code-block:: cpp - double poisson_v::lambda() const + SequenceContainerOrView poisson_v::lambda() const .. container:: section .. rubric:: Return Value - Returns the distribution parameter `lambda`. + Returns the distribution parameter ``lambda``. -**Parent topic:** :ref:`onemkl_rng_distributions` +**Parent topic:** :ref:`onemkl_rng_distributions`