
    Ph                        d Z ddl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
g d
g dg dg dg dg dg            Z e
g d      Z ej6                         Z ej6                         Zd Zd Z eeej@                  ejB                        Z"d Z# G d d      Z$y)z,Tests for the linalg._isolve.gcrotmk module
    N)assert_assert_allcloseassert_equalsuppress_warnings)zerosarrayallclose)norm)	csr_array	eye_arrayrandom_array)LinearOperator)splu)gcrotmkgmres)   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      c                     t        t        d      sdgt        _        t        j                  dxx   dz  cc<   t        | z  S )Ncr   r   )hasattrcountr   Amvs    yC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\scipy/sparse/linalg/_isolve/tests/test_gcrotmk.pymatvecr"      s/    5##	GGAJ!OJa4K    c                 r    t        t        d      sdgt        _        t        j                  dxx   dz  cc<   y )Nnr   r   )r   niterr%   r   s    r!   cbr'   %   s&    5##	GGAJ!OJr#   r"   shapedtypec                     t        t        d      sdgt        _        t        t        d      sdgt        _        dt        j                  d<   t               5 }|j                  t        d       t        t        t        ft        t        j                  d         dd| \  }}d d d        t        j                  d   }t        t        t        z  t        dd      t        t        |z  t        z
               ||fS # 1 sw Y   [xY w)	Nr%   r   r   .*called without specifying.*+=)x0rtolg-q=)r/   atol)r   r&   r%   r   r   r   filterDeprecationWarningr   Abr   r)   r   r	   r
   )kwsupr.   flagcount_0s        r!   do_solver9   .   s    5##5##EGGAJ		

%'FG1aHE!''!*$5EHRHD 
 ggajGHQrT15u5tAbDF|Dw; 
	s   AC<<Dc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestGCROTMKc                    t        t        j                               }t        |j                  t
        j                  t
        j                        }t               \  }}dt        j                  d<   t        |t              \  }}t        |d       ||dz  k  sJ t        ||d      sJ t        j                  d   dk  sJ y )Nr(   r   )Mcallbackr   r   r-   )r/   )r   r   tocscr   solver3   r)   r*   r9   r&   r%   r'   r   r	   )selfpcr=   r.   r8   x1count_1s          r!   test_preconditionerzTestGCROTMK.test_preconditioner?   s    "((*"((!''IjG
