
    _Mh^R                     p   d Z ddlmZ ddlmZ ddlZddlZddlmZm	Z	 ddl
mZmZ ddlZddlmZ ddlmc mc mZ ddlmZ ddlmZmZ  G d	 d
          Z G d d          Zd Zd Zd Zd Zd Z ej!        j"        d             Z#d Z$d Z%ej&        ej'        ej(        ej)        fZ*ej+        ej,        ej-        fZ.ej/        ej0        ej1        fZ2e.e2z   Z3e*e3z   Z4ej!        5                    de4          d             Z6d Z7d Z8d Z9d Z:d Z;d Z<ej!        =                    ed          d             Z>dS ) z7Test functions for the sparse.linalg._interface module
    )partial)productN)raiseswarns)assert_assert_equal)matrix)assert_deallocatedIS_PYPYc                        e Zd Zd Zd Zd ZdS )TestLinearOperatorc                     t          j        g dg dg          | _        t          j        ddgddgddgg          | _        t          j        ddgddgg          | _        d S )	N                  r   r   r   r   r   r   )nparrayABC)selfs    h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/linalg/tests/test_interface.pysetup_methodzTestLinearOperator.setup_method   s~    777"77$ % %Aa5a5a5" # # Aa5a5" # #    c                 %   d } || j                   D ]}t          j        di |t          j        dk               t                              t          j        g d                    ddg           t                              t          j        dgdgdgg                    dgdgg           t          t          j        g d          z  ddg           t          t          j        dgdgdgg          z  dgdgg           t          	                    t          j        g d                    ddg           t          	                    t          j        dgdgdgg                    dgdgg           t                              t          dgdgdgg                    dgdgg           t          t          dgdgdgg          z  dgdgg           t          	                    t          dgdgdgg                    dgdgg           t          dz  g d	z  d
dg           t          dz                      ddg          g d           t          dz  j                            ddg          g d           t          dz                                                      ddg          g d           t          dz  dgdgdggz  d
gdgg           t          dz                      dgdgdgg          d
gdgg           t          dz  g d	z  d
dg           t          dz  dgdgdggz  d
gdgg           t          dz  g d	z  ddg           t          z   g d	z  d
dg           t          z                       ddg          g d           t          z   j                            ddg          g d           t          z                                                       ddg          g d           t          z   dgdgdggz  d
gdgg           t          z                       dgdgdgg          d
gdgg           t           g d	z  ddg           t           dgdgdggz  dgdgg           t          z
  g d	z  ddg           t          z
  dgdgdggz  dgdgg           t          j        ddgddgg          }t          dz                      |          t          j	        d| j         z  j        |                     t          dz                      |          t          j	        | j         dz  j        |                     t          dz                      |          t          j	        d| j         z  j                                        |                     t          dz                      |          t          j	        | j         dz  j                                        |                     t          z                       |          t          j	        | j         | j         z   j        |                     t          dz  z                       |          t          j	        | j         d| j         z  z   j                                        |                     t                               |          t          j	        | j          j        |                     t          z
                      |          t          j	        | j         | j         z
  j        |                     t          dz                      d|z            t          j	        d| j         z  j                                        d|z                       z   }t          t%          |j                  dk    o|j        d         u o|j        d         u            dz  }t          t%          |j                  dk    o|j        d         u o|j        d         dk               t          t'                              g d          t          j                             t          t'                              t          j        dgdgdgg                    t          j                             t          t'          t          j        g d          z  t          j                             t          t'          t          j        dgdgdgg          z  t          j                             t          t'          	                    t          j        g d                    t          j                             t          t'          	                    t          j        dgdgdgg                    t          j                             t          t'                              t          dgdgdgg                    t          j                             t          t'          t          dgdgdgg          z  t          j                             t          t'          	                    t          dgdgdgg                    t          j                             t          t'          dz  t          j                             t          t'          dz  t          j                             t          t'          z   t          j                             t          t'           t          j                             t          t'          z
  t          j                             t          t'          dz  t          j                             t          t'          dz  t          j                             t          dz  dz  j        d         u            t          j        g d          z  }dz  dz  }t          t          j        g d          z  |           t          dz  j        t          j        k               d}t3          t4          |          5  t          j        ddg          z   d d d            n# 1 swxY w Y   t3          t4          j        t          j        ddg                     t3          t4          j        t          j        g d                     t3          t4          j        t          j        dgdgg                     t3          t4          j        t          j        dgdgdgdgg                     t3          t4          fd           t3          t4          fd           t7           || j                    || j                            D ]\  }}	t          j        di |t          j        di |	| j         	                    | j                  }
