
    tKg!F                         d Z ddlmZ ddlm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  G d d	      Z G d
 d      Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y)z7Test functions for the sparse.linalg._interface module
    )partial)productN)raiseswarns)assert_assert_equal)matrixc                       e Zd Zd Zd Zd Zy)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      | _        y )	N                  r   r   r   r   r   r   )nparrayABC)selfs    l/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/sparse/linalg/tests/test_interface.pysetup_methodzTestLinearOperator.setup_method   si    7"$ %Aa5a5a5" # Aa5a5" #    c                 B!   d } || j                         D ]n  }t        j                  di |t        j                  dk(         t        j                  t        j                  g d            ddg       t        j                  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        j                  t        j                  g d            ddg       t        j                  t        j                  dgdgdgg            dgdgg       t        j                  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        j                  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  j                  ddg      g d       t        dz  j                  j                  ddg      g d       t        dz  dgdgdggz  d
gdgg       t        dz  j                  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   j                  ddg      g d       t        z   j                  j                  ddg      g d       t        z   dgdgdggz  d
gdgg       t        z   j                  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  j                  |      t        j                  d| j                   z  j                  |             t        dz  j                  |      t        j                  | j                   dz  j                  |             t        dz  j                  |      t        j                  d| j                   z  j                  j!                         |             t        dz  j                  |      t        j                  | j                   dz  j                  j!                         |             t        z   j                  |      t        j                  | j                   | j                   z   j                  |             t        dz  z   j                  |      t        j                  | j                   d| j                   z  z   j                  j!                         |             t         j                  |      t        j                  | j                    j                  |             t        z
  j                  |      t        j                  | j                   | j                   z
  j                  |             t        dz  j                  d|z        t        j                  d| j                   z  j                  j!                         d|z               z   }t        t#        |j                        dk(  xr$ |j                  d   u xr |j                  d   u        dz  }t        t#        |j                        dk(  xr% |j                  d   u xr |j                  d   dk(         t        t%        j                  g d      t        j&                               t        t%        j                  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%        j                  t        j                  g d            t        j&                               t        t%        j                  t        j                  dgdgdgg            t        j&                               t        t%        j                  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%        j                  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}t1        t2        |      5  t        j                  ddg      z   d d d        t1        t2        j                  t        j                  ddg             t1        t2        j                  t        j                  g d             t1        t2        j                  t        j                  dgdgg             t1        t2        j                  t        j                  dgdgdgdgg             t1        t2        fd       t1        t2        fd       q t5         || j                          || j6                              D ]9  \  }}	t        j                  di |t        j                  di |	| j                   j                  | j6                        }