R0GWa """BU+++wwqzA~~r#   c           	      \   t         j                  j                  d      }t        d      t	        dd|      z   }|j                  d      }t               5 }|j                  t        d       t        ||t        |j                  d         ddd	      \  }}t        ||t        |j                  d         dd
      \  }}d d d        t        d       t        d       t         j                  j                  |j                        |z
        dkD  sJ t!        |       y # 1 sw Y   dxY w)Nr     )rG   rG   gMb@?)densityrngr,   r   
   )r.   mkmaxiter)r.   restartrM   -C6?)nprandomdefault_rngr   r   r   r1   r2   r   r   r)   r   r   linalgr
   dotr   )	rA   rI   r3   r4   r6   r.   flag0rC   flag1s	            r!   test_arnoldizTestGCROTMK.test_arnoldiM   s    ii##A&dOl<3OOJJt  CJJ)+JK1qwwqz):bAqQIBauQWWQZ'8"aPIB !
 	UAUAyy~~aeeBi!m,t333B ! s   A*D""D+c                    t         j                  j                  d       dD ]V  }dt        |      z  }t	               5 }|j                  t        d       t        j                  |      }t        ||d      \  }}t        |d       t        |j                  |      |z
  dd	       t        ||dd
      \  }}|dk(  r t        |j                  |      |z
  dd	       t         j                  j                  |      }t        ||d      \  }}t        |d       t        |j                  |      |z
  dd	       t        ||dd
      \  }}|dk(  r t        |j                  |      |z
  dd	       d d d        Y y # 1 sw Y   exY w)N  )r   r   rJ   d   r   r,   rJ   )rM   r   r-   r0   r/   rM   )rP   rQ   seedr   r   r1   r2   onesr   r   r   rT   rand)rA   r%   r3   r6   r4   xinfos          r!   test_cornercasezTestGCROTMK.test_cornercase_   sA   
		t !A)A,A"$

-/NOGGAJ!!Q34T1%a1ae<!!QQ;419#AEE!HqL!%@IINN1%!!Q34T1%a1ae<!!QQ;419#AEE!HqL!%@% %$ ! %$s   D3E==F	c                    t        dd      }t        j                  |d<   t        j                  d      }t	               5 }|j                  t        d       t        ||dd      \  }}t        |d	       d d d        y # 1 sw Y   y xY w)
Nr   lil)format)r   r   r,   r   rJ   r\   r   )	r   rP   nanr^   r   r1   r2   r   r   )rA   r3   r4   r6   r`   ra   s         r!   	test_nanszTestGCROTMK.test_nans}   sj    a&#GGAJ CJJ)+JKaB7GAtq! !  s    5A>>Bc                    t         j                  j                  d       t         j                  j                  dd      t        j                  d      z   }t         j                  j                  d      }dD ]l  }t               5 }|j                  t        d       t        ||dd|dd      \  }}d d d        t        d	       t        |j                        |z
  d	d
       n y # 1 sw Y   8xY w)NrY      )oldestsmallestr,   rJ   rO      )rK   rL   truncater/   rM   r   gMbP?r[   )rP   rQ   r]   r_   eyer   r1   r2   r   r   r   rT   )rA   r3   r4   rm   r6   r`   ra   s          r!   test_truncatezTestGCROTMK.test_truncate   s    
		tIINN2r"RVVBZ/IINN2.H"$

-/NO!!Q"X'+S:4 % q!AEE!HqL!$7 /$$s   ,C''C0	c                 p   dD ]  }g }t        ||      \  }}t        t        |      dkD         t        t        |      dk         |r|D ]  \  }}t        |d u         t        ||      \  }}|rt        |dt        |      z          nt        |d       t        ||dz  k         t	        ||d        y )	N)TF)CU	discard_Cr   r   r   r   r-   r[   )r9   r   lenr   r   )	rA   rr   rq   r.   r8   r   urC   rD   s	            r!   test_CUzTestGCROTMK.test_CU   s    &IB"bI>KBCGaK CGqL!DAqAI&  #bI>KBWa#b'k2Wa(Gwqy()B/% 'r#   c                 v   t        j                  ddgddggt              }|dt        j                  dd      z  z  }t        j                  ddg      }t	               5 }|j                  t        d       t        ||      \  }}d d d        dk(  rt        |j                        |       y y # 1 sw Y   +xY w)	Nr   r   r   r   )r*   rZ   r   r,   )
rP   r   float	nextafterr   r1   r2   r   r   rT   )rA   r3   r4   r6   xpra   s         r!   test_denormalszTestGCROTMK.test_denormals   s     HHq!fq!f%U3	S2<<1%%%HHaV CJJ)+JKq!}HB ! 19AEE"Iq) 	 ! s   &B//B8N)
__name__
__module____qualname__rE   rW   rb   rg   ro   ru   rz    r#   r!   r;   r;   >   s&     $A<"80**r#   r;   )%__doc__	threadingnumpy.testingr   r   r   r   numpyrP   r   r   r	   scipy.linalgr
   scipy.sparser   r   r   scipy.sparse.linalg._interfacer   scipy.sparse.linalgr   scipy.sparse.linalg._isolver   r   r   r4   localr   r&   r"   r'   r)   r*   r3   r9   r;   r~   r#   r!   <module>r      s    . .  ( (  ; ; 9 $ 6 un%%%%%' ( ) 
-		 &A y* y*r#   