
    xf                        d dl Z d dlZd dlmZ d dlmc mZ d dl	m
Z
mZ 	 d dlZe j                  j                  edu d      ZdZ e j"                  d       e j"                  de j                  j%                  e      g      fZej(                  ej*                  ej,                  ej.                  ej0                  ej2                  gZ e j6                  e	      d
        Z e j6                  e	      d        Ze j6                  d        Ze j6                  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+d Z,d Z-d Z.d Z/d Z0y# e$ r dZY :w xY w)    N)assert_allcloseassert_equalzpydata/sparse not installed)reasonz;pydata/sparse (0.8) does not implement necessary operationsCOODOK)marks)paramsc                 6    t        t        | j                        S N)getattrsparseparamrequests    N/usr/lib/python3/dist-packages/scipy/sparse/linalg/tests/test_pydata_sparse.py
sparse_clsr   "   s    67==))    c                     | j                   S r   )r   r   s    r   sp_sparse_clsr   '   s    ==r   c                     t         j                  j                  d       t         j                  j                  dd      } ||       | |      fS Ni  	   )nprandomseedrand)r   r   A_denses      r   same_matrixr   ,   s;    IINN4iinnQ"G!:g#666r   c                     t         j                  j                  d       t         j                  j                  dd      }||j                  z  } | |      }t         j                  j                  d      }|||fS r   )r   r   r   r   T)r   r   A_sparsebs       r   matricesr#   3   s]    IINN4iinnQ"G		!G'"H
		qAHar   c                     | \  }}}t        j                  ||d      \  }}|dk(  sJ t        |t        j                        sJ t        ||z  |       y )NgV瞯<atolr   )splingmres
isinstancer   ndarrayr   )r#   r   r!   r"   xinfos         r   test_isolve_gmresr-   =   sT     $GXqkk(AE2GAt199a$$$HqL!$r   c                     | \  }}}t        j                  ||      }t        j                  ||      }t        |d   |d   d       y )Nr   g?̔>r%   )r'   lsmrr   r#   r   r!   r"   res0ress         r   	test_lsmrr3   G   sB    #GXq::gq!D
**Xq
!CCFDG&1r   c                      t        j                  t        j                  d      t        j                  d      t        j                  d            d   } t        | j                  d       y )N)
      r5   r6   )Ar"   x0r   )r6   )r'   r/   r   oneszerosr   shape)r+   s    r   test_lsmr_output_shaper<   O   s@    

RWWW%""''!*EaHA$r   c                     | \  }}}t        j                  ||      }t        j                  ||      }t        |d   |d   d       y )Nr   gh㈵>r%   )r'   lsqrr   r0   s         r   	test_lsqrr?   T   sB    #GXq::gq!D
**Xq
!CCFDG$/r   c                 P   | \  }}}t        j                  |dz        }|j                  |      }t        j                  |d|      \  }}t        j                  |d|      \  }}	t        ||       t        |	|       ||fD ]  }
t        j                  ||d|      \  }}t        j                  ||
d|      \  }}	t        ||       t        |	|       t        j                  ||d|      \  }}t        j                  ||
d|      \  }}	t        ||       t        |	|        y )N      kv0)MrD   rE   )r   diag	__class__r'   eigsr   eigsh)r#   r   r!   rE   M_denseM_sparsew_densev_densewvrF   s              r   	test_eigsrQ   [   s   $GXrggb!enG!!'*Hzz'Q26GW::h!+DAqAwAw  $ ::gA"Ezz(a1417#7# ;;w'Q2F{{8qA"517#7#$r   c                     | \  }}}t        j                  |d|      \  }}}t        j                  |d|      \  }}}	t        ||       t        ||       t        |	|       y )NrA   rC   )r'   svdsr   )
r#   r   r!   rE   u0s0vt0usvts
             r   	test_svdsrZ   u   s\    $GXr**Wb1KBCzz(aB/HAq"ArArBr   c                     | \  }}}|d d d f   }t        j                  ||      \  }}t        j                  ||      \  }}t        ||       t        ||       y r   )r'   lobpcgr   )	r#   r   r!   r+   XrM   rN   rO   rP   s	            r   test_lobpcgr^      sX    #GXq	!D&	A||GQ/GW<<!$DAqAwAwr   c                    | \  }}}t         j                  j                  t        |      d      }t	        j
                  t        j                  |      |      }t	        j
                  ||      }t        |t         j                        sJ t        ||       t	        j
                  t        j                  |      |      }t	        j
                  ||d      }t        |t         j                        sJ t        ||       t	        j
                  t        j                  |      |      }t	        j
                  ||      }t        |t         j                        sJ t        ||       t	        j
                  t        j                  |      t        j                  |            }t	        j
                  ||      }t        |t        |            sJ t        |j                         |j                                y )NrB   T)use_umfpack)r   r   r   lenr'   spsolvesp