t          j        ddgddgg          }t          z                      |          t          j	        |
j        |                     t          dz  z                      |          t          j	        d|
z  j                                        |                     t          z  ddgz  ddg           t          z  dgdggz  dgdgg           t          z                      dgdgg          dgdgg           t          z                      ddg          ddg           t          z  j                            ddg          ddg           t          z                                                      ddg          ddg           t          t'          z  t          j                             t3          t4          fd           t3          t4          fd           z  }t          t%          |j                  dk    o|j        d         u o|j        d         u             || j                  D ]}t          j        di |}t          j        ddgddgg          }t          |                    |          t          j	        | j        j        |                     t          |dz                      |          t          j	        t          j	        | j        | j                  j        |                     t          |dz  ddgz  d d!g           t          |dz                      ddg          d"dg           t          |dz  j                            ddg          d"dg           t          |dz                                                      ddg          d"dg           t          |dz                      dgdgg          d gd!gg           t          t'          |dz  t          j                             d S )#Nc                 X      j          fd fdd j          fd fd fd fddgS )	Nc                 j    t          j        |                               j        d                   S Nr   )r   dotreshapeshapexr   s    r   <lambda>zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>!   s%    BF1aLL,@,@,L,L r   c                     t          j        j                                        |                               j        d                   S Nr   )r   r$   Tconjr%   r&   r'   s    r   r)   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>"   s8    RVACHHJJ45.7 .77>wqwqz7J7J r   )r&   matvecrmatvecc                 .    t          j        |           S Nr   r$   r'   s    r   r)   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>'       BF1aLL r   c                 \    t          j        j                                        |           S r1   r   r$   r,   r-   r'   s    r   r)   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>(       RVACHHJJ-B-B r   c                 \    t          j        j                                        |           S r1   r5   r'   s    r   r)   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>)   r6   r   c                 .    t          j        |           S r1   r2   r'   s    r   r)   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>*   r3   r   r&   r.   r/   rmatmatmatmat)r&   r   s   `r   get_matvecsz3TestLinearOperator.test_matvec.<locals>.get_matvecs   s    !""L"L"L"L$K $K $K $K  "#"8"8"8"8#B#B#B#B#B#B#B#B"8"8"8"8  r    r          r   r   r   )r   r   r         )
   r?                     @y              (@y              >@iir   r   r   z.Can only divide a linear operator by a scalar.matchr   r   r   r   c                        z  S r1   r>   r<   s   r   r)   z0TestLinearOperator.test_matvec.<locals>.<lambda>       ac r   c                       dz  S Nr   r>   r<   s   r   r)   z0TestLinearOperator.test_matvec.<locals>.<lambda>       ad r   2   q   G   \   c                       z   S r1   r>   )r   r   s   r   r)   z0TestLinearOperator.test_matvec.<locals>.<lambda>   rJ   r   c                       dz  S rL   r>   r<   s   r   r)   z0TestLinearOperator.test_matvec.<locals>.<lambda>   rM   r      %      ) r   	interfaceLinearOperatorr   argsr   r.   r   r   r$   r	   r/   Hadjointr;   r:   r,   r-   len
