a
    <b2                     @   s(  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZ d d
lmZmZ d dlmZmZ d dlmZ d dlm Z  d dl!m"Z"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW d dlXmYZYmZZZm[Z[m\Z\ d dl]m^Z^ d dlm_Z_ d dl`maZa d dlmbZb d dlcmdZd dd Zedd Zfdd Zgd d! Zhd"d# Zid$d% Zjd&d' Zkd(d) Zld*d+ Zmd,d- Znd.d/ Zod0d1 Zpd2d3 Zqd4d5 Zrd6d7 Zse[d8d9 Ztd:d; Zud<d= Zvd>d? Zwd@dA ZxdBdC ZydDdE ZzdFdG Z{dHdI Z|dJdK Z}dLdM Z~dNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da ZdbS )c    )Sum)Basic)Tuple)Lambda)Rationalnanoopi)Eq)S)Symbolsymbols)FallingFactorialbinomial)explog)cossin)
DiracDelta)	integrate)AndOr)Matrix)Interval)Indexed)"DieNormalExponentialFiniteRVPEHvariancedensitygivenindependent	dependentwherepspaceGaussianUnitaryEnsemblerandom_symbolssample	Geometricfactorial_momentBinomialHypergeometricDiscreteUniformPoissoncharacteristic_functionmoment_generating_functionBernoulliProcessVarianceExpectationProbability
Covariance
covariancecmomentmomentmedian)
IndependentProductPSpacers_swapDensityNamedArgsMixinRandomSymbolsample_iterPSpace	is_randomRandomIndexedSymbolRandomMatrixSymbol)raisesskipXFAILwarns_deprecated_sympy)import_module)comp)BernoulliDistribution)Dummy)	Piecewisec                  C   s  t dt d } }tddd}t|d dkjtddks>J t|d dk tdd|jkshJ tt| |k|dk tt	| jd	t	|jd
ksJ t
t| dk jdksJ dt| dk jv sJ tdddtddd } }tt| d dk| dkjtddksJ t| t| d dk| dk}|jjjtddksLJ |jj td| jk| jd dkt | jk | jtk ksJ tt t| | d }W d    n1 s0    Y  d S )NXYZr                     )r   r   r'   setr   Z
as_booleanZas_relationalsymbolr   r
   lenr$   r(   domainr   rG   	TypeError)rP   rQ   rR   XX r`   i/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/stats/tests/test_rv.py
test_where!   s$     *
,
*

rb   c                  C   s   t dddt ddd } }ttd|  d | hks8J ttd|  | | |hksXJ ttd|  |j | hksxJ ttdt ksJ d S )NrP   r   rS   rQ   rT   )r   rZ   r*   r[   rP   rQ   r`   r`   ra   test_random_symbols8   s
      rd   c                  C   s   ddl m}  tddd}tdg d}tdd}td	}t|t|d  d }t|td
| |  d td| |  d  t||  d  }t|tdt||   d }t|	|sJ t|	|sJ t|	|sJ d S )Nr   )IrP   rS   rQ   rS   rT      rR   rT   _trg   rY   )
sympy.core.numbersre   r   r0   r1   r   r   r   r2   dummy_eq)re   rP   rQ   rR   tr   QRr`   r`   ra   test_characteristic_functionA   s    
>rn   c                  C   s   t ddd} tdg d}tdd}td}t|t|d d }t|td	| d
 td| d
  t|d
  }t|tdt| d }t| |sJ t||sJ t||sJ d S )NrP   r   rS   rQ   rf   rR   rT   rh   rg   rY   )r   r0   r1   r   r   r   r3   rj   )rP   rQ   rR   rk   r   rl   rm   r`   r`   ra   test_moment_generating_functionR   s    
2ro   c                  C   s   t ddd} tdg d}tdd}td}|s8td	 | d d
 }t|}|d d|  d }t|}|d
 d }t|}	dd }
