o
    Yi                     @   s
  d dl Z d dlZd dlZd dlmZmZmZ d dlZd dl	m
Z
mZ d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZ dd	d
Z		d ddZ		d!ddZG dd deZG dd dZG dd dZG dd deZG dd deZG dd deZdS )"    N)assert_allcloseassert_equalassert_array_equal)svd
null_space)	csc_arrayissparse	dia_arrayrandom_array)LinearOperatoraslinearoperator)svds)ArpackNoConvergenceLMc                 C   s   t | r|  } t| \}}}|dkrt|| d  }n|dkr,t|d | }ntd||d d |f || || fS )Nr   SMzunknown which=)r   toarrayr   npargsort
ValueError)mkwhichusvhii r   Q/tmp/pip-target-1s0edx8b/lib/python/scipy/sparse/linalg/_eigen/tests/test_svds.py
sorted_svd   s   r   FT绽|=Hz>c
                 C   s>  | j \}
}t|j |
|f t|j |f t|j ||f || |}t|j | j  |r4t|| ||	d t|j |}t|j ||f t|t|||	d t||j }t|j ||f t|t|||	d |rt| ||\}}}tt	|t	|||	d t||||	d tt	|t	|||	d d S d S )Natolrtol)
shaper   dotr   r   Tconjidentityr   abs)Ar   r   r   r   r   check_usvh_A	check_svdr"   r#   nr   	A_rebuiltuh_uvh_vu2s2vh2r   r   r   _check_svds"   s(   
 r4   c
                 C   s  | j \}
}t|j |
|f t|j |f t|j ||f t|j |}t|j ||f tt|t| ||  }t	|d||	d t||j }t|j ||f tt|t| ||  }t	|d||	d |r| j | |j |  }tt||
|  }| |j  ||  }tt|||  }t	|d||	d t	|d||	d |rt
| ||\}}}t	||||	d || |}|| |}t|j | j  tt|| ||  }t	|d||	d d S d S )Ng        r!   )r$   r   r   r%   r&   r'   sumr)   r(   r   r   )r*   r   r   r   r   r   	check_resr,   r"   r#   r-   r   r/   errorr0   rurusrvhrvhsr1   r2   r3   A_rebuilt_svdr.   r   r   r   _check_svds_nC   s8   
""r=   c                   @   $   e Zd Zdd Zdd Zdd ZdS )CheckingLinearOperatorc                 C   s   || _ |j| _|j| _d S N)r*   dtyper$   )selfr*   r   r   r   __init__m   s   zCheckingLinearOperator.__init__c                 C   s"   t t|jt| | j|S r@   )r   maxr$   r   sizer*   r%   rB   xr   r   r   _matvecr   s   zCheckingLinearOperator._matvecc                 C   s(   t t|jt| | jj |S r@   )	r   rD   r$   r   rE   r*   r&   	conjugater%   rF   r   r   r   _rmatvecv   s   zCheckingLinearOperator._rmatvecN)__name__
__module____qualname__rC   rH   rJ   r   r   r   r   r?   l   s    r?   c                   @   sN  e Zd ZdZdZdZdZdZe	g ge
efejddgdd	ggd
de
efdeefe	ddgddggge
efgZejdedd Zejdddgdd Zdd Zejdg ddd Zdd  Zejd!d"ejejfd#d$ Zejd!g dfd%d& Zejdd'd(d) Zejd*d+ejd,ed-d.d/d0 Zd1d2 Zejd3dd4ejd5edfd6d7 Z ejd8d9d:d; Z!d<d= Z"ejd>d?d@dA Z#ejj$ejddBdCgejdddgdDdE Z%ejj&dFdGdHdIdJ Z'dKdL Z(dMdN Z)dOdP Z*ejj&dFdGdHdQdR Z+ejj$ej&dSdTdU Z,ejj$ejd>dVejdWdXdYdZ Z-g d[g d\g d]g d^gZ.g d_g d`g dag dbgZ/ejj$ejj&dcdddHejdee.e/fejded4dCejdfd+ejd*dgejdhej	e0e1fdidj Z2ejj$dkdl Z3dmZ4ej&dnej&dSejdWe4ejdoe5e6ej7fdpdq Z8ejj$ejdWdrejdoe5e6fdsdt Z9ejj$ejj&dcdddHejdWduejdoe5e6fdvdw Z:ejdWdxejdoe5e6ej7fejj&dFdGdHdydz Z;ej&d{ejdoe5e6ej7fd|d} Z<dS )~SVDSCommonTestsNz`A` must not be empty.z `A` must be of numeric data typeztype not understoodzarray must have ndim <= 2abcdobjectrA   hi      ?       @g      @g      @argsc                 C   sP   |\}}}t j||d t|d| jdd W d    d S 1 s!w   Y  d S )Nmatch   r   r   solverrng)pytestraisesr   r]   )rB   rX   r*   
error_typemessager   r   r   test_svds_input_validation_A   s   
"z,SVDSCommonTests.test_svds_input_validation_Ar   r   r   c                 C   s   t ddgddgg}| jdkr2tjtdd t|d|| jdd	}W d    n1 s,w   Y  n
t|d|| jdd	}t|dg|R |d
d d S )Nr[            lobpcgThe problem sizerY   r   r   r   r]   r^   g|>)r   r"   )r   asarrayr]   r_   warnsUserWarningr   r4   )rB   r   r*   resr   r   r   test_svds_int_A   s   
zSVDSCommonTests.test_svds_int_Ac           	         s   dd  dd  fdd}d}||}t |dd	d
d\}}}dttjtdd d|   }td| ttjttd|tdd |  }t||dd tt|t|dd d S )Nc                 S   s   t j| ddS )Nr   )axis)r   diff)rO   r   r   r   diff0   s   z@SVDSCommonTests.test_svds_diff0_docstring_example.<locals>.diff0c                 S   s   | j dkr| d d tjf } tj| jd d | jd f| jd}| dd d f  |dd d f< | ddd d f | dd d d f  |ddd d f< | dd d f |dd d f< |S )Nr[   r   rT   )ndimr   newaxiszerosr$   rA   )rO   rR   r   r   r   diff0t   s   
$8zASVDSCommonTests.test_svds_diff0_docstring_example.<locals>.diff0tc                    s   t   | d | fdS )Nr[   )matvecmatmatrmatvecrmatmatr$   )r   )r-   rq   rv   r   r   diff0_func_aslo_def   s   
zNSVDSCommonTests.test_svds_diff0_docstring_example.<locals>.diff0_func_aslo_defd   re   r   r   )r   r   random_staterW   r[   rf   rd   MbP?r"   ư>)	r   r   sinpiarangesqrtouterr   r)   )	rB   r|   r-   diff0_func_aslor   r   _seuer   r{   r   !test_svds_diff0_docstring_example   s   $"
z1SVDSCommonTests.test_svds_diff0_docstring_exampler   )rr   r   re   rf      g      ?1c                 C   s   t jd}|d}| jdkr,|dkr,t||| jdd}t||g|R ddd d S d}tjt|d	 t||| jdd W d    d S 1 sJw   Y  d S )
Nr   rf   re   propackre   r\   Tr+   r,   z!`k` must be an integer satisfyingrY   )	r   randomdefault_rngr]   r   r4   r_   r`   r   )rB   r   r^   r*   rm   rb   r   r   r   test_svds_input_validation_k_1   s   
"z.SVDSCommonTests.test_svds_input_validation_k_1c                 C      d}t jtt|d ttdg | jdd W d    n1 s#w   Y  d}t jt	|d ttdd| jdd W d    d S 1 sIw   Y  d S )Nint() argument must be arY   
   r   r\   invalid literal for int()rU   
r_   r`   	TypeErrorreescaper   r   eyer]   r   rB   rb   r   r   r   test_svds_input_validation_k_2      "z.SVDSCommonTests.test_svds_input_validation_k_2tolrr   c                 C   P   d}t jt|d ttd|| jdd W d    d S 1 s!w   Y  d S )Nz2`tol` must be a non-negative floating point value.rY   r   r   r   r]   r^   r_   r`   r   r   r   r   r]   rB   r   rb   r   r   r    test_svds_input_validation_tol_1      "z0SVDSCommonTests.test_svds_input_validation_tol_1c                 C   r   )Nz#'<' not supported between instancesrY   r   r   r   )r_   r`   r   r   r   r   r]   r   r   r   r    test_svds_input_validation_tol_2   s   "z0SVDSCommonTests.test_svds_input_validation_tol_2)LASAekkir   c                 C   sL   t jtdd ttd|| jdd W d    d S 1 sw   Y  d S )Nz`which` must be inrY   r   r   r   r]   r^   r   )rB   r   r   r   r    test_svds_input_validation_which   s   "z0SVDSCommonTests.test_svds_input_validation_which	transpose)TFr-   rf   	   c           	      C   s   t jd}|d}||}|r|j}d}d}| jdkr#|jd nt|j}||krPtjt	|d t
|||| jdd W d    d S 1 sIw   Y  d S d S )Nr   r      rd   `v0` must have shaper   rY   r   v0r]   r^   )r   r   r   r&   r]   r$   minr_   r`   r   r   )	rB   r   r-   r^   r*   r   r   rb   required_lengthr   r   r   test_svds_input_validation_v0_1   s   

"z/SVDSCommonTests.test_svds_input_validation_v0_1c                 C   s`   t d}t d}d}tjt|d t|d|| jdd W d    d S 1 s)w   Y  d S )Nr   r   )r[   r   r   rY   r[   r   r   r   onesr_   r`   r   r   r]   )rB   r*   r   rb   r   r   r   test_svds_input_validation_v0_2   s   

"z/SVDSCommonTests.test_svds_input_validation_v0_2r   r[   r   c                 C   sV   t d}d}tjt|d t|d|| jdd W d    d S 1 s$w   Y  d S )Nr   z7`v0` must be of floating or complex floating data type.rY   r[   r   r   r   )rB   r   r*   rb   r   r   r   test_svds_input_validation_v0_3  s
   
"z/SVDSCommonTests.test_svds_input_validation_v0_3maxiter)rr   r   g      @c                 C   r   )Nz%`maxiter` must be a positive integer.rY   r   r   r   r]   r^   r   )rB   r   rb   r   r   r   $test_svds_input_validation_maxiter_1	  r   z4SVDSCommonTests.test_svds_input_validation_maxiter_1c                 C   r   )Nr   rY   r   r   r   r   rU   r   r   r   r   r   $test_svds_input_validation_maxiter_2  r   z4SVDSCommonTests.test_svds_input_validation_maxiter_2rsv)r   r   c                 C   r   )Nz$`return_singular_vectors` must be inrY   r   r   return_singular_vectorsr]   r^   r   )rB   r   rb   r   r   r   2test_svds_input_validation_return_singular_vectors  r   zBSVDSCommonTests.test_svds_input_validation_return_singular_vectorsre   r   c                 C   s   t jd}|d}| jdkr2tjtdd t|||| jdd}W d    n1 s,w   Y  n
t|||| jdd}t||g|R |ddd	 d S )
Nr   r   rg   rh   rY   ri   &.>gvIh%L=)r   r"   r#   )	r   r   r   r]   r_   rk   rl   r   r4   )rB   r   r   r^   r*   rm   r   r   r   test_svds_parameter_k_which!  s   

 z+SVDSCommonTests.test_svds_parameter_k_whichzignore:ExitedzIgnore LOBPCG early exit.)reasonc           	         s   ddt jd}|f d  dk<   j  t \}}t   fdd}g d}g dg d	g d
d}t||j D ]\}}||}||k sWJ qId S )Nr}   re   r   皙?c              	      sT   t  tdj| dd\}}}tj|d d d  d d d  S )N  r   )r   r   r   r]   r   r^   r[   rr   )r   r   r   r]   linalgnorm)r   r   r2   r*   r   r-   r   rB   r   r   errH  s   0z4SVDSCommonTests.test_svds_parameter_tol.<locals>.err)-C6?g{Gz?rV   )g-q=r   r   )g+<r   r   )g-=g{Gz?rd   )r   arpackrg   )r   r   r   r&   r   r   zipr]   )	rB   r^   r   r   tols
accuraciesr   accuracyr7   r   r   r   test_svds_parameter_tol2  s$   
z'SVDSCommonTests.test_svds_parameter_tolc                 C   s8  d}d}t jd}|||f}||}t|||| jdd}t|||| jdd}tdD ]}t|| || ddd q.t||g|R   ||}	t|||	| jd	d}
t|||	| jdd}tdD ]}t|
| || ddd qct||g|
R   d
}tj	t
|d t||
 W d    d S 1 sw   Y  d S )Nr}   r[   r   r   r]   r^   re   V瞯<缉ؗҬ<r#   r"   rd   Arrays are not equalrY   r   r   r   r   r]   ranger   r4   r_   r`   AssertionErrorr   )rB   r-   r   r^   r*   v0ares1ares2aidxv0bres1bres2brb   r   r   r   test_svd_v0W  s(   

"zSVDSCommonTests.test_svd_v0c                 C   s  d}d}t jd}|||f}t||| jdd}t||| jdd}tdD ]}t|| || ddd q't||g|R   t||| jdd}t||| jdd}	tdD ]}t|| |	| ddd qUt||g|R   d	}
tj	t
|
d
 t|| W d    d S 1 sw   Y  d S )Nr}   r[   r   r]   r^   re   r   r   r   r   rY   r   )rB   r-   r   r^   r*   r   r   r   r   r   rb   r   r   r   test_svd_rngy  s$   "zSVDSCommonTests.test_svd_rngc           	      C   s   d}d}t jd}|||f}t|}t||| j|d}t||| j|d}tdD ]}t|| || ddd q,t	||g|R   d S )	Nr}   r[   i r   re   r   r   r   )
