o
    i                     @   s\   d dl Z d dlZd dlmZ d dlmZ dd Zdd Zdd	 Z	d
d Z
dd Zdd ZdS )    N)special)primes_from_2_toc                 C   s   t t| S N)r   mathceil)n r   X/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/scipy/stats/tests/data/_mvt.py_primes   s   r
   c                 C   s   t || S r   )r   gammaincinv)abr   r   r	   _gaminv   s   r   c                  C   sR  t dt|}t||| || \}}}	t|}
d}t| | }t|}d}d}ttd|
 t	|
d  d }|ddtj
f }d}d}t|D ]}| }t|
|f}t|
D ]}tdt|| td|d  |  d d }|dkr|}|dkrtdt||d  }nt|||  }||d  ||d|d |f | 7  < ||ddf }| }|| | | }| }|	| | | }d||dk< t|d	k }t|| ||< d||dk< t|d	k }t|| ||< || }|| }q_t|| |d  }|| }|d | |d  |d  }qNt|}||fS )
a  Estimates the multivariate t CDF using randomized QMC

    Parameters
    ----------
    m : int
        The number of points
    nu : float
        Degrees of freedom
    sigma : ndarray
        A 2D positive semidefinite covariance matrix
    a : ndarray
        Lower integration limits
    b : ndarray
        Upper integration limits.
    rng : Generator
        Pseudorandom number generator

    Returns
    -------
    p : float
        The estimated CDF.
    e : float
        An absolute error estimate.

       
   r         N   i	   )maxr   sqrt_chlrpslenr   nponesr
   lognewaxisrangecopyzerosabsmodarangerandomr   _Phinv_Phimean) mnusigmar   r   rngsnchazbzr   NPonpepsqcdcSvpsixrysiaidbitlr   r   r	   _qsimvtv   s,   *H,66,@((<
rD   c                 C   
   t | S r   )r   ndtr)zr   r   r	   r%   v      
r%   c                 C   rE   r   )r   ndtri)r2   r   r   r	   r$   z   rH   r$   c                 C   sp  d}t | jj}t| }|  }| }| }t t t |d}	t	|D ]8}
|	|
 dkra|dd|
f  |	|
   < ||
ddf  |	|
   < ||
  |	|
   < ||
  |	|
   < q)t 
|df}tdtj }t	|D ]}|}d}d}d}t	||D ]N}
||
|
f |krtt||
|
f d}|
dkr||
d|f |d|  }||
 | | }||
 | | }t|t| }||kr|}|}|}|}|
}q||kri|||g |||g< |||g |||g< |||f |||f< ||d|f  }||d|f ||d|f< |||d|f< ||d d|f  }||d d|f ||d d|f< |||d d|f< ||d ||f  }|||d |f j||d ||f< |j|||d |f< |||d  kr||||f< d|||d df< t	|d |D ]8}
||
|f | ||
|f< ||
|d |
d f ||
|f ||d |
d |f j  ||
|d |
d f< qt||krt |d  d t |d  d  ||  ||< n|| d ||< |dk r|||< n	|dkr|||< ||d|d f  |  < ||  |  < ||  |  < nd||d|f< || ||  d ||< qu|||fS )z
    Computes permuted and scaled lower Cholesky factor c for R which may be
    singular, also permuting and scaling integration limit vectors a and b.
    g|=r   Nr   r   ir   )r   finfodtypeepsr   r   r   maximumdiagr   r   r   pir   r%   Tr    exp)Rr   r   eprL   r   r6   apbprA   r;   r>   sqtpkimckkdemr:   ciir@   rB   deambmtr   r   r	   r   ~   sN   88($0
<@PT n6


>(
r   )r   numpyr   scipyr   scipy.stats._qmcr   r
   r   rD   r%   r$   r   r   r   r   r	   <module>   s    c