|
|sJ |
|sJ |
|	sJ d S )NrP   r   rS   rQ   rf   rR   rT   scipy#Scipy is not installed. Abort testsrY   rX   rV   c                 S   s@   t | dr8t | dst | dr8t| jr8|  | u r8dS dS d S )N__iter__next__next__TF)hasattrcallablerr   )objr`   r`   ra   is_iterators   s    
z%test_sample_iter.<locals>.is_iterator)r   r0   r1   rK   rH   rB   )rP   rQ   rR   rp   expriteratorZexpr2Z	iterator2Zexpr3Z	iterator3rx   r`   r`   ra   test_sample_itera   s     
r{   c                     s   t dddt ddd } }td ttdd  tt fdd t| | jksTJ td	|  d | jksnJ td	|  | t|j| jksJ d S )
NrP   r   rS   rQ   xc                   S   s   t dS )N   r(   r`   r`   r`   ra   <lambda>       ztest_pspace.<locals>.<lambda>c                      s   t  dk S NrS   r~   r`   r|   r`   ra   r      r   rT   )r   r   rG   
ValueErrorr(   r=   rc   r`   r   ra   test_pspace   s    r   c                  C   sf   t ddd} tdd}t ddd}t ddd}d|  | }|t| |f||fd| | ksbJ d S )Nr|   r   rS   yrT   rY   )r   r   subsr>   )rP   rQ   r_   YYry   r`   r`   ra   test_rs_swap   s    
r   c                  C   sb   t ddd} t ddd}| j|jks(J | |ks4J | j| jjksFJ t ddd} t ddd} d S )Nr|   r   rS   rT   lambdar   )r   r[   namerc   r`   r`   ra   test_RandomSymbol   s    r   c                  C   s"   t ddd} d|  | sJ d S )Nr|   r   rS   rT   )r   diffrP   r`   r`   ra   test_RandomSymbol_diff   s    r   c                  C   s    t td} | jt ksJ d S )Nr|   )rA   r   r(   rC   r   r`   r`   ra   test_random_symbol_no_pspace   s    r   c                      s0   t ddd t dddtt fdd d S )Nr|   r   rS   rT   c                      s   t  kS Nr   r`   rc   r`   ra   r      r   ztest_overlap.<locals>.<lambda>)r   rG   r   r`   r`   rc   ra   test_overlap   s    r   c                  C   s\   t ddd} t ddd}| j}|j}t| | t||ks>J t| | t||ksXJ d S NrP   r   rS   rQ   )r   r(   r=   )rP   rQ   Zpxpyr`   r`   ra   test_IndependentProductPSpace   s    r   c                   C   s   t ddksJ d S )NrX   )r    r`   r`   r`   ra   test_E   s    r   c                  C   s   t ddd} tddd}tdd}t| | dktd	 d	 tj ttd	  ksTJ t||d	ktd	ksnJ tt|	 
d	d
sJ d S )NrP   r   rS   DrV   )ZsidesG      ?rT   g=
ףp=?)r   r   r,   r!   r   r   Halfr	   rL   Zevalfround)rP   r   r   r`   r`   ra   test_H   s    
2r   c                     s  t dd} tddd tdddtd	}|s6td
 t| dv sFJ tt|   ts\J t|   dk dk ddj	s|J t
|   ddj	sJ t
| d   ddj	sJ t
|   d ddj	sJ t|   ddj	sJ tt fdd tt dkdddksJ tt dkt dk dddks6J tdd t| ddD sVJ tdd t| | dkddD s|J td}|std tt| |j|jfsJ tt |jsJ tt| dd|jsJ t  t| dd W d    n1 s0    Y  d S )NrP   rW   rQ   r   rS   zTintegerrp   rq   )rS   rT   rY   rV   rX   rW   
   Z
numsamplesrT   c                      s   t  kddS )NrX   r   r   r`   rQ   r   r`   ra   r      r   ztest_Sample.<locals>.<lambda>c                 s   s   | ]}|t d dv V  qdS )rS   rg   Nrange.0ir`   r`   ra   	<genexpr>   r   ztest_Sample.<locals>.<genexpr>c                 s   s   | ]}|t d dv V  qdS )rV   rg   Nr   r   r`   r`   ra   r      r   rY   numpyz#Numpy is not installed. Abort tests)size)r   r   r   rK   rH   r+   
isinstancefloatr   	is_numberr    r"   rG   r^   r   r   allr#   Zint32Zint64Zfloat64ZndarrayrJ   )rP   rp   r   r`   r   ra   test_Sample   s4    
 ( &r   c                  C   s\   t d} | std tddd}tddd}ttd||  |dtf|d	kd