r   r   r   copydeepcopyr   r]   r   r   r4   )	rB   r-   r   r^   r*   rng_2r   r   r   r   r   r   test_svd_rng_2  s   
zSVDSCommonTests.test_svd_rng_2c           	      C   s   d}d}t jd}t jd}|||f}t||| j|dd}t||| j|dd}t||g|R ddi t||g|R ddi d	}tjt|d
 t	|| W d    d S 1 s]w   Y  d S )Nr}   r   r   iP r   )r]   r^   r   r"   gH׊>r   rY   )
r   r   r   r   r]   r4   r_   r`   r   r   )	rB   r-   r   rng1rng2r*   r   r   rb   r   r   r   test_svd_rng_3  s   "zSVDSCommonTests.test_svd_rng_3zignore:Exited postprocessingc              	   C   s  t t dt j}d}t||\}}}d }| jdkrBd}tjt	|d t
||dd| jdd W d    n1 s<w   Y  nS| jd	krkd
}tjtdd t
||d| jdd W d    n1 sew   Y  n*| jdkrd}tjt jj|d t
||d| jdd W d    n1 sw   Y  t
||| j|dd\}}	}
t||||	|
dd tt |t |dd tt |
t |dd tt |	t |dd d S )Nr   r[   r   zARPACK error -1: No convergencerY   re   r   )ncvr   r]   r^   rg      zExited at iterationr   r   z-k=1 singular triplets did not converge withinr]   r   r^   g:0yE>r   r   )r   diagr   astypefloat64r   r]   r_   r`   r   r   rk   rl   r   LinAlgErrorr4   r   r)   )rB   r*   r   r   r   r   r   rb   udsdvhdr   r   r   test_svd_maxiter  s4   


