3
Od%                 @   s0  d Z ddlmZmZmZmZ ddlZddlmZm	Z	m
Z
 ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZmZ ee	ddddddgddddddgddddddgddddddgddddddgddddddggZe	dd
ddddgZdgZdd ZeeejejdZdd ZG dd de Z!dS )z+Tests for the linalg.isolve.gcrotmk module
    )assert_assert_allcloseassert_equalsuppress_warningsN)zerosarrayallclose)norm)
csr_matrixeyerand)LinearOperator)splu)gcrotmkgmres      	               c             C   s   t d  d7  < t|  S )Nr   r   )countAm)v r   a/var/www/html/virt/lib64/python3.6/site-packages/scipy/sparse/linalg/isolve/tests/test_gcrotmk.pymatvec   s    r   )r   shapedtypec              K   s   dt d< t 8}|jtd tttfttjd dd| \}}W d Q R X t d }t	t
t| tdddtt| t  ||fS )Nr   z.*called without specifying.*g+=)x0tolg-q=)rtolatol)r   r   filterDeprecationWarningr   Abr   r   r   r   r	   )kwsupr    flagcount_0r   r   r   do_solve$   s    0&r,   c               @   sD   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S )TestGCROTMKc             C   sh   t tj }t|jtjtjd}t \}}t|d\}}t	|d t
||d k  t
t||dd d S )N)r   r   r   )Mr   r   g+=)r"   )r   r   Ztocscr   Zsolver&   r   r   r,   r   r   r   )selfZpcr.   r    r+   x1count_1r   r   r   test_preconditioner/   s    

zTestGCROTMK.test_preconditionerc             C   s   t jjd tdtdddd }t jjd}t T}|jtd t||t	|j
d dddd\}}t||t	|j
d ddd	\}}W d Q R X t|d t|d t jj|j|| d
kstt|| d S )Nr   i  gMb@?)Zdensityz.*called without specifying.*r      )r    mkmaxiter)r    Zrestartr6   gMbP?)nprandomseedr   r   r   r$   r%   r   r   r   r   r   Zlinalgr	   dotAssertionErrorr   )r/   r&   r'   r)   r    Zflag0r0   Zflag1r   r   r   test_arnoldi;   s    "*

zTestGCROTMK.test_arnoldic             C   s4  t jjd x dD ]}dt| }t }|jtd t j|}t||dd\}}t	|d	 t
|j|| d	d
d t||d	dd\}}|d	krt
|j|| d	d
d t jj|}t||dd\}}t	|d	 t
|j|| d	d
d t||d	dd\}}|d	kr"t
|j|| d	d
d W d Q R X qW d S )Ni  r   r   
   d   r   z.*called without specifying.*)r6   r   g+=)r#   )r!   r6   )r   r   r=   r>   )r7   r8   r9   r   r   r$   r%   onesr   r   r   r:   r   )r/   nr&   r)   r'   xinfor   r   r   test_cornercaseM   s&    



zTestGCROTMK.test_cornercasec             C   s`   t ddd}tj|d	< tjd}t 0}|jtd t||ddd\}}t|d W d Q R X d S )
Nr   Zlil)formatr   z.*called without specifying.*r   r=   )r!   r6   )r   r   )	r   r7   nanr?   r   r$   r%   r   r   )r/   r&   r'   r)   rA   rB   r   r   r   	test_nansk   s    

zTestGCROTMK.test_nansc             C   s   t jjd t jjddt jd }t jjd}xfdD ]^}t ,}|jtd t||dd|ddd	\}}W d Q R X t	|d
 t
|j|| d
dd q6W d S )Ni     oldestsmallestz.*called without specifying.*r=   g-C6?   )r4   r5   truncater!   r6   r   gMbP?)r#   )rH   rI   )r7   r8   r9   r   r   r   r$   r%   r   r   r   r:   )r/   r&   r'   rK   r)   rA   rB   r   r   r   test_truncateu   s    

zTestGCROTMK.test_truncatec       	      C   s   xd
D ]}g }t ||d\}}tt|dk tt|dk |r`x|D ]\}}t|d k qHW t ||d\}}|rt|dt|  n
t|d t||d k t||dd	 qW d S )NTF)CU	discard_Cr   r   r   r   g+=)r#   )TF)r,   r   lenr   r   )	r/   rN   rM   r    r+   cur0   r1   r   r   r   test_CU   s    

zTestGCROTMK.test_CUc          
   C   s   t jddgddggtd}|dt jdd 9 }t jddg}t  }|jtd t||\}}W d Q R X |dkrt|j	|| d S )	Nr   r   r   r   )r   r>   r   z.*called without specifying.*)
r7   r   floatZ	nextafterr   r$   r%   r   r   r:   )r/   r&   r'   r)   ZxprB   r   r   r   test_denormals   s    zTestGCROTMK.test_denormalsN)
__name__
__module____qualname__r2   r<   rC   rF   rL   rR   rT   r   r   r   r   r-   .   s   
r-   rX   rX   rX   rX   rX   )"__doc__Znumpy.testingr   r   r   r   Znumpyr7   r   r   r   Zscipy.linalgr	   Zscipy.sparser
   r   r   Zscipy.sparse.linalg.interfacer   Zscipy.sparse.linalgr   Zscipy.sparse.linalg.isolver   r   r   r'   r   r   r   r   r&   r,   objectr-   r   r   r   r   <module>   s(   
