U
    ?h                     @   sx   d Z ddlZddlZddlmZ ddlmZm	Z	 ddlm
Z ddlZddlmZ dd ZG dd	 d	ZG d
d dZdS )z1Test functions for the sparse.linalg.norm module
    N)norm)assert_allcloseassert_equal)raisesc                  C   s   t ddddg} t ddddg}t ddddg}tjj|| |ffd	d
}tjj|| |ffd	d
}tt|dddt ddddg tt|dddt ddddg tt|dddt ddg tt|dddt ddg d S )Nr                     	   )r   r	   )shapeordaxis   )nparrayscipysparseZ	coo_array
coo_matrixr   spnorm)rowcoldataZtest_arrZtest_mat r   U/var/www/html/venv/lib/python3.8/site-packages/scipy/sparse/linalg/tests/test_norm.pytest_sparray_norm   s    ""r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNormc                 C   s*   t dd }|d}tj|| _d S )Nr   r	   r   r   )r   arangereshaper   r   
csr_matrixb)selfar#   r   r   r   setup_method   s    
zTestNorm.setup_methodc              	   C   s   t t| jd t t| jdd t t| jtjd t t| jtj d t t| jdd t t| jdd tjtd	d
  t t| jtj	dd W 5 Q R X t
tt| jd d S )NNO@fror   r   r   r      zThe problem size)matchgűd@)r   r   r#   r   infpytestZwarnsUserWarningZastypeZfloat64assert_raisesNotImplementedError)r$   r   r   r   test_matrix_norm!   s    zTestNorm.test_matrix_normc                 C   s   | j d f| j df| j jdffD ]\}}tt||dd tt|d|dd tt|tj|dd tt|tj |dd tt|d|dd	 tt|d
|dd qd S )Nr   r   r   r   r   r'   r(   r   r   r   r   r)   r*   r#   Tr   r   r   r-   )r$   mr   r   r   r   test_matrix_norm_axis3   s    &zTestNorm.test_matrix_norm_axisc                 C   s   dddg}| j df| j jdffD ]\}}||f|d |d ffD ]t}tt|d|ddddg tt|tj|dd	d
d	g tt||d| tt|d|d| tt|d |d| q@q d S )NgT@glv@r   r   r   r5   r   r*   r	   r   r   r6   )r$   vr8   r%   r   r   r   r   test_vector_norm<   s    
zTestNorm.test_vector_normc                 C   s   | j }ttt|d d ttt|d dg ttt|d d ttt|d d ttt|d d ttt|d d ttt|d d ttt|d d ttt|d d ttt|d	d
 ttt|d	d d S )Ng      ?r   r   )r   r   r   )r   r   )r   r   )r   r<   Zplate_of_shrimpr   r3   )r#   r0   	TypeErrorr   
ValueError)r$   r8   r   r   r   test_norm_exceptionsF   s    zTestNorm.test_norm_exceptionsN)__name__
__module____qualname__r&   r2   r9   r;   r?   r   r   r   r   r      s
   	
r   c                   @   s   e Zd Zejjejjejjejjejj	ejj
ejjfZedd ddddgdddggdddgddd	ggfZd
d Zdd Zdd ZdS )TestVsNumpyNormr   r	   r   r   r   r   r)   r   y              @c                 C   s   | j D ]}| jD ]}||}tt|t| tt|dt|d tt|tjt|tj tt|tj t|tj  tt|dt|d tt|dt|d qqd S )Nr(   r   r)   _sparse_types_test_matricesr   r   npnormr   r-   )r$   sparse_typeMSr   r   r   test_sparse_matrix_normsi   s    

z(TestVsNumpyNorm.test_sparse_matrix_normsc                 C   s   | j D ]}| jD ]}||}dD ]V}tt||dt||d dtjtj ddfD ]"}tt|||dt|||d qRq dD ]Z}tt||dt||d tt|d|dt|d|d tt|d|dt|d|d q|qqd S )N)Nr3   r4   r5   r(   r   r)   ))r,   r)   )r)   r,   )r   r,   frD   r$   rH   rI   rJ   r   r   r   r   r   "test_sparse_matrix_norms_with_axist   s"    

z2TestVsNumpyNorm.test_sparse_matrix_norms_with_axisc                 C   s   | j D ]x}| jD ]l}||}dD ]Z}tt||dt||d d dtjtj dddfD ]"}tt|||dt|||d qVq qqd S )N)r   r   r)   r,   )r   )r   )r)   )r,   r5   r   r   g      ?gzG?rD   rM   r   r   r   test_sparse_vector_norms   s    

z(TestVsNumpyNorm.test_sparse_vector_normsN)r@   rA   rB   r   r   Z
bsr_matrixr   Z
csc_matrixr"   Z
dia_matrixZ
dok_matrixZ
lil_matrixrE   r   r    r!   rF   rK   rN   rO   r   r   r   r   rC   U   s&   

rC   )__doc__r.   numpyr   Znumpy.linalgr   rG   Znumpy.testingr   r   r   r0   Zscipy.sparser   Zscipy.sparse.linalgr   r   r   rC   r   r   r   r   <module>   s   :