a
    hÝEb†:  ã                   @   sÞ   d dl Zd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ G dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZdS )é    N)ÚmatrixÚasmatrixÚbmat)Úassert_Úassert_equalÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equalÚassert_raises)Úmatrix_power)Úmatc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCtorc           
      C   s   t  ddgddgg¡}t|ƒ}tt  |j|k¡ƒ tdƒ}t||g||ggƒ}t  g d¢g d¢g d¢g d¢g¡}tt  |j|k¡ƒ tt  |j|k¡ƒ t  dd	gd
dgg¡}tg d¢g d¢gƒ}tt  t||gƒ|k¡ƒ t  d¡}t|ƒ}	t|	jdkƒ d S )Né   é   é   é   úA,A;A,A©r   r   r   r   ©r   r   r   r   é   é   é   é   ©r   r   r   r   ©r   r   r   r   )r   r   )	ÚnpÚarrayr   r   ÚallÚAr   ÚarangeÚshape)
Úselfr   ÚmAÚBÚCÚDÚEZAEresultZvecZmvec© r'   úd/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/matrixlib/tests/test_defmatrix.pyÚ
test_basic   s$    
ý
zTestCtor.test_basicc                 C   s   t ttdƒ d S )NÚinvalid)r
   Ú
ValueErrorr   ©r!   r'   r'   r(   Útest_exceptions#   s    zTestCtor.test_exceptionsc                 C   s  t  ddgddgg¡}t  ddgddgg¡}t  g d	¢g d
¢g d	¢g d
¢g¡}t  g d¢g d¢g d¢g d¢g¡}tt  tdƒ|k¡ƒ tt  tdd|id�|k¡ƒ tttdd|id� tt  tdd|id|id�|k¡ƒ td||dœ||dœd�}tt  ||k¡ƒ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )Úldict)Úgdict)r.   r/   zA,B;C,D)r   r#   )r$   r%   )r   r   r   r   r   r
   Ú	TypeError)r!   r   r#   ZAresultZ	mixresultÚb2r'   r'   r(   Útest_bmat_nondefault_str'   s(    
ý
ýÿz!TestCtor.test_bmat_nondefault_strN)Ú__name__Ú
__module__Ú__qualname__r)   r-   r2   r'   r'   r'   r(   r      s   r   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestPropertiesc                 C   s¬   t g d¢g d¢g d¢g d¢gƒ}t g d¢ƒ}t g d¢ƒj}d}t||jdd	�ƒ t||jd
d	�ƒ t|| ¡ ƒ t|tj|dd	�ƒ t|tj|d
d	�ƒ t|t |¡ƒ dS )zeTest whether matrix.sum(axis=1) preserves orientation.
        Fails in NumPy <= 0.9.6.2127.
        )r   r   r   r   )r   r   r   r   r   r   )r   é   r   r   )r   r   r   é   é   r   ©Zaxisr   N)r   ÚTr   Úsumr   r   )r!   ÚMZsum0Zsum1Zsumallr'   r'   r(   Útest_sum<   s    ýzTestProperties.test_sumc                 C   sÆ   t g d¢g d¢gƒ}t| ¡ dƒ t| d¡t g d¢gƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd	�t g d¢gƒƒ ttj|dd	�t dgdggƒƒ t g d
