
    g                        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 Z0d Z1y# e$ r dZY =w xY w)     N)assert_allcloseassert_equalzpydata/sparse not installed)reasonz>pydata/sparse (0.15.1) does not implement necessary operationsCOODOK)marks)paramsc                 6    t        t        | j                        S N)getattrsparseparamrequests    _/var/www/html/venv/lib/python3.12/site-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   MbP?r%   )r'   lsmrr   r#   r   r!   r"   res0ress         r   	test_lsmrr4   G   B    #GXq::gq!D
**Xq
!CCFDG$/r   c                      t        j                  t        j                  d      t        j                  d      t        j                  d            d   } t        | j                  d       y )N)
      r7   r8   )Ar"   x0r   )r8   )r'   r0   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   r1   s         r   	test_lsqrrA   T   r5   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)MrF   rG   )r   diag	__class__r'   eigsr   eigsh)r#   r   r!   rG   M_denseM_sparsew_densev_densewvrH   s              r   	test_eigsrS   [   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        j                  |      t        j                  |             t        t        j                  |	      t        j                  |             y )NrC   rE   )r'   svdsr   r   abs)
r#   r   r!   rG   u0s0vt0usvts
             r   	test_svdsr]   u   s|    $GXr**Wb1KBCzz(aB/HAq"ArBFF1Irvvbz*BFF2Js,r   c                     | \  }}}|d d d f   }t        j                  ||      \  }}t        j                  ||      \  }}t        ||       t        ||       y r   )r'   lobpcgr   )	r#   r   r!   r+   XrO   rP   rQ   rR   s	            r   test_lobpcgra      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 )NrD   T)use_umfpack)r   r   r   lenr'   spsolvesp	csc_arrayr)   r*   r   typetodense)r#   r   r!   r"   b2r:   r+   s          r   test_spsolverk      s\   #GXq	A	"B	r||G,a	0Bh"Aa$$$Ar	r||G,a	0Bht4Aa$$$Ar	r||G,b	1Bh#Aa$$$Ar	r||G,||G,
.Bh)Aah(((AIIK.r   c                 d   | \  }}}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                  |      }
|	j                  |j
                  z  |j                  z  |
j                  z  }t!        |j#                         |j#                                |j%                  |j#                               }t!        |t        j&                  |      d       y )Ng|=r%   )rd   rh   r'   splur)   LUrf   rg   r   r;   perm_rarangeperm_cfrom_scipy_sparser    r   ri   solveeye)r#   r   r!   r"   nr   lu	_Pr_scipy	_Pc_scipyPrPcA2zs                r   	test_splur~      s5   #GXqAAhJ	H	BbddJ'''bddJ'''bggaj299biil*CDEIbggaj299Q<*CDEI		%	%i	0B		%	%i	0B	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 )Nr/   r%   )rh   r'   spilur)   rn   ro   rt   ri   r   r   ru   rd   )r#   r   r!   r"   r   rw   r}   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	        ||       y r   )r'   normrf   	csr_arrayr   )r#   r   r!   r"   norm0r   s         r   	test_normr      s=    #GXqJJr||G,-E::hDD% r   c                     | \  }}}t        j                  t        j                  |            }t        j                  |      }t	        |j                         |j                                y r   )r'   invrf   rg   r   ri   r#   r   r!   r"   r:   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'   expmrf   rg   r   ri   r   s         r   	test_expmr      sI    #GXq	BLL)	*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                     | \  }}t        j                  |      j                  |j                        }||k(  j	                         sJ y r   )rf   
coo_matrixasformatformatallr   	sp_sparse	pd_sparses      r   test_eqr      sB    &Iyi(11)2B2BCI"'')))r   c                     | \  }}t        j                  |      j                  |j                        }||k7  j	                         rJ y r   )rf   r   r   r   anyr   s      r   test_ner      sE    &Iyi(11)2B2BCIY&++----r   )2pytestnumpyr   scipy.sparser   rf   scipy.sparse.linalglinalgr'   numpy.testingr   r   	Exceptionmarkskipif
pytestmarkmsgr   xfailsparse_params	bsr_arrayr   	coo_arrayrg   	dia_array	dok_arrayscipy_sparse_classesfixturer   r   r   r#   r-   r4   r>   rA   rS   r]   ra   rk   r~   r   r   r   r   r   r   r   r   r    r   r   <module>r      s      # # 7 [[$'D   F
 G e$eFKK,=,=S,=,I+JKM LLLLLLLLLLLL  }%* &* +, - 7 7    %0 
0$4- /4.,
2%!//*._  Fs   E E#"E#