
    (ph^R                        S r SSKJr  SSKJr  SSKrSSKrSSKJrJ	r	  SSK
JrJr  SSKrSSKJr  SSKJs  Js  Jr  SSKJr  SSKJrJr   " S	 S
5      r " S S5      rS rS rS rS rS r \RB                  RD                  S 5       r#S r$S r%\RL                  \RN                  \RP                  \RR                  4r*\RV                  \RX                  \RZ                  4r.\R^                  \R`                  \Rb                  4r2\.\2-   r3\*\3-   r4\RB                  Rk                  S\45      S 5       r6S r7S r8S r9S r:S r;S r<\RB                  R{                  \SS9S 5       r>g) z7Test functions for the sparse.linalg._interface module
    )partial)productN)raiseswarns)assert_assert_equal)matrix)assert_deallocatedIS_PYPYc                   &    \ rS rSrS rS rS rSrg)TestLinearOperator   c                     [         R                  " / SQ/ SQ/5      U l        [         R                  " SS/SS/SS//5      U l        [         R                  " SS/SS//5      U l        g )	N                  r   r   r   r   r   r   )nparrayABC)selfs    [/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/linalg/tests/test_interface.pysetup_methodTestLinearOperator.setup_method   si    7"$ %Aa5a5a5" # Aa5a5" #    c                 b#  ^^ S nU" U R                   5       GH  n[        R                  " S0 UD6m[        TR                  S:H  5        [        TR                  [        R                  " / SQ5      5      SS/5        [        TR                  [        R                  " S/S/S//5      5      S/S//5        [        T[        R                  " / SQ5      -  SS/5        [        T[        R                  " S/S/S//5      -  S/S//5        [        TR                  [        R                  " / SQ5      5      SS/5        [        TR                  [        R                  " S/S/S//5      5      S/S//5        [        TR                  [        S/S/S//5      5      S/S//5        [        T[        S/S/S//5      -  S/S//5        [        TR                  [        S/S/S//5      5      S/S//5        [        ST-  / S	Q-  S
S/5        [        ST-  R                  SS/5      / SQ5        [        ST-  R                  R                  SS/5      / SQ5        [        ST-  R                  5       R                  SS/5      / SQ5        [        ST-  S/S/S//-  S
/S//5        [        ST-  R                  S/S/S//5      S
/S//5        [        TS-  / S	Q-  S
S/5        [        TS-  S/S/S//-  S
/S//5        [        ST-  / S	Q-  SS/5        [        TT-   / S	Q-  S
S/5        [        TT-   R                  SS/5      / SQ5        [        TT-   R                  R                  SS/5      / SQ5        [        TT-   R                  5       R                  SS/5      / SQ5        [        TT-   S/S/S//-  S
/S//5        [        TT-   R                  S/S/S//5      S
/S//5        [        T* / S	Q-  SS/5        [        T* S/S/S//-  S/S//5        [        TT-
  / S	Q-  SS/5        [        TT-
  S/S/S//-  S/S//5        [        R                  " SS/SS//5      n[        ST-  R                  U5      [        R                  " SU R                   -  R                   U5      5        [        TS-  R                  U5      [        R                  " U R                   S-  R                   U5      5        [        ST-  R                  U5      [        R                  " SU R                   -  R                   R#                  5       U5      5        [        TS-  R                  U5      [        R                  " U R                   S-  R                   R#                  5       U5      5        [        TT-   R                  U5      [        R                  " U R                   U R                   -   R                   U5      5        [        TST-  -   R                  U5      [        R                  " U R                   SU R                   -  -   R                   R#                  5       U5      5        [        T* R                  U5      [        R                  " U R                   * R                   U5      5        [        TT-
  R                  U5      [        R                  " U R                   U R                   -
  R                   U5      5        [        ST-  R                  SU-  5      [        R                  " SU R                   -  R                   R#                  5       SU-  5      5        TT-   n[        [%        UR                  5      S:H  =(       a)    UR                  S   TL =(       a    UR                  S   TL 5        ST-  n[        [%        UR                  5      S:H  =(       a*    UR                  S   TL =(       a    UR                  S   S:H  5        [        ['        TR                  / SQ5      [        R(                  5      5        [        ['        TR                  [        R                  " S/S/S//5      5      [        R(                  5      5        [        ['        T[        R                  " / SQ5      -  [        R(                  5      5        [        ['        T[        R                  " S/S/S//5      -  [        R(                  5      5        [        ['        TR                  [        R                  " / SQ5      5      [        R(                  5      5        [        ['        TR                  [        R                  " S/S/S//5      5      [        R(                  5      5        [        ['        TR                  [        S/S/S//5      5      [        R(                  5      5        [        ['        T[        S/S/S//5      -  [        R(                  5      5        [        ['        TR                  [        S/S/S//5      5      [        R(                  5      5        [        ['        ST-  [        R*                  5      5        [        ['        ST-  [        R*                  5      5        [        ['        TT-   [        R,                  5      5        [        ['        T* [        R*                  5      5        [        ['        TT-
  [        R,                  5      5        [        ['        TS-  [        R*                  5      5        [        ['        TS-  [        R*                  5      5        [        TS-  S-  R                  S   TL 5        T[        R                  " / SQ5      -  nTS-  mTS-  n[        T[        R                  " / SQ5      -  U5        [        ST-  R.                  [        R0                  :H  5        Sn[3        [4        US9   T[        R                  " SS/5      -    S S S 5        [3        [4        TR                  [        R                  " SS/5      5        [3        [4        TR                  [        R                  " / SQ5      5        [3        [4        TR                  [        R                  " S/S//5      5        [3        [4        TR                  [        R                  " S/S/S/S//5      5        [3        [4        U4S j5        [3        [4        U4S j5        GM     [7        U" U R                   5      U" U R8                  5      5       GHz  u  p[        R                  " S0 UD6m[        R                  " S0 U	D6mU R                   R                  U R8                  5      n
[        R                  " SS/SS//5      n[        TT-  R                  U5      [        R                  " U
R                   U5      5        [        ST-  T-  R                  U5      [        R                  " SU
-  R                   R#                  5       U5      5        [        TT-  SS/-  SS/5        [        TT-  S/S//-  S/S//5        [        TT-  R                  S/S//5      S/S//5        [        TT-  R                  SS/5      SS/5        [        TT-  R                  R                  SS/5      SS/5        [        TT-  R                  5       R                  SS/5      SS/5        [        ['        TT-  [        R:                  5      5        [3        [4        UU4S j5        [3        [4        U4S j5        TT-  n[        [%        UR                  5      S:H  =(       a)    UR                  S   TL =(       a    UR                  S   TL 5        GM}     U" U R<                  5       GH  n[        R                  " S0 UD6n[        R                  " SS/SS//5      n[        UR                  U5      [        R                  " U R<                  R                   U5      5        [        US-  R                  U5      [        R                  " [        R                  " U R<                  U R<                  5      R                   U5      5        [        US-  SS/-  S S!/5        [        US-  R                  SS/5      S"S/5        [        US-  R                  R                  SS/5      S"S/5        [        US-  R                  5       R                  SS/5      S"S/5        [        US-  R                  S/S//5      S /S!//5        [        ['        US-  [        R>                  5      5        GM     g ! , (       d  f       GN= f)#Nc                 x   ^  T R                   U 4S jU 4S jS.T R                   U 4S jU 4S jU 4S jU 4S jS./$ )	Nc                 j   > [         R                  " TU 5      R                  TR                  S   5      $ Nr   )r   dotreshapeshapexr   s    r   <lambda>ETestLinearOperator.test_matvec.<locals>.get_matvecs.<locals>.<lambda>!   s"    BFF1aL,@,@,Lr!   c                    > [         R                  " TR                  R                  5       U 5      R	                  TR
                  S   5      $ Nr   )r   r&   Tconjr'   r(   r)   s    r   r+   r,   "   s5    RVVACCHHJ45.77>wqwwqz7J.Kr!   )r(   matvecrmatvecc                 2   > [         R                  " TU 5      $ Nr   r&   r)   s    r   r+   r,   '       BFF1aLr!   c                 b   > [         R                  " TR                  R                  5       U 5      $ r4   r   r&   r/   r0   r)   s    r   r+   r,   (       RVVACCHHJ-Br!   c                 b   > [         R                  " TR                  R                  5       U 5      $ r4   r8   r)   s    r   r+   r,   )   r9   r!   c                 2   > [         R                  " TU 5      $ r4   r5   r)   s    r   r+   r,   *   r6   r!   r(   r1   r2   rmatmatmatmat)r(   r   s   `r   get_matvecs3TestLinearOperator.test_matvec.<locals>.get_matvecs   s<    !""L$K "#"8#B#B"8 r!    r          r   r   r   )r   r   r         )
   rC                     @y              (@y              >@iir   r   r   z.Can only divide a linear operator by a scalar.matchr   r   r   r   c                     > T T -  $ r4   rB   r?   s   r   r+   0TestLinearOperator.test_matvec.<locals>.<lambda>   	    acr!   c                     > T S-  $ Nr   rB   r?   s   r   r+   rN      	    adr!   2   q   G   \   c                     > T T-   $ r4   rB   )r   r   s   r   r+   rN      rO   r!   c                     > T S-  $ rQ   rB   r?   s   r   r+   rN      rR   r!      %      ) r   	interfaceLinearOperatorr   argsr   r1   r   r   r&   r	   r2   Hadjointr>   r=   r/   r0   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_matvec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#//16E!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#//16E!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3G +J #*+dff*=*5dff*=#?H((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<!a%*111a&9B8DJqsI$D$DEF*k2*l3!ACK1$JaJAFF1INK5#?8 $DFF+H((484A1a&1a&)*A1rvvtvvjj!'<=!Q$*!7 : :A>@ !Q$12w/!Q$A/"b:!Q$!Q02r(;!Q$)00!Q82r(C!Q$QCy1RD";?Jq!tY%C%CDE ,O 65s   ?AFF
AF.	c           	        ^  T R                   R                  U 4S jU 4S jU 4S jU 4S jS.n[        R                  " S0 UD6n[        R
                  " / SQ/ SQ/ SQ/5      nUS	   n[        [        R                  " X$5      X$-  5        [        [        R                  " X$R                  S
S5      5      X$R                  S
S5      -  5        [        [        R                  " X#5      X#-  5        [        [        R                  " XBR                  5      XBR                  -  5        [        [        R                  " XBR                  5       5      XBR                  5       -  5        [        [        R                  " UR                  SS
5      UR                  5      UR                  SS
5      UR                  -  5        [        [        R                  " UR                  SS
5      UR                  5       5      UR                  SS
5      UR                  5       -  5        [        [        R                  " X2R                  5      X2R                  -  5        [        [        R                  " X2R                  5       5      X2R                  5       -  5        [        [        [        R                  US5        [        [        [        R                  SU5        g )Nc                    > [         R                  " TR                  U 5      R                  TR                  R                  S   5      $ r%   )r   r&   r   r'   r(   r*   r   s    r   r+   0TestLinearOperator.test_matmul.<locals>.<lambda>   s+    !2!:!:466<<?!Kr!   c                    > [         R                  " TR                  R                  R	                  5       U 5      R                  TR                  R                  S   5      $ r.   )r   r&   r   r/   r0   r'   r(   ry   s    r   r+   rz      s=    "&&)*#,,3GDFFLLO,D#Er!   c                 v   > [         R                  " TR                  R                  R	                  5       U 5      $ r4   )r   r&   r   r/   r0   ry   s    r   r+   rz      s    "&&!"<r!   c                 F   > [         R                  " TR                  U 5      $ r4   )r   r&   r   ry   s    r   r+   rz      s    !2r!   r<   )y      ?      ?r   r   r   )      	   r   r   r   rB   )r   r(   r\   r]   r   r   r   operatormatmulr'   r_   r`   rh   ri   )r   Dr   r   bs   `    r   test_matmulTestLinearOperator.test_matmul   s   ffllKE<24 $$)q)HHn! " aDX__Q*AE2X__Q		"a(891yyQ?O;OPX__Q*AE2X__Q,a##g6X__Q		4a))+oFX__QYYq"%5qss;QYYq"=MPQPSPS=STX__QYYq"%5qyy{CYYq"%		3	5X__Q,a##g6X__Q		4a))+oFj(//1a8j(//1a8r!   )r   r   r   N)__name__
__module____qualname____firstlineno__r   ru   r   __static_attributes__rB   r!   r   r   r      s    #_FB9r!   r   c                   &    \ rS rSrS rS rS rSrg)TestAsLinearOperator   c           	         / U l         S n[        R                  " / SQ/ SQ/5      nU =R                   U" U[        R                  5      -  sl         U =R                   U" U[        R                  5      -  sl         U =R                   U" U[        R
                  5      -  sl         U =R                   U" UR                  [        R
                  5       VVs/ s H1  u  p4[        R                  " U5      R                  UR                  4PM3     snn-  sl         U =R                   U" UR                  [        R
                  5       VVs/ s H?  u  p4[        R                  " U5      R                  UR                  R                  5       4PMA     snn-  sl         U =R                   U" UR                  [        R
                  5       VVs/ s HC  u  p4[        R                  " U5      R                  5       UR                  R                  5       4PME     snn-  sl         [        R                  " / SQ/ SQ/5      nU =R                   U" U[        R                  5      -  sl         U =R                   U" UR                  [        R                  5       VVs/ s H1  u  p4[        R                  " U5      R                  UR                  4PM3     snn-  sl         U =R                   U" UR                  [        R                  5       VVs/ s H?  u  p4[        R                  " U5      R                  UR                  R                  5       4PMA     snn-  sl         U =R                   U" UR                  [        R                  5       VVs/ s HC  u  p4[        R                  " U5      R                  5       UR                  R                  5       4PME     snn-  sl         g s  snnf s  snnf s  snnf s  snnf s  snnf s  snnf )Nc                   ^ ^^ / nUR                  [        T US9T 45        UR                  [        R                  " T US9T 45        UR                  [        R
                  " T US9T 45        U 4S jmU 4S jm " UU 4S jS[        R                  5      n " U4S jSU5      n " UU4S jS	U5      n " U 4S
 jSU5      nUR                  U" U5      T 45        UR                  U" U5      T 45        UR                  U" U5      T 45        U$ )Nrf   c                    > TR                  U 5      n[        U R                  5      S:X  a  UR                  SS5      nU$ )Nr   r   r   )r&   ra   r(   r'   )r*   rf   yoriginals      r   mvATestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.mv   s5    LLOqww<1$		"a(Ar!   c                 V   > TR                   R                  5       R                  U 5      $ r4   r/   r0   r&   )r*   rf   r   s     r   rmvBTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.rmv   s    zz(,,Q//r!   c                   2   > \ rS rSrSrU4S jrU 4S jrSrg)JTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike   rB   c                 ^   > [         R                  " U5      U l        TR                  U l        g r4   )r   rf   r(   )r   rf   r   s     r   __init__STestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike.__init__   s    !#%DJ!)DJr!   c                 (   > T" XR                   5      $ r4   r   )r   r*   r   s     r   _matvecRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.BaseMatlike._matvec   s    a,,r!   rf   r(   N)r   r   r   r   r^   r   r   r   )r   r   s   r   BaseMatliker      s    0- -r!   r   c                   &   > \ rS rSrSrU 4S jrSrg)ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvec   rB   c                 (   > T" XR                   5      $ r4   r   )r   r*   r   s     r   _rmatvecRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatvec._rmatvec   s    q**--r!   N)r   r   r   r   r^   r   r   )r   s   r   
HasRmatvecr      s    . .r!   r   c                   (   > \ rS rSrSrU U4S jrSrg)ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasAdjoint   rB   c                    > U R                   S   U R                   S   4n[        TU R                  S9n[        TU R                  S9n[        R                  " UUU R                  US9$ )Nr   r   r   )r1   r2   rf   r(   )r(   r   rf   r\   r]   )r   r(   r1   r2   r   r   s       r   _adjointRTestAsLinearOperator.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   r   r^   r   r   )r   r   s   r   
HasAdjointr      s    A Ar!   r   c                   .   > \ rS rSrU 4S jrU 4S jrSrg)ITestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmati  c                 &   > TR                  U5      $ r4   )r&   r   r*   r   s     r   _matmatQTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._matmat  s    #<<?*r!   c                 V   > TR                   R                  5       R                  U5      $ r4   r   r   s     r   _rmatmatRTestAsLinearOperator.setup_method.<locals>.make_cases.<locals>.HasRmatmat._rmatmat  s    #::??,0033r!   rB   N)r   r   r   r   r   r   r   )r   s   r   
HasRmatmatr     s    +4 4r!   r   )appendr	   r   r   sparse	csr_arrayr\   r]   )	r   rf   casesr   r   r   r   r   r   s	   `      @@r   
make_cases5TestAsLinearOperator.setup_method.<locals>.make_cases   s    ELL&7BCLL"((8598DELL&**85A8LM0- -i66 -.[ .
A 
A[ 
A4Z 4 LL*U+X67LL*U+X67LL*U+X67Lr!   r   r   r   rI                 @)y              @y              @r   )r   r   r   int32float32float64r/   r\   aslinearoperatorr_   r0   r`   rg   )r   r   r   Mr   s        r   r   !TestAsLinearOperator.setup_method   s   
8	t 88Wg./

j28844


j2::66


j2::66


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

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

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

j2==99


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

#-hjj"--#HJ#H41 "221577D#HJ 	J


#-hjj"--#HJ#H41 "2215==?L#HJ 	J
GGG
JJJs(   8O
AO$
	A
O*
8O0
AO6
A
O<
c                 	   U R                    GHv  u  p[        R                  " U5      nUR                  u  p[        R
                  " / SQ5      [        R
                  " S/S/S//5      /n[        R
                  " SS/5      [        R
                  " S/S//5      /nUR                  [        R                  :X  al  U[        R
                  " / SQ5      [        R
                  " S/S/S//5      /-  nU[        R
                  " SS/5      [        R
                  " S/S//5      /-  n[        R
                  " SS/SS	/SS
//5      nU HJ  n[        UR                  U5      UR                  U5      5        [        X8-  UR                  U5      5        ML     [        UR                  U5      UR                  U5      5        [        X7-  UR                  U5      5        U GH   n	[        UR                  U	5      UR                  R                  5       R                  U	5      5        [        UR                  R                  U	5      UR                  R                  U	5      5        [        UR                  R                  U	5      UR                  R                  5       R                  U	5      5        [        UR!                  5       R                  U	5      UR                  R                  5       R                  U	5      5        GM#     U GH2  n	U	R"                  S:  a  M  [        UR%                  U	5      UR                  R                  5       R                  U	5      5        [        UR                  R                  U	5      UR                  R                  U	5      5        [        UR                  R                  U	5      UR                  R                  5       R                  U	5      5        [        UR!                  5       R                  U	5      UR                  R                  5       R                  U	5      5        GM5     ['        US5      (       a   [        UR                  UR                  5        [)        ['        US5      5        GMy     g )Nr   r   r   r   r   rI   r   r   r   r   rf   r^   )r   r\   r   r(   r   r   rf   rg   r   r1   r&   r>   r2   r/   r0   r_   r`   ndimr=   hasattrr   )
r   r   A_arrayr   Nxsysx2r*   r   s
             r   
test_basicTestAsLinearOperator.test_basic+  s   **JA**1-A''CA((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QUGKKN3  "w{{27R1QYYq\799>>+;+?+?+BCQSSZZ]GIIMM!,<=QSSZZ]GIINN,<,@,@,CDQYY[//2GIINN4D4H4H4KL	  66A:QYYq\799>>+;+?+?+BCQSSZZ]GIIMM!,<=QSSZZ]GIINN,<,@,@,CDQYY[//2GIINN4D4H4H4KL  q!!QWWagg.GAv&'O %r!   c                    U R                    H  u  p[        R                  " U5      nUR                  u  p[        R
                  " / SQ5      n[        R
                  " S/S/S//5      n[        R
                  " SS/SS/SS//5      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        M     g )Nr   r   r   r   r   r   r   )r   r\   r   r(   r   r   r   r&   )r   r   r   r   r   x0x1r   s           r   test_dotTestAsLinearOperator.test_dotV  s    **JA**1-A''CA)$BA3aS/*BAq6Aq6Aq623BrGKKO4rGKKO4rGKKO4 %r!   )r   N)r   r   r   r   r   r   r   r   rB   r!   r   r   r      s    OJb)(V5r!   r   c                  d    [         R                  " SS S9n [        U 5      n[        SU;  U5        g )N)r   r   c                     gr.   rB   r*   s    r   r+   test_repr.<locals>.<lambda>f  s    r!   r(   r1   zunspecified dtype)r\   r]   reprr   )r   repr_As     r   	test_reprr   e  s-      vkBA!WFv-v6r!   c                  R   [         R                  " S5      n [        U / SQ-  / SQ5        [        U R                  [        R
                  " S5      R                  SS5      5      R                  5       [        R
                  " S5      5        [        [        U R                  / SQ5        g )Nr   r   r   r   r   rL   )r\   IdentityOperatorr   r&   r   aranger'   ravelrh   ri   r1   )idents    r   test_identityr   k  sj    &&v.E"I.299Q<//156<<>		!M*ellL9r!   c            
         [         R                  " [        R                  " S5      R	                  SS5      5      n S n[         R
                  " SUS9nXX-  X-  U R                  U R                  5       X -   X"-   U S-  /	nU HB  n[        [        US5      5        [        [        US5      5        [        [        US5      5        MD     g )	N   r   c                     [         R                  " U 5      n [        U R                  S:H  =(       d    U R                  S:H  5        [         R                  " S5      $ )N)r   )r   r   r   )r   asarrayr   r(   onesr   s    r   always_four_ones)test_attributes.<locals>.always_four_onesv  s;    JJqM44177f#45wwqzr!   )r   r   r   rf   r(   r   )
r\   r   r   r   r'   r]   r_   r`   r   r   )r   r   r   opsops        r   test_attributesr   s  s    ""299R=#8#8A#>?A
 	  v6FGAqssAIIKq!t
DCG$%G$%I&' r!   c                 .    [         R                  " S5      $ )z=Needed for test_pickle as local functions are not pickleable r   )r   zerosr   s    r   r1   r1     s    88A;r!   c            	      "   SS K n [        U R                  S-   5       Ho  n[        R                  " S[
        5      nU R                  X!S9nU R                  U5      nUR                   H!  n[        [        X%5      [        XE5      5        M#     Mq     g )Nr   r   r   )protocol)picklerangeHIGHEST_PROTOCOLr\   r]   r1   dumpsloads__dict__r   getattr)r   r   r   sr   ks         r   test_pickler    sn    &11A56$$VV4LLL.LLOA6  7r!   c                  b    " S S[         R                  5      n [        [        SS9   [	        [
        U 5        S S S 5         " S S[         R                  5      nU" S5      n[        UR                  / SQ5      / SQ5        [	        [        UR                  / S	Q5         " S
 S[         R                  5      nU" [        R                  R                  SS5      5      n[        UR                  [        R                  R                  S5      5      R                  S5        g ! , (       d  f       N= f)Nc                       \ rS rSrSrg)test_inheritance.<locals>.Emptyi  rB   N)r   r   r   r   r   rB   r!   r   Emptyr    s    r!   r  zshould implement at leastrJ   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )"test_inheritance.<locals>.Identityi  c                 $   > [         TU ]  S X4S9  g )Nr   )superr   )r   n	__class__s     r   r   +test_inheritance.<locals>.Identity.__init__  s    G4v6r!   c                     U$ r4   rB   r   r*   s     r   r   *test_inheritance.<locals>.Identity._matvec  s    Hr!   rB   )r   r   r   r   r   r   r   __classcell__r  s   @r   Identityr    s    	7	 	r!   r  r   r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )$test_inheritance.<locals>.MatmatOnlyi  c                 Z   > [         TU ]  UR                  UR                  5        Xl        g r4   r
  r   rf   r(   r   r   r   r  s     r   r   -test_inheritance.<locals>.MatmatOnly.__init__      GQWWagg.Fr!   c                 8    U R                   R                  U5      $ r4   )r   r&   r  s     r   r   ,test_inheritance.<locals>.MatmatOnly._matmat  s    66::a= r!   r?   )r   r   r   r   r   r   r   r  r  s   @r   
MatmatOnlyr    s    		! 	!r!   r  r   )r   )r\   r]   r   RuntimeWarningrh   	TypeErrorr   r1   NotImplementedErrorr2   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                     [         R                  R                  SS5      S[         R                  R                  SS5      -  -   n [         R                  R                  SS5      n[        R                  " U 5      n[        R                  " U5      nX"-   nX3-   n[        UR                  [         R                  5        [        UR                  [         R                  5        g )Nr                 ?)	r   r!  randr\   r   r   rf   r   rg   )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"5K,H,""BMM2r!   c                  `   ^ S/mU4S jn [         R                  " SU S9  [        TS   S5        g )Nr   c                 "   > TS==   S-  ss'   U $ Nr   r   rB   )v
call_counts    r   r1   #test_no_double_init.<locals>.matvec  s    1r!   r   r   r1   r   )r\   r]   r   )r1   r4  s    @r   test_no_double_initr8    s/    J VF3A"r!   
test_dtypec                    ^ [         R                  " SU S9mU4S jn[        R                  " SUS9nUR                  [         R                  " U 5      :X  d   eg )Nr   r   c                 F   > [         R                  " TU S   -  U S   /5      $ r2  r   r   )r3  scalars    r   r   /test_determine_lo_dtype_from_matvec.<locals>.mv  s#    xx!A$!-..r!   r6  r7  )r   r   r\   r]   rf   )r9  r   lor=  s      @r   #test_determine_lo_dtype_from_matvecr@    sI     XXaz*F/ 
	!	!&	4B88rxx
++++r!   c                  `    S n [         R                  " SU S9nUR                  [        ;   d   eg )Nc                 D    [         R                  " SU S   -  U S   /5      $ )N   r   r   r<  )r3  s    r   r   +test_determine_lo_dtype_for_int.<locals>.mv  s"    xxqtQqT*++r!   r6  r7  )r\   r]   rf   
INT_DTYPES)r   r?  s     r   test_determine_lo_dtype_for_intrF    s-    , 
	!	!&	4B88z!!!r!   c                  .   [         R                  " S//5      n [        R                  " U 5      nSU-  nSU -  n[         R                  " S/5      n[	        UR                  U5      UR                  U5      5        [	        UR                  R                  U5      UR                  R                  5       R                  U5      5        [	        UR                  5       R                  U5      UR                  R                  5       R                  U5      5        g Nr'  r   )
r   r   r\   r   r   r&   r_   r/   r0   r`   rm   r   r   Yr3  s        r   test_adjoint_conjugaterK    s    
2$A""1%A
QA
QA
!Aq1558$QSSXXZ^^A./#QSSXXZ^^A%67r!   c                      [         R                  " S//5      n [        R                  " U 5      n[	        UR
                  S5        g )Nr   r   )r   r   r\   r   r   r   )rm   r   s     r   	test_ndimrM    s1    
1#A""1%Ar!   c                  r   [         R                  " S//5      n [        R                  " U 5      nSU-  nSU -  n[         R                  " S/5      n[	        UR                  U5      UR                  U5      5        [	        UR                  R                  U5      UR                  R                  U5      5        g rH  )r   r   r\   r   r   r&   r/   rI  s        r   test_transpose_noconjugaterO    s    
2$A""1%A
QA
QA
!Aq1558$QSSWWQZ(r!   c                  f    " S S[         R                  5      n U " [        R                  " SS/SS//5      5      n[        R                  " SS/5      n[        R                  " SS/S	S
//5      nUR	                  SS5      n[        R                  " SS/SS//5      n[        X-  XS-  5        [        UR                  U-  UR                  U-  5        [        UR                  U-  UR                  U-  5        [        X-  XR-  5        [        UR                  U-  UR                  U-  5        [        UR                  U-  UR                  U-  5        [        X-  XT-  5        [        UR                  U-  UR                  U-  5        [        UR                  U-  UR                  U-  5        g )Nc                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )/test_transpose_multiplication.<locals>.MyMatrixi  c                 Z   > [         TU ]  UR                  UR                  5        Xl        g r4   r  r  s     r   r   8test_transpose_multiplication.<locals>.MyMatrix.__init__  r  r!   c                      U R                   U-  $ r4   r?   r   others     r   r   7test_transpose_multiplication.<locals>.MyMatrix._matmat	  s    %"7r!   c                 4    U R                   R                  U-  $ r4   )r   r/   rV  s     r   r   8test_transpose_multiplication.<locals>.MyMatrix._rmatmat
  s    $&&((U*:#:r!   r?   )	r   r   r   r   r   r   r   r   r  r  s   @r   MyMatrixrR    s    	 	8::r!   r[  r   r   r   r   rG      rF   (   r   )r\   r]   r   r   r'   r   r/   )r[  r   rm   r   X2rJ  s         r   test_transpose_multiplicationr_    sT   ;9++ ; 	Aq6Aq6*+,A
!QA
2r(RH%&A	
2q	B
1a&1a&!"Aq!##'"q!##'"q!##'"q!##'" 244!8$r1338$r!   c                     [         R                  " SS S9n [        R                  " S5      nSn[	        [
        US9   X-    S S S 5        [	        [
        US9   X-    S S S 5        [	        [        5         U [        R                  " S5      -    S S S 5        [	        [        5         [        R                  " S5      U -    S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nr6  c                     U $ r4   rB   r   s    r   r+   .test_sparse_matmat_exception.<locals>.<lambda>  s    !r!   r7  r   z9Unable to multiply a LinearOperator with a sparse matrix.rJ   r   )	r\   r]   r   	eye_arrayrh   r  ri   r   identity)r   r   rp   s      r   test_sparse_matmat_exceptionre    s      <AA
EC	y	,	 
-	y	,	 
-	z	"	BKKN 
#	z	"
A 
#	" 
-	,	,	,	"	"	"	"s/   CC4C*%C;
C
C'*
C8;
D	zTest not meaningful on PyPy)reasonc                      [         R                  " S5      n [        [        R                  U 5       nUR                  5         AS S S 5        g ! , (       d  f       g = frQ   )r   eyer
   r\   MatrixLinearOperatorr`   )r   r   s     r   "test_MatrixLinearOperator_refcyclerj  *  s;     	q	A	I::A	>"


 
?	>	>s   A
A)?__doc__	functoolsr   	itertoolsr   r   pytestr   rh   r   numpy.testingr   r   numpyr   scipy.sparser   scipy.sparse.linalg._interfacelinalg
_interfacer\   scipy.sparse._sputilsr	   scipy._lib._gcutilsr
   r   r   r   r   r   r   r1   r  markthread_unsafer%  r/  r8  int8int16r   int64rE  r   r   
longdoubleREAL_DTYPES	complex64rg   clongdoubleCOMPLEX_DTYPESINEXACTDTYPES	ALLDTYPESparametrizer@  rF  rK  rM  rO  r_  re  skipifrj  rB   r!   r   <module>r     s\       1 /   2 2 ( ;C9 C9LI5 I5X7:( 	7 < <:3
# ggrxx2884
zz2::r}}5,,r~~>n,&	 y1, 2,"8

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