¢ƒ}t| ¡ dkƒ d S )N©r   r   r   ©r   r   r   iÐ  r   )r   é
   é   r   r   éx   r:   )r   r   r   )r   r   Úprodr   r   ©r!   ÚxÚyr'   r'   r(   Ú	test_prodO   s     zTestProperties.test_prodc                 C   sª   t g d¢g d¢gƒ}t| ¡ dƒ t| d¡t g d¢gƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd�t g d¢gƒƒ ttj|dd�t dgdggƒƒ d S )Nr?   r@   r   r   r   r   r:   )r   r   Úmaxr   ©r!   rF   r'   r'   r(   Útest_max\   s    zTestProperties.test_maxc                 C   sª   t g d¢g d¢gƒ}t| ¡ dƒ t| d¡t g d¢gƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd�t g d¢gƒƒ ttj|dd�t dgdggƒƒ d S )Nr?   r@   r   r   r   r:   )r   r   Úminr   rJ   r'   r'   r(   Útest_minf   s    zTestProperties.test_minc                 C   sh   t  d¡ d¡}t| ¡ dkƒ tt  | d¡t  ddg¡k¡ƒ tt  | d¡t  ddg¡k¡ƒ d S )Nr   )r   r   r   r   r   r   )r   r   Úreshaper   Úptpr   r   rJ   r'   r'   r(   Útest_ptpp   s    "zTestProperties.test_ptpc                 C   sT   t  d¡ d¡}| t j¡}t|jdd�|jdd�ƒ t|jdd�|jdd�ƒ d S )Né	   )r   r   r   )Zddofr   )r   r   rN   Úviewr   r   Úvar)r!   rF   Zmxr'   r'   r(   Útest_varv   s    zTestProperties.test_varc                 C   s
  dd l m} t ddgddgg¡}t|ƒ}tt | |¡|j¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	||jk¡ƒ |d|  }t|ƒ}tt | |¡|j¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	t t 
|¡ ¡ |jk¡¡ƒ d S )Nr   ç      ð?ç       @ç      @ç      @y               @)Únumpy.linalgÚlinalgr   r   r   r   ÚallcloseÚinvÚIr   Z	transposer;   ÚHr   Zconj)r!   rZ   r   r"   r#   ÚmBr'   r'   r(   r)   |   s    
ÿ   zTestProperties.test_basicc                 C   s@   t t d¡ dd¡ƒ}t ddgddgdd	ggƒ}t|j|ƒ d S )
Nr   r   r   g·ù:Žãè¿gnó)tÇÑ?g#¬Çq¼¿g#¬Çq¼?gnó)tÇá?gç6ŸBÇq¬¿)r   r   r   rN   r   r]   )r!   rF   Zxpinvr'   r'   r(   Ú	test_pinv�   s    þzTestProperties.test_pinvc                 C   sr  t  d¡ dd¡}t|ƒ}t|ƒd }tt  ||d k¡ƒ tt  |t|d ƒk¡ƒ tt  |t|d ƒk¡ ƒ tt  ||k ¡ƒ tt  ||k¡ƒ tt  ||k¡ƒ tt  ||k ¡ ƒ tt  ||k ¡ ƒ tt  ||k¡ƒ tt  ||k¡ƒ tt  ||k¡ ƒ tt  ||k¡ƒ tt  ||k¡ ƒ tt  ||k¡ƒ tt  t|ƒdk¡ ƒ tt  t|dkƒ¡ƒ d S )Néd   rA   çš™™™™™¹?r   )r   r   rN   r   r   r   ÚanyÚabs)r!   r   r"   r_   r'   r'   r(   Útest_comparisons”   s&    zTestProperties.test_comparisonsc                 C   s:   t  d¡ dd¡}t|ƒ}d|d< t|d |d kƒ d S )Nra   rA   iöÿÿÿ©r   r   )r   r   rN   r   r   )r!   r   r"   r'   r'   r(   Útest_asmatrix¬   s    zTestProperties.test_asmatrixc                 C   s@   t ddgddggƒ}t| ¡ t dƒkƒ t| ¡ t dƒkƒ d S )Nr   r   r   ç      à?)r   r   r<   Úmean©r!   r   r'   r'   r(   Útest_noaxis²   s    zTestProperties.test_noaxisc                 C   s(   t ddgddggƒ}tt|ƒdkƒ d S )Nr   r   z matrix([[1, 0],
        [0, 1]]))r   r   Úreprrj   r'   r'   r(   Ú	test_repr·   s    zTestProperties.test_reprc                 C   s*   t dƒ}t dgdgdggƒ}t||ƒ d S )NzTrue; True; FalseTF)r   r   )r!   r   r#   r'   r'   r(   Útest_make_bool_matrix_from_str»   s    z-TestProperties.test_make_bool_matrix_from_strN)r3   r4   r5   r>   rH   rK   rM   rP   rT   r)   r`   re   rg   rk   rm   rn   r'   r'   r'   r(   r6   ;   s   

