
    Ph                        d Z ddlZddlmZmZmZmZ ddlZddlm	Z	 ddl
Zddl
mZmZmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZmZ  e eg dg dg dg dg dg dg            Z eg d      Z ej<                         Z ej<                         Z d Z!d Z" ee!ejF                  ejH                        Z%d Z& G d d      Z'y)z+Tests for the linalg._isolve.lgmres module
    N)assert_assert_allcloseassert_equalsuppress_warnings)python_implementation)zerosarrayallclose)norm)	csr_array	eye_arrayrandom_array)LinearOperator)splu)lgmresgmres)   r   r   r   	   )r   r   r   r      r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r      r   r   r   r   )r   r   r   r   r   r   )r      r      r      c                     t        t        d      sdgt        _        t        j                  dxx   dz  cc<   t        | z  S )Ncr   r   )hasattrcountr   Amvs    xC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\scipy/sparse/linalg/_isolve/tests/test_lgmres.pymatvecr#       s/    5##	GGAJ!OJa4K    c                 r    t        t        d      sdgt        _        t        j                  dxx   dz  cc<   y )Nnr   r   )r   niterr&   r    s    r"   cbr(   '   s&    5##	GGAJ!OJr$   r#   shapedtypec                     t        t        d      sdgt        _        t        t        d      sdgt        _        dt        j                  d<   t               5 }|j                  t        d       t        t        t        ft        t        j                  d         ddd| \  }}d d d        t        j                  d   }t        t        t        z  t        dd	      t        t        |z  t        z
               ||fS # 1 sw Y   [xY w)
Nr&   r   r   .*called without specifying.*r   +=)x0inner_mrtol-q=)r1   atol)r   r'   r&   r   r   r   filterDeprecationWarningr   Abr   r*   r   r
   r   )kwsupr/   flagcount_0s        r"   do_solver<   0   s    5##5##EGGAJ		

%'FG!Q 75#4"#%7357D 
 ggajGHQrT15u5tAbDF|Dw; 
	s   AC==Dc                       e Zd Zd Zd Zej                  j                   e       dk(  d      d        Z	d Z
d Zd	 Zd
 Zd Zy)