isinstancendarray_ScaledLinearOperator_SumLinearOperatordtype
complex128assert_raises
ValueErrorr   r   _ProductLinearOperatorr   _PowerLinearOperator)r   r=   matvecsXzresultr   msgmatvecsAmatvecsBAtimesBmatvecsCr   r   s               @@r   test_matveczTestLinearOperator.test_matvec   s*   	 	 	 #{46** c	4 c	4G(33733AAFbL!!!"(777"3"344r"g>>>"(QCQC="9"9::bT2$KHHHRXggg...B888RXsA3sm444tRDkBBBrx0011Br7;;;rx!aS!66772$tEEE&1#qc1#"7"788B4+FFFVaS!aSM222bT2$K@@@vsA3sm4455bT{CCC!A#wwwB000!a%!Q00,,,???!A#1..===!A#//166EEE!A#QC},tRDk:::!a%!qcA388B4",GGG!A#wwwB000!A#QC},tRDk:::"Q$#c333!A#wwwR111!a%!Q00,,,???!A#1..===!A#//166EEE!A#QC},tbTl;;;!A#sA3sm44tbTlCCC1"ggg3x0001"sA3sm+rdC5\:::!A#www1...!a%QC!qc?2aS1#J???1a&1a&)**A!a%++RVQZNA-F-FGGG!a%++RVTVaZNA-F-FGGG"q&))!,,df 4 4 6 6::< < <!b&))!,," 4 4 6 6::< < <!a%++$& 3Q779 9 9!b1f*--a00"tv+!5 8 = = ? ?CCE E E1"a"&46'a*@*@AAA!a%++$& 3Q779 9 9"q&))"q&11df 4 4 6 6Q??A A A !ACKK1$JaJAF1INKKK!ACKK1$JaJAF1INKKKJqxx			22BJ??@@@Jqxx1#qc1#(?(?@@"*MMNNNJq28GGG#4#44bjAABBBJq28aS!aSM#:#::BJGGHHHJquuRXggg%6%677DDEEEJquuRXsA3sm%<%<==rzJJKKKJqxxQC}(=(=>>
KKLLLJq6A3sA3-#8#88"*EEFFFJquuVaS!aSM%:%:;;RZHHIIIJqsI$CDDEEEJr!tY%DEEFFFJqsI$@AABBBJr9#BCCDDDJqsI$@AABBBJqsI$CDDEEEJqtY%DEEFFFa!eq[&q)Q./// ))),,,FAAAARXiii000&999RTLBM1222 CCz555 % %BHaV$$$$% % % % % % % % % % % % % % % *ah!A@@@*ah0C0CDDD*ah1#qc0C0CDDD*ah1#qc1#qc9J0K0KLLL*kkkk222*llll3333")++df*=*=*5+df*=*=#? #? 	L 	LHh(44844A(44844Afjj((G1a&1a&)**A!a%++RVWK-C-CDDD"q&1*--a00g 0 5 5 7 7;;= = = !A#!ur#h///!A#QCyB4,777!A#sA3i00B4,???!a%!Q002r(;;;!a%))1a&11B8<<<!a%**111a&99B8DDDJqsI$DEEFFF*kkkkk222*llll333!ACKK1$JaJAF1INKKKK#DF++ 	F 	FH(44844A1a&1a&)**A1rvtvj!'<'<===!Q$**!7!7 :A>>@ @ @ !Q$12w///!Q$A//"b:::!Q$!Q002r(;;;!Q$))00!Q882r(CCC!Q$QCy11RD";???Jq!tY%CDDEEEE	F 	Fs   =s##s'	*s'	c           	           j         j         fd fd fd fdd}t          j        di |}t	          j        g dg dg dg          }|d	         }t          t          j        ||          ||z             t          t          j        ||	                    d
d                    ||	                    d
d          z             t          t          j        ||          ||z             t          t          j        ||j
                  ||j
        z             t          t          j        ||                                          ||                                z             t          t          j        |	                    dd
          |j
                  |	                    dd
          |j
        z             t          t          j        |	                    dd
          |                                          |	                    dd
          |                                z             t          t          j        ||j
                  ||j
        z             t          t          j        ||                                          ||                                z             t          t          t          j        |d           t          t          t          j        d|           d S )Nc                 ~    t          j        j        |                               j        j        d                   S r#   )r   r$   r   r%   r&   r(   r   s    r   r)   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s+    !2!2!:!:46<?!K!K r   c                     t          j        j        j                                        |                               j        j        d                   S r+   )r   r$   r   r,   r-   r%   r&   rs   s    r   r)   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s<    "&)*#, #,,3GDFLO,D,D r   c                 f    t          j        j        j                                        |           S r1   )r   r$   r   r,   r-   rs   s    r   r)   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s    "&!"<"< r   c                 8    t          j        j        |           S r1   )r   r$   r   rs   s    r   r)   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s    !2!2 r   r9   )y      ?      ?r   r   r   )      	   r   r   r   r>   )r   r&   rW   rX   r   r   r   operatormatmulr%   rZ   r[   rc   rd   )r   Dr   r   bs   `    r   test_matmulzTestLinearOperator.test_matmul   s   flKKKKE E E E<<<<22224 4 $))q))Hnnniiii! " " aDX_Q**AE222X_Q		"a(8(8991qyyQ?O?O;OPPPX_Q**AE222X_Q,,a!#g666X_Q		44a!))++oFFFX_QYYq"%5%5qs;;QYYq"=M=MPQPS=STTTX_QYYq"%5%5qyy{{CCYYq"%%		3	5 	5 	5X_Q,,a!#g666X_Q		44a!))++oFFFj(/1a888j(/1a88888r   N)__name__