r6   c                   @   s   e Zd Zdd„ ZdS )ÚTestCastingc                 C   s¼   t  d¡ dd¡}t|ƒ}| ¡ }t  dt j¡d }|| }t|jj	t jkƒ tt  
||k¡ƒ tt  
||d k¡ƒ | ¡ }t  dt j¡}|| }t|jj	t jkƒ tt  
||k¡ƒ d S )Nra   rA   )rA   rA   rb   )r   r   rN   r   ÚcopyZonesZfloat64r   ÚdtypeÚtyper   Z
complex128)r!   r   r"   r_   ÚOZmCr'   r'   r(   r)   Á   s    zTestCasting.test_basicN©r3   r4   r5   r)   r'   r'   r'   r(   ro   À   s   ro   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestAlgebrac                 C   s&  dd l m} t ddgddgg¡}t|ƒ}t d¡}tdƒD ]&}tt || j	|¡ƒ t 
||¡}q<| |¡}t d¡}tdƒD ](}tt ||  j	|¡ƒ t 
||¡}q€tt || j	t 
||¡¡ƒ tt || j	|| ¡ƒ tt d| j	d| ¡ƒ t|ƒ}|d9 }tt |j	d| ¡ƒ d S )	Nr   rU   rV   rW   rX   r   r   r   )rY   rZ   r   r   r   ÚidentityÚranger   r[   r   Údotr\   )r!   rZ   r   r"   r#   ÚiZAinvZmA2r'   r'   r(   r)   Ô   s$    


zTestAlgebra.test_basicc                 C   st   t dƒ}| ¡ }|dC }| ¡ }|dC }| ¡ }|dC }t||d ƒ t|t ||¡ƒ tt ||¡t d¡ƒ dS )z<Test raising a matrix to an integer power works as expected.z1. 2.; 3. 4.r   éÿÿÿÿN)r   rp   r	   r   rx   Úeye)r!   ÚmÚm2ÚmiZm4r'   r'   r(   Útest_powí   s    zTestAlgebra.test_powc                 C   sD   t ddgddggƒ}tjtjfD ]}|dƒ}t|d || ƒ q d S ©Nr   r   r   r   )r   r   Zint8Zuint8r	   )r!   r|   Zscalar_tÚtwor'   r'   r(   Útest_scalar_type_powú   s    z TestAlgebra.test_scalar_type_powc                 C   sz   t ddgddggƒ}ttƒ� d|  W d  ƒ n1 s:0    Y  ttƒ� |tƒ   W d  ƒ n1 sl0    Y  dS )z:Check that 'not implemented' operations produce a failure.rU   rV   rW   rX   N)r   r
   r0   Úobjectrj   r'   r'   r(   Útest_notimplemented   s    ÿ
&
zTestAlgebra.test_notimplementedN)r3   r4   r5   r)   r   r‚   r„   r'   r'   r'   r(   ru   Ó   s   ru   c                   @   s   e Zd Zdd„ ZdS )ÚTestMatrixReturnc           
   	   C   s  t dgdd�}dddgfdddt dg¡d	œ}g d