djsXJ d S )Nrp   rq   rQ   r   rS   r   Tr   rT   rY   r   )rK   rH   r   r   r    r   r   r   )rp   rQ   r   r`   r`   ra   test_samplingE   s    r   c                  C   sN   t ddd} t ddd}t| d}t| |dk}| |  krD|ksJn J d S )NrP   r   rS   rQ   TrT   )r   r$   )rP   rQ   ABr`   r`   ra   
test_given   s
    
r   c                  C   s$  t dd} tddtj}tdddd}t| ddks8J t|dtjksLJ t|dtddksdJ td\}}}}tdd|}tdd	dd}t|||d td| d| d|  td|  d| d td
|  ksJ t||dtd
| d dtd| d  td|d  ks J d S )NrP   rT   rQ   rR   rV   rS   rY   zx y z lr   r   rg      )	r1   r.   r   r   r/   r-   r   r   r   )rP   rQ   rR   r|   r   r   lr`   r`   ra   test_factorial_moment  s2    


r   c                  C   s   t dt d } }t| d| s$J t| d| r6J tdddtddd } }t| |s^J t| d|  spJ tt| |t| | d\}}t||sJ d S )NrP   rQ   rT   r   rS   rY   )r   r%   r&   r   r$   r   r
   rP   rQ   r_   r   r`   r`   ra   test_dependence  s    r   c                  C   sR   t dt d } }t| ||  s$J tt| || | dk\}}t||sNJ d S )NrP   rQ   rX   )r   r&   r$   r   r   r`   r`   ra   test_dependent_finite   s    r   c                  C   sl   t dddt ddd } }tddd}tddd}t| | t| | |}t|||t tfdkshJ d S )	NrP   r   rS   rQ   r|   T)realr   )r   r   r#   r
   r   r   )rP   rQ   r|   r   Zdensr`   r`   ra   test_normality*  s
    r   c                  C   s*   t dd} t| }| t| ks&J d S )NrP   rW   )r   r?   Zdoitr#   )rP   dr`   r`   ra   test_Density3  s    
