packages feed

hypergeomatrix 1.0.0.0 → 1.1.0.0

raw patch · 3 files changed

+74/−63 lines, 3 filesdep ~containersdep ~tastydep ~tasty-hunitPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: containers, tasty, tasty-hunit

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@ 1.0.0.0 ------- * initial release++1.1.0.0+-------+* upgrade version bounds of the 'containers' dependency+* fixed LaTeX code in README
README.md view
@@ -2,39 +2,39 @@  ## Evaluation of the hypergeometric function of a matrix argument (Koev & Edelman's algorithm) -Let $(a\_1, \ldots, a\_p)$ and $(b\_1, \ldots, b\_q)$ be two vectors of real or +Let $(a_1, \ldots, a_p)$ and $(b_1, \ldots, b_q)$ be two vectors of real or  complex numbers, possibly empty, $\alpha > 0$ and $X$ a real symmetric or a  complex Hermitian matrix.  The corresponding *hypergeometric function of a matrix argument* is defined by  -$${}\_pF\_q^{(\alpha)} \left(\begin{matrix} a\_1, \ldots, a\_p \\\\ b\_1, \ldots, b\_q\end{matrix}; X\right) = \sum\_{k=0}^{\infty}\sum\_{\kappa \vdash k} \frac{{(a\_1)}\_{\kappa}^{(\alpha)} \cdots {(a\_p)}\_{\kappa}^{(\alpha)}} {{(b\_1)}\_{\kappa}^{(\alpha)} \cdots {(b\_q)}\_{\kappa}^{(\alpha)}} \frac{C\_{\kappa}^{(\alpha)}(X)}{k!}.$$+$${}_pF_q^{(\alpha)} \left(\begin{matrix} a_1, \ldots, a_p \\\\ b_1, \ldots, b_q\end{matrix}; X\right) = \sum_{k=0}^{\infty}\sum_{\kappa \vdash k} \frac{{(a_1)}_{\kappa}^{(\alpha)} \cdots {(a_p)}_{\kappa}^{(\alpha)}} {{(b_1)}_{\kappa}^{(\alpha)} \cdots {(b_q)}_{\kappa}^{(\alpha)}} \frac{C_{\kappa}^{(\alpha)}(X)}{k!}.$$  The inner sum is over the integer partitions $\kappa$ of $k$ (which we also -denote by $|\kappa| = k$). The symbol ${(\cdot)}\_{\kappa}^{(\alpha)}$ is the +denote by $|\kappa| = k$). The symbol ${(\cdot)}_{\kappa}^{(\alpha)}$ is the  *generalized Pochhammer symbol*, defined by -$${(c)}^{(\alpha)}\_{\kappa} = \prod\_{i=1}^{\ell}\prod\_{j=1}^{\kappa\_i} \left(c - \frac{i-1}{\alpha} + j-1\right)$$+$${(c)}^{(\alpha)}_{\kappa} = \prod_{i=1}^{\ell}\prod_{j=1}^{\kappa_i} \left(c - \frac{i-1}{\alpha} + j-1\right)$$ -when $\kappa = (\kappa\_1, \ldots, \kappa\_\ell)$. -Finally, $C\_{\kappa}^{(\alpha)}$ is a *Jack function*. +when $\kappa = (\kappa_1, \ldots, \kappa_\ell)$. +Finally, $C_{\kappa}^{(\alpha)}$ is a *Jack function*.  Given an integer partition $\kappa$ and $\alpha > 0$, and a  real symmetric or complex Hermitian matrix $X$ of order $n$,  the Jack function  -$$C\_{\kappa}^{(\alpha)}(X) = C\_{\kappa}^{(\alpha)}(x\_1, \ldots, x\_n)$$+$$C_{\kappa}^{(\alpha)}(X) = C_{\kappa}^{(\alpha)}(x_1, \ldots, x_n)$$  is a symmetric homogeneous polynomial of degree $|\kappa|$ in the -eigen values $x\_1$, $\ldots$, $x\_n$ of $X$. +eigen values $x_1$, $\ldots$, $x_n$ of $X$.   The series defining the hypergeometric function does not always converge.  See the references for a discussion about the convergence.   The inner sum in the definition of the hypergeometric function is over  all partitions $\kappa \vdash k$ but actually -$C\_{\kappa}^{(\alpha)}(X) = 0$ when $\ell(\kappa)$, the number of non-zero +$C_{\kappa}^{(\alpha)}(X) = 0$ when $\ell(\kappa)$, the number of non-zero  entries of $\kappa$, is strictly greater than $n$. -For $\alpha=1$, $C\_{\kappa}^{(\alpha)}$ is a *Schur polynomial* and it is +For $\alpha=1$, $C_{\kappa}^{(\alpha)}$ is a *Schur polynomial* and it is  a *zonal polynomial* for $\alpha = 2$.  In random matrix theory, the hypergeometric function appears for $\alpha=2$  and $\alpha$ is omitted from the notation, implicitely assumed to be $2$. @@ -42,19 +42,19 @@ Koev and Edelman (2006) provided an efficient algorithm for the evaluation  of the truncated series  -$$\sideset{\_p^m}{\_q^{(\alpha)}}F \left(\begin{matrix} a\_1, \ldots, a\_p \\\\ b\_1, \ldots, b\_q\end{matrix}; X\right) = \sum\_{k=0}^{m}\sum\_{\kappa \vdash k} \frac{{(a\_1)}\_{\kappa}^{(\alpha)} \cdots {(a\_p)}\_{\kappa}^{(\alpha)}} {{(b\_1)}\_{\kappa}^{(\alpha)} \cdots {(b\_q)}\_{\kappa}^{(\alpha)}} -\frac{C\_{\kappa}^{(\alpha)}(X)}{k!}.$$+$$\sideset{_p^m}{_q^{(\alpha)}}F \left(\begin{matrix} a_1, \ldots, a_p \\\\ b_1, \ldots, b_q\end{matrix}; X\right) = \sum_{k=0}^{m}\sum_{\kappa \vdash k} \frac{{(a_1)}_{\kappa}^{(\alpha)} \cdots {(a_p)}_{\kappa}^{(\alpha)}} {{(b_1)}_{\kappa}^{(\alpha)} \cdots {(b_q)}_{\kappa}^{(\alpha)}} +\frac{C_{\kappa}^{(\alpha)}(X)}{k!}.$$  Hereafter, $m$ is called the *truncation weight of the summation*  (because $|\kappa|$ is called the weight of $\kappa$), the vector -$(a\_1, \ldots, a\_p)$ is called the vector of *upper parameters* while -the vector $(b\_1, \ldots, b\_q)$ is called the vector of *lower parameters*. -The user has to supply the vector $(x\_1, \ldots, x\_n)$ of the eigenvalues +$(a_1, \ldots, a_p)$ is called the vector of *upper parameters* while +the vector $(b_1, \ldots, b_q)$ is called the vector of *lower parameters*. +The user has to supply the vector $(x_1, \ldots, x_n)$ of the eigenvalues  of $X$.   For example, to compute -$$\sideset{\_2^{15}}{\_3^{(2)}}F \left(\begin{matrix} 3, 4 \\\\ 5, 6, 7\end{matrix}; 0.1, 0.4\right)$$+$$\sideset{_2^{15}}{_3^{(2)}}F \left(\begin{matrix} 3, 4 \\\\ 5, 6, 7\end{matrix}; 0.1, 0.4\right)$$  you have to enter  @@ -91,10 +91,10 @@  For $n = 1$, the hypergeometric function of a matrix argument is known as the  [generalized hypergeometric function](https://mathworld.wolfram.com/HypergeometricFunction.html). -It does not depend on $\alpha$. The case of $\sideset{\_{2\thinspace}^{}}{\_1^{}}F$ is the most known, +It does not depend on $\alpha$. The case of $\sideset{_{2\thinspace}^{}}{_1^{}}F$ is the most known,  this is the Gauss hypergeometric function. Let's check a value. It is known that -$$\sideset{\_{2\thinspace}^{}}{\_1^{}}F \left(\begin{matrix} 1/4, 1/2 \\\\ 3/4\end{matrix}; 80/81\right) = 1.8.$$+$$\sideset{_{2\thinspace}^{}}{_1^{}}F \left(\begin{matrix} 1/4, 1/2 \\\\ 3/4\end{matrix}; 80/81\right) = 1.8.$$  Since $80/81$ is close to $1$, the convergence is slow. We compute the truncated series below  for $m = 300$.
hypergeomatrix.cabal view
@@ -1,49 +1,55 @@-cabal-version:       2.2-name:                hypergeomatrix-version:             1.0.0.0-synopsis:            Hypergeometric function of a matrix argument-description:         Evaluation of hypergeometric functions of a matrix argument,-                     following Koev & Edelman's algorithm.-homepage:            https://github.com/stla/hypergeomatrix#readme-license:             BSD-3-Clause-license-file:        LICENSE-author:              Stéphane Laurent-maintainer:          laurent_step@outlook.fr-copyright:           2022 Stéphane Laurent-category:            Math, Numeric-build-type:          Simple-extra-source-files:  README.md-                     CHANGELOG.md+cabal-version:      2.2+name:               hypergeomatrix+version:            1.1.0.0+license:            BSD-3-Clause+license-file:       LICENSE+copyright:          2022 Stéphane Laurent+maintainer:         laurent_step@outlook.fr+author:             Stéphane Laurent+homepage:           https://github.com/stla/hypergeomatrix#readme+synopsis:           Hypergeometric function of a matrix argument+description:+    Evaluation of hypergeometric functions of a matrix argument,+    following Koev & Edelman's algorithm. +category:           Math, Numeric+build-type:         Simple+extra-source-files:+    README.md+    CHANGELOG.md++source-repository head+    type:     git+    location: https://github.com/stla/hypergeomatrix+ library-  hs-source-dirs:      src-  exposed-modules:     Math.HypergeoMatrix-  other-modules:       Math.HypergeoMatrix.HypergeoMatrix-                     , Math.HypergeoMatrix.Internal-                     , Math.HypergeoMatrix.Gaussian-  build-depends:       base >= 4.7 && < 5-                     , array >= 0.5.4.0 && < 0.6-                     , containers >= 0.6.4.1 && < 0.7-                     , cyclotomic >= 1.1.1 && < 1.2-  other-extensions:    BangPatterns-                     , DefaultSignatures-                     , ScopedTypeVariables-                     , TypeFamilies-                     , TypeSynonymInstances-  default-language:    Haskell2010-  ghc-options:         -Wall+    exposed-modules:  Math.HypergeoMatrix+    hs-source-dirs:   src+    other-modules:+        Math.HypergeoMatrix.HypergeoMatrix+        Math.HypergeoMatrix.Internal+        Math.HypergeoMatrix.Gaussian -test-suite unit-tests-  type:                 exitcode-stdio-1.0-  main-is:              Main.hs-  hs-source-dirs:       tests/-  other-modules:        Approx-  Build-Depends:        base >= 4.7 && < 5-                      , tasty-                      , tasty-hunit-                      , hypergeomatrix-  Default-Language:     Haskell2010+    default-language: Haskell2010+    other-extensions:+        BangPatterns DefaultSignatures ScopedTypeVariables TypeFamilies+        TypeSynonymInstances -source-repository head-  type:     git-  location: https://github.com/stla/hypergeomatrix+    ghc-options:      -Wall+    build-depends:+        base >=4.7 && <5,+        array >=0.5.4.0 && <0.6,+        containers >=0.6.5.1 && <0.7,+        cyclotomic >=1.1.1 && <1.2++test-suite unit-tests+    type:             exitcode-stdio-1.0+    main-is:          Main.hs+    hs-source-dirs:   tests/+    other-modules:    Approx+    default-language: Haskell2010+    build-depends:+        base >=4.7 && <5,+        tasty >=1.4.2.3 && <1.5,+        tasty-hunit >=0.10.0.3 && <0.11,+        hypergeomatrix -any