¢}t|ƒD ]x}| d¡s>||v rVq>t||ƒ}t|tjj	ƒr>| 
d¡ | d¡ ||v r”|| }nd}||Ž }tt|ƒt u d| ƒ q>tt|jƒt u ƒ tt|jƒt u ƒ t dgƒ ¡ \}}	tt|ƒtju ƒ tt|	ƒtju ƒ d S )NrU   Zf8)rq   )Zintc)ç        rU   r   )r   rf   )ÚastypeZclipÚcompressÚrepeatrN   Zswapaxesrx   )&ÚargminÚchooseÚdumpÚdumpsÚfillZgetfieldZgetAZgetA1ÚitemÚnonzeroÚputZputmaskÚresizeZsearchsortedZsetflagsZsetfieldÚsortÚ	partitionZargpartitionZtakeÚtofileÚtolistÚtostringÚtobytesr   rc   r<   ZargmaxrŠ   rL   rI   ri   rS   rO   rD   ZstdÚctypesZitemsetÚ_r'   z%sr†   )r   r   r   ÚdirÚ
startswithÚgetattrÚ
isinstanceÚcollectionsÚabcÚCallabler‡   rŽ   r   rr   ÚrealÚimagr�   Úndarray)
r!   ÚaZ
methodargsZexcluded_methodsÚattribÚfÚargsÚbÚcÚdr'   r'   r(   Útest_instance_methods  s6    
ù		



z&TestMatrixReturn.test_instance_methodsN)r3   r4   r5   r¬   r'   r'   r'   r(   r…     s   r…   c                   @   s   e Zd Zdd„ ZdS )ÚTestIndexingc                 C   sd   t t dt¡ƒ}t dt¡}g d¢|d d …df< |dk|d d …df< t|ddgddgddggƒ d S )N©r   r   )r   r   )gš™™™™™é?gš™™™™™É?g333333Ó?r   rh   r   ©r   r   ZzerosÚfloatr   rE   r'   r'   r(   r)   9  s
    zTestIndexing.test_basicNrt   r'   r'   r'   r(   r­   8  s   r­   c                   @   sh   e Zd ZeddgddggƒZdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestNewScalarIndexingr   r   r   r   c                 C   s   | j }|d }t|jdƒ d S )Nr   r   )r¥   r   Úndim©r!   r¥   rF   r'   r'   r(   Útest_dimesionsD  s    z$TestNewScalarIndexing.test_dimesionsc                 C   s(   | j }t ||g¡}t|jg d¢ƒ d S )N)r   r   r   )r¥   r   r   r   r    r³   r'   r'   r(   Útest_array_from_matrix_listI  s    z1TestNewScalarIndexing.test_array_from_matrix_listc                 C   s$   | j }t| ¡ ddgddggƒ d S r€   )r¥   r   r–   ©r!   r¥   r'   r'   r(   Útest_array_to_listN  s    z(TestNewScalarIndexing.test_array_to_listc                 C   s¸   | j }|dg d¢f }tt|tƒƒ t|tg d¢gƒƒ |ddg }tt|tƒƒ t|tddgddggƒƒ |dgdggddgddggf }tt|tƒƒ t|tddgddggƒƒ d S )Nr   )r   r   r   )r   r   r   r   r   r   r   )r¥   r   rž   r   r   r³   r'   r'   r(   Útest_fancy_indexingR  s     z)TestNewScalarIndexing.test_fancy_indexingc                 C   s®   t g d¢g d¢gƒ}t|d d t g d¢gƒƒ t|d d jdƒ t|d jdƒ t|d d …df jdƒ t dƒ}t|d dƒ t|d dƒ t|d d …df j|jƒ d S )Nr?   r@   r   )r   r   ©r   r   rf   )r   r   r    rJ   r'   r'   r(   Útest_matrix_element^  s    z)TestNewScalarIndexing.test_matrix_elementc                 C   s*   t t dt¡ƒ}t|d |d d ƒ d S )Nr®   rf   r   r¯   rJ   r'   r'   r(   Útest_scalar_indexingj  s    z*TestNewScalarIndexing.test_scalar_indexingc                 C   s†   t t d¡ƒ}t|dd d …f ddggƒ t|dd d …f ddggƒ t|d d …df dgdggƒ t|d d …df dgdggƒ d S )Nr   r   r   )r   r   r{   r   rJ   r'   r'   r(   Útest_row_column_indexingn  s
    z.TestNewScalarIndexing.test_row_column_indexingc                 C   st   t  d¡}d|_t|ƒ}t|d d …t  ddg¡f |d d …df ƒ t|t  g d¢¡d d …f |dd d …f ƒ d S )Nr   r®   TFr   )TFF)r   r   r    r   r   r   ©r!   r   rF   r'   r'   r(   Útest_boolean_indexingu  s
    
,z+TestNewScalarIndexing.test_boolean_indexingc                 C   st   t  d¡}d|_t|ƒ}t|d d …ddgf |d d …d d d…f ƒ t|g d¢d d …f |d d d…d d …f ƒ d S )Nr   r®   r   r   rz   )r   r   r   )r   r   r    r   r   r½   r'   r'   r(   Útest_list_indexing|  s
    
,z(TestNewScalarIndexing.test_list_indexingN)r3   r4   r5   r   r¥   r´   rµ   r·   r¸   rº   r»   r¼   r¾   r¿   r'   r'   r'   r(   r±   A  s   r±   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestPowerc                 C   sP   t  ddgddgg¡}ttt|dƒƒt ju ƒ t|ƒ}ttt|dƒƒtu ƒ d S ©Nr   r   r   )r   r   r   rr   r   r¤   r   r   r¶   r'   r'   r(   Útest_returntype…  s    zTestPower.test_returntypec                 C   s,   t tddgddggdƒddgddggƒ d S rÁ   )r   r   r,   r'   r'   r(   Ú	test_list‹  s    zTestPower.test_listN)r3   r4   r5   rÂ   rÃ   r'   r'   r'   r(   rÀ   „  s   rÀ   c                   @   sv   e Zd Ze dgdgg¡ZedgdggƒZdd„ Zdd„ Z	dd„ Z
d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú	TestShaper   r   c                 C   s    t | jjdƒ t | jjdƒ d S )Nr¹   )r   r¥   r    r|   r,   r'   r'   r(   Ú
test_shape”  s    zTestShape.test_shapec                 C   s,   t t | j¡jdƒ t t | j¡jdƒ d S )N©r   )r   r   Úravelr¥   r    r|   r,   r'   r'   r(   Útest_numpy_ravel˜  s    zTestShape.test_numpy_ravelc                 C   s(   t | j ¡ jdƒ t | j ¡ jdƒ d S ©NrÆ   )r   r   )r   r¥   rÇ   r    r|   r,   r'   r'   r(   Útest_member_ravelœ  s    zTestShape.test_member_ravelc                 C   s(   t | j ¡ jdƒ t | j ¡ jdƒ d S rÉ   )r   r¥   Úflattenr    r|   r,   r'   r'   r(   Útest_member_flatten   s    zTestShape.test_member_flattenc                 C   sæ   t  g d¢g d¢g¡}tt  |¡g d¢ƒ tt j|dd�g d¢ƒ tt  |j¡g d¢ƒ tt j|jdd�g d¢ƒ tg d¢g d¢gƒ}tt  |¡g d¢ƒ tt j|dd�g d¢ƒ tt  |j¡g d¢ƒ tt j|jdd�g d¢ƒ d S ©Nr?   r@   )r   r   r   r   r   r   ÚF)Úorder)r   r   r   r   r   r   r   )r   r   r   rÇ   r;   r   rJ   r'   r'   r(   Útest_numpy_ravel_order¤  s    z TestShape.test_numpy_ravel_orderc                 C   st   t g d¢g d¢gƒ}t| ¡ g d¢gƒ t|jdd�g d¢gƒ t|j ¡ g d¢gƒ t|jjdd�g d¢gƒ d S rÍ   )r   r   rÇ   r;   rJ   r'   r'   r(   Útest_matrix_ravel_order°  s
    z!TestShape.test_matrix_ravel_orderc                 C   s6   t t | j| j ¡ ¡ƒ t t | j| j ¡ ¡ ƒ d S ©N)r   r   Úmay_share_memoryr¥   rÇ   rË   r,   r'   r'   r(   Útest_array_memory_sharing·  s    z#TestShape.test_array_memory_sharingc                 C   s6   t t | j| j ¡ ¡ƒ t t | j| j ¡ ¡ ƒ d S rÒ   )r   r   rÓ   r|   rÇ   rË   r,   r'   r'   r(   Útest_matrix_memory_sharing»  s    z$TestShape.test_matrix_memory_sharingc                 C   sH   t  d¡ d¡ t j¡}t j|dd�}t|jdƒ tt	|t jƒ ƒ d S )NrA   )r   r   r   r:   r   )
r   r   rN   rR   r   Zexpand_dimsr   r²   r   rž   )r!   r¥   Úexpandedr'   r'   r(   Útest_expand_dims_matrix¿  s    z!TestShape.test_expand_dims_matrixN)r3   r4   r5   r   r   r¥   r   r|   rÅ   rÈ   rÊ   rÌ   rÐ   rÑ   rÔ   rÕ   r×   r'   r'   r'   r(   rÄ   �  s   rÄ   )Úcollections.abcrŸ   Únumpyr   r   r   r   Znumpy.testingr   r   r   r   r	   r
   rY   r   Znumpy.matrixlibr   r   r6   ro   ru   r…   r­   r±   rÀ   rÄ   r'   r'   r'   r(   Ú<module>   s    / ;*	C