t        j                  ddgddgg      }t        z  j                  |      t        j                  |
j                  |             t        dz  z  j                  |      t        j                  d|
z  j                  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  j                  dgdgg      dgdgg       t        z  j                  ddg      ddg       t        z  j                  j                  ddg      ddg       t        t%        z  t        j8                               t1        t2        fd       t1        t2        fd       z  }t        t#        |j                        dk(  xr$ |j                  d   u xr |j                  d   u        <  || j:                        D ]  }t        j                  di |}t        j                  ddgddgg      }t        |j                  |      t        j                  | j:                  j                  |             t        |dz  j                  |      t        j                  t        j                  | j:                  | j:                        j                  |             t        |dz  ddgz  d d!g       t        |dz  j                  ddg      d"dg       t        |dz  j                  j                  ddg      d"dg       t        |dz  j                  dgdgg      d gd!gg       t        t%        |dz  t        j<                                y # 1 sw Y   xY w)#Nc                 l      j                    fd fdd j                    fd fd fd fddgS )	Nc                 h    t        j                  |       j                  j                  d         S Nr   )r   dotreshapeshapexr   s    r   <lambda>zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>   s"    BFF1aL,@,@,Lr   c                     t        j                  j                  j                         |       j	                  j
                  d         S Nr   )r   r"   Tconjr#   r$   r%   s    r   r'   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>    s5    RVVACCHHJ45.77>wqwwqz7J.Kr   )r$   matvecrmatvecc                 0    t        j                  |       S Nr   r"   r%   s    r   r'   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>%       BFF1aLr   c                 `    t        j                  j                  j                         |       S r/   r   r"   r*   r+   r%   s    r   r'   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>&       RVVACCHHJ-Br   c                 `    t        j                  j                  j                         |       S r/   r3   r%   s    r   r'   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>'   r4   r   c                 0    t        j                  |       S r/   r0   r%   s    r   r'   zETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>(   r1   r   r$   r,   r-   rmatmatmatmat)r$   r   s   `r   get_matvecsz3TestLinearOperator.test_matvec.<locals>.get_matvecs   s<    !""L$K "#"8#B#B"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 r/   r<   r:   s   r   r'   z0TestLinearOperator.test_matvec.<locals>.<lambda>   	    acr   c                       dz  S Nr   r<   r:   s   r   r'   z0TestLinearOperator.test_matvec.<locals>.<lambda>   	    adr   2   q   G   \   c                       z   S r/   r<   )r   r   s   r   r'   z0TestLinearOperator.test_matvec.<locals>.<lambda>   rH   r   c                       dz  S rJ   r<   r:   s   r   r'   z0TestLinearOperator.test_matvec.<locals>.<lambda>   rK   r      %      )r   	interfaceLinearOperatorr   argsr   r,   r   r   r"   r	   r-   Hr9   r8   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   	 #466*G((373AAFFbL!"((7"34r"g>"((QCQC="9:bT2$KHRXXg..B8RXXsA3sm44tRDkBrxx01Br7;rxx!aS!672$tE&1#qc1#"78B4+FVaS!aSM22bT2$K@vsA3sm45bT{C!A#wB0!a%!Q0,?!A#1.=!A#QC},tRDk:!a%!qcA38B4",G!A#wB0!A#QC},tRDk:"Q$#c3!A#wR1!a%!Q0,?!A#1.=!A#QC},tbTl;!A#sA3sm4tbTlC1"g3x01"sA3sm+rdC5\:!A#w1.!a%QC!qc?2aS1#J?1a&1a&)*A!a%+RVVQZNNA-FG!a%+RVVTVVaZNNA-FG"q&))!,dff 4 4 6:<!b&))!," 4 4 6:<!a%+$&& 3 3Q79!b1f*--a0"tvv+!5 8 8 = = ?CE1"a"&&466'a*@A!a%+$&& 3 3Q79"q&))"q&1dff 4 4 6Q?A !ACK1$JaJAFF1INK!ACK1$JaJAFF1INKJqxx	2BJJ?@Jqxx1#qc1#(?@"**MNJq288G#44bjjABJq288aS!aSM#::BJJGHJquuRXXg%67DEJquuRXXsA3sm%<=rzzJKJqxxQC}(=>

KLJq6A3sA3-#88"**EFJquuVaS!aSM%:;RZZHIJqsI$C$CDEJr!tY%D%DEFJqsI$@$@ABJr9#B#BCDJqsI$@$@ABJqsI$C$CDEJqtY%D%DEFa!eq[&&q)Q./ ),,FAAAARXXi00&9RTLLBMM12 CCz5BHHaV$$ 6 *ahh!A@*ahh0CD*ahh1#qc0CD*ahh1#qc1#qc9J0KL*k2*l3C +F #*+dff*=*5dff*=#?Hh((484A((484Affjj(G1a&1a&)*A!a%+RVVWKK-CD"q&1*--a0g 0 0 5 5 7;= !A#!ur#h/!A#QCyB4,7!A#sA3i0B4,?!a%!Q02r(;!a%))1a&1B8<JqsI$D$DEF*k2*l3!ACK1$JaJAFF1INK3#?6 $DFF+H((484A1a&1a&)*A1rvvtvvjj!'<=!Q$*!7 : :A>@ !Q$12w/!Q$A/"b:!Q$!Q02r(;!Q$QCy1RD";?Jq!tY%C%CDE ,M 65s   6ABBAB	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                  ||j                  d
d            ||j                  d
d      z         t        t        j                  ||      ||z         t        t        j                  ||j                        ||j                  z         t        t        j                  |j                  dd
      |j                        |j                  dd
      |j                  z         t        t        j                  ||j                        ||j                  z         t        t        t        j                  |d       t        t        t        j                  d|       y )Nc                     t        j                  j                  |       j                  j                  j                  d         S r!   )r   r"   r   r#   r$   r&   r   s    r   r'   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s+    !2!:!:466<<?!Kr   c                     t        j                  j                  j                  j	                         |       j                  j                  j                  d         S r)   )r   r"   r   r*   r+   r#   r$   rp   s    r   r'   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s=    "&&)*#,,3GDFFLLO,D#Er   c                 t    t        j                  j                  j                  j	                         |       S r/   )r   r"   r   r*   r+   rp   s    r   r'   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s    "&&!"<r   c                 D    t        j                  j                  |       S r/   )r   r"   r   rp   s    r   r'   z0TestLinearOperator.test_matmul.<locals>.<lambda>   s    !2r   r7   )y      ?      ?r   r   r   )      	   r   r   r   r<   )r   r$   rU   rV   r   r   r   operatormatmulr#   rX   r`   ra   )r   Dr   r   bs   `    r   test_matmulzTestLinearOperator.test_matmul   sb   ffllKE<24 $$)q)HHn! " aDX__Q*AE2X__Q		"a(891qyyQ?O;OPX__Q*AE2X__Q,a!##g6X__QYYq"%5qss;QYYq"=MPQPSPS=STX__Q,a!##g6j(//1a8j(//1a8r   N)__name__
