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 +5/−0
- README.md +18/−18
- hypergeomatrix.cabal +51/−45
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