csc_matrixr)   r*   r   typetoarray)r#   r   r!   r"   b2r8   r+   s          r   test_spsolverh      s\   #GXq	A	"B	r}}W-q	1Bh"Aa$$$Ar	r}}W-q	1Bht4Aa$$$Ar	r}}W-r	2Bh#Aa$$$Ar	r}}W-}}W-
/Bh)Aah(((AIIK.r   c           	      8   | \  }}}t        |      }t        |      }t        j                  |      }t	        |j
                  |      sJ t	        |j                  |      sJ  |t        j                  t        j                  |      |j                  t        j                  |      ff            } |t        j                  t        j                  |      t        j                  |      |j                  ff            }|j                  |j
                  z  |j                  z  |j                  z  }	t        |	j!                         |j!                                |j#                  |j!                               }
t        |
t        j$                  |      d       y )Ng|=r%   )ra   re   r'   splur)   LUrc   rd   r   r9   perm_rarangeperm_cr    r   rf   solveeye)r#   r   r!   r"   nr   luPrPcA2zs              r   	test_splurx      s   #GXqAAhJ	H	BbddJ'''bddJ'''	BMM2771:		299Q</H"IJ	KB	BMM2771:		!bii/H"IJ	KB	rtt	bdd	"BBJJL("2"2"45
!!#$AArvvayu-r   c                 B   | \  }}}t        |      }t        j                  |      }t        |j                  |      sJ t        |j
                  |      sJ |j                  |j                               }t        |t        j                  t        |            d       y )NgMbP?r%   )re   r'   spilur)   rk   rl   rp   rf   r   r   rq   ra   )r#   r   r!   r"   r   rs   rw   s          r   
test_spilur{      s|    #GXqhJ	X	BbddJ'''bddJ'''
!!#$AArvvc!f~D1r   c                     | \  }}}t        j                  |      }t        j                  ||      }t	        ||z  |       y r   )r   trilr'   spsolve_triangularr   )r#   r   r!   r"   r+   s        r   test_spsolve_triangularr      s<    #GXq{{8$H  1-AHqL!$r   c                 |    | \  }}}t        j                  |      }t        j                  |      }t        ||       y r   )r'   
onenormestr   )r#   r   r!   r"   est0ests         r   test_onenormestr      s8    #GXqG$D


8
$CCr   c                     | \  }}}t        j                  t        j                  |            }t        j                  |      }t	        |j                         |j                                y r   )r'   invrc   rd   r   rf   r#   r   r!   r"   r8   r+   s         r   test_invr      sI    #GXq	2==)	*B		(AAIIK.r   c                     | \  }}}t        j                  t        j                  |            }t        j                  |      }t	        |j                         |j                                y r   )r'   expmrc   rd   r   rf   r   s         r   	test_expmr      sI    #GXq	BMM'*	+B

8AAIIK.r   c                     | \  }}}t        j                  ||      }t        j                  ||      }t        ||       y r   )r'   expm_multiplyr   r   s         r   test_expm_multiplyr      s<    #GXq			Wa	(BHa(AArr   c                 8    | \  }}||k(  j                         sJ y r   )allr   	sp_sparse	pd_sparses      r   test_eqr      s#    &Iy"'')))r   c                 8    | \  }}||k7  j                         rJ y r   )anyr   s      r   test_ner      s&    &IyY&++----r   )1pytestnumpyr   scipy.sparser   rc   scipy.sparse.linalglinalgr'   numpy.testingr   r   	Exceptionmarkskipif
pytestmarkmsgr   xfailsparse_params
bsr_matrix
csr_matrix
coo_matrixrd   
dia_matrix
dok_matrixscipy_sparse_classesfixturer   r   r   r#   r-   r3   r<   r?   rQ   rZ   r^   rh   rx   r{   r   r   r   r   r   r   r    r   r   <module>r      s      # # 7 [[$'D   F
 D e$eFKK,=,=S,=,I+JKM MMMMMMMMMMMM  }%* &* +, - 7 7    %2 
0$4 /4.(
2%//*
.I  Fs   E E E 