TestLGMRESc                    t        t        j                               }t        |j                  t
        j                  t
        j                        }t               \  }}dt        j                  d<   t        |t              \  }}|dk(  sJ ||dz  k  sJ t        ||d      sJ t        j                  d   dk  sJ y )Nr)   r   )Mcallbackr   r   r.   r1   )r   r   tocscr   solver6   r*   r+   r<   r'   r&   r(   r
   )selfpcr@   r/   r;   x1count_1s          r"   test_preconditionerzTestLGMRES.test_preconditioner@   s    "((*"((!''IjG
R0G!||"""BU+++wwqzA~~r$   c           	         g }t        d|      \  }}t        t        |      dkD         t        t        |      dk         t        d|d      \  }}t        |dk(  |       t        ||dz  k         t        t        ||d             g }t        d|d	
      \  }}t        t	        |D cg c]	  }|d   d u  c}      j                                t        t        |      dkD         t        t        |      dk         t        d|d      \  }}t        |dk(  |       t        ||dz  k         t        t        ||d             y c c}w )Nr   )outer_kouter_vr   T)rK   rL   prepend_outer_vr   r.   rB   F)rK   rL   store_outer_Avr   r   )r<   r   lenr
   r	   all)rE   rL   r/   r;   rG   rH   r!   s          r"   test_outer_vzTestLGMRES.test_outer_vN   s5    q':GGq !G!"q'/35G1g&'!)#$Re,- q'.35GW5Wqtt|W56::<=Gq !G!"q'/35G1g&'!)#$Re,- 6s   *EPyPyz Fails on PyPy CI runs. See #9507)reasonc           	      l   t         j                  j                  d      }t        d      t	        dd|      z   }|j                  d      }t               5 }|j                  t        d       t        ||t        |j                  d         dd	
      \  }}t        ||t        |j                  d         dd	      \  }}d d d        t        d	       t        d	       t         j                  j                  |j                        |z
        }	t!        |	dkD         t#        |       y # 1 sw Y   mxY w)N{     )rV   rV   gMb@?)densityrngr-   r   
   r   )r/   r0   maxiter)r/   restartrZ   g-C6?)nprandomdefault_rngr   r   r   r4   r5   r   r   r*   r   r   linalgr   dotr   r   )
rE   rX   r6   r7   r9   r/   flag0rG   flag1r   s
             r"   test_arnoldizTestLGMRES.test_arnoldik   s     ii##C(dOl<3OOJJt  CJJ)+JKq!aggaj(92qQIBauQWWQZ'8"aPIB !
 	UAUAyy~~aeeBi!m,tB ! s   A)D**D3c                    t         j                  j                  d      }dD ]H  }dt        |      z  }t	               5 }|j                  t        d       t        j                  |      }t        ||d      \  }}t        |d       t        |j                  |      |z
  dd	       t        ||dd
      \  }}|dk(  r t        |j                  |      |z
  dd	       |j                  |      }t        ||d      \  }}t        |d       t        |j                  |      |z
  dd	       t        ||dd
      \  }}|dk(  r t        |j                  |      |z
  dd	       d d d        K y # 1 sw Y   WxY w)Ni  )r   r   rY   d   r   r-   rY   rZ   r   r.   r3   r1   rZ   )r\   r]   RandomStater   r   r4   r5   onesr   r   r   r`   rand)rE   rX   r&   r6   r9   r7   xinfos           r"   test_cornercasezTestLGMRES.test_cornercase   s@   ii##D) !A)A,A"$

-/NOGGAJ Ar24T1%a1ae< AAr:419#AEE!HqL!%@HHQK Ar24T1%a1ae< AAr:419#AEE!HqL!%@' %$ ! %$s   D%E//E9	c                    t        dd      }t        j                  |d<   t        j                  d      }t	               5 }|j                  t        d       t        ||dd      \  }}t        |d	       d d d        y # 1 sw Y   y xY w)
Nr   lil)format)r   r   r-   r   rY   rh   r   )	r   r\   nanrj   r   r4   r5   r   r   )rE   r6   r7   r9   rl   rm   s         r"   	test_nanszTestLGMRES.test_nans   sj    a&&&$GGAJ CJJ)+JKQ26GAtq! !  s    5A>>Bc                    t        j                  ddgddggt              }t        j                  ddg      }t         j                  j	                  ||      }t        j                  ddg      }t               5 }|j                  t        d       t        |||d f|d fgd      \  }}d d d        t        |d	
       y # 1 sw Y   xY w)Nr   r   r   r   r+   r   r-   )rL   rZ   r2   rg   )
r\   r	   floatr_   rD   r   r4   r5   r   r   )rE   r6   r7   rl   v0r9   xprm   s           r"   test_breakdown_with_outer_vz&TestLGMRES.test_breakdown_with_outer_v   s    HHq!fq!f%U3HHaVIIOOAq!XXq!f  CJJ)+JKab$Z!T,CQOHB ! 	AE*	 ! s   :/C  C	c                    t        j                  g dg dg dg dgt              }t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d	      g}|D ]n  }t               5 }|j	                  t
        d
       t        ||d      \  }}d d d        t         j                  j                  |j                        |z
        }t         j                  ||j                  |      |j                  |j                  |            |j                  |j                  |j                  |                  f   }t         j                  j                  |j                  |      |d      \  }	}
}
}
|j                  |	      }t         j                  j                  |j                  |      |z
        }t        ||t        |             q y # 1 sw Y   ?xY w)N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   ru   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r-   r   rf   )rcond)err_msg)r\   r	   rv   r   r4   r5   r   r_   r   r`   c_lstsqr   repr)rE   r6   bsr7   r9   rx   rm   respKy_rl   ress                r"   test_breakdown_underdeterminedz)TestLGMRES.test_breakdown_underdetermined   sm    HHl"""$ ,12 HH\"HH\"HH\"HH\"	
 A"$

-/NO!!Q2D % 99>>!%%)a-0Daq155q?AEE!%%a/4JJKAq1B?JAq!QaA))..qA.CD#tAw7 $$s   (G77H	c                 v   t        j                  ddgddggt              }|dt        j                  dd      z  z  }t        j                  ddg      }t	               5 }|j                  t        d       t        ||      \  }}d d d        dk(  rt        |j                        |       y y # 1 sw Y   +xY w)	Nr   r   r   r   ru   re   r   r-   )
r\   r	   rv   	nextafterr   r4   r5   r   r   r`   )rE   r6   r7   r9   rx   rm   s         r"   test_denormalszTestLGMRES.test_denormals   s     HHq!fq!f%U3	S2<<1%%%HHaV CJJ)+JKa|HB ! 19AEE"Iq) 	 ! s   &B//B8N)__name__
__module____qualname__rI   rQ   pytestmarkskipifr   rc   rn   rs   ry   r   r    r$   r"   r>   r>   ?   s^    .: [[-/69A  C C $A>"+88*r$   r>   )(__doc__	threadingnumpy.testingr   r   r   r   r   platformr   numpyr\   r   r	   r
   scipy.linalgr   scipy.sparser   r   r   scipy.sparse.linalg._interfacer   scipy.sparse.linalgr   scipy.sparse.linalg._isolver   r   r   r7   localr   r'   r#   r(   r*   r+   r6   r<   r>   r   r$   r"   <module>r      s    . .  *  ( (  ; ; 9 $ 5 u))))))+ , - 

		 &Ab* b*r$   