r   c                     sz   G dd dt t} | tdtdjdks2J jdks@J ttfdd G dd dt t tt fd	d d S )
Nc                   @   s   e Zd ZdZdS )z test_NamedArgsMixin.<locals>.Foo)foobarN)__name__
__module____qualname__Z	_argnamesr`   r`   r`   ra   Foo9  s   r   rS   rT   c                      s    j S r   )Zbazr`   )ar`   ra   r   A  r   z%test_NamedArgsMixin.<locals>.<lambda>c                   @   s   e Zd ZdS )z test_NamedArgsMixin.<locals>.BarN)r   r   r   r`   r`   r`   ra   BarC  s   r   c                      s    t dt djS NrS   rT   )r   r   r`   )r   r`   ra   r   F  r   )r   r@   r   r   r   rG   AttributeError)r   r`   )r   r   ra   test_NamedArgsMixin8  s    r   c                   C   s0   t dddksJ t ddtdks,J d S )NrY   rT   r   )r#   r   r`   r`   r`   ra   test_density_constantH  s    r   c                  C   st   t ddksJ tdddks"J tdddks4J td} t | dksLJ t| ddks^J t| ddkspJ d S )NrY   r   rV   r|   r   rS   )r"   r:   r   r   r`   r`   ra   test_cmoment_constantL  s    r   c                  C   sX   t dddksJ t dddks$J t dddks6J td} t | d| d ksTJ d S )NrY   r   rS   rT   	   r|   )r;   r   r   r`   r`   ra   test_moment_constantU  s
    r   c                  C   s,   t ddksJ td} t | | ks(J d S )NrY   r|   )r<   r   r   r`   r`   ra   test_median_constant\  s    r   c                  C   s   t ddd} | jsJ d S )Nr|   r   rS   )r   Zis_realr   r`   r`   ra   	test_reala  s    r   c                      s   t dd t tk dksJ t tkdks2J t dk  tkdksLJ t tk  tkdksfJ t tk  dkdksJ t dk  dkdksJ ttdd  tt fdd d S )	NrP   rY   rS   r   rT   c                   S   s   t dS r   r   r`   r`   r`   ra   r   n  r   z"test_issue_10052.<locals>.<lambda>c                      s   t  dk dS r   r   r`   r   r`   ra   r   o  r   )r   r   r   rG   r   r`   r`   r   ra   test_issue_10052f  s    
r   c                  C   s<   ddd} t d| }t|dks$J t|dkdks8J d S )Nr   )r   rS   rP   rT   r   )r   r    r   )r#   rP   r`   r`   ra   test_issue_11934q  s    

r   c                  C   sN   t dd} t| | kdksJ t| | kdks2J t| | d kdksJJ d S )NrP   rV   rS   r   )r   r   r   r`   r`   ra   test_issue_8129w  s    
r   c                  C   s   t ddd} t ddd}t| dk| }t|dk | }t| | dk| }|t| | dk| ks`J |ttjtjtjkszJ |tjksJ d S r   )r   r   rM   r   r   ZZeroZOne)rP   rQ   UVWr`   r`   ra   test_issue_12237}  s    r   c                  C   s6  t ddd} t ddd}td\}}tdd}tdd	}t|rDJ t|| rTJ t|| rdJ tt|d |d grJ t| sJ t| d | sJ t||d  sJ t|d
ksJ t|d dk sJ t|sJ t| | |d  sJ tt| |d g||ggsJ tt| ds2J d S )NrP   r   rS   rQ   za, br   rT   r   g?rX   rY   rV   )r   r   r)   r4   rD   r   r
   )rP   rQ   r   br   r   r`   r`   ra   test_is_random  s$    

"r   c                  C   s   t d} t| }td}tddd}tddd}ttdd}t|t ksPJ t|t ksbJ t|t kstJ t|t|ksJ t	|dkt
|dkksJ t|t|ksJ t|t|ksJ t||t||ksJ t||t||ksJ d S )	Nr|   rQ   rR   rT   rS   r   RIrY   )r   rA   rF   rE   r   r(   rC   r    r6   r   r7   r"   r5   r9   r8   )r|   rP   rQ   rR   r   r   r`   r`   ra   test_issue_12283  s    r   c                  C   s   t dd} tddd}tt| dtdd ks4J tt|ddksJJ tt| dk| dk dkshJ tt| dk| dktdd ksJ d S )NrP   rW   rQ   r   rS   rT   rY   )r   r   r   r
   r   r   r   rc   r`   r`   ra   test_issue_6810  s    
r   c                  C   s   t d\} }td| |}tddd}tt||  d| | |    t|| d| | |    t| |  t| | |dk|| k@ ftdf|d| f}|t	|sJ d S )Nzn pr   kTr   rS   r   )
r   r.   rN   r   rO   r   r   r   rj   r!   )npr   r   eqr`   r`   ra   test_issue_20286  s
    tr   N)Zsympy.concrete.summationsr   Zsympy.core.basicr   Zsympy.core.containersr   Zsympy.core.functionr   ri   r   r   r   r	   Zsympy.core.relationalr
   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.combinatorial.factorialsr   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.trigonometricr   r   Z'sympy.functions.special.delta_functionsr   Zsympy.integrals.integralsr   Zsympy.logic.boolalgr   r   Zsympy.matrices.denser   Zsympy.sets.setsr   Zsympy.tensor.indexedr   Zsympy.statsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   Zsympy.stats.rvr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   Zsympy.testing.pytestrG   rH   rI   rJ   Zsympy.externalrK   rL   Zsympy.stats.frv_typesrM   rN   Z$sympy.functions.elementary.piecewiserO   rb   rd   rn   ro   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r`   r`   ra   <module>   sz   0	!
		$
		
		