z SVDSCommonTests.test_svd_maxiter)TFr   r   r$   )r   )   r   )r   r   c                 C   s`  t jd}||}d}|\}}t||\}}	}
| jdkr dn||k}| jdkr+dn||k}| jdkrtjtdd |du rQt|||| j|d	}t	||	 n|d
kr{|r{t|||| j|d	\}}}t	t 
|t 
| t	||	 |d u szJ nj|dkr|rt|||| j|d	\}}}|d u sJ t	||	 t	t 
|t 
|
 nHt|||| j|d	\}}}|d urt	t 
|t 
| t	||	 |d urt	t 
|t 
|
 W d    d S W d    d S W d    d S W d    d S W d    d S 1 sw   Y  d S |du rt|||| j|d	}t	||	 d S |d
krL|rLt|||| j|d	\}}}t	t 
|t 
| t	||	 |d u sJJ d S |dkrz|rzt|||| j|d	\}}}|d u shJ t	||	 t	t 
|t 
|
 d S t|||| j|d	\}}}|d urt	t 
|t 
| t	||	 |d urt	t 
|t 
|
 d S d S )Nr   rd   r   Trg   rh   rY   Fr   r   r   )r   r   r   r   r]   r_   rk   rl   r   r   r)   )rB   r   r$   r^   r*   r   MNr   r   r   	respect_u
respect_vhr2   r1   r3   r   r   r    test_svd_return_singular_vectors  s   




$





z0SVDSCommonTests.test_svd_return_singular_vectors)r[   rd   re   )re   rf   re   )y      ?      ?r   rd   )r   r   r[   )r[   rd   re   y       @      @)y      @       rf   re   r   )r[   r   rd   re   )r   r   r[   r   zignore:k >= N - 1zneeded to demonstrate #16725r*   real)FTlo_typec                 C   s*  t |}|rt |n|}|r|jn|}||}|t|jkr%td | jdkr6|t|jkr6td | jdkrK|sK|t|jd krKtd d}| jdkrTd}| jd	kr}tj	t
d
d t||| jdd\}}	}
W d    n1 sww   Y  nt||| jdd\}}	}
t||||	|
|d d S )Nz)`k` cannot be greater than `min(A.shape)`r   z"Only PROPACK supports complete SVDr   r[   #16725gLa㧝=gA:)>rg   rh   rY   r   r   r   )r   rj   r   r&   r   r$   r_   skipr]   rk   rl   r   r4   )rB   r*   r   r   r   r   A2r"   r   r   r   r   r   r   test_svd_simple%  s(   


 


zSVDSCommonTests.test_svd_simplec                 C   s  | j }g d}dd }|D ]1\}}}tjd||}t|}|dkr+t|}	ntt|j}	|dkrkt	j
tdd$ |t|||	|d	d
\}
}}|t|||	|d	d
\}}}W d    n1 sew   Y  n|t|||	|d	d
\}
}}|t|||	|d	d
\}}}tt|
t| t|| tt|t| tt|
tt||t|tt|| tjd||}t|}|dvrd|	ini }| j dkrt	j
tdd, |t||fd|d	d|\}
}}|t||fd|d	d|\}}}W d    n	1 sw   Y  n$|t||fd|d	d|\}
}}|t||fd|d	d|\}}}tt|
t| t|d |d  tt|t| tt|
tt||t|tt|| |t||d k r?tdftjdffD ]\}}tjd}|||d|||  |}t|}| j dkrt	j
tdd$ |t||d|d	d\}
}}|t||d|d	d\}}}W d    n	1 sw   Y  n|t||d|d	d\}
}}|t||d|d	d\}}}tt|
t||d t|||d tt|t||d tt|
tt||t|tt|||d qqd S )N))r   r   re   )r   r   rf   )r      r   c                 S   s:   | \}}}t |}|d d |f || ||d d f fS r@   )r   r   )rX   Ur   VHjr   r   r   reorderR  s   

&z/SVDSCommonTests.test_svd_linop.<locals>.reorder4   r   rg   rh   rY   r   r   iu  >   Nr   r   r   r   r[   r    g~jth?ip                ?r   )r#   )r]   r   r   RandomStaterandnr?   r   r   r$   r_   rk   rl   r   r   r)   r%   r   complex	complex64r   )rB   r]   nmksr  r-   r   r   r*   Lr   U1s1VH1U2r2   VH2kwargsdtepsr^   r   r   r   test_svd_linopJ  s   
"




zSVDSCommonTests.test_svd_linop))r}   r}   )r}   e   )r  r}   zignore:Exited at iterationrA   c              
   C   s   | j }tjd}d}|\}}t||fd|d}|tu r'dt||fd|d }t|}	|	dd  dtddd 9  < t|	df||fd	| }|	|}t
||d
|ddd\}
}}d}t|||
||d
|dd d S )Nr   r   r   )r$   densityr^   r
        $@r[   )r$   r   r   )r   r]   r   r^   Fg?)r   r,   r"   )r]   r   r   r   r
   r  r   r   r	   r   r   r=   )rB   r$   rA   r]   r^   r   r   r-   Ser   r   r   c_svdr   r   r   test_small_sigma_sparse  s   
"
z'SVDSCommonTests.test_small_sigma_sparse))r   r   )r   r   )r   r   c              	   C   s   d}|\}}t j||f|d}| jdkr8tjtdd t||| jdd\}}}	W d    n1 s2w   Y  nt||| jdd\}}}	t|||||	dd	d
 tt 	|t 
||  t t|d d d }t |}
t||
 d S )Nre   rT   rg   rh   rY   r   r   TFr   rr   r[   )r   r   r]   r_   rk   rl   r   r4   r   rD   r   arraysorted	ones_like)rB   r$   rA   r   r-   r   r*   r  r   r  zr   r   r   test_svd_LM_ones_matrix  s   

z'SVDSCommonTests.test_svd_LM_ones_matrix)re   rf   )rf   rf   r   )rf   rd   c           
   	   C   s  d}|\}}t j||f|d}| jdkrtd | jdkr0|tu r0|t|jd kr0td | jdkr:td | jdkrctjt	d	d
 t
||| jdd\}}}	W d    n1 s]w   Y  nt
||| jdd\}}}	t|||||	ddd t|d d S )Nr[   rT   r   zSee gh-21110.r   r   z'PROPACK failures unrelated to PR #16712rg   rh   rY   r   r   TFr   )r   ru   r]   r_   r  r  r   r$   rk   rl   r   r4   r   )
rB   r$   rA   r   r-   r   r*   r  r   r  r   r   r   test_zero_matrix  s$   






z SVDSCommonTests.test_zero_matrix))   r)  )r)     )r*  r)  c              
   C   s   t jd}|||}t|dd\}}}|t jkrd}nd}|t t| | }	||	 |}d}
t	||
| j
ddd	\}}}t |dk}	t|	|
 t||
|||d
ddd d S )NtA
F)full_matricesr  g      Y@rf   r}   r   r   r   rV   )r"   r#   r,   )r   r   r   r   r   float32r   lenr%   r   r]   r5   r   r=   )rB   r$   rA   r^   r*   r   r   r   r  tr   r   r   r   r   test_small_sigma  s   

z SVDSCommonTests.test_small_sigmazignore:The problem sizec                 C   s:  t jd}d}d}|||| f}|d d d |f || }t ||f}||}t|}t|jd | t|\}	}
}t	|
| d  dddd t	||| d d d f j
 dddd t|}t||d	| jdd
\}}}t	|dddd |j\}}||k rt	| | dddd t	||j
 dddd d S )Nr+  rf   r   r[   r   r   rV   r!   r   ri   gh㈵>)r   r   r   hstackr   r   r   r$   r   r   r&   r   r   r]   r   )rB   rA   r^   dimrE   rG   ymatnzr   r   r   sp_matsusssvhr-   r   r   r   r   test_small_sigma2  s&   
(
z!SVDSCommonTests.test_small_sigma2)=rK   rL   rM   r]   _A_empty_msg_A_dtype_msg_A_type_msg_A_ndim_msgr   rj   r   r"  r   _A_validation_inputsr_   markparametrizerc   rn   r   r   r   infnanr   r   r   r   r   r   r   intr   r   r   r   thread_unsafer   filterwarningsr   r   r   r   r   r   r   A1r  r   r   r  r  SHAPESfloatr  r-  r!  r&  r(  r0  r:  r   r   r   r   rN      s    

	







""

C
V


rN   c                   @   s&   e Zd Zejddegdd ZdS )Test_SVDS_oncer]   r   c                 C   sN   d}t jt|d ttdd|dd W d    d S 1 s w   Y  d S )Nzsolver must be one ofrY   r'  rd   r   r\   )r_   r`   r   r   r   r   )rB   r]   rb   r   r   r   !test_svds_input_validation_solver7  s   "z0Test_SVDS_once.test_svds_input_validation_solverN)rK   rL   rM   r_   r@  rA  rS   rK  r   r   r   r   rJ  6  s    rJ  c                   @   sD   e Zd Zdd Zejdeeddddg dd	 Z	d
d Z
dS )Test_SVDS_ARPACKc                 C   
   d| _ d S )Nr   r]   rB   r   r   r   setup_method@     