__module____qualname__r   rm   r|   r<   r   r   r   r      s    #[Fz9r   r   c                       e Zd Zd Zd Zd Zy)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                    ||j                  t        j
                        D cg c]0  \  }}t        j                  |      j                  |j                  f2 c}}z  c_         | xj                    ||j                  t        j
                        D cg c]>  \  }}t        j                  |      j                  |j                  j                         f@ c}}z  c_         t        j                  g dg dg      }| xj                    ||t        j                        z  c_         | xj                    ||j                  t        j                        D cg c]0  \  }}t        j                  |      j                  |j                  f2 c}}z  c_         | xj                    ||j                  t        j                        D cg c]>  \  }}t        j                  |      j                  |j                  j                         f@ c}}z  c_         y c c}}w c c}}w c c}}w c c}}w )Nc                     g }|j                  t         |       f       |j                  t        j                   |       f       |j                  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|      }|j                   ||       f       |j                   ||       f       |j                   ||       f       |S )Nr^   c                 ~    j                  |       }t        | j                        dk(  r|j                  dd      }|S )Nr   rw   r   )r"   rY   r$   r#   )r&   r^   yoriginals      r   mvzATestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.mv   s5    LLOqww<1$		"a(Ar   c                 V    j                   j                         j                  |       S r/   r*   r+   r"   )r&   r^   r   s     r   rmvzBTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.rmv   s    zz(,,Q//r   c                   &    e Zd ZdZfdZ fdZy)JTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatliker<   c                 \    t        j                  |      | _        j                  | _        y r/   )r   r^   r$   )r   r^   r   s     r   __init__zSTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike.__init__   s    !#%DJ!)DJr   c                 *     || j                         S r/   r   )r   r&   r   s     r   _matveczRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike._matvec   s    a,,r   N)r}   r~   r   rW   r   r   )r   r   s   r   BaseMatliker      s    0-r   r   c                       e Zd ZdZ fdZy)ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvecr<   c                 *     || j                         S r/   r   )r   r&   r   s     r   _rmatveczRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvec._rmatvec   s    q$**--r   N)r}   r~   r   rW   r   )r   s   r   
HasRmatvecr      s    .r   r   c                       e Zd ZdZ fdZy)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-   r^   r$   )r$   r   r^   rU   rV   )r   r$   r,   r-   r   r   s       r   _adjointzRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasAdjoint._adjoint   sa     JJqM4::a=8E$S

;F%b

