o
    Æ&iK<  ã                   @   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'   úOC:\wamp64\www\opt\env\Lib\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\   ó   $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   rL   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   rO   Ú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!   r[   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   rO   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   rO   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 )Nrb   rA   iöÿÿÿ©r   r   )r   r   rO   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   Úreprrk   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   rN   rQ   rU   r)   ra   rf   rh   rl   rn   ro   r'   r'   r'   r(   r6   ;   s    

r6   c                   @   ó   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 )Nrb   rA   )rA   rA   rc   )r   r   rO   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(   rq   À   ó    rq   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   rV   rW   rX   rY   r   r   r   )rZ   r[   r   r   r   ÚidentityÚranger   r\   r   Údotr]   )r!   r[   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   rr   r	   r   r{   Ú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   s|   t ddgddggƒ}ttƒ d|  W d  ƒ n1 sw   Y  ttƒ |tƒ   W d  ƒ dS 1 s7w   Y  dS )z:Check that 'not implemented' operations produce a failure.rV   rW   rX   rY   N)r   r
   r0   Úobjectrk   r'   r'   r(   Útest_notimplemented   s   ÿ

ÿ
"ÿzTestAlgebra.test_notimplementedN)r3   r4   r5   r)   r‚   r…   r‡   r'   r'   r'   r(   rx   Ó   s
    rx   c                   @   rp   )ÚTestMatrixReturnc           
   	   C   s  t dgdd}dddgfdddt dg¡d	œ}g d
¢}t|ƒD ]<}| d¡s*||v r+qt||ƒ}t|tjj	ƒr[| 
d¡ | d¡ ||v rJ|| }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 )NrV   Zf8)rs   )Zintc)ç        rV   r   )r   rg   )ÚastypeZclipÚcompressÚrepeatrO   Zswapaxesr{   )&ÚargminZchooseÚdumpÚdumpsÚfillZgetfieldZgetAZgetA1ÚitemÚnonzeroÚputZputmaskÚresizeZsearchsortedZsetflagsZsetfieldÚsortÚ	partitionZargpartitionZtakeÚtofileÚtolistZtostringÚtobytesr   rd   r<   Zargmaxr   rM   rI   rj   rT   rP   rD   ZstdÚctypesZitemsetÚ_r'   z%sr‰   )r   r   r   ÚdirÚ
startswithÚgetattrÚ
isinstanceÚcollectionsÚabcÚCallablerŠ   r   r   rt   ÚrealÚimagr’   Úndarray)
r!   ÚaZ
methodargsZexcluded_methodsZattribÚfÚargsÚbÚcÚdr'   r'   r(   Útest_instance_methods  s8   
ù		



€z&TestMatrixReturn.test_instance_methodsN)r3   r4   r5   r¬   r'   r'   r'   r(   rˆ     rw   rˆ   c                   @   rp   )Ú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   ri   r   ©r   r   ZzerosÚfloatr   rE   r'   r'   r(   r)   9  s
    zTestIndexing.test_basicNrv   r'   r'   r'   r(   r­   8  rw   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   rg   )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®   rg   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  ó
   
,0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   r}   )r   r   r   )r   r   r    r   r   r½   r'   r'   r(   Útest_list_indexing|  r¿   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   rt   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   ó(   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œ  ó   zTestShape.test_member_ravelc                 C   rÊ   rË   )r   r¦   Úflattenr    r   r,   r'   r'   r(   Útest_member_flatten   rÍ   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   ó6   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·  ó   z#TestShape.test_array_memory_sharingc                 C   rÕ   rÖ   )r   r   r×   r   rÈ   rÎ   r,   r'   r'   r(   Útest_matrix_memory_sharing»  rÙ   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   rO   rS   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
   rZ   r   Znumpy.matrixlibr   r   r6   rq   rx   rˆ   r­   r±   rÁ   rÅ   r'   r'   r'   r(   Ú<module>   s      / ;*	C