zTest_SVDS_ARPACK.setup_methodr   rr   r  g      @5c           	      C   s   t jd}|d}d}|dv r(t|||| jdd\}}}t||||| d S d}tjt|d t|||| jdd W d    d S 1 sGw   Y  d S )Nr   )r   r   re   >   rf   r   )r   r   r]   r^   z#`ncv` must be an integer satisfyingrY   )	r   r   r   r   r]   r4   r_   r`   r   )	rB   r   r^   r*   r   r   r   r   rb   r   r   r    test_svds_input_validation_ncv_1C  s   
"z1Test_SVDS_ARPACK.test_svds_input_validation_ncv_1c                 C   r   )Nr   rY   r   r   )r   r]   r^   r   rU   r   r   r   r   r    test_svds_input_validation_ncv_2R  r   z1Test_SVDS_ARPACK.test_svds_input_validation_ncv_2N)rK   rL   rM   rP  r_   r@  rA  listr   rS  rT  r   r   r   r   rL  >  s
    
rL  c                   @   s   e Zd Zdd ZdS )Test_SVDS_LOBPCGc                 C   rM  )Nrg   rN  rO  r   r   r   rP  c  rQ  zTest_SVDS_LOBPCG.setup_methodN)rK   rL   rM   rP  r   r   r   r   rV  a  s    rV  c                   @   r>   )Test_SVDS_PROPACKc                 C   rM  )Nr   rN  rO  r   r   r   rP  i  rQ  zTest_SVDS_PROPACK.setup_methodc                 C      d}t | d S NzZPROPACK does not return orthonormal singular vectors associated with zero singular values.r_   xfailr   r   r   r   r&  l  s   z)Test_SVDS_PROPACK.test_svd_LM_ones_matrixc                 C   rX  rY  rZ  r   r   r   r   test_svd_LM_zeros_matrixs  s   z*Test_SVDS_PROPACK.test_svd_LM_zeros_matrixN)rK   rL   rM   rP  r&  r\  r   r   r   r   rW  g  s    rW  )r   )r   FTr   r    )r   TTr   r    ) r   r   numpyr   numpy.testingr   r   r   r_   scipy.linalgr   r   scipy.sparser   r   r	   r
   scipy.sparse.linalgr   r   r   !scipy.sparse.linalg._eigen.arpackr   r   r4   r=   r?   rN   rJ  rL  rV  rW  r   r   r   r   <module>   s8    

!
)     <#