;G$336<C:>**:?A Ar   N)r}   r~   r   rW   r   )r   r   s   r   
HasAdjointr      s    Ar   r   c                   "    e Zd Z fdZ fdZy)ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmatc                 &    j                  |      S r/   )r"   r   r&   r   s     r   _matmatzQTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._matmat  s    #<<?*r   c                 V    j                   j                         j                  |      S r/   r   r   s     r   _rmatmatzRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._rmatmat  s    #::??,0033r   N)r}   r~   r   r   r   )r   s   r   
HasRmatmatr     s    +4r   r   )appendr	   r   r   sparse
csr_matrixrU   rV   )	r   r^   casesr   r   r   r   r   r   s	   `      @@r   
make_casesz5TestAsLinearOperator.setup_method.<locals>.make_cases   s    ELL&7BCLL"((8598DELL&++HEBHMN0-i66 -.[ .
A[ 
A4Z 4 LL*U+X67LL*U+X67LL*U+X67Lr   r   r   r   rC                 @)y              @y              @r   )r   r   r   int32float32float64r*   rU   aslinearoperatorrX   r+   r_   )r   r   r   Mr   s        r   r   z!TestAsLinearOperator.setup_method   s%   
8	t 88Wg./

j28844


j2::66


j2::66


#-hjj"**#EG#E41a "221577=#EG 	G


#-hjj"**#EG#E41a "221577D#EG 	G
 88[+67

j2==99


#-hjj"--#HJ#H41a "221577=#HJ 	J


#-hjj"--#HJ#H41a "221577D#HJ 	J
GG
JJs   5K
AK
5K
7AK
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(  rh|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 ]J  }t        |j                  |      |j                  |             t        ||z  |j                  |             L t        |j                  |      |j                  |             t        ||z  |j                  |             |D ]  }	t        |j                  |	      |j                  j                         j                  |	             t        |j                  j                  |	      |j                  j                  |	             t        |j                  j                  |	      |j                  j                         j                  |	              |D ]  }	|	j                   dk  rt        |j#                  |	      |j                  j                         j                  |	             t        |j                  j                  |	      |j                  j                  |	             t        |j                  j                  |	      |j                  j                         j                  |	              t%        |d      r t        |j                  |j                         t'        t%        |d              y )Nr   r   r   r   r   rC   r   r   r   r   r^   rW   )r   rU   r   r$   r   r   r^   r_   r   r,   r"   r9   r-   r*   r+   rX   ndimr8   hasattrr   )
r   r   A_arrayr   Nxsysx2r&   r   s
             r   
test_basiczTestAsLinearOperator.test_basic  s   **JAw**1-A''CAa((9%((QC!qc?+-B((Aq6"BHHqcA3Z$89Bww"--'rxx,xx!rdRD 124 4rxxB("((QC";*?@@Aq6Aq6Aq623BQXXa['++a.9QUGKKN3  "w{{27RR1QYYq\799>>+;+?+?+BCQSSZZ]GIIMM!,<=QSSZZ]GIINN,<,@,@,CD 
 66A:QYYq\799>>+;+?+?+BCQSSZZ]GIIMM!,<=QSSZZ]GIINN,<,@,@,CD  q!QWWagg.GAv&'K %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        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  |      |j                  |              y )Nr   r   r   r   r   r   r   )r   rU   r   r$   r   r   r   r"   )r   r   r   r   r   x0x1r   s           r   test_dotzTestAsLinearOperator.test_dotF  s    **JAw**1-A''CAa)$BA3aS/*BAq6Aq6Aq623BrGKKO4rGKKO4rGKKO4 %r   N)r}   r~   r   r   r   r   r<   r   r   r   r      s    KJZ'(R5r   r   c                  f    t        j                  dd       } t        |       }t        d|v|       y )N)r   r   c                      yr)   r<   r&   s    r   r'   ztest_repr.<locals>.<lambda>V  s    r   r$   r,   zunspecified dtype)rU   rV   reprr   )r   repr_As     r   	test_reprr   U  s-      vkBA!WFv-v6r   c                  L   t        j                  d      } t        | g dz  g d       t        | j                  t	        j
                  d      j                  dd            j                         t	        j
                  d             t        t        | j                  g d       y )Nr   r   r   rv   r   rF   )rU   IdentityOperatorr   r"   r   aranger#   ravelr`   ra   r,   )idents    r   test_identityr   [  sj    &&v.E"I.299Q<//156<<>		!M*ellL9r   c                  n   t        j                  t        j                  d      j	                  dd            } d }t        j
                  d|      }| || |z  | j                  | | z   ||z   | dz  fD ]A  }t        t        |d             t        t        |d             t        t        |d             C y )	N   r   c                     t        j                  |       } t        | j                  dk(  xs | 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_onesf  s;    JJqM44177f#45wwqzr   )r   r   r   r^   r$   r   )	rU   r   r   r   r#   rV   rX   r   r   )r   r   r   ops       r   test_attributesr   c  s    ""299R=#8#8A#>?A
 	  v6FGA!QUACCQAq!t4G$%G$%I&' 5r   c                 ,    t        j                  d      S )z> Needed for test_pickle as local functions are not pickleable r   )r   zerosr   s    r   r,   r,   r  s    88A;r   c            	      $   dd l } t        | j                  dz         D ]q  }t        j                  dt
              }| j                  ||      }| j                  |      }|j                  D ]"  }t        t        ||      t        ||             $ s y )Nr   r   r   )protocol)picklerangeHIGHEST_PROTOCOLrU   rV   r,   dumpsloads__dict__r   getattr)r   r   r   sr   ks         r   test_pickler   v  st    &11A56$$VV4LLXL.LLOAA16  7r   c                  ^    G d dt         j                        } t        t        d      5  t	        t
        |        d d d         G d dt         j                        } |d      }t        |j                  g d      g d       t	        t        |j                  g d	        G d
 dt         j                        } |t        j                  j                  dd            }t        |j                  t        j                  j                  d            j                  d       y # 1 sw Y   xY w)Nc                       e Zd Zy)test_inheritance.<locals>.EmptyN)r}   r~   r   r<   r   r   Emptyr     s    r   r   zshould implement at leastrD   c                   $     e Zd Z fdZd Z xZS )"test_inheritance.<locals>.Identityc                 ,    t         |   d ||f       y )N)r^   r$   )superr   )r   n	__class__s     r   r   z+test_inheritance.<locals>.Identity.__init__  s    G41v6r   c                     |S r/   r<   r   r&   s     r   r   z*test_inheritance.<locals>.Identity._matvec  s    Hr   )r}   r~   r   r   r   __classcell__r   s   @r   Identityr     s    	7	r   r   r   r   r   c                   $     e Zd Z fdZd Z xZS )$test_inheritance.<locals>.MatmatOnlyc                 \    t         |   |j                  |j                         || _        y r/   )r   r   r^   r$   r   )r   r   r   s     r   r   z-test_inheritance.<locals>.MatmatOnly.__init__  s!    GQWWagg.DFr   c                 8    | j                   j                  |      S r/   )r   r"   r   s     r   r   z,test_inheritance.<locals>.MatmatOnly._matmat  s    66::a= r   )r}   r~   r   r   r   r   r   s   @r   