__module____qualname__r   rp   r   r>   r   r   r   r      sH        # # #_F _F _FB9 9 9 9 9r   r   c                        e Zd Zd Zd Zd ZdS )TestAsLinearOperatorc                    g | _         d }t          j        g dg dg          }| xj          ||t          j                  z  c_         | xj          ||t          j                  z  c_         | xj          ||t          j                  z  c_         | xj         d  ||j        t          j                  D             z  c_         | xj         d  ||j        t          j                  D             z  c_         | xj         d  ||j        t          j                  D             z  c_         t          j        g dg dg          }| xj          ||t          j                  z  c_         | xj         d	  ||j        t          j                  D             z  c_         | xj         d
  ||j        t          j                  D             z  c_         | xj         d  ||j        t          j                  D             z  c_         d S )Nc                 t    g }|                     t           |           f           |                     t          j         |           f           |                     t	          j         |           f            fd fd G  fddt          j                  } G fdd|          } G fdd	|          } G  fd
d|          }|                      ||           f           |                      ||           f           |                      ||           f           |S )Nra   c                                          |           }t          | j                  dk    r|                    dd          }|S )Nr   rz   r   )r$   r\   r&   r%   )r(   ra   yoriginals      r   mvzATestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.mv   s=    LLOOqw<<1$$		"a((Ar   c                 \    j                                                             |           S r1   r,   r-   r$   )r(   ra   r   s     r   rmvzBTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.rmv   s#    z((,,Q///r   c                   (    e Zd ZdZfdZ fdZdS )JTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatliker>   c                 R    t          j        |          | _        j        | _        d S r1   )r   ra   r&   )r   ra   r   s     r   __init__zSTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike.__init__   s    !#%DJ!)DJJJr   c                 &     || j                   S r1   r   )r   r(   r   s     r   _matveczRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike._matvec   s    2a,,,r   N)r   r   r   rY   r   r   )r   r   s   r   BaseMatliker      sL        0 0 0 0 0- - - - - - -r   r   c                       e Zd ZdZ fdZdS )ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvecr>   c                 &     || j                   S r1   r   )r   r(   r   s     r   _rmatveczRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvec._rmatvec   s    3q$*---r   N)r   r   r   rY   r   )r   s   r   
HasRmatvecr      s3        . . . . . . .r   r   c                        e Zd ZdZ fdZdS )ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasAdjointr>   c                     | j         d         | j         d         f}t          | j                  }t          | j                  }t          j        ||| j        |          S )Nr   r   r   )r.   r/   ra   r&   )r&   r   ra   rW   rX   )r   r&   r.   r/   r   r   s       r   _adjointzRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasAdjoint._adjoint  sl     JqM4:a=8E$S
;;;F%b
;;;G$36<C:>*:?A A A Ar   N)r   r   r   rY   r   )r   r   s   r   
HasAdjointr      s@        A A A A A A A Ar   r   c                   $    e Zd Z fdZ fdZdS )ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmatc                 .                         |          S r1   )r$   r   r(   r   s     r   _matmatzQTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._matmat  s    #<<??*r   c                 \    j                                                             |          S r1   r   r   s     r   _rmatmatzRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._rmatmat  s#    #:??,,00333r   N)r   r   r   r   r   )r   s   r   
HasRmatmatr     sG        + + + + +4 4 4 4 4 4 4r   r   )appendr	   r   r   sparse	csr_arrayrW   rX   )	r   ra   casesr   r   r   r   r   r   s	   `      @@r   
make_casesz5TestAsLinearOperator.setup_method.<locals>.make_cases   s   ELL&777BCCCLL"(859998DEEELL&*85AAA8LMMM    0 0 0 0 0- - - - - - - -i6 - - -. . . . . . .[ . . .
A 
A 
A 
A 
A 
A 
A 
A[ 
A 
A 
A4 4 4 4 4 4 4Z 4 4 4 LL**U++X6777LL**U++X6777LL**U++X6777Lr   r   r   c                 T    g | ]%\  }}t          j        |          j        |j        f&S r>   rW   aslinearoperatorr,   .0Mr   s      r   
<listcomp>z5TestAsLinearOperator.setup_method.<locals>.<listcomp>  sG     G G G1a "21557= G G Gr   c                 x    g | ]7\  }}t          j        |          j        |j                                        f8S r>   rW   r   rZ   r,   r-   r   s      r   r   z5TestAsLinearOperator.setup_method.<locals>.<listcomp>  sO     G G G1a "21557D G G Gr   c                     g | ]D\  }}t          j        |                                          |j                                        fES r>   rW   r   r[   r,   r-   r   s      r   r   z5TestAsLinearOperator.setup_method.<locals>.<listcomp>  sX     G G G1a "2155==??L G G Gr   r   rE                 @)y              @y              @r   c                 T    g | ]%\  }}t          j        |          j        |j        f&S r>   r   r   s      r   r   z5TestAsLinearOperator.setup_method.<locals>.<listcomp>$  sG     J J J1a "21557= J J Jr   c                 x    g | ]7\  }}t          j        |          j        |j                                        f8S r>   r   r   s      r   r   z5TestAsLinearOperator.setup_method.<locals>.<listcomp>&  sO     J J J1a "21557D J J Jr   c                     g | ]D\  }}t          j        |                                          |j                                        fES r>   r   r   s      r   r   z5TestAsLinearOperator.setup_method.<locals>.<listcomp>(  sX     J J J1a "2155==??L J J Jr   )r   r   r   int32float32float64r,   rb   )r   r   r   s      r   r   z!TestAsLinearOperator.setup_method   s]   
8	 8	 8	t 8WWWggg.//

jj28444



jj2:666



jj2:666



 G G#-:hj"*#E#EG G G 	G



 G G#-:hj"*#E#EG G G 	G



 G G#-:hj"*#E#EG G G 	G

 8[[[+++677

jj2=999



 J J#-:hj"-#H#HJ J J 	J



 J J#-:hj"-#H#HJ J J 	J



 J J#-:hj"-#H#HJ J J 	J



r   c                 |	   | j         D ]\  }}t          j        |          }|j        \  }}t	          j        g d          t	          j        dgdgdgg          g}t	          j        ddg          t	          j        dgdgg          g}|j        t          j        k    rd|t	          j        g d          t	          j        dgdgdgg          gz  }|t	          j        ddg          t	          j        dgdgg          gz  }t	          j        ddgdd	gdd
gg          }|D ]^}t          |	                    |          |
                    |                     t          ||z  |
                    |                     _t          |                    |          |
                    |                     t          ||z  |
                    |                     |D ]A}	t          |                    |	          |j                                        
                    |	                     t          |j        	                    |	          |j        
                    |	                     t          |j        	                    |	          |j                                        
                    |	                     t          |                                	                    |	          |j                                        
                    |	                     C|D ]M}	|	j        dk     rt          |                    |	          |j                                        
                    |	                     t          |j                            |	          |j        
                    |	                     t          |j                            |	          |j                                        
                    |	                     t          |                                                    |	          |j                                        
                    |	                     Ot'          |d          rt          |j        |j                   t)          t'          |d                     d S )Nr   r   r   r   r   rE   r   r   r   r   ra   rY   )r   rW   r   r&   r   r   ra   rb   r   r.   r$   r;   r/   r,   r-   rZ   r[   ndimr:   hasattrr   )
r   r   A_arrayr   Nxsysx2r(   r   s
             r   
test_basiczTestAsLinearOperator.test_basic+  s   * '	( '	(JAw*1--A'CAa(999%%(QC!qc?++-B(Aq6""BHqcA3Z$8$89Bw"-''rx,,x!rdRD 1224 4rxB(("(QC";*?*?@@Aq6Aq6Aq6233B 4 4QXXa[['++a..999QUGKKNN3333"w{{2777RR111 M MQYYq\\79>>+;+;+?+?+B+BCCCQSZZ]]GIMM!,<,<===QSZZ]]GINN,<,<,@,@,C,CDDDQYY[[//22GINN4D4D4H4H4K4KLLLL M M6A::QYYq\\79>>+;+;+?+?+B+BCCCQSZZ]]GIMM!,<,<===QSZZ]]GINN,<,<,@,@,C,CDDDQYY[[//22GINN4D4D4H4H4K4KLLLLq!! /QWag...GAv&&''''O'	( '	(r   c                 >   | j         D ]\  }}t          j        |          }|j        \  }}t	          j        g d          }t	          j        dgdgdgg          }t	          j        ddgddgddgg          }t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     d S )Nr   r   r   r   r   r   r   )r   rW   r   r&   r   r   r   r$   )r   r   r   r   r   x0x1r   s           r   test_dotzTestAsLinearOperator.test_dotV  s    * 
	5 
	5JAw*1--A'CAa)))$$BA3aS/**BAq6Aq6Aq6233BrGKKOO444rGKKOO444rGKKOO4444
	5 
	5r   N)r   r   r   r   r   r   r>   r   r   r   r      sI        OJ OJ OJb)( )( )(V5 5 5 5 5r   r   c                  v    t          j        dd           } t          |           }t          d|v|           d S )N)r   r   c                     dS r+   r>   r(   s    r   r)   ztest_repr.<locals>.<lambda>f  s     r   r&   r.   zunspecified dtype)rW   rX   reprr   )r   repr_As     r   	test_reprr   e  s@     vkkBBBA!WWFv-v66666r   c                  p   t          j        d          } t          | g dz  g d           t          |                     t	          j        d                              dd                                                    t	          j        d                     t          t          | j
        g d           d S )Nr   r   r   ry   r   rH   )rW   IdentityOperatorr   r$   r   aranger%   ravelrc   rd   r.   )idents    r   test_identityr   k  s    &v..E"III...29Q<<//15566<<>>	!MMM*elLLL99999r   c            
         t          j        t          j        d                              dd                    } d }t          j        d|          }| || |z  | |z  | j        |                                 | | z   ||z   | dz  g	}|D ]Y}t          t          |d                     t          t          |d                     t          t          |d                     Zd S )	N   r   c                     t          j        |           } t          | j        dk    p
| j        dk               t          j        d          S )N)r   )r   r   r   )r   asarrayr   r&   onesr   s    r   always_four_onesz)test_attributes.<locals>.always_four_onesv  s=    JqMM4417f#4555wqzzr   )r   r   r   ra   r&   r   )
rW   r   r   r   r%   rX   rZ   r[   r   r   )r   r   r   opsops        r   test_attributesr   s  s    "29R==#8#8A#>#>??A  
 	 v6FGGGAaQAqsAIIKKQAq!t
DC ( (G$$%%%G$$%%%I&&''''( (r   c                 *    t          j        d          S )z> Needed for test_pickle as local functions are not pickleable r   )r   zerosr   s    r   r.   r.     s    8A;;r   c            	      :   dd l } t          | j        dz             D ]~}t          j        dt
                    }|                     ||          }|                     |          }|j        D ].}t          t          ||          t          ||                     /d S )Nr   r   r   )protocol)picklerangeHIGHEST_PROTOCOLrW   rX   r.   dumpsloads__dict__r   getattr)r   r   r   sr   ks         r   test_pickler     s    MMM&1A566 7 7$VV44LLXL..LLOO 	7 	7AA16666	77 7r   c                      G d dt           j                  } t          t          d          5  t	          t
          |            d d d            n# 1 swxY w Y    G d dt           j                  } |d          }t          |                    g d          g d           t	          t          |j	        g d	            G d
 dt           j                  } |t          j                            dd                    }t          |                    t          j                            d                    j        d           d S )Nc                       e Zd ZdS )test_inheritance.<locals>.EmptyN)r   r   r   r>   r   r   Emptyr     s        r   r   zshould implement at leastrF   c                   $     e Zd Z fdZd Z xZS )"test_inheritance.<locals>.Identityc                 R    t                                          d ||f           d S )N)ra   r&   )superr   )r   n	__class__s     r   r   z+test_inheritance.<locals>.Identity.__init__  s*    GG41v66666r   c                     |S r1   r>   r   r(   s     r   r   z*test_inheritance.<locals>.Identity._matvec  s    Hr   )r   r   r   r   r   __classcell__r   s   @r   Identityr     sG        	7 	7 	7 	7 	7	 	 	 	 	 	 	r   r   r   r   r   c                   $     e Zd Z fdZd Z xZS )$test_inheritance.<locals>.MatmatOnlyc                 n    t                                          |j        |j                   || _        d S r1   r   r   ra   r&   r   r   r   r   s     r   r   z-test_inheritance.<locals>.MatmatOnly.__init__  ,    GGQWag...DFFFr   c                 6    | j                             |          S r1   )r   r$   r   s     r   r   z,test_inheritance.<locals>.MatmatOnly._matmat  s    6::a== r   )r   r   r   r   r   r   r   s   @r   
MatmatOnlyr    sG        	 	 	 	 		! 	! 	! 	! 	! 	! 	!r   r  r   )r   )rW   rX   r   RuntimeWarningrc   	TypeErrorr   r.   NotImplementedErrorr/   r   randomrandnr&   )r   r   id3r  mms        r   test_inheritancer    s       	(    
~%@	A	A	A ( (i'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (    9+    (1++CIII&&			222%s{III>>>! ! ! ! !Y- ! ! ! 
BIOOAq))	*	*B29??1--..4d;;;;;s   AAAc                     t           j                            dd          dt           j                            dd          z  z   } t           j                            dd          }t          j        |           }t          j        |          }||z   }||z   }t          |j        t           j                   t          |j        t           j                   d S )Nr                 ?)	r   r  randrW   r   r   ra   r   rb   )mat_complexmat_realcomplex_operatorreal_operatorsum_complexsum_reals         r   test_dtypes_of_operator_sumr    s     )..1%%RY^^Aa-@-@(@@Ky~~a""H 1+>>.x88M"%55K},H,,,"BM22222r   c                  p    dgfd} t          j        d|            t          d         d           d S )Nr   c                 (    dxx         dz  cc<   | S Nr   r   r>   )v
call_counts    r   r.   z#test_no_double_init.<locals>.matvec  s    1r   r   r   r.   r   )rW   rX   r   )r.   r  s    @r   test_no_double_initr"    sU    J     VF3333A"""""r   
test_dtypec                     t          j        d|           fd}t          j        d|          }|j        t          j        |           k    sJ d S )Nr   r   c                 N    t          j        | d         z  | d         g          S r  r   r   )r  scalars    r   r   z/test_determine_lo_dtype_from_matvec.<locals>.mv  s$    x!A$!-...r   r   r!  )r   r   rW   rX   ra   )r#  r   lor'  s      @r   #test_determine_lo_dtype_from_matvecr)    sl     Xaz***F/ / / / / 
	!&	4	4	4B8rx
++++++++r   c                  X    d } t          j        d|           }|j        t          v sJ d S )Nc                 L    t          j        d| d         z  | d         g          S )N   r   r   r&  )r  s    r   r   z+test_determine_lo_dtype_for_int.<locals>.mv  s#    xqtQqT*+++r   r   r!  )rW   rX   ra   
INT_DTYPES)r   r(  s     r   test_determine_lo_dtype_for_intr.    sA    , , , 
	!&	4	4	4B8z!!!!!!r   c                  f   t          j        dgg          } t          j        |           }d|z  }d| z  }t          j        dg          }t	          |                    |          |                    |                     t	          |j                            |          |j                                                            |                     t	          |	                                                    |          |j                                                            |                     d S Nr  r   )
r   r   rW   r   r   r$   rZ   r,   r-   r[   rh   r   r   Yr  s        r   test_adjoint_conjugater3    s    
2$A"1%%A
QA
QA
!Aq15588$$$QSXXZZ^^A..///##QSXXZZ^^A%6%677777r   c                      t          j        dgg          } t          j        |           }t	          |j        d           d S )Nr   r   )r   r   rW   r   r   r   )rh   r   s     r   	test_ndimr5    s;    
1#A"1%%Ar   c                     t          j        dgg          } t          j        |           }d|z  }d| z  }t          j        dg          }t	          |                    |          |                    |                     t	          |j                            |          |j                            |                     d S r0  )r   r   rW   r   r   r$   r,   r1  s        r   test_transpose_noconjugater7    s    
2$A"1%%A
QA
QA
!Aq15588$$$QSWWQZZ(((((r   c                  @    G d dt           j                  }  | t          j        ddgddgg                    }t          j        ddg          }t          j        ddgd	d
gg          }|                    dd          }t          j        ddgddgg          }t          ||z  ||z             t          |j        |z  |j        |z             t          |j        |z  |j        |z             t          ||z  ||z             t          |j        |z  |j        |z             t          |j        |z  |j        |z             t          ||z  ||z             t          |j        |z  |j        |z             t          |j        |z  |j        |z             d S )Nc                   *     e Zd Z fdZd Zd Z xZS )/test_transpose_multiplication.<locals>.MyMatrixc                 n    t                                          |j        |j                   || _        d S r1   r  r  s     r   r   z8test_transpose_multiplication.<locals>.MyMatrix.__init__  r  r   c                     | j         |z  S r1   r<   r   others     r   r   z7test_transpose_multiplication.<locals>.MyMatrix._matmat	  s    %"7r   c                      | j         j        |z  S r1   )r   r,   r=  s     r   r   z8test_transpose_multiplication.<locals>.MyMatrix._rmatmat
  s    $&(U*:#:r   )r   r   r   r   r   r   r   r   s   @r   MyMatrixr:    sD        	 	 	 	 	 	877:::::::r   r@  r   r   r   r   rC      rB   (   rz   )rW   rX   r   r   r%   r   r,   )r@  r   rh   r   X2r2  s         r   test_transpose_multiplicationrD    s   ; ; ; ; ;9+ ; ; ; 	Aq6Aq6*++,,A
!QA
2r(RH%&&A	
2q		B
1a&1a&!""AQAq!#'"""q!#'"""QAq!#'"""q!#'"""RR   24!8$$$r138$$$$$r   c                  :   t          j        dd           } t          j        d          }d}t	          t
          |          5  | |z   d d d            n# 1 swxY w Y   t	          t
          |          5  || z   d d d            n# 1 swxY w Y   t	          t                    5  | t          j        d          z   d d d            n# 1 swxY w Y   t	          t                    5  t          j        d          | z   d d d            d S # 1 swxY w Y   d S )Nr   c                     | S r1   r>   r   s    r   r)   z.test_sparse_matmat_exception.<locals>.<lambda>  s    ! r   r!  r   z9Unable to multiply a LinearOperator with a sparse matrix.rF   r   )	rW   rX   r   	eye_arrayrc   r
  rd   r   identity)r   r   rk   s      r   test_sparse_matmat_exceptionrI    s    <<<AA
EC	y	,	,	,  	A              	y	,	,	,  	A              	z	"	"  	BKNN              	z	"	"  
A                 sH   AAA7B		BB(CCC+DDDzTest not meaningful on PyPy)reasonc                      t          j        d          } t          t          j        |           5 }|                                 ~d d d            d S # 1 swxY w Y   d S rL   )r   eyer
   rW   MatrixLinearOperatorr[   )r   r   s     r   "test_MatrixLinearOperator_refcyclerN  *  s     	q		A	I:A	>	> "


                 s   AAA)?__doc__	functoolsr   	itertoolsr   r{   pytestr   rc   r   numpy.testingr   r   numpyr   scipy.sparser   scipy.sparse.linalg._interfacelinalg
_interfacerW   scipy.sparse._sputilsr	   scipy._lib._gcutilsr
   r   r   r   r   r   r   r.   r   markthread_unsafer  r  r"  int8int16r   int64r-  r   r   
longdoubleREAL_DTYPES	complex64rb   clongdoubleCOMPLEX_DTYPESINEXACTDTYPES	ALLDTYPESparametrizer)  r.  r3  r5  r7  rD  rI  skipifrN  r>   r   r   <module>ri     s                  1 1 1 1 1 1 1 1 / / / / / / / /           2 2 2 2 2 2 2 2 2 2 2 2 ( ( ( ( ( ( ; ; ; ; ; ; ; ;C9 C9 C9 C9 C9 C9 C9 C9LI5 I5 I5 I5 I5 I5 I5 I5X7 7 7: : :( ( (   	7 	7 	7 < < <:3 3 3
# 
# 
# grx284
z2:r}5,r~>n,&	 y11, , 21," " "8 8 8  

) 
) 
)% % %0   G$ABB  CB  r   