MatmatOnlyr     s    		!r   r   r   )r   )rU   rV   r   RuntimeWarningr`   	TypeErrorr   r,   NotImplementedErrorr-   r   randomrandnr$   )r   r   id3r   mms        r   test_inheritancer     s    	((  
~%@	Ai' 
B9++  1+CI&	2%s{{I>!Y-- ! 
BIIOOAq)	*B299??1-.44d;/ 
B	As   D##D,c                     t         j                  j                  dd      dt         j                  j                  dd      z  z   } t         j                  j                  dd      }t        j                  |       }t        j                  |      }||z   }||z   }t        |j                  t         j                         t        |j                  t         j                         y )Nr                 ?)	r   r   randrU   r   r   r^   r   r_   )mat_complexmat_realcomplex_operatorreal_operatorsum_complexsum_reals         r   test_dtypes_of_operator_sumr    s     ))..1%RYY^^Aa-@(@@Kyy~~a"H 11+>..x8M"%55K},H,""BMM2r   c                  b    dgfd} t        j                  d|        t        d   d       y )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   )rU   rV   r   )r,   r  s    @r   test_no_double_initr    s/    J VF3A"r   c                     t        j                  dgg      } t        j                  |       }d|z  }d| z  }t        j                  dg      }t	        |j                  |      |j                  |             t	        |j                  j                  |      |j                  j                         j                  |             y Nr   r   )	r   r   rU   r   r   r"   rX   r*   r+   re   r   r   Yr
  s        r   test_adjoint_conjugater    s    
2$A""1%A
QA
QA
!Aq1558$QSSXXZ^^A./r   c                      t        j                  dgg      } t        j                  |       }t	        |j
                  d       y )Nr   r   )r   r   rU   r   r   r   )re   r   s     r   	test_ndimr    s1    
1#A""1%Ar   c                  l   t        j                  dgg      } t        j                  |       }d|z  }d| z  }t        j                  dg      }t	        |j                  |      |j                  |             t	        |j                  j                  |      |j                  j                  |             y r  )r   r   rU   r   r   r"   r*   r  s        r   test_transpose_noconjugater    s    
2$A""1%A
QA
QA
!Aq1558$QSSWWQZ(r   c                     t        j                  dd       } t        j                  d      }d}t	        t
        |      5  | |z   d d d        t	        t
        |      5  || z   d d d        t	        t              5  | t        j                  d      z   d d d        t	        t              5  t        j                  d      | z   d d d        y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr  c                     | S r/   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.rD   r   )rU   rV   r   identityr`   r   ra   r   )r   r   rh   s      r   test_sparse_matmat_exceptionr    s      <AA
EC	y	,	A 
-	y	,	A 
-	z	"	BKKN 
#	z	"
A 
#	" 
-	,	,	,	"	"	"	"s0   C C=C'-C3CC$'C03C<)%__doc__	functoolsr   	itertoolsr   rx   pytestr   r`   r   numpy.testingr   r   numpyr   scipy.sparser   scipy.sparse.linalg._interfacelinalg
_interfacerU   scipy.sparse._sputilsr	   r   r   r   r   r   r,   r   r   r  r  r  r  r  r  r<   r   r   <module>r'     s       1 /   2 2 ({9 {9|C5 C5L7:(	7<:3
#
0

)r   