+
    /iu                    8-   ^ RI Ht ^ RIt^ RIHtHtHtHtHtH	t	 ^ RI
t
^ RI
Ht ^ RIt^ RIHtHtHtHtHtHtHtHt ^ RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^ RI%H&t& ^ RI'H(t( ^ R	I)H*t*H+t+ ^ RI,H-t.  ^ R
IH/t0 ^ RI'H2t2 ^ RI3H4t4 ^ RI5H6t6 R;t7t8]6R,          R,          R,          t7]6R,          R,          R,          t8]Pr                  ]Pt                  .t;]Px                  ]Pz                  .t>];]>,           t?R t@R tAR tB ! R R4      tC ! R R4      tD ! R R4      tE]
P                  P                  R]?4      ]
P                  P                  R. RO4      R 4       4       tH ! R R4      tI ! R  R!4      tJ ! R" R#4      tK ! R$ R%4      tL]
P                  P                  R]?4      ]
P                  P                  R&. RO4      ]
P                  P                  R'R(R).4      ]
P                  P                  R*R+R(.4      ]
P                  P                  R,^^
.4      R- 4       4       4       4       4       tMR. tNR/ tOR0 tPR1 tQ ! R2 R34      tR ! R4 R54      tSR6 tTR7 tUR8 tVR9 tWR: tXR; tYR< tZR= t[R> t\R? t]R@ t^RA t_RB t`RC ta ! RD RE4      tbRF tcRG tdRH teRI tf]
P                  P                  RJRKRL7      RM 4       thRN ti]
P                  P                  RORR.4      ]
P                  P                  R];4      ]
P                  P                  RP]j! ^4      4      ]
P                  P                  RQ]j! ^4      4      ]
P                  P                  RR]j! ^4      4      ]
P                  P                  RS^ ^.4      ]
P                  P                  RT^ ^.4      RRU l4       4       4       4       4       4       4       tk]
P                  P                  R];4      RV 4       tl]
P                  P                  RWRP^	/RQ^	/RR^	/RS^	/RX^	/RT^	/34      RY 4       tm]
P                  P                  RZ]P                  ! . RO. RO. RO. RO. RO. RO.4      ]P                  ! . RO4      ]P                  ! . RO. RO. RO. RO. RO. RO.4      ]P                  ! . RO. RO. RO. RO.4      3.4      R[ 4       to]
P                  P                  R]?4      R\ 4       tp]
P                  P                  R]]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! R^R_.RR`.RaR.RbR.R^Rc..4      ]P                  ! R^.^R.^R.RR.R^..4      3	]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! RR.RR.RR.RR.RR..4      ]P                  ! RR.RR.RR.RR.RR..4      3	.4      Rd 4       tq]
P                  P                  R]?4      ]
P                  P                  R&. RO4      ]
P                  P                  R,^^
.4      Re 4       4       4       tr]
P                  P                  R]?4      ]
P                  P                  R. RO4      Rf 4       4       ts]
P                  P                  Rg]t! ];];,           ]?4      4      Rh 4       tu]
P                  P                  Rg]t! ];];,           ]?4      4      Ri 4       tv]
P                  P                  Rg]t! ];];,           ]?4      4      Rj 4       tw]
P                  P                  Rk]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! ^^
.^	^.^^	.^^A.^^..4      ]P                  ! Rl^.^R.^R.R^.^R..4      3]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . ER O4      ]P                  ! . ERO4      ]P                  ! ERER.ERER.ERER.ERER	..4      ]P                  ! RER
.RR.RR.RR..4      3.4      Rm 4       txRn ty]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  Rp]j! ^4      4      Rq 4       4       tz]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  Rp]j! ^4      4      Rr 4       4       t{]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  Rp]j! ^4      4      Rs 4       4       t|]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  Rp]j! ^4      4      Rt 4       4       t}]
P                  P                  Ru^]P                  ! . ERO4      ]P                  ! . ERO4      ]P                  ! . ERO4      ]P                  ! . ERO. ERO. ERO. ERO.4      3.4      Rv 4       t~]
P                  P                  R]?4      ]
P                  P                  Rw. ERO4      Rx 4       4       tRy t]
P                  P                  Rz. ERO4      ]
P                  P                  R{R|R}.4      R~ 4       4       t]
P                  P                  RzRR.4      ]
P                  P                  R{R|R}.4      R 4       4       t]
P                  P                  R]?4      ]
P                  P                  R. ERO4      R 4       4       t]
P                  P                  R]?4      R 4       t]
P                  P                  R]?4      ]
P                  P                  RRRJ.4      ]
P                  P                  RRR+.4      R 4       4       4       t]
P                  P                  R]?4      ]
P                  P                  R^ ^.4      ]
P                  P                  RRR+.4      R 4       4       4       t]
P                  P                  R]?^,          4      ]
P                  P                  RRRJ.4      ]
P                  P                  RRR+.4      R 4       4       4       t]
P                  P                  R]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! R^R_.RR`.RaR.RbR.R^Rc..4      ]P                  ! R^.^R.^R.RR.R^..4      3]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! RR.RR.RR.RR.RR..4      ]P                  ! RR.RR.RR.RR.RR..4      3.4      R 4       t]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  RRR 3R+R 3.4      R 4       4       t]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  RRR 3R+R 3.4      R 4       4       t]
P                  P                  Ro]t! ]?];];,           4      4      ]
P                  P                  RRR 3R+R 3.4      R 4       4       t]
P                  P                  R]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! ^^
.^	^.^^	.^^A.^^..4      ]P                  ! Rl^.^R.^R.R^.^R..4      3]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! ERER.ERER.ERER.ERER	..4      ]P                  ! RER
.RR.RR.RR..4      3.4      R 4       t]
P                  P                  RRRJ.4      ]
P                  P                  R]?4      R 4       4       t]
P                  P                  R]?4      R 4       t]
P                  P                  R]P                  ! . ERO. ERO. ERO. ERO.4      ]P                  ! . ERO. ERO. ERO. ERO.4      ^^3]P                  ! . ERO. ERO. ERO. ERO.4      ]P                  ! . ER O. ER!O. ER"O. ER#O.4      ^^3.4      R 4       t]
P                  P                  R]?4      R 4       t]
P                  P                  R]?4      R 4       t]
P                  P                  R]P                  ! . ER$O. ER%O. ER&O. ER'O.4      ]P                  ! . ER(O. ER)O. ER*O. ER+O.4      ]P                  ! . ER,O. ER-O. ER.O. ER/O.4      ]P                  ! . ER0O4      RR3]P                  ! . ER1O. ER2O. ER3O. ER4O.4      ]P                  ! . ER5O. ER6O. ER7O. ER8O.4      ]P                  ! . ER9O. ER:O. ER;O. ER<O.4      ]P                  ! . ER0O4      RR3.4      R 4       t]
P                  P                  R]?4      R 4       t]
P                  P                  R]P                  ! . ER=O. ER>O. ER?O. ER@O.4      ]P                  ! . ERAO. ER>O. ER?O. ERBO.4      ]P                  ! . ERCO. ERDO. EREO. ERFO.4      ]P                  ! . ERGO. ERHO. ERIO. ERJO.4      ]P                  ! . ERKO. ERLO. ERIO. ERMO.4      ]P                  ! . ERNO. EROO. ERPO. ERQO.4      ]P                  ! . ERAO. ERRO. ERSO. ERTO.4      ]P                  ! . ERUO. ERVO. ERWO. ERXO.4      3.4      ]
P                  P                  R];4      R 4       4       t]
P                  P                  R];4      ]
P                  P                  RERY4      ]
P                  P                  R. ERZO4      R 4       4       4       t]
P                  P                  RR|R}.4      ]
P                  P                  R]?4      ]
P                  P                  RER[4      R 4       4       4       t]
P                  P                  RR|R}.4      ]
P                  P                  R]?4      ]
P                  P                  RER[4      R 4       4       4       t]
P                  P                  R&]! R4      4      ]
P                  P                  R. ER\O4      ]
P                  P                  R*R+R(.4      ]
P                  P                  R]?4      R 4       4       4       4       t]
P                  P                  R]?4      ]
P                  P                  R&. RO4      R 4       4       t]
P                  P                  R&]! R4      4      ]
P                  P                  R]?4      R 4       4       t]
P                  P                  R];4      ]
P                  P                  RER[4      R 4       4       tR#   ]1 d    Rt0 ELi ; i(]      )reduceN)assert_equalassert_array_almost_equalassert_assert_allcloseassert_almost_equalassert_array_equal)raises)eyeoneszeros
zeros_liketriutriltril_indicestriu_indices)_flapacklapackinvsvdcholeskysolveldlnorm
block_diagqreighqz)
_to_banded)_compute_lwork)ortho_groupunitary_group)_clapack)get_lapack_funcs)get_blas_funcs)CONFIGzBuild Dependenciesblasnameversionc                     V\         9   d<   VP                  ! V !  VP                  ! V !  R ,          ,           P                  V4      # VP                  ! V !  P                  V4      # )              ?)COMPLEX_DTYPESrandastype)shapedtyperngs   &&&\/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/linalg/tests/test_lapack.pygenerate_random_dtype_arrayr3   +   sT    % ((E"4'()/	788U""5))    c                 |   \         P                  f   \        P                  ! R4       \	        \         P                  P                  4       4      p 0 Rmp\        4       p\        \         4       F=  pVP                  R4      '       d   K  W19  g   K$  W09  g   K,  VP                  V4       K?  	  V. 8X  g   Q R4       hR# )z%Test that all entries are in the doc.Nzlapack.__doc__ is None_z2Name(s) missing from lapack.__doc__ or ignore_list>   npclapackflapackdivision	HAS_ILP64print_functionabsolute_importfind_best_lapack_type)
r   __doc__pytestskipsetsplitlistdir
startswithappend)namesignore_listmissingr(   s       r2   test_lapack_documentedrK   3   s    ~~,-$$&'E	K fGF$$)@!NN4   b=NNN=r4   c                  .    ^ RI Hp  ^ RIHp W8X  g   Q hR# )r   )r;   N)scipy.linalg.blasr;   scipy.linalg.lapack)blas_has_ilp64lapack_has_ilp64s     r2   #test_ilp64_blas_lapack_both_or_nonerQ   J   s    =A---r4   c                   8   a  ] tR t^Pt o R tR tR tR tRtV t	R# )TestFlapackSimplec           	        . RO. RO. RO.p. RO. R	O. R
O. RO.pR F  p\        \        VR,           R4      pVf   K!  V! V4      w  rVrxp	\        V	'       * \        V	4      4       \	        WQ4       \        Wg3^ \        V^ ,          4      ^,
          34       \	        V\        P                  ! \        V4      4      4       V! V^^R7      w  rVrxp	\        V	'       * \        V	4      4       K  	  R# )   sdzcgebalN)permutescale)rU         )         )      	   )rU   r   r   ga2U0*3?)r\   r   r   gMb`?)r_   rU   r   r   )r   rU   r   r   )	getattrr9   r   reprr   r   lenr7   r   )
selfaa1pfbalohipivscaleinfos
   &         r2   
test_gebalTestFlapackSimple.test_gebalR   s    	9- A7D1Ay)*1&BB$Hd4j)%b,"As1Q4y{#34%hA@)*2q)B&BB$Hd4j) r4   c                    . RO. RO. RO.pR FF  p\        \        VR,           R4      pVf   K!  V! V4      w  rEp\        V'       * \        V4      4       KH  	  R# )   dgehrdNikiifi     i"  iii)rb   r9   r   rc   )re   rf   rh   ri   httaurn   s   &      r2   
test_gehrdTestFlapackSimple.test_gehrdg   sU     A7D1AyaDMBTHd4j) r4   c           	        \         P                  ! ^^.^ ^..4      p\         P                  ! ^^.^ ^..4      p\         P                  ! ^	^
.^^..4      pRpR EF  pVP                  V4      VP                  V4      VP                  V4      rp\        R	V34      w  p	VP	                  4       '       d   V^ ;;,          R,          uu&   RpV	! WgV4      w  rp\        \         P                  ! Wj4      \         P                  ! W4      ,           W,          4       V	! WgWVR7      w  rp\        \         P                  ! VP                  4       P                  V
4      \         P                  ! WP                  4       P                  4      ,           W,          ^R7       V	! WgVR
R7      w  rp\        \         P                  ! Wj4      \         P                  ! W4      ,
          W,          ^R7       EK  	  R# )rU   TfdFDr+   C)tranatranbdecimal)isgnN)trsyl)	r7   arrayr.   r$   isupperr   dot	conjugater~   )re   rf   bctransr0   rg   b1c1r   xrY   rn   s   &            r2   
test_trsylTestFlapackSimple.test_trsylr   s~   HHq!fq!f%&HHq!fq!f%&HHq"gBx() E%!((5/188E?BB%j2%8FE}}1"22.NAd%bffRmbffQm&C&+j2 #22%HNAd%FF2<<>++Q/"&&LLN<L<L2MMJ+ #22B7NAd%bffRmbffQm&C&+j!= =# r4   c                   \         P                  ! . RO. RO. RO.4      pR EF  pR EF  pVP                  V4      pVP                  4       '       d   VR;;,          R,          uu&   \	        RV34      w  pV! W44      pVR9   dm   VR9   d   ^pM^p\         P
                  ! \         P                  ! \         P                  ! \         P                  ! V4      4      4      4      p\        WhV4       K  VR9   d,   \         P                  ! \         P                  ! V4      4      pMVR9   dB   \         P                  ! \         P                  ! \         P                  ! V4      ^ R7      4      pMGVR	9   dA   \         P                  ! \         P                  ! \         P                  ! V4      ^R7      4      p\        VX4       EK  	  EK  	  R
# )rr   r   Mm1OoIiFfEer+   FfEeFfMm1OoaxisIiNru   rv   rx   r   r   )lange)r7   r   r.   r   r$   sqrtsumsquareabsr   maxr   )	re   rf   r0   norm_strrg   r   valuer   refs	   &        r2   
test_langeTestFlapackSimple.test_lange   s8   HH 
 E)XXe_==??tHNH)*re<h+v%}"#"#''"&&266":)>"?@C'G<4' ffRVVBZ0!U* ffRVVBFF2JQ%?@!T) ffRVVBFF2JQ%?@ ,1 * r4    N)
__name__
__module____qualname____firstlineno__ro   r{   r   r   __static_attributes____classdictcell____classdict__s   @r2   rS   rS   P   s     **	*=8- -r4   rS   c                   ,   a  ] tR t^t o R tR tRtV tR# )
TestLapackc                6    \        \        R 4      '       d   R# R# empty_moduleN)hasattrr9   re   s   &r2   test_flapackTestLapack.test_flapack       7N++ ,r4   c                6    \        \        R 4      '       d   R# R# r   )r   r8   r   s   &r2   test_clapackTestLapack.test_clapack   r   r4   r   N)r   r   r   r   r   r   r   r   r   s   @r2   r   r      s     
 r4   r   c                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )TestLeastSquaresSolversc           	        \         P                  P                  R 4      p\        \        4       F  w  r#^
p^p^pVP                  WE34      P                  V4      pVP                  V4      P                  V4      p\        RVR7      w  r\        WWV4      pV	! WxVR7      w   r\        V^ 8  4       V	! WxRV,          VR7      w   r\        V^ 8  4       K  	  \         EF  p\         P                  ! RR.RR.R	R
..VR7      p\         P                  ! . ROVR7      p\        RWx34      w  rpVP                  w  rE\        VP                  4      ^8X  d   VP                  ^,          pM^p\        WWV4      pV! WxVR7      w  ppp\        VRR \         P                  ! RR.VR7      ^\         P                  ! V4      P                  ,          R7       V! V4      w  p  p\!        VV4       EK  	  \"         EF  p\         P                  ! RR.RR.RR..VR7      p\         P                  ! . ROVR7      p\        RWx34      w  rpVP                  w  rE\        VP                  4      ^8X  d   VP                  ^,          pM^p\        WWV4      pV! WxVR7      w  ppp\        VRR \         P                  ! RR.VR7      ^\         P                  ! V4      P                  ,          R7       V! V4      w  p  p\!        VV4       EK  	  R# )  r0   lworkTTCCr   r         ?       @      @      @      @       @N-@rtol)gels
gels_lwork      0@g      1@g      4@)r   r   geqrfr   祪,      ?      @      @      ?      @            @              @ffffff?r   y      1@       @y      4@      R ?\j,? W?)r7   randomdefault_rng	enumerateDTYPESr.   r$   r    r   REAL_DTYPESr   r/   rd   r   finfoepsr	   r,   )re   r1   indr0   mnnrhsrg   r   glsglslwr   r6   rn   r   r   r   lqrr   	lqr_truths   &                   r2   	test_gels!TestLeastSquaresSolvers.test_gels   s   ii##D)#F+JCAADQF#**51BA%%e,B)*@NJC #5Q5ER51JAqDAIR6#;eDJAqDAI , ![EC:::'.35B ,E:B&63bX'?#De 88DA288}!xx{ #:!:Ee4LCDAcrFBHH.A.@.B38%: "$BHHUO$7$7!79 "'rIq!QsI./ !2 $^EHc?$h/$h/18=?B 6eDB&63bX'?#De 88DA288}!xx{ #:!:Ee4LCDAcrFHH&J&J&L+028:288E?;N;N8NP "'rIq!QsI./ $r4   c                   \          EFc  p\        P                  ! R R.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgVR4      w  rp\        \        P                  ! V	4      4      pT
pV! W#WRRR4      w  rpp\        VRR \        P                  ! RR	.VR7      ^\        P                  ! V4      P                  ,          R
7       \        V\        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       EKf  	  \         EFq  p\        P                  ! RR.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgVR4      w  p	pr\        \        P                  ! V	4      4      p\        V4      pT
pV! W#VVVRRR4      w  rpp\        VRR \        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       \        V\        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       EKt  	  R# )r   r   r   r   r   r   r   FNr   r   YN))1)@*@.?U.*@_Y@r   )gelsdgelsd_lworkr   r   r   r   r   r   r   r   r   r   r   r7   r   r$   r/   rd   intrealr   r   r   r,   )re   r0   rg   r   r   r   r   r   r   workiworkrn   r   
iwork_sizer   srankrwork
rwork_sizes   &                  r2   
test_gelsd"TestLeastSquaresSolvers.test_gelsd  s    [EC:::'.35B ,E:B!12J35("<E 88DA288}!xx{ !,A$ ;D&EJ$RU%' 7A$AcrFBHH.A.@.B38%: "$BHHUO$7$7!79 Arxx);):)<CH J!#BHHUO$7$7!79 93 !: $^EHc?$h/$h/18=?B 6eDB!12J35("<E 88DA288}!xx{ (31r'B$D%&EUJJ$RUJ
%' 7A$AcrFHH&J&J&L+028:288E?;N;N8NP AHH&8:K%L+028:288E?;N;N8NP P5 $r4   c           	        \          EF`  p\        P                  ! R R.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgVR4      w  r\        \        P                  ! V	4      4      pV! W#RVRR4      w  rrr\        VRR \        P                  ! RR	.VR7      ^\        P                  ! V4      P                  ,          R
7       \        V\        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       EKc  	  \         EF`  p\        P                  ! RR.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgVR4      w  r\        \        P                  ! V	4      4      pV! W#RVRR4      w  rrr\        VRR \        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       \        V\        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       EKc  	  R# )r   r   r   r   r   r   r   FNr   r   r   r   r   r   r   )gelssgelss_lworkr   r   r   r   r   r   r   r   r   r   r   )re   r0   rg   r   r  r  r   r   r   r   rn   r   vr   r   r   s   &               r2   
test_gelss"TestLeastSquaresSolvers.test_gelss?  s    [EC:::'.35B ,E:B!12J35("<E 88DA288}!xx{ %Q44JD&E(-bb%(N%A!4AcrFBHH.A.@.B38%: "$BHHUO$7$7!79 Arxx);):)<CH J!#BHHUO$7$7!79 9/ !6 $^EHc?$h/$h/18=?B 6eDB!12J35("<E 88DA288}!xx{ %Q44JD&E(-bb%(N%A!4AcrFHH&J&J&L+02 "$BHHUO$7$7!7	9
 Arxx);):)<CH J!#BHHUO$7$7!79 91 $r4   c           
     ~   \          EF  p\        P                  ! R R.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgV^
\        P                  ! V4      P                  ,          4      w  r\        \        P                  ! V	4      4      p\        P                  ! VP                  ^,          ^3\        P                  R7      pV! W#V\        P                  ! V4      P                  VRR4      w  rppp
\        VRR \        P                  ! RR	.VR7      ^\        P                  ! V4      P                  ,          R
7       EK  	  \         EF  p\        P                  ! RR.RR.RR..VR7      p\        P                  ! . ROVR7      p\        RW#34      w  rEVP                  w  rg\        VP                  4      ^8X  d   VP                  ^,          pM^pV! WgV^
\        P                  ! V4      P                  ,          4      w  r\        \        P                  ! V	4      4      p\        P                  ! VP                  ^,          ^3\        P                  R7      pV! W#V\        P                  ! V4      P                  VRR4      w  rppp
\        VRR \        P                  ! RR.VR7      ^\        P                  ! V4      P                  ,          R
7       EK  	  R# )r   r   r   r   r   r   r   FNr   r   r   )gelsyr  r   r   r   r   r   r   r   r   r   r   )r   r7   r   r$   r/   rd   r   r   r   r   r   int32r   r,   )re   r0   rg   r   r
  gelsy_lworkr   r   r   r   rn   r   jptvr  r   jr   s   &                r2   
test_gelsy"TestLeastSquaresSolvers.test_gelsyx  s    [EC:::'.35B ,E:B!12J35("<E 88DA288}!xx{ %Q4BHHUO4G4G1GHJD&E88RXXa[!,BHH=D"'bhhuo6I6I(-ue#=A!T4AcrFBHH.A.@.B38%: "$BHHUO$7$7!79 9+ !4 $^EHc?$h/$h/18=?B 6eDB!12J35("<E 88DA288}!xx{ %Q4BHHUO4G4G1GHJD&E88RXXa[!,BHH=D"'bhhuo6I6I(-ue#=A!T4AcrFHH&J&J&L+02 "$BHHUO$7$7!7	9 9+ $r4   r   N)
r   r   r   r   r   r  r  r  r   r   r   s   @r2   r   r      s#     B/H:Px79r59 59r4   r   r0   r/   c                 V    \        R V R7      pVw  r4V! W4R7      w  rV\        V^ 4       R# )geqrf_lworkr   r   r   Nr$   r   )r0   r/   r  r   r   r   rn   s   &&     r2   test_geqrf_lworkr    s-     #M%@KDA'KEqr4   c                   &   a  ] tR tRt o R tRtV tR# )TestRegressioni  c           	        \          F  p\        P                  ! RVR7      p\        R.V.4      w  p\	        \
        W2^R7       V! V4      w  rErgV\        9   d7   \        R.V.4      w  p\	        \
        WRR V^R7       V! VRR V^R7       K  V\        9   g   K  \        R.V.4      w  p	\	        \
        WRR V^R7       V	! VRR V^R7       K  	  R# )	,  r   gerqfr   orgrqNungrq)r  rZ   )r   r7   r   r$   assert_raises	Exceptionr   r,   )
re   r0   rf   r  rqrz   r   rn   r  r  s
   &         r2   test_ticket_1645TestRegression.test_ticket_1645  s    E/A%wi!5FE)UQ7"'(BT#)7)aS9i23AFbgs!,.()7)aS9i23AFbgs!, r4   r   N)r   r   r   r   r!  r   r   r   s   @r2   r  r    s     - -r4   r  c                      a  ] tR tRt o ]P
                  P                  RRR.4      ]P
                  P                  RRR.4      R 4       4       tRtV t	R# )		TestDpotri  lowerTFcleanc                   \         P                  P                  ^*4      pVP                  RR7      pVP	                  VP
                  4      p\        RV34      w  rgV! WQVR7      w  rV! W4      ^ ,          p
V'       d@   \        \         P                  ! V
4      \         P                  ! \        V4      4      4       R# \        \         P                  ! V
4      \         P                  ! \        V4      4      4       R# )*   size)r&  N)r[   r[   )potrfpotri)r7   r   r   normalr   r~   r$   r   r   r   r   )re   r%  r&  r1   r   rf   dpotrfdpotrir   r6   dpts   &&&        r2   test_gh_2691TestDpotr.test_gh_2691  s     ii##B'JJFJ#EE!##J)*<qeDae,Qq!BGGCL"''#a&/:BGGCL"''#a&/:r4   r   N)
r   r   r   r   r@   markparametrizer1  r   r   r   s   @r2   r$  r$    sI     [[WtUm4[[WtUm4; 5 5;r4   r$  c                   &   a  ] tR tRt o R tRtV tR# )
TestDlasd4i  c                   \         P                  ! . R	O4      p\         P                  ! . R
O4      p\         P                  ! \         P                  ! \         P                  ! V^ R 4      \         P
                  ! ^\        V4      ^,
          34      34      VR\         P                  3,          34      p\        VRRRRR7      p\        V4      p\         P                  ! VRRR1,          V^ ,          V\        V4      ,          ,           .34      p\         P                  ! VRRR1,          R34      p\        RV34      p. p	\        ^ V4       F=  p
V! WV4      pV	P                  V^,          4       \        V^,          ^ 8*  RV
 24       K?  	  \         P                  ! V	4      RRR1,          p	\        \         P                  ! \         P                   ! V	4      4      '       * R34       \#        WI^d\         P$                  ! \         P&                  4      P(                  ,          ^d\         P$                  ! \         P&                  4      P(                  ,          R7       R# )r   NNNF)full_matrices
compute_uvoverwrite_acheck_finiteNlasd4z=LAPACK root finding dlasd4 failed to find the singular value zThere are NaN rootsatolr   )r         @r   r   )g(\@g@g333333皙r   r   )r7   r   hstackvstackdiagr   rd   newaxisr   concatenater   r$   rangerG   r   anyisnanr   r   float64r   )re   sigmasm_vecMSMit_lensgmmvcr=  rootsiress   &           r2   test_sing_val_updateTestDlasd4.test_sing_val_update  s   /*01IIryy"''&2,"7"$((As5zA~+>"?"A BQ

]+- . %Eu#% VnnfTrTlVAYU9K-K,LMNnneDbDk401 6)4q&!A$CLLQ Q1OPQsS	 " "%RVVBHHUO,,.CDEBHHRZZ,@,D,D(D "**!5!9!99	;r4   r   N)r   r   r   r   rV  r   r   r   s   @r2   r6  r6    s     ; ;r4   r6  c            
       <  a ] tR tRt o]P
                  P                  R]4      R 4       t]P
                  P                  R] U Uu. uF#  p R F  pVR8X  d   V \        9   d   K  W3NK  	  K%  	  upp 4      ]P
                  P                  RRR	.4      ]P
                  P                  R
RR.4      R 4       4       4       t
]P
                  P                  R. RO. RO. RO.4      R 4       tR t]P
                  P                  RRR.4      R 4       tRtVtR# u upp i )	TestTbtrsi  r0   c                X   V\         9   dh   \        P                  ! . RO. RO.VR7      p\        P                  ! RR.RR.RR.RR..VR7      p\        P                  ! ^^.RR.^^.^R..VR7      pMV\        9   dk   \        P                  ! . RO. RO. RO.VR7      p\        P                  ! RR.RR.RR .R!R"..VR7      p\        P                  ! RR#.R$R%.R&R'.R(R)..VR7      pM\	        RV R24      h\        RVR7      pV! W#RR7      w  rg\        V^ 4       \        Wd^ R	R
7       R# )*zTest real (f07vef) and complex (f07vsf) examples from NAG

Examples available from:
* https://www.nag.com/numeric/fl/nagdoc_latest/html/f07/f07vef.html
* https://www.nag.com/numeric/fl/nagdoc_latest/html/f07/f07vsf.html

r   g333333*@y               @z	Datatype z not understood.tbtrsLabr   uploh㈵>r   r?  Np=
ף)rb  gQ@gHzG@g{Gz?)g      gq=
ףp@gHzGr   gp=
ף0g(\+gףp=
0g(\gHzG,gQ#r   r  )y
ףp=
Q@y{Gz@GzyQ?HzGy)\(??)yQQ@yq=
ףpGz@yףp=
?{Gzr   )yQ?q=
ףp@y)\(zGr   r   yQ!
ףp=
yףp=
8Gzyp=
#/)\h7y\(LHzG @yQHz6@yףp=
3@(\=y{Gz-333333yQ+3@GzT5@y      ?      @y      ?      y             yt&m=#yi6@Ug$B@y[a^C?b->y-@ji& *!)r   r7   r   r,   
ValueErrorr$   r   r   )re   r0   r^  r   x_outr[  r   rn   s   &&      r2   test_nag_example_f07vef_f07vsf(TestTbtrs.test_nag_example_f07vef_f07vsf  sy    K424 %'B 65/!6* %.!5/+  %	&A
 HHq!f!2h !f "g' $)	*E
 n$KF:< !&'B =.9*N;)>:)>:<  %	&A
 HHr6l%w/46JK35JKM $)	*E y/?@AA '%82-T1qt4r4   zdtype,transNr   r_  Ur\  rE  c           	        \         P                  P                  R 4      p^^^rp\        RVR7      p	VR8H  p
W,          pW,
          p\	        W) ^,
          R4      pV Uu. uF  q\        V4      ,
          NK  	  ppV Uu. uF  p\        V3W4      NK  	  ppVR8X  d   \         P                  ! WaR7      VV&   \        P                  ! VVRR7      p\         P                  ! V^,           V3V4      p\        V4       F9  w  ppVP                  V4      VV\        V^ 4      \        VV,           V4      13&   K;  	  \        Wg3W4      pV	! VVW2VR7      w  pp\        V^ 4       VR8X  d   \!        VV,          VRR	7       R# VR
8X  d"   \!        VP"                  V,          VRR	7       R# VR8X  d0   \!        VP"                  P%                  4       V,          VRR	7       R# \'        R4      hu upi u upi )i  r[  r   ri  dia)format)r^  r   r_  r   rE  rh  g-C6
?r   r~   r   zInvalid trans argumentNr   )r7   r   RandomStater$   rH  r   r3   r   spsdiagsr   r   diagonalr   minr   r   r~   r   rd  )re   r0   r   r_  rE  r1   r   r   kdr[  is_upperkuklband_offsetsr   band_widthswidthbandsrf   r^  rowkr   rn   s   &&&&&                   r2   test_random_matricesTestTbtrs.test_random_matrices4  s    ii##D)
 A 6CK]W Rq"-+78<a3q6zz<8)+)U -eXuB) 	 + 3;/E"I IIe\%8 XXrAvqk5)-FC-.ZZ]BsC1Ic!A#qk))* . (	5>2F4T1C<AE140c\ACC!GQT2c\ACCMMOa/>5669 9+s   G(?G-zuplo,trans,diagc           	         \        R\        P                  R7      p\        P                  P	                  R4      pVP                  R4      pVP                  R4      p\        \        WFWqW#4       R# )z?Test if invalid values of uplo, trans and diag raise exceptionsr[  r   r   N)r\   rZ   )rZ   r\   )r$   r7   rK  r   r   r  r  )re   r_  r   rE  r[  r1   r^  r   s   &&&&    r2   &test_invalid_argument_raises_exception0TestTbtrs.test_invalid_argument_raises_exceptionh  sR     !

;ii##D)ZZJJviAUAr4   c                    \         P                  ! R\        R7      p\         P                  ! ^\        R7      p\        R\        R7      p^ VR&   V! WRR7      w  rE\	        V^4       R# )a(  Test if a matrix with a zero diagonal element is singular

If the i-th diagonal of A is zero, ?tbtrs should return `i` in `info`
indicating the provided matrix is singular.

Note that ?tbtrs requires the matrix A to be stored in banded form.
In this form the diagonal corresponds to the last row.r   r[  ri  r]  Nr[   r\   )r   r[   )r7   r   floatr$   r   )re   r^  r   r[  r6   rn   s   &     r2   test_zero_element_in_diagonal'TestTbtrs.test_zero_element_in_diagonalv  sQ     WWV5)GGAU# 65	2-T1r4   zldab,n,ldb,nrhsc                    \         P                  ! W3\        R7      p\         P                  ! W43\        R7      p\        R\        R7      p\	        \
        WuV4       R# )z2Test ?tbtrs fails correctly if shapes are invalid.r   r[  Nr7   r   r  r$   r  r  )re   ldabr   ldbr   r^  r   r[  s   &&&&&   r2   test_invalid_matrix_shapes$TestTbtrs.test_invalid_matrix_shapes  s@     WWdYe,GGSKu- 6iA.r4   r   N)rh  r~   r   )ri  rh  Invalid)ri  r  rh  )r  rh  rh  )r]   r]   r   r]   )r]   r]   r[   r]   )r   r   r   r   r@   r3  r4  r   rf  r   r|  r  r  r  r   r   )r0   r   r   s   00@r2   rY  rY    s;    [[Wf-+5 .+5Z [[]+1N+1%e&+slu7K -un?N -+1NO [[Vc3Z0[[Vc3Z0,7 1 1	O,7\ [[.33356B	6B  [[.**1 /	/kNs   D%DrY  r   r_  ri  r\  rE  rh  r   c           	         \        V  V V V V 2P                  4       4      p\        P                  P	                  V4      pVP                  WD3R 7      VP                  WD3R 7      R,          ,           pVP                  \        P                  ! ^ VP                  ^ ^
4      V4      4      pWx,          p\        P                  ! V \        P                  4      '       d   VP                  MTpVR8X  d   \        P                  ! V4      M\        P                  ! V4      pVR8X  d5   V\        P                  ! V4      R\        P                  3,          ,          pVP                  V 4      p\!        RV34      p	V	! WqW#R7      w  rVR8X  d   \        P"                  P%                  V\        P&                  R7      p\        P"                  P%                  \        P"                  P)                  V4      \        P&                  R7      p^W,          ,          pMI\        P"                  P%                  V^R7      p\!        RV34      w  ppV! V4      w  pppV! VWR7      w  r^p\+        WVR	7       R
# )r)  r+   ri  r8  trcon)r   r_  rE  Iordr   r   Ngecongetrf)rD   encoder7   r   r   permutedlogspaceintegers
issubdtypefloatingr   r   r   rE  rF  r.   r$   linalgr   infr   r   )r0   r   r_  rE  r   seedr1   Aoffsetr  rU  r6   norm_A
norm_inv_Ar   anormr  r  luipvtrn   r   s   &&&&&                 r2   
test_trconr    s    5'$vdVA3/6689D
))


%C


#**1&*"9""<<A\\"++aa)<a@AFKA--r{{33Ack
rwwqzAs{	RWWQZ2::&&	AWqd+E1d6FCs{rvv.YY^^BIIMM!$4"&&^A
6&'		qa('(:QDAuqD$r5,
 DC4(r4   c                     R  F  p \        RV R7      p\        P                  ! ^V 4      p\        P                  ! ^V 4      p\        P                  ! V4      '       d
   VR,          pV! W#4      w  rEp\	        VR4       \	        VR4       \        P                  ! V4      '       dA   \	        VR4       \        \        V\        4      4       \        \        V\        4      4       K  \	        VR4       K  	  R# )	r   lartgr   r+   r   N333333?y       皙?)	r$   r7   r   iscomplexobjr   r   
isinstancecomplexr  )r0   r  ri   gcssnrs          r2   
test_lartgr    s     6HHQHHQ??1GA!K	G$3??1B	*Jq'*+Jr5)*B(' r4   c                     R  EF  p RpRp\         P                  ! ^^V 4      p\         P                  ! ^^V 4      p^
\         P                  ! V 4      P                  ^,
          ) ,          pV R9   d   \	        RV R7      p^pM!\        RV R7      pVR,          pVR,          pRp\        V! W4W4      . RO. RO.VR7       \        V! W4W^R	7      . RO^ ^ Ww..VR7       \        V! W4W^^R
7      . ROWw^ ^ ..VR7       \        V! W4W^^^R7      . ROWw^ ^ ..VR7       \        V! W4W^^^R7      . RO^ V^ V..VR7       \        V! W4W^^^^^R7	      . ROWw^ V..VR7       \        V! W4WRR^R7      . RO^ V^ V..VR7       V! W4W^^R7      w  r\        WJ 4       \        WJ 4       \        V. ROVR7       \        V	. ROVR7       EK  	  R# )r   r  r  fdrotr   r+   y              @r?  )r   )offxoffy)incxr  r   )r  incyr   )r  r  r  r  r   )r  r  r   )overwrite_xoverwrite_yNy             )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  )r7   fullr   	precisionr%   r$   r   r   )
r0   r   r   ur  r?  r  ri   rf   r   s
             r2   test_rotr    s    GGAq% GGAq% RXXe_..q011D= e4CA"56CHAGAAA!,*6*8>B	DA!!,|011a|/=CG	IA!QQ7%a|44	AA!QQ!<%a|44	AA!QQ!<%1a|44	AA!QQQQ!L%a|44	AA!RbA>%1a|44	A 11!<<d3<d33I r4   c            
      6   \         P                  P                  R 4      p V P                  R4      pVP                  P	                  V4      pV P                  R4      RV P                  R4      ,          ,           pVP                  P                  4       P	                  V4      pR EFo  p\        RR.VR7      w  rEVR9   d   VP                  4       pMVP                  4       pV! VP                  ^ ,          ^,
          VR,          VR,          4      w  rxp	\         P                  ! VR,          4      p
VR,          V
^ &   Wz^&   \         P                  ! VR,          4      pRV^ &   WR&   V! WP                  4       VR,          \         P                  ! VP                  ^,          4      4      VR&   V! WVR,          \         P                  ! VP                  ^ ,          4      R	R
7      VR&   \        VR,          V
RR7       \        VR,          V
RR7       EKr  	  R# )r   r+   r   larfglarfr   FDrU   NNr   Rsider`  r  N)r\   r\   rU   r   ):rZ   NNr   )r8  r   r   )r  r   r  r8  )r8  r  )r   r8  )r7   r   r   r~   r   conjr$   copyr/   r   r   r   r   )r1   a0a0jr0   r  r  rf   alphar   rz   expectedr  s               r2   test_larfg_larfr    s   
))


%C	F	B	"B
**V
r#**V"44
4C
%%**,

3
C
 &'8FD=
A	A aggajlAdGQuX># ==4)g MM!E(#!" ==?AeHbhhqwwqz6JK% %"((1771:*>SI%$5$559 r4   c                      \        R \        P                  RR7      p Rp\        WVRRR7      pVR8X  g   VR8X  g   Q hR# R# )	gesdd_lwork	preferredr0   ilp64iA%  T)r:  r9  i`DiDN)r$   r7   float32r    )sgesdd_lworkr   r   s      r2    test_sgesdd_lwork_bug_workaroundr  &  sO     $M*57LA<A&*$@E  I)!333!3r4   c                      a  ] tR tRt o ]P
                  P                  R]4      R 4       t]P
                  P                  R]4      ]P
                  P                  RR4      R 4       4       t	Rt
V tR# )		TestSytrdiB  r0   c                p    \         P                  ! RVR7      p\        RV34      p\        \        W24       R# )r   r   sytrdNr   r7   r   r$   r  rd  )re   r0   r  r  s   &&  r2   test_sytrd_with_zero_dim_array(TestSytrd.test_sytrd_with_zero_dim_arrayC  s,     HHV5) 1$/j%+r4   r   c                   \         P                  ! W"3VR 7      p\        RV34      w  rE\         P                  ! ^W"^,           ,          ^,          ^,           VR 7      V\         P                  ! V4      &   V! V4      w  rg\        V^ 4       V! V^VR7      w  rrp\        V^ 4       \        W^\         P                  ! V4      P                  ,          RR7       \        V	\         P                  ! V4      4       \        V
R4       \        VR4       V! W6R7      w  rrp\        V^ 4       \         P                  ! W1R 7      p\         P                  ! VP                  ^ ,          4      pWW3&   \         P                  ! VP                  ^ ,          ^,
          4      pWV^,           V3&   WW^,           3&   \         P                  ! W"VR 7      p\        V^,
          4       F  p\         P                  ! W!R 7      pVRV1V^,           3,          VRV% RVV&   \         P                  ! W"VR 7      VV,          \         P                  ! VV4      ,          ,
          p\         P                  ! VV4      pK  	  \         P                   ! VR4      pVP"                  V,          VV&   \         P                  ! VP"                  \         P                  ! W?4      4      p\        VV^\         P                  ! V4      P                  ,          RR7       R# )	r   r%  r   r   r>          r   N)r  sytrd_lworkr   )r7   r   r$   arangetriu_indices_fromr   r   r   r   rE  r   r/   r   rH  outerr   r   r~   )re   r0   r   r  r  r  r   rn   datars   erz   r~   r{  k2QrT  r  Hi_lowerQTAQs   &&&                  r2   
test_sytrdTestSytrd.test_sytrdJ  sO    HHaV5) 5t< 	
 IIaaC!AU3 	
"

q
!" "!nT1 !&aq >T1a(;(;&;#F2771:&3S! !&a 5T1
 MM!)IIaggaj!!$YYqwwqz!|$"Q$("d( FF1u%qsA(A!QqSMAbqEAaDq5)CFRXXa^,CCAq!A  //!R(SS\'
vvacc266!<( 	aa(;(;&;#Fr4   r   NrU   r[   )r   r   r   r   r@   r3  r4  r   r  r  r   r   r   s   @r2   r  r  B  sh     [[Wk2, 3, [[Wk2[[S&)7G * 37Gr4   r  c                      a  ] tR tRt o ]P
                  P                  R]4      R 4       t]P
                  P                  R]	! ]
]4      4      ]P
                  P                  RR	4      R 4       4       tRtV tR# )
	TestHetrdi  complex_dtypec                p    \         P                  ! RVR7      p\        RV34      p\        \        W24       R# )r   r   hetrdNr   r  )re   r  r  r  s   &&  r2   test_hetrd_with_zero_dim_array(TestHetrd.test_hetrd_with_zero_dim_array  s,     HHV=1 1$/j%+r4   zreal_dtype,complex_dtyper   c           	        \         P                  ! W3VR 7      p\        R	V34      w  rV\         P                  ! ^W^,           ,          ^,          ^,           VR 7      R\         P                  ! ^W^,           ,          ^,          ^,           VR 7      ,          ,           V\         P                  ! V4      &   \         P
                  ! V\         P                  ! \         P                  ! V4      4      4       R
 F  pV! WR7      w  r\        V	^ 4       K  	  \        Wa4      p
V! V^V
R7      w  rrp	\        V	^ 4       \        W^\         P                  ! V4      P                  ,          RR7       \        V\         P                  ! \         P                  ! V4      4      4       \        VR4       \        VR4       V! WJR7      w  rrp	\        V	^ 4       \         P                  ! WBR 7      p\         P                  ! VP                  ^ ,          \        R 7      pWVV3&   \         P                  ! VP                  ^ ,          ^,
          \        R 7      pWV^,           V3&   WVV^,           3&   \         P                   ! WVR 7      p\#        V^,
          4       F  p\         P                  ! WR 7      pVRV1V^,           3,          VRV% RVV&   \         P                   ! WVR 7      VV,          \         P$                  ! V\         P&                  ! V4      4      ,          ,
          p\         P(                  ! VV4      pK  	  \         P*                  ! VR4      p\         P&                  ! VP,                  V,          4      VV&   \         P(                  ! \         P&                  ! VP,                  4      \         P(                  ! VV4      4      p\        VV^
\         P                  ! V4      P                  ,          RR7       R# )r   r+   r%  r  r   r>  r  r   N)r  hetrd_lworkr   rU   r   )r7   r   r$   r  r  fill_diagonalr   rE  r   r    r   r   r   r   r/   r   r   rH  r  r  r   r   r~   )re   r   
real_dtyper  r  r  r  r   r6   rn   r   r  rs   r  rz   r~   r{  r  r  rT  r  r  r  QHAQs   &&&&                    r2   
test_hetrdTestHetrd.test_hetrd  s    HHaV=15t< 	
 IIaaC!AZ8299QQ3
1J??@ 	
"

q
!" 	BGGBGGAJ/0 A!!-GAq! 
 {. !&aq >T1a(<(@(@&@sK2772771:./3S! !&a 5T1
 MM!.IIaggaj,!Q$YYqwwqz!|3/"Q$("bd( FF1}-qsA0A!QqSMAbqEAaDq=1a&288Arwwqz223Aq!A  //!R(WWQSS\*'
vvbggacclBFF1aL1 	!"RXXj1555C	r4   r   Nr  )r   r   r   r   r@   r3  r4  r,   r  zipr   r   r   r   r   s   @r2   r  r    ss     [[_n=, >, [[7 n=?[[S&)A *?Ar4   r  c            
         \        \        4       EF_  w  r\        RVR7      w  r#\        V^^^R7      pV ^8  d`   \        P
                  ! . RO. R	O. R
O. RO. RO. RO.VR7      p\        P
                  ! . ROVR7      p\        P
                  ! RR.VR7      pMb\        P
                  ! . RO. RO. RO. RO. RO. RO.4      p\        P
                  ! R.R.R.R.R.R..4      p\        P                  ! ^VR7      p\        P
                  ! . RO. RO.VR7      pV! WXWgVR7      w    rp	V ^8  d   \        P
                  ! . RO4      pM\        P
                  ! . RO4      p\        W^R7       EKb  	  R# )gglser   )r   r   rh   r  r   r   N)r  gglse_lwork)g=
ףp=g{Gzg(\ؿ      ?)zGgHzG?gףp=
ӿQ)ffffff@gQ?g?gffffffֿ)r  g{Gz?Qg{Gz?)333333?g333333?r  g
ףp=
)g{Gz{Gz?gzG      ?)g      r  gGz?gHzGgzGg=
ףp=?)yQ?QyQQ?yQ{Gz @y=
ףp=?)y\(\￮Gz?y333333RQ?yQzG?yQQ?)yףp=
?q=
ףpݿy)\(?{Gz?y)\(?(\ſy(\333333?)yGz?RQ?yRQ?HzGy\(\
ףp=
׿y)\(?ɿ)y(\?RQ?y?{Gz?y(\ſq=
ףpݿyQ?q=
ףp?)yHzG?Qѿy?QyQ뱿Gz?yp=
ף?p=
ף?yRQ
ףp=
?yffffff?GzyzG GzyQ?ffffff
@yp=
ף)\(@y(\ @Q?)r   r        r  )r  r   r  r  )^"L?\}?r  r  )y!f?$_Kdy^gŵ翸F@y!f?}dy61ŵe_@)r   r   r$   r    r7   r   r   r   )r   r0   func
func_lworkr   rf   r   rs   r   r6   resultr  s               r2   
test_gglser    sj   '
+,D279zQ!q975534346
 >CDA AOA"b/A MNKKKKM NA ;-%,&-%,&-%,( )A %(AHH'):;5I!!E:1a7xx !- .H
 xx !: ;H 	"&A>>Y (r4   c                  ^   \         P                  P                  R 4      p \        \        \
        ,           4       EFn  w  r^
pV^8  d?   \        RVR7      p\        R	VR7      w  rVV P                  W334      P                  V4      pM[\        RVR7      p\        R
VR7      w  rVV P                  W334      V P                  W334      R,          ,           P                  V4      pWwP                  4       P                  ,           ^,          ^\         P                  ! W2R7      ,          ,           p\        V^4      p\        WC4      p	V! Wy^R7      w  rpV! WV^R7      w  r\        \        ^V,          \         P                  P!                  V^R7      ,
          4      V,          ^8  4       EKq  	  R# )r   sytrf_lworkr   hetrf_lworkr+   r   r%  )rf   ipivr  r%  rh   N)syconsytrf)heconhetrf)r7   r   r   r   r   r,   r$   r.   r  r~   r   r   r    r   r   r  cond)r1   r   r0   r   r  funconfunctrfr  r  r   ldur  r6   rconds                 r2   test_sycon_heconr$    sL   
))


%C~ 56
7)-uEJ./AOOFQF#++E2A *-uEJ./AOOFQF#cjj!&8&;;CCEJA ^Q266!#9!99Q
z-qQ71C%qAAeGbiinnQ!n445e;a?@- 7r4   c                     \         P                  P                  R 4      p \        \        4       EF  w  r^
p\        RVR7      w  rErgV P                  W334      P                  V4      pWP                  ,           ^,          pV P                  W334      P                  V4      p	WP                  ,           ^,          ^\         P                  ! W2R7      ,          ,           p	V! W4      w  rp\        V^ 8H  4       V! V	4      w  r\        V^ 8H  4       V! W4      w  r\        V^ 8H  4       V! V4      w  rp\        V^ 8H  4       \        WRR7       EK!  	  R# )r   r   giUMu?r   N)r+  sygstsyevdsygvd)r7   r   r   r   r   r$   r.   r~   r   r   r   )r1   r   r0   r   r+  r&  r'  r(  r  Beig_gvdr6   rn   r   rf   eigs                   r2   
test_sygstr,  !  s    
))


%C,
%5 7I<A&C"e JJv%%e,WaKJJv%%e,WaK!bffQ444 !;D	 (	+	Qx	6225 -r4   c                     \         P                  P                  R 4      p \        \        4       EF  w  r^
p\        RVR7      w  rErgV P                  W334      P                  V4      RV P                  W334      P                  V4      ,          ,           pWP                  4       P                  ,           ^,          pV P                  W334      P                  V4      RV P                  W334      P                  V4      ,          ,           p	WP                  4       P                  ,           ^,          ^\         P                  ! W2R7      ,          ,           p	V! W4      w  rp\        V^ 8H  4       V! V	4      w  r\        V^ 8H  4       V! W4      w  r\        V^ 8H  4       V! V4      w  rp\        V^ 8H  4       \        WRR7       EK  	  R# )r   r   r+   -C6?r   N)r+  hegstheevdhegvd)r7   r   r   r   r,   r$   r.   r  r~   r   r   r   )r1   r   r0   r   r+  r/  r0  r1  r  r)  r*  r6   rn   r   rf   r+  s                   r2   
test_hegstr2  @  sn   
))


%C/
%5 7I<A&C"e JJv%%e,rCJJv4F4M4Me4T/TT^QJJv%%e,rCJJv4F4M4Me4T/TT^QRVVA%;!;; !;D	 (	+	Qx	4005 0r4   c                    \         P                  P                  R4      p ^
^r!\        \        4       EF6  w  r4\        R
VR7      w  rV\        WaV4      pV^8  d+   \        V P                  W4      P                  V4      4      pMF\        V P                  W4      V P                  W4      R,          ,           P                  V4      4      p\        \        WXP                  4       V! WR7      w  rp\        V^ 8H  4       \         P                  ! V	RRV13,          \         P                  ! WV,
          3VR7      34      p\         P                  ! \         P                   ! WR7      V	RVR13,          34      p\         P                   ! W$R7      p\#        V4       Uu. uFQ  qW,          W.R3,          P                  P%                  W.R3,          P'                  4       4      ,          ,
          NKS  	  pp\)        \         P$                  V4      p\+        VP%                  V4      V,
          \-        WR7      ^
\         P.                  ! V! R4      P0                  4      ,          RR	7       EK9  	  R# u upi )z
This test performs an RZ decomposition in which an m x n upper trapezoidal
array M (m <= n) is factorized as M = [R 0] * Z where R is upper triangular
and Z is unitary.
r   r   r+   r   r8  Nr   r  r>  tzrzftzrzf_lwork)r7   r   rm  r   r   r$   r    r   r-   r.   r  r  r~   r   rC  r   r   rH  r   r  r   r   r   spacingr   )r1   r   r   r   r0   r5  tzrzf_lwr   r  rzrz   rn   r  VIdr   r   Zs                     r2   
test_tzrzfr=  _  s    ))


%Crq'
*+C168xA.7SXXa^**512Achhqnsxx~b'88@@GHA 	i,a-	 IIr!RaR%y"((As85"ABCIIrvva-r!QR%y9:VVA#DI!HMHq#&3636)9::::HM2663a1j&@

5:?? ;;"	F 	F- (( Ns   AI/c            
        \         P                  P                  R4      p \        \        4       EFW  w  r^pV^8  dZ   \        V P                  W34      V P                  W34      R,          ,           \        V4      ,           4      P                  V4      pRpM;\        V P                  W34      \        V4      ,           4      P                  V4      pRp\        RVR7      w  rgpV! V4      w  rV P                  V^4      P                  V4      pV! RW4      p\        T\        V) V4      V^,          ^ 8X  d   ^M^R7       V! RWVR7      p\        T\        VP                  4       P                  ) V4      V^,          ^ 8X  d   ^M^R7       V! R4      V\         P                  ! V4      \         P                  ! V4      3&   V! RWVR	R
7      p\        T\        VP                  4       P                  ) V4      V^,          ^ 8X  d   ^M^R7       V P                  ^V4      P                  V4      pV! RWVR	RR7      p\        T\        V) VP                  4      P                  4       P                  V^,          ^ 8X  d   ^M^R7       EKZ  	  R# )zx
Test for solving a linear system with the coefficient matrix is a
triangular array stored in Full Packed (RFP) format.
r   r+   r   r~   r   r   r   r   ri  )r   rE  r  )r   rE  r  N)trttftfttrtfsmr   )r7   r   rm  r   r   r   r-   r   r.   r$   r   r   r  r~   r  )r1   r   r0   r   r  r   r@  rA  rB  Afpr6   r)  solnB2s                 r2   	test_tfsmrF    s   
 ))


%C'
7SXXa^chhqnR&77#a&@AHHOAESXXa^c!f,-44U;AE-.H49;d qHHQN!!%(B!$qb!/2Qw!|!	D Be,!$qvvxzzk1(=/2Qw!|!	D ).b	"))A,		!
$%Be#6!$qvvxzzk1(=/2Qw!|!	D XXa^""5)Bu3SA!$qb"$$(<(<(>(@(@/2Qw!|!	D 	D? (r4   c                    \         P                  P                  R4      p ^
^^r2p\        \        4       EF  w  rE\        RVR7      w  rg\        WqV4      pV^8  d\   \        V P                  W34      P                  V4      4      p	V P                  W334      P                  V4      p
\        RVR7      w  rM\        V P                  W34      V P                  W34      R,          ,           P                  V4      4      p	V P                  W334      V P                  W334      R,          ,           P                  V4      p
\        RVR7      w  r\        WV4      pV! WR7      w  rp\         P                  ! \         P                  ! WR7      VRVR13,          34      p\         P                  ! W%R7      p\        V4       Uu. uFU  pVVV,          VV.R3,          P                  P                  VV.R3,          P                  4       4      ,          ,
          NKW  	  pp\        \         P                  V4      pV^8  d   RMRp^
\         P                   ! V! R	4      P"                  4      ,          pV! WWR7      w  pp\%        V^ 8H  4       \'        VVP                  V
4      ,
          \)        V
4      VR
R7       V! WV
VVR7      w  pp\%        V^ 8H  4       \'        VVP                  4       P                  P                  V
4      ,
          \)        V
4      VR
R7       V! WV
RVR7      w  pp\%        V^ 8H  4       \'        VV
P                  V4      ,
          \)        V
4      VR
R7       V! WV
RVVR7      w  pp\%        V^ 8H  4       \'        VV
P                  VP                  4       P                  4      ,
          \)        V
4      VR
R7       EK  	  R# u upi )a  
This test performs a matrix multiplication with an arbitrary m x n matrix C
and a unitary matrix Q without explicitly forming the array. The array data
is encoded in the rectangular part of A which is obtained from ?TZRZF. Q
size is inferred by m, n, side keywords.
r   r   r+   r   r8  Nr~   r   r   r  r>  r   r  )r  r   )r  r   r   r4  )ormrzormrz_lwork)unmrzunmrz_lwork)r7   r   rm  r   r   r$   r    r   r.   rC  r   rH  r~   r   r  r   r7  r   r   r   r   )r1   qmqncnr   r0   r5  r8  lwork_rzr  r   orun_mrzorun_mrz_lw	lwork_mrzr9  rz   rn   r:  r;  r   r   r  r   tolcqs                            r2   test_ormrz_unmrzrU    s$    ))


%CRBB'
*+C168!(37SZZ)0078A

B8$++E2A$45M;@%B!Hk cjj"*SZZ-A"-DDLLUSTARH%

B8(<R(??GGNA$45M;@%B!H #;B7	a0 IIrvvb.1bc6
;<VVB$DI"INIqr#a&A36A36)9::::IN2663 QwCE#JOO,,BQ8D	QUU1Xz!}3RHBQe9ED	QVVXZZ^^A..
1C	! BQS	BD	QUU1Xz!}3RHBQSYOD	QUU1668::..
1C	! 	![ (, Os   AOc            	     r   \         P                  P                  R4      p \        \        4       EF  w  r^pV^8  dA   V P                  W34      V P                  W34      R,          ,           P                  V4      pRpM"V P                  W34      P                  V4      pRp\        RVR7      w  rgV! V4      w  r\        V	^ 8H  4       V! VRR7      w  r\        V	^ 8H  4       V! WERR	7      w  r\        V	^ 8H  4       V! WERR	7      w  r\        V	^ 8H  4       \        V^,           V^,          3VR7      p\        V4      R
V^,          R13,          VRR1R
3&   W^,          ^,           R1R
3;;,          \        V4      RV^,          1RV^,          13,          P                  4       P                  ,          uu&   \        V^,           V^,          3VR7      p\        V4      R
RV^,          13,          VR&   VRV^,          1R
3;;,          \        V4      V^,          R1V^,          R13,          P                  4       P                  ,          uu&   \        WP                  RRR7      4       \        VVP                  4       P                  P                  RRR7      4       \        WP                  RRR7      4       \        VVP                  4       P                  P                  RRR7      4       V! W84      w  r\        V	^ 8H  4       V! W:RR7      w  pp	\        V	^ 8H  4       V! W;VRR	7      w  pp	\        V	^ 8H  4       V! W<VRR	7      w  pp	\        V	^ 8H  4       \        V\        V4      4       \        V\        V4      4       \        V\        V4      4       \        V\        V4      4       EK  	  R# )n
Test conversion routines between the Rectangular Full Packed (RFP) format
and Standard Triangular Array (TR)
r   r+   r   r~   r   r\  r_  ri  )transrr_  r8  NF)order)r@  rA  r   r  )r7   r   rm  r   r   r-   r.   r$   r   r   r   r  r~   r   r   reshape)r1   r   r0   r   A_fullrY  r@  rA  A_tf_Urn   A_tf_LA_tf_U_TA_tf_L_TA_tf_U_mA_tf_L_mA_tr_UA_tr_LA_tr_U_TA_tr_L_Ts                      r2   test_tfttr_trttfrh    s'   
 ))


%C'
7hhqnsxx~b'88@@GFFhhqn,,U3FF'(:%HV}	V#.	v3?	v3?	 !A#q!tE2<1a451"aAa!VUadUEQTE\ : ? ? A C CC!A#q!tE2v,q%1a4%x0!Q$d6l1a45!Q$%<8==?AAA!&*:*:2S*:*IJ!("*--/"3"3";";Bc";"J	L 	"&*:*:2S*:*IJ!("*--/"3"3";";Bc";"J	L Q'	QS1	q6D$	q6D$	!&$v,7!(DL9!&$v,7!(DL9c (r4   c                    \         P                  P                  R4      p \        \        4       EF  w  r^pV^8  d?   V P                  W34      V P                  W34      R,          ,           P                  V4      pM V P                  W34      P                  V4      p\        RVR7      w  rVV! V4      w  rx\        V^ 8H  4       V! VRR7      w  r\        V^ 8H  4       \        V4      p
\        W3^,           ,          ^,          VR7      p\        V4      P                  V
,          VR&   \        V4      p
\        W3^,           ,          ^,          VR7      p\        V4      P                  V
,          VR&   \        W{4       \        W4       V! W74      w  r\        V^ 8H  4       V! W9RR7      w  r\        V^ 8H  4       \        V\        V4      4       \        V\        V4      4       EK  	  R# )	rW  r   r+   r   r\  rX  r8  N)trttptpttr)r7   r   rm  r   r   r-   r.   r$   r   r   r   r   r~   r   r   r   )r1   r   r0   r   r]  rj  rk  A_tp_Urn   A_tp_LindsA_tp_U_mA_tp_L_mrd  re  s                  r2   test_tpttr_trttprq    s   
 ))


%C'
7hhqnsxx~b'88@@GFhhqn,,U3F'(:%HV}	V#.	 AaC!51F|~~t,AaC!51F|~~t,!&3!&3 Q'	QS1	!&$v,7!&$v,7A (r4   c                    \         P                  P                  R4      p \        \        4       EF  w  r^pV^8  dv   V P                  W34      V P                  W34      R,          ,           P                  V4      pWDP                  4       P                  ,           V\        V4      ,          ,           pMIV P                  W34      P                  V4      pWDP                  ,           V\        V4      ,          ,           p\        RVR7      w  rVpV! V4      w  rV! W84      w  r\        V	^ 8H  4       V! W:4      w  r\        V4      p\        W4       EK"  	  R# )z_
Test Cholesky factorization of a positive definite Rectangular Full
Packed (RFP) format array
r   r+   r   N)pftrfr@  rA  )r7   r   rm  r   r   r-   r.   r  r~   r   r$   r   r   r   )r1   r   r0   r   r  rs  r@  rA  rC  rn   	Achol_rfpA_chol_rr6   Achols                 r2   
test_pftrfrw  G  s   
 ))


%C'
7!#((1."33;;EBAFFHJJ3q6)A!''.ACC!CF("A./J5:<e !H	-		A)!(2% (r4   c                    \         P                  P                  R4      p \        \        4       EFE  w  r^pV^8  dv   V P                  W34      V P                  W34      R,          ,           P                  V4      pWDP                  4       P                  ,           V\        V4      ,          ,           pMIV P                  W34      P                  V4      pWDP                  ,           V\        V4      ,          ,           p\        RVR7      w  rVrxV! V4      w  rV! W94      w  rV! W;4      w  r\        V
^ 8H  4       V! W<4      w  r\        V4      p\        T\        V4      V^,          ^ 8X  d   ^M^R7       EKH  	  R# )zs
Test Cholesky factorization of a positive definite Rectangular Full
Packed (RFP) format array to find its inverse
r   r+   r   r   N)pftrirs  r@  rA  )r7   r   rm  r   r   r-   r.   r  r~   r   r$   r   r   r   r   )r1   r   r0   r   r  ry  rs  r@  rA  rC  rn   
A_chol_rfp	A_inv_rfpA_inv_rr6   Ainvs                   r2   
test_pftrir~  b  s5   
 ))


%C'
7!#((1."33;;EBAFFHJJ3q6)A!''.ACC!CF("A%5 7@ =B	&C"e !H	 =
.		1(
1v!'4:/2Qw!|!	D 	D- (r4   c                    \         P                  P                  R4      p \        \        4       EF  w  r^pV^8  dv   V P                  W34      V P                  W34      R,          ,           P                  V4      pWDP                  4       P                  ,           V\        V4      ,          ,           pMIV P                  W34      P                  V4      pWDP                  ,           V\        V4      ,          ,           p\        V^3VR7      p\        V^,           ^3VR7      p\        V^,
          ^3VR7      p\        RVR7      w  rrV
! V4      w  rV	! W<4      w  rV! W>V4      w  r\        V^ 8H  4       \        \        WW4       V! W>V4      w  r\        V^ 8H  4       \        \!        WE4      TV^,          ^ 8X  d   ^M^R7       EK  	  R# )zy
Test Cholesky factorization of a positive definite Rectangular Full
Packed (RFP) format array and solve a linear system
r   r+   r   r   N)pftrsrs  r@  rA  )r7   r   rm  r   r   r-   r.   r  r~   r   r   r$   r   r  r  r   r   )r1   r   r0   r   r  r)  Bf1Bf2r  rs  r@  rA  rC  rn   rz  rD  s                   r2   
test_pftrsr    s   
 ))


%C'
7!#((1."33;;EBAFFHJJ3q6)A!''.ACC!CF("A!Qu%AaC85)AaC85)%5 7@ =B	&C"e !H	 =
1#.
	i:;1!,
	!%+t/2Qw!|!	D 	D7 (r4   c            
        \         P                  P                  R4      p \        \        4       EF  w  r^pV^8  dv   V P                  W34      V P                  W34      R,          ,           P                  V4      pWDP                  4       P                  ,           V\        V4      ,          ,           pMIV P                  W34      P                  V4      pWDP                  ,           V\        V4      ,          ,           pV^8  d   RMRp\        RRV R23VR7      w  rgpV! V4      w  rV P                  V^4      P                  V4      pV! V^RV^V	4      pV! W<4      w  r\        T\        VP                  VP                  4       P                  4      ) ^V,          ,           4      V^,          ^ 8X  d   ^M^R	7       EK  	  R
# )zL
Test for performing a symmetric rank-k operation for matrix in RFP format.
r   r+   r   hr@  rA  frkr   r   Nr   )r7   r   rm  r   r   r-   r.   r  r~   r   r$   r   r   r   )r1   r   r0   r   r  prefixr@  rA  shfrkrC  r6   r   Afp_outA_outs                 r2   test_sfrk_hfrkr    sh    ))


%C'
7!#((1."33;;EBAFFHJJ3q6)A!''.ACC!CF("AQwC.VHC./Q5:<e qHHQN!!%(1b!Q,$!%quuQVVXZZ/@.@1Q3.F)G/2Qw!|!	D 	D# (r4   c            	        \         P                  P                  R4      p \        \        4       EF  w  r^
pV^8  de   V P                  R^W334      V P                  R^W334      R,          ,           P                  V4      pWDP                  4       P                  ,           pMLV P                  R^W334      P                  V4      pWDP                  ,           V\        V4      ,          ,           p^d\         P                  ! V! R4      P                  4      ,          p\        RVR7      w  rgp\        W^R7      p	\        V^RR7      w  rp\        W^R7      p	V! V^V	R7      w  rpV! W^R7      w  ppp\        \!        VR4      \!        WR	3,          R4      VR
R7       \        V^ RR7      w  prV! V^ R7      w  rpV! W^ R7      w  ppp\        \#        V^4      \#        VVR	3,          ^4      VR
R7       EK  	  R# )zh
Test for going back and forth between the returned format of he/sytrf to
L and D factors/permutations.
r   r+   r   r   r  F)r%  	hermitianr  r8  r  r>  Ni)syconvr  r  r   )r7   r   rm  r   r   randintr.   r  r~   r   r7  r   r$   r    r   r   r   r   )r1   r   r0   r   r  rS  r  trf	trf_lworklwr\  Dpermr"  r  rn   rf   r  ri  s                      r2   test_syconvr    s   
 ))


%C'
7S"qf-S"qf-b0128&-  FFHJJACaV,33E:ACC!CF("A"**U3Z__--!1 3BIN"PYI2!u5
dI2aq34CQ/
1dQd11W:r&:2N !u5
1aq/4CQ/
1dQ
D47Q$7cKK5 (r4   c                   0   a  ] tR tRt o RtR tR tRtV tR# )TestBlockedQRi  zX
Tests for the blocked QR factorization, namely through geqrt, gemqrt, tpqrt
and tpmqr.
c                   \         P                  P                  R 4      p\        \        4       EF  w  r#^pV^8  d?   VP                  WD4      VP                  WD4      R,          ,           P                  V4      pM VP                  WD4      P                  V4      p^d\         P                  ! V! R4      P                  4      ,          p\        RVR7      w  rxV! WE4      w  rpV^ 8X  g   Q h\         P                  ! V	R4      \         P                  ! WCR7      ,           p\         P                  ! WCR7      W,          VP                  P                  4       ,          ,
          p\         P                  ! V	4      p\        VP                  P                  4       V,          \         P                  ! WCR7      VRR7       \        W,          WVRR7       V^8  dA   VP                  WD4      VP                  WD4      R,          ,           P                  V4      pRpM"VP                  WD4      P                  V4      pRpR F  pR	V3 F  pV! WVVVR
7      w  ppV^ 8X  g   Q hVV8X  d   VP                  P                  4       pMTpVR8X  d   VV,          pM	VV,          p\        VVVRR7       VV3R8X  g   Ks  V! WV4      w  ppV^ 8X  g   Q h\!        VV4       K  	  K  	  \#        \$        WWRR7       \#        \$        WWRR7       EK  	  R# )r   r+   r   r   r  r>  r   r~   r\  rh  r  r   r  r  r?  N)geqrtgemqrtr   r\  r  r\  rh  )r7   r   rm  r   r   r-   r.   r7  r   r$   r   r   r~   r  r   r   r   r  r  )re   r1   r   r0   r   r  rS  r  r  rf   trn   r  r  r  r   	transposer  r   r   qqC	c_defaults   &                      r2   test_geqrt_gemqrtTestBlockedQR.test_geqrt_gemqrt  sd   ii##D)#F+JCAQwXXa^chhqnR&77??FXXa^++E2bjjs11C,-@NMEqJA$199 2!77Aq&);;A
A ACCHHJNBFF1,B!#%AE1R8QwXXa^chhqnR&77??F	XXa^++E2	"!9-E$Q14uEGAt19$9	)CCHHJs{UU#Ar"= e}
2*0q/	4#qy(y$Y2) . #0 )V3?)VC@@u ,r4   c                
   \         P                  P                  R 4      p\        \        4       EFG  w  r#^pV^8  d|   VP                  WD4      VP                  WD4      R,          ,           P                  V4      pVP                  WD4      VP                  WD4      R,          ,           P                  V4      pM@VP                  WD4      P                  V4      pVP                  WD4      P                  V4      p^d\         P                  ! V! R4      P                  4      ,          p\        RVR7      w  r^ V^,          V3 EF0  p
V! WWV4      w  rrV^ 8X  g   Q h\        \         P                  ! VR4      \         P                  ! VR4      4       \        \         P                  ! WV,
          ^,
          4      \         P                  ! WjV,
          ^,
          4      4       \         P                  ! WjV,
          4      \         P                  ! WV,
          4      pp\         P                  ! \         P                  ! WCR7      V34      p\         P                  ! ^V,          VR7      VV,          VP                  P!                  4       ,          ,
          p\         P                  ! \         P                  ! V4      \         P"                  ! V4      34      p\%        VP                  P!                  4       V,          \         P                  ! ^V,          VR7      VRR7       \%        VV,          \         P                  ! \         P                  ! V4      V34      VRR7       V^8  d~   VP                  WD4      VP                  WD4      R,          ,           P                  V4      pVP                  WD4      VP                  WD4      R,          ,           P                  V4      pRpMBVP                  WD4      P                  V4      pVP                  WD4      P                  V4      pRpR EF  pR	V3 EF  pV	! WVVVVVR
7      w  pppV^ 8X  g   Q hVV8X  d   VP                  P!                  4       pMTpVR8X  d?   \         P                  ! VV3^ R7      p\         P                  ! VV3^ R7      pVV,          pM=\         P                  ! VV3^R7      p\         P                  ! VV3^R7      pVV,          p\%        VVVRR7       VV3R8X  g   K  V	! WVVV4      w  pp pV^ 8X  g   Q h\        VV4       \        V V4       EK  	  EK  	  \'        \(        WWVVRR7       \'        \(        WWVVRR7       EK3  	  EKJ  	  R# )r   r+   r   r   r  r>  r   r~   r\  rh  r  r   r  r  r?  N)tpqrttpmqrtr   r  r  )r7   r   rm  r   r   r-   r.   r7  r   r$   r   r   r   rG  r   r~   r  r   r   r  r  )!re   r1   r   r0   r   r  r)  rS  r  r  lrf   r   r  rn   B_pentb_pentr  r  r  r   r  r  r  r   r   rs   r  cdCDqCDr  	d_defaults!   &                                r2   test_tpqrt_tpmqrtTestBlockedQR.test_tpqrt_tpmqrt(  s(   ii##D)#F+JCAQwXXa^chhqnR&77??FXXa^chhqnR&77??FXXa^++E2XXa^++E2bjjs11C,-@NME a^ %aA 1aqy y RWWQ^RWWQ^< RWWQA	2BGGA1uqy4IJ "$E!2BGGA1u4E NNBFF1$:F#CDFF1q5.Q1CCNNBGGAJa0@#AB  
Qq1uE0J%(r3Ar~~rwwqz66J'K%(r3 7!#((1.*;;CCEJA!#((1.*;;CCEJA #I!//6A!//6A #I&D"%y!1%+A!Q27&9
1d#qy(y I- !
A !A3;!#AQ!?B!#AQ!?B"#b&C!#AQ!?B!#AQ!?B"$q&C'CcC %=J69?aA9N6Iy$#'19,9(A6(A63 "2 ': iA!QSIiA!QcJJA $ ,r4   r   N)	r   r   r   r   r?   r  r  r   r   r   s   @r2   r  r    s     
<A|QK QKr4   r  c                     \         P                  P                  R 4      p \        \        4       EF  w  r^
p^p\        RVR7      pV^8  d|   V P                  W3V,
          4      P                  V4      RV P                  W3V,
          4      P                  V4      ,          ,           pWfP                  4       P                  ,          pM9V P                  W3V,
          4      P                  V4      pWfP                  ,          pV! V4      w  rxr\        V4      pRWV,
          R1W,
          R13&   \        V
^4       R\         P                  ! \         P                  4      P                  ,          pR\         P                  ! \         P                  4      P                  ,          pVR
9   d   TMTp\!        Wh^,
          ,          RV^,
          3,          VP                  4       P                  V,          RVR7       V! V^R	7      w  rxr\#        V4      pRWV,
          R1W,
          R13&   \        V
^4       R\         P                  ! \         P                  4      P                  ,          pR\         P                  ! \         P                  4      P                  ,          pVR
9   d   TMTp\!        Wh^,
          ,          RV^,
          3,          WP                  4       P                  ,          RVR7       EK  	  R# )r   pstrfr   r+   r  N  r8  ra  r  r   rZ   r7   r   rm  r   r   r$   r-   r.   r  r~   r   r   r   r  r   rK  r   r   )r1   r   r0   r   r  r  r  r   pivr_crn   ri  single_atoldouble_atolr?  r\  s                   r2   
test_pstrfr  |  !   
))


%C'
 6 7aC ''.chhqA#6F6M6Me6T1TTAFFHJJAaC ''.ACCA!!HG "'(CGH
T1 RXXbjj1555RXXbjj1555!Vm{a%CE*AFFHJJN$O!!1-G "'(CGH
T1RXXbjj1555RXXbjj1555!Vm{a%CE*A

N$OOG (r4   c                     \         P                  P                  R 4      p \        \        4       EF  w  r^
p^p\        RVR7      pV^8  d|   V P                  W3V,
          4      P                  V4      RV P                  W3V,
          4      P                  V4      ,          ,           pWfP                  4       P                  ,          pM9V P                  W3V,
          4      P                  V4      pWfP                  ,          pV! V4      w  rxr\        V4      pRWV,
          R1W,
          R13&   \        V
^4       R\         P                  ! \         P                  4      P                  ,          pR\         P                  ! \         P                  4      P                  ,          pVR
9   d   TMTp\!        Wh^,
          ,          RV^,
          3,          VP                  4       P                  V,          RVR7       V! V^R	7      w  rxr\#        V4      pRWV,
          R1W,
          R13&   \        V
^4       R\         P                  ! \         P                  4      P                  ,          pR\         P                  ! \         P                  4      P                  ,          pVR
9   d   TMTp\!        Wh^,
          ,          RV^,
          3,          WP                  4       P                  ,          RVR7       EK  	  R# )r   pstf2r   r+   r  Nr  r8  ra  r  r  r  )r1   r   r0   r   r  r  r  r   r  r  rn   ri  r  r  r?  r\  s                   r2   
test_pstf2r    r  r4   c                      \         P                  ! . RO. RO. R	O. R
O.4      p \         P                  ! . RO. RO. RO.4      p\        \        4       EF(  w  r#V^8  d5   \         P                  ! . RO. RO. RO. RO.4      pVP	                  V4      pM_\         P                  ! . RO. RO. RO.VR7      pV\         P                  ! . RO. RO. RO.4      R,          ,          pVP	                  V4      p\        RVR7      pV! V4      w  rgrrV^8  d6   \        V P	                  V4      VR,          V,          V,          ^ RR7       K  \        VP	                  V4      VR,          V,          V,          ^ RR7       EK+  	  R# )      ?r+   r   geequNr.  ra  )r  r   g1w-!?gd`TRۿ)r   gsr  r  )gs?r  g2%䃮g,eX)r  gsFg%ug??)y/nҿ&?yDioɴ?Af?y o_[ Acп)ysֿAfҿyPkw?JY8y5;NёCl?)yYڊ?1*?y=yXѿ@a+?yh oſFx)g   ЈBg   tBgffffff @g   ٓ )      @gg#fDgffffff)gHzG?gQg'Vgp=
ף)g(\r
  gS7нr  )gq=
ףpg   Ag(\)g333333g   Bg333333ÿ)gZ9=gQgֽ)gffffff@g   tޅBrA  )g(\g   Zgq=
ףp?)gEop=gQ?gZEqҽ)r8  N)r7   r   r   r   r.   r$   r   )desired_realdesired_cplxr   r0   r  r  r  r   rowcndcolcndamaxrn   s               r2   
test_geequr    si   88>@@@B CL
 88 1112 3L  '
7CEEEG HA A:::<CHJA :;:< ==?@ @A A 6+08(fd7L//6'
1Q!"/ L//6'
1Q!"/ /3 (r4   c            	      8   \         P                  ! . RO4      p \        \        4       F  w  r\         P                  ! ^
VR7      pT! V^8  d   RMR4      p\         P                  ! \        R^4       Uu. uF  qTRV,          ,          NK  	  upVR7      pV\         P                  ! \         P                  ! V4      4      ,          p\        RVR7      pV! V4      w  rr\        \         P                  ! V4      P                  \        4      V 4       K  	  R# u upi )	r   r   r   r+   r   syequbN)
r   r   r   r   r   r   r   r   r  rc  )r7   r   r   r   r   rH  rot90rE  r$   r   log2r.   r   )desired_log2sr   r0   r  r  r   rs   r  r   scondr  rn   s               r2   test_syequbr    s    HH?@M'
FF2U#C!Gb-HHU2q\:\b!emm\:%H	RXXbggaj!!!(%8%ay$RWWQZ&&s+]; ( ;s   4D
Tz.Failing on some OpenBLAS version, see gh-12276)reasonc            	         \         P                  ! ^.^,          R.^,          ,           4      \         P                  ! \         P                  ! ^	4      ^R7      R,          ,           p \        P                  ! V 4      w  rr4\        V^ 4       \        \         P                  ! V4      RR
.^,          R.,           R.^,          ,           4       \         P                  ! ^\         P                  ! \         P                  ! R^4      4      ,          R,           4      p RV R&   RV R&   \        P                  ! V P                  \         P                  4      ^R7      w  rr4\        V^ 4       \        \         P                  ! V4      . RO4       R	# )rZ   i  )r{  r+   r                  i   y              0@r  Nr  r  r]   r]   )r]   r   )r  r   r   r   r   r  r   r   r   r  r  )r7   rE  r   r   zheequbr   r   r  r   r  cheequbr.   	complex64)r  r   r  r  rn   s        r2   test_heequbr    s    	Aq !BGGBGGAJ!$<R$??A!>>!,AdqBGGAJS	!rd 2bT!V ;<
266"))B*++b01AAdGAdG!>>!((2<<*@JAdqBGGAJ IJr4   c            	      8   \         P                  P                  ^*4      p ^
pV P                  V4      pV P                  V4      V P                  V4      R,          ,           p\	        \
        4       EF%  w  rEV^8  d=   V P                  W4      pVP                  V4      pWb,          pVP                  V4      pMXV P                  W4      V P                  W4      R,          ,           pVP                  V4      pWc,          pVP                  V4      p\        RVR7      p\        RVR7      p	V! V^ R7      w  rrV	! WW^ R7      w  rV^8  d'   \        VP                  V4      W,          ^R7       EK  \        VP                  V4      W,          ^R7       EK(  	  R# )	r(  r+   getc2r   gesc2r;  )overwrite_rhsr   N)	r7   r   rm  r-   r   r   r.   r$   r   )r1   r   r  r  r   r0   r  r   r  r  r  r  jpivrn   r   rY   s                   r2   test_getc2_gesc2r    sR   
))


#C
A88A;L88A;!R/L'
7AA AA!!22AA AA 6 6$QA6$!<7%l&9&9%&@&'gq: : &l&9&9%&@&'gq: :+ (r4   r*  jobajobujobvjobrjobpc                6   \         P                  P                  ^*4      pV w  r^d\         P                  ! V4      P                  ,          p\        WV4      p\        RVR7      pV^8  pV^8  pV^8H  ;'       d    W8H  p\         P                  ! V4      pV^8H  ;'       d    V'       * ;'       d    V'       * pV^8H  ;'       d    T;'       d    T'       * ;'       d    TpV^8H  ;'       d    T;'       d    T'       * ;'       d    TpV'       d   R	pMV'       g	   V'       d   R
pM^ pV^8  d   V^8X  d   \        \        WW#WEWv4	       R# V! VVVVVVVR7      w  pppppp\        VV4       V'       Eg   V^ ,          V^,          ,          VRV
 ,          p\        V\        VRR7      VR7       V^8X  d   VRRV
13,          pV'       dP   V'       dH   \        V\         P                  ! V4      ,          VP                  4       P                  ,          WR7       V'       dB   \        VP                  4       P                  V,          \         P                   ! V
4      VR7       V'       dB   \        VP                  4       P                  V,          \         P                   ! V
4      VR7       \        V^ ,          \         P"                  P%                  V4      4       \        V^,          \         P&                  ! V4      4       \        V^,          ^ 4       R# R# )a  Test the lapack routine ?gejsv.

This function tests that a singular value decomposition can be performed
on the random M-by-N matrix A. The test performs the SVD using ?gejsv
then performs the following checks:

* ?gejsv exist successfully (info == 0)
* The returned singular values are correct
* `A` can be reconstructed from `u`, `SIGMA`, `v`
* Ensure that u.T @ u is the identity matrix
* Ensure that v.T @ v is the identity matrix
* The reported matrix rank
* The reported number of singular values
* If denormalized floats are required

Notes
-----
joba specifies several choices effecting the calculation's accuracy
Although all arguments are tested, the tests only check that the correct
solution is returned - NOT that the prescribed actions are performed
internally.

jobt is, as of v3.9.0, still experimental and removed to cut down number of
test cases. However keyword itself is tested externally.
gejsvr   )r  r  r  r  jobtr  NF)r:  r  r8  r  rc  )r7   r   rm  r   r   r3   r$   r  r  r  r   r   r   rE  r  r~   identityr  matrix_rankcount_nonzero)r*  r0   r  r  r  r  r  r  r1   r   r   r?  r  r  lsvecrsvecl2tran
is_complexinvalid_real_jobvinvalid_cplx_jobuinvalid_cplx_jobvexit_statussvar  r  r   r   rn   sigmas   &&&&&&&&                     r2   test_gejsv_generalr  ;  sp   B ))


#C DA%$$$D#D5AWE2E
 1HE1HEai%%afF#JHHUHHZMMU-=-=v(>MM:MMU-=-=v(>MM:
 	/qtqyi4t4N',Q262626262626(8$Q4 	T;' { !WtAw&#bq'1EE3qU#;$Gqy a!eHBGGEN 2QVVXZZ ?N

QATJ

QATJq299#8#8#;<q2#3#3E#:; q1%5 r4   c                   \        RV R7      pV! R4      w  r#rErg\        V^ 4       \        VP                  R4       \        VP                  R4       \        V\        P                  ! R.V R7      4       \        P
                  ! RV R7      pV! V4      w  r#rErg\        V^ 4       \        VP                  R4       \        VP                  R4       \        V\        P                  ! R.V R7      4       \        P
                  ! RV R7      pV! V4      w  r#rErg\        V^ 4       \        VP                  R4       \        VP                  R4       \        V\        P                  ! . V R7      4       \        P                  ! \        P                  ! ^d4      P                  ^
^
4      4      P                  V 4      p\        P                  ! WP                  ,           4      pVP                  R4      p	V! V4      p
\        W4       R# )	z*Test edge arguments return expected statusr  r   r   r  NrU   rU   )rU   r  )r$   r   r/   r7   r   r   sinr  r\  r.   asfortranarrayr~   r  r   )r0   r  r  r  r  r   r   rn   r  Acr6   s   &          r2   test_gejsv_edge_argumentsr    s    WE2E $)9 CAUq&!&!bhht512 	E"A#(8 CAUq&!&!bhht512 	e$A#(8 CAUq&!&!bhhr/0 	ryy~%%b"-.55e<A
!cc'"A	
BaAAr4   kwargsr  c                    \         P                  ! R\        R7      p\        R\        R7      p\	        \
        W!3/ V B  R# )z-Test invalid job arguments raise an Exceptionr   r  N)rZ   rZ   r  )r  r  r  s   &  r2    test_gejsv_invalid_job_argumentsr    s/     	e$AWE2E)U00r4   zA,sva_expect,u_expect,v_expectc                    Rp\        RV P                  R7      pV! V 4      w  rgrr\        WVR7       \        W'VR7       \        W8VR7       R# )zr
This test implements the example found in the NAG manual, f08khf.
An example was not found for the complex case.
r.  r  r   r  N)r$   r0   r   )r  
sva_expectu_expectv_expectr?  r  r  r  r  r   r   rn   s   &&&&        r2   test_gejsv_NAGr    sG    0 DWAGG4E#(8 CAUJ$/Hd+Hd+r4   c           
         \         P                  P                  ^*4      p^
p^d\         P                  ! V 4      P                  ,          p\        V^,
          3WR7      p\        V3WR7      p\        V^,
          3WR7      pVP                  4       VP                  4       VP                  4       .p\         P                  ! V4      \         P                  ! VR4      ,           \         P                  ! V^4      ,           pVP                  V4      p	W,          p
\        RV R7      w  rV! WeV4      w  rpppp\        Wg^ ,          4       \        WW^,          4       \        WG^,          4       \         P                  ! V^ 4      \         P                  ! V^4      ,           \         P                  ! V^4      ,           p\         P                  ! W R7      p\        V4       FX  w  ppVV,          ^,
          pVRVV.3,          VRVV.3&   VRV3;;,          VRV^,           3,          V,          ,          uu&   KZ  	  RVR,          ^,
          ppVRVV.3,          VRVV.3&   \        VVV,          VR7       V
P                  4       pV! WVVVV
4      w  pp\        V
V4       \        V	VVR7       V \        9   d   RpVP                  V	,          pM#RpVP                  4       P                  V	,          pV! WVVVVVR7      w  pp\        V	VVR7       \!        \"        4      ;_uu_ 4        V! VRR WT4       RRR4       \!        \"        4      ;_uu_ 4        V! WeRR V4       RRR4       \!        \"        4      ;_uu_ 4        V! WeVRR 4       RRR4       \!        \"        4      ;_uu_ 4        V! V^ ,          VR	,          V^ ,          4       RRR4       ^ V^ &   ^ V^ &   V! WeV4      w  ppppp p!\         P$                  P'                  VV^,
          ,          ^ 8H  R
VV^,
          ,           R24       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)r(  r0   r1   r   r8  r  r~   r   r?  N:NrU   Nz?gttrf: _d[info-1] is , not the illegal value :0.r   gttrfgttrs)r7   r   rm  r   r   r3   r  rE  r$   r	   r   r   r   r   r~   r  r  rd  testingr   )"r0   r1   r   r?  durs   dldiag_cpyr  r   r   r	  r
  _dl_d_dudu2r  rn   ri  r\  rT  r   r  b_cpyx_gttrsr   b_trans__dl__d__du_du2_ipiv_infos"   &                                 r2   test_gttrf_gttrsr    s    ))


#C
A%$$$D 
%acV5	BB#QD?A	$acV5	BB	1668RWWY/H

RWWR_$rwwr1~5A

1A	A#$6eDLE$)"$4!CS#tTrA;'q1+&rA;' 	Aa(2773?:A
qA#1 1gk1sAh;!aX+	!Q$1Q!V9Q;  bAsAq3({^Aa!SkN Aq1u4(FFHE#3T15MGTq% AwT* ##'&&(**q.#3T7%HMGTAwT* 
z	"	"b"gq 
#	z	"	"bCR&" 
#	z	"	"bRW 
# 
z	"	"beQrUBqE" 
# BqEAaD*/r*:'D#tT5%JJs4!8}).DSPQ]O TI -I K 
#	"	"	"	"	"	" 
#	"s0   &P1Q>Q* Q+1Q	Q	Q(	+Q;	z1du, d, dl, du_exp, d_exp, du2_exp, ipiv_exp, b, xg@gffffff@g%@g@r  g3@c	                     \        RV ^ ,          V ^ ,          34      w  rV	! W!V 4      w  rrpp\        W4       \        W4       \        WRR7       \        W4       V
! WWW4      w  pp\        VV4       R# )r	  r.  r  Nr  )r$   r   )r  rs   r  du_expd_expdu2_expipiv_expr   r   r	  r
  r  r  r  r  r  rn   r  s   &&&&&&&&&         r2   0test_gttrf_gttrs_NAG_f07cdf_f07cef_f07crf_f07csfr"  X  ss    d $$6A1GLE$)"$4!CStTC!C BD)D##3T5MGTGQr4   c           
         \         P                  P                  R 4      pVP                  V4      VP                  V4      R,          ,           pVP                  V^,
          4      VP                  V^,
          4      R,          ,           pVP                  V^,
          4      VP                  V^,
          4      R,          ,           p\         P                  ! V4      \         P                  ! VR4      ,           \         P                  ! V^4      ,           p\         P                  ! V \         P
                  4      '       d2   VP                  VP                  VP                  VP                  3w  rtrVVP                  V 4      VP                  V 4      VP                  V 4      VP                  V 4      3w  rtrV\         P                  P                  YqR8X  d   \         P                  M^R7      p\        R	V34      w  rV	! WTV4      w  rTrkrV
! WTWkWVR7      w  r\        R
V34      w  ppV! V4      w  pppV! VWR7      w  pp\         P                  ! V 4      P                  R,          p\        VVVR7       R# )iTfr+   r  r  r  g      ?r   Nr   )r	  gtconr  )r7   r   r   rE  r  r  r   r.   r  r   r  r$   r   r   r   )r0   r   r   r1   rs   r  r  r  r  r	  r$  r  r  rn   rU  r6   r  r  r  r  r   r   s   &&&                   r2   
test_gtconr%    s    ))


)C

1

1b((A	AE	SZZA.r1	1B	AE	SZZA.r1	1B

RWWR_$rwwr1~5A	}}UBKK((vvqvvrww7b88E?AHHUORYYu5EryyQVGWWLA"IINN1CK"&&QN?E#$6=LE!&rb!1B2D2"4T:FC#$6=LE51XNBd2u(FC88E?$DC4(r4   c                 V    \        R V R7      pVw  r4V! W4R7      w  rV\        V^ 4       R# )geqrfp_lworkr   r  Nr  )r0   r/   r'  r   r   r   rn   s   &&     r2   test_geqrfp_lworkr(    s-     $^EBLDA(KEqr4   zddtype,dtypec                 \   \         P                  P                  ^*4      p^d\         P                  ! V4      P                  ,          p^
p\        V3W4      ^,           p\        V^,
          3W4      p\         P                  ! V4      \         P                  ! VR
4      ,           \         P                  ! \         P                  ! V4      ^4      ,           pVP                  4       VP                  4       .p\        RVR7      p	V	! WV4      w  rp\        WX^ ,          4       \        Wh^,          4       \        V^ RV R2R7       \         P                  ! VR
4      \         P                  ! \         P                  ! V4      4      ,           p\         P                  ! V
4      p\        W}V,          VP                  4       P                  ,          VR7       \        V3W4      pW,          p\        RVR7      pV! WP                  4       V4      w  pp\        V^ RV R2R7       \        VVVR7       R	# )r(  pttrfr   zpttrf: info = z, should be 0)err_msgr  pttrszpttrs: info = Nr   )r7   r   rm  r   r   r3   rE  r  r  r$   r	   r   r   r   r   r~   )ddtyper0   r1   r?  r   rs   r  r  r  r*  r  _ern   r\  r  r   r   r,  _xs   &&                 r2   test_pttrf_pttrsr0    s    ))


#Crxx"""D
A
 	$QD&6:A#QqSFE7A 	
RWWQ^#bggbggaj!&<<A!&&(#HWE2E;LBDq1+&q1+&qN4&"FG 	B"''"''!*--A
AAs1;;=??*6 	$QD%5A	A WE2ERA&HBqN4&"FG Ar%r4   c                    ^
p\         P                  P                  R4      p\        RVR7      p\	        V3W4      ^,           p\	        V^,
          3W4      p\        \        WERR V4       \        \        WEVRR 4       R# )
   r   r*  r   Nr   )r7   r   rm  r$   r3   r  rd  )r-  r0   r   r1   r*  rs   r  s   &&     r2   *test_pttrf_pttrs_errors_incompatible_shaper3    sr     	A
))


%CWE2E#QD&6:A#QqSFE7A*esVQ/*e#2/r4   c                    ^
p\         P                  P                  ^*4      p\        RVR7      p\	        V3W4      ^,           p\	        V^,
          3W4      p^ V^ &   ^ V^ &   V! WV4      w  rxp	\        Wy^,
          ,          ^ RWy^,
          ,           R24       \	        V3W4      pV! WV4      w  rxp	\        V	^ 8g  R4       R# )r2  r*  r   z?pttrf: _d[info-1] is r  z2?pttrf should fail with non-spd matrix, but didn'tN)r7   r   rm  r$   r3   r   r   )
r-  r0   r   r1   r*  rs   r  r  r.  rn   s
   &&        r2   'test_pttrf_pttrs_errors_singular_nonSPDr5    s     	A
))


#CWE2E#QD&6:A#QqSFE7AAaDAaD;LBD1Hq)"AX,7RSU 	$QD&6A;LBDDAIKLr4   z%d, e, d_expect, e_expect, b, x_expectg      @c                 R   R p\        RV^ ,          R7      pV! W4      w  rp
\        WVR7       \        WVR7       \        RV^ ,          R7      pV! WP                  4       V4      w  r\        WVR7       VP                  \        9   d   V! WV^R7      w  r\        WVR7       R# R# )r.  r*  r   r  r,  r  N)r$   r   r  r0   r,   )rs   r  d_expecte_expectr   x_expectr?  r*  r  r.  rn   r,  r/  s   &&&&&&       r2   test_pttrf_pttrs_NAGr:  	  s    4 DWAaD1E;LBDBt,Bt,WAaD1ERA&HBBt, 	ww. !,40 !r4   c                 .   \         P                  P                  ^*4      pV^8X  Ed&   \        W"3W4      pV\         P                  ! \         P
                  ! V4      ^V,          ,           4      ,           pWUP                  4       P                  ,           ^,          p\        V4      ^,          p\        V3W4      ^,           p\        V^,
          3W4      p\         P                  ! V4      \         P                  ! V^4      ,           \         P                  ! VR4      ,           p	Wi,          VP                  4       P                  ,          p
TpM\        V3W4      p\        V^,
          3W4      pV^,           p\         P                  ! V4      \         P                  ! V^4      ,           \         P                  ! VR4      ,           p
\         P                  ! V4      \         P                  ! VR4      ,           \         P                  ! V^4      ,           pWxW3# )r(  r   )	r7   r   rm  r3   rE  r   r  r~   r   )r0   realtyper   	compute_zr1   A_eigvrrs   r  trir  zs   &&&&        r2   pteqr_get_d_e_A_zrB  9	  sm    ))


#CA~+QFE?ac 122'1,%[^'h<q@'1>ggaj2771a=(2771b>9Hrwwy{{" (h<'1> EGGAJA&B7GGAJB'"''!Q-7!<r4   zdtype,realtyper=  c                   R\         P                  ! V 4      P                  ,          p\        RV R7      p^
p\	        WWR4      w  rgrV! WgWR7      w  rr\        V^ RV R24       \        \         P                  ! \        V4      ^ ,          4      \         P                  ! V
4      VR7       V'       d   \        V\         P                  ! V4      P                  ,          \         P                  ! V4      VR7       \        V\         P                  ! V
4      ,          \         P                  ! V4      P                  ,          WR7       R# R# )	z
Tests the ?pteqr lapack routine for all dtypes and compute_z parameters.
It generates random SPD matrix diagonals d and e, and then confirms
correct eigenvalues with scipy.linalg.eig. With applicable compute_z=2 it
tests that z can reform A.
r  pteqrr   rs   r  rA  r=  zinfo = z, should be 0.r  N)r7   r   r   r$   rB  r   r   sortr   r  r~   r  rE  )r0   r<  r=  r?  rD  r   rs   r  r  rA  d_pteqre_pteqrz_pteqrrn   s   &&&           r2   
test_pteqrrJ  Y	  s     ###Dge4E
A"5AAJA!&+a&O#GgqGD689 BGGDGAJ')9E"'''"2"4"44bkk!n!	# 	"'''"22RWWW5E5G5GG	& r4   c                 ~    \        R V R7      p^
p\        WWB4      w  rVrxV! V^,
          WhVR7      w  rrV^ 8  g   Q hR# rD  r   rA  r=  Nr$   rB  r0   r<  r=  rD  r   rs   r  r  rA  rG  rH  rI  rn   s   &&&          r2   test_pteqr_error_non_spdrP  y	  sI     ge4E
A"5AAJA! ',AE1Y&O#Gg!8O8r4   c           	          \        R V R7      p^
p\        WWB4      w  rVrx\        \        W5RR WhVR7       \        \        W5VRR WR7       V'       d   \        \        W5WhRR VR7       R# R# )rD  r   NrM  r   )r$   rB  r  rd  )	r0   r<  r=  rD  r   rs   r  r  rA  s	   &&&      r2   "test_pteqr_raise_error_wrong_shaperR  	  si     ge4E
A"5AAJA!*esVQyI*e#2!Ij%A3B9M r4   c                     \        R V R7      p^
p\        WWB4      w  rVrx^ V^ &   ^ V^ &   V! WVWR7      w  rrV^ 8  g   Q hR# rL  rN  rO  s   &&&          r2   test_pteqr_error_singularrT  	  sS     ge4E
A"5AAJA!AaDAaD&+AA&K#Gg!8O8r4   zcompute_z,d,e,d_expect,z_expectc                t   Rp\        RVP                  R7      p\        P                  ! V4      \        P                  ! V^4      ,           \        P                  ! VR4      ,           pV! WWpR7      w  rr\	        WVR7       \	        \        P
                  ! V
4      \        P
                  ! V4      VR7       R# )zV
Implements real (f08jgf) example from NAG Manual Mark 26.
Tests for correct outputs.
r.  rD  r   rE  r  Nr   )r$   r0   r7   rE  r   r   )r=  rs   r  r7  z_expectr?  rD  rA  r  r.  _zrn   s   &&&&&       r2   test_pteqr_NAG_f08jgfrX  	  s|      Dgagg6E

RWWQ]"RWWQ^3Aq@BBBt,BFF2Jx 0t<r4   matrix_sizec                 P   \         P                  P                  ^*4      p^\         P                  ! V 4      P                  ,          p^d\         P                  ! V 4      P                  ,          p\        RV R7      p\        RV R7      pVw  rx\        Wx3WR7      p	V! V	4      w  rp\         P                  ! V
4      pWx8  d4   \         P                  ! Ww3V R7      pWRRV13&   V! WVR7      ^ ,          pMV! V
RRV13,          WR7      ^ ,          p\        W,          WR7       \        \         P                  ! VP                  ^ ,          4      WP                  4       P                  ,          VVR	7       \        V\         P                  ! V4      VR7       \        \         P                  ! \         P                   ! V4      \         P                  ! \#        \         P                   ! V4      4      4      8  4      4       \        V^ 8H  4       \        W3WR7      R
,          p\%        V4      w  ppV! V4      w  ppp\        \         P&                  ! \         P                   ! V4      ^ 8  4      ;'       d.    \         P                  ! \         P                   ! V4      ^ 8  4      4       R# )r(  geqrfpr   orgqrr  r8  N)rz   r   r   ra  r   )r7   r   rm  r   r   r$   r3   r   r   r   r   r/   r  r~   r   allrE  rd   r   rI  )r0   rY  r1   r   r?  r[  gqrr   r   r  qr_Arz   rn   r  qqrr  
A_negativer_rq_negq_rq_negrq_A_negtau_neginfo_negs   &&                    r2   test_geqrfprg  	  s    ))


#Crxx"""Drxx"""Dx6F
GE
2CDA 	$QF%AAQiODt 	A
 	u hhvU+ArrE
 A&q)QU.q1 AC&BFF1771:&668::T Arwwqz-BFF2771:RWWQZ 99:;DAI -aV5JROJJHh"("4Hgx BFF2778$q() # #FF2771:>"$r4   c                      \         P                  ! . 4      p \        R V P                  R7      p\	        \
        W4       R# )r[  r   N)r7   r   r$   r0   r  r  )A_emptyr[  s     r2   #test_geqrfp_errors_with_empty_arrayrj  	  s)    hhrlGhgmm<F)V-r4   driverpfxsyhec                 ^   R pV R8X  d   \         M\        p\        W,           R,           V^ ,          R7      p\        W,           R,           V^,          R7      p \        WB^R7       \        WR^R7       R#   \         d-   p\
        P                  ! Y,            RT 24        Rp?R# Rp?ii ; i)  rm  _lworkr   r  $_lwork raised unexpected exception: Nr   r,   r$   r    r  r@   failrl  rk  r   r0   sc_dlwdz_dlwr  s   &&     r2   test_standard_eigh_lworksrx  
  s     	A$;KNEcj1qBFcj1qBFLv*v* Lszl"FqcJKKL   A5 5B, !B''B,gvgvxc                 ^   R pV R8X  d   \         M\        p\        W,           R,           V^ ,          R7      p\        W,           R,           V^,          R7      p \        WBRR7       \        WRRR7       R#   \         d-   p\
        P                  ! Y,            RT 24        Rp?R# Rp?ii ; i)rp  rm  rq  r   r\  rX  rr  Nrs  ru  s   &&     r2   test_generalized_eigh_lworksr}  
  s     	A$;KNEcj1qBFcj1qBFLvs+vs+ Lszl"FqcJKKLry  dtype_r   c                 D   \         P                  P                  R 4      pVP                  ^ V4      pW,
          pV \        9   d   RMRpVR,           p\        W`R7      p\        WqW44      pVR8X  d   TMV3p\        V U	u. uF  q^ 8  NK	  	  up	4      '       g   Q hR# u up	i )r   orun	csd_lworkr   N)r7   r   r   r  r   r$   r    r]  )
r~  r   r1   rh   r  rl  dlwr  lwvalr   s
   &&        r2   test_orcsd_uncsd_lworkr  "
  s     ))


%CQA	AK'$TC

C	#	,B2!'ED[EuhEu%u!Au%&&&&%s   ?Bc           
      x   ^^P^r2pV \         9   d   RMRpVR8X  d   \        P                  ! V4      M\        P                  ! V4      p\	        VR,           VR,           3V R7      w  rg\        WqW#4      pVR8X  d   RV/M\        \        RR.V4      4      p	V! VRV1RV13,          VRV1VR13,          WRR1RV13,          WRR1VR13,          3/ V	B w
  rrrppppV^ 8X  g   Q h\        VV4      p\        VV4      p\        \        W#4      \        W,
          W,
          4      4      p\        W#4      V,
          p\        W!V,
          4      V,
          p\        W,
          V4      V,
          p\        W,
          W,
          4      V,
          p\        P                  ! W3V R7      pV ! R	4      p\        V4       F
  pVVVV3&   K  	  \        V4       F  pVVVV,           VV,           3&   K  	  \        V4       F<  pV) VVV,           V,           VV,           V,           V,           V,           V,           3&   K>  	  \        V4       F-  pVVVV,           V,           V,           VV,           V,           3&   K/  	  \        V4       F  p\        P                  ! VV,          4      VVV,           VV,           3&   \        P                  ! VV,          4      VVV,           V,           VV,           V,           V,           3&   \        P                  ! VV,          4      ) VVV,           VV,           V,           V,           V,           3&   \        P                  ! VV,          4      VVV,           V,           VV,           3&   K  	  VV,          V,          p\        VVR
R\        P                   ! V 4      P"                  ,          R7       R# )   r  r  csdr  r   r   lrworkNr   r  g     @ra  )r   r!   rvsr"   r$   r    dictr  r   rq  r7   r   rH  cosr  r   r   r   )r~  r   rh   r  rl  Xdrvr  r  lwvalscs11cs12cs21cs22thetau1u2v1tv2trn   ri  VHr  n11n12n21n22SonerT  Xcs   &                              r2   test_orcsd_uncsdr  0
  s$   2s!AK'$TC!Tk}/@/@/CAucK.? @OHC31(E!$gu$sG<D<FGL8N 3OF 	Abqb"1"fIq!QRy!BF)Qr12vYA&A :DEr3T 1992rA	C	BCIs13}%A
a)a-C
a1+/C
ac1+/C
ac13-!
C
!v&A
*C3Z!Q$ 3Z!A#qs( 3Z),!C%'1S573;s?1$
$% 3Z #!C%'!)SU1W
  1X&&q*!C%3,"$&&q"2!C%'1Q3s73;
%'VVE!H%5$5!C%3s3q
 !FF58,!C%'1S5.  
QBArRXXf-=-A-A)ABr4   
trans_boolFfactrZ  c                   \         P                  P                  ^*4      p^d\         P                  ! V 4      P                  ,          p\        RV R7      w  rV^
p\        V^,
          3WR7      p\        V3WR7      p	\        V^,
          3WR7      p
\         P                  ! VR4      \         P                  ! V	4      ,           \         P                  ! V
^4      ,           p\        V^3WR7      pV'       d   V \        9   d   RMRMRpV'       d   VP                  4       P                  MTV,          pVP                  4       V	P                  4       V
P                  4       VP                  4       .pVR8X  d
   V! WV
4      M	R.^,          w  ppppppV! WWW-VVVVVR7      pVw
  pppppppppp \        V ^ 8H  R	V  R
24       \        W^ ,          4       \        W^,          4       \        W^,          4       \        W^,          4       \        VVVR7       \        \        VR4      RJRV 24       \        VP                   ^ ,          VP                   ^,          8H  RVP                   ^ ,           RVP                   ^,           24       \        VP                   ^ ,          VP                   ^,          8H  RVP                   ^ ,           RVP                   ^,           24       R# )a;  
These tests uses ?gtsvx to solve a random Ax=b system for each dtype.
It tests that the outputs define an LU matrix, that inputs are unmodified,
transposal options, incompatible shapes, singular matrices, and
singular factorizations. It parametrizes DTYPES and the 'fact' value along
with the fact related inputs.
r   r  r~   r   rh  rZ  Nr  r   dlfdfdufr  r  z?gtsvx info = z, should be zeror  __len__Trcond should be scalar but is ferr.shape is z but should be berr.shape is gtsvxr	  r   )r7   r   rm  r   r   r$   r3   rE  r   r  r~   r  r   r	   r   r   r/   )!r0   r  r  r1   r?  r  r	  r   r  rs   r  r  r   r   r   
inputs_cpydlf_df_duf_du2f_ipiv_info_	gtsvx_outr  r  r  du2fr  x_solnr#  ferrberrrn   s!   &&&                              r2   
test_gtsvxr  _
  so    ))


#C%$$$D#$6eDLE
A	$acV5	BB#QD?A	$acV5	BB
B"''!*$rwwr1~5A#QF%AA6@E[(SccE!qA-A '')QVVXrwwy!&&(;J !CKbRdVAX )D#tUE5 bRE7I@I=CS$feT4DAIv-=>? ra=)qQ-(ra=)qQ-( AvD) GE9%T1,UG46 DJJqMQWWQZ'N4::a=/ J112+> @ DJJqMQWWQZ'N4::a=/ J112+> @r4   c                 n   \         P                  P                  ^*4      p\        RV R7      w  rE^
p\	        V^,
          3WR7      p\	        V3WR7      p\	        V^,
          3WR7      p	\         P
                  ! VR4      \         P
                  ! V4      ,           \         P
                  ! V	^4      ,           p
\	        V^3WR7      pV \        9   d   RMRpV'       d   V
P                  4       P                  MT
V,          pVR8X  d
   V! WxV	4      M	R.^,          w  rppppV! WxWW,WVVVR7      pVw
  ppppppppppVR8X  d1   ^ VR&   ^ VR&   V! WxW4      pVw
  ppppppppppV^ 8  g   Q R	4       hR# VR8X  d<   ^ VR&   ^ VR&   ^ VR&   V! WxWW.VVVVR
7
      pVw
  ppppppppppV^ 8  g   Q R	4       hR# R# )r(  r   r  r~   r   rZ  Nr  rh  z&info should be > 0 for singular matrix)r  r  r  r  r  r  r  r   )	r7   r   rm  r$   r3   rE  r   r  r~   )r0   r  r  r1   r  r	  r   r  rs   r  r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r  r  rn   s   &&&                            r2   test_gtsvx_error_singularr  
  s    ))


#C#$6eDLE
A	$acV5	BB#QD?A	$acV5	BB
B"''!*$rwwr1~5A#QF%AAK'CSE!qA-A !CKbRdVAX )DtUE5 bRE7I@I=CS$feT4 s{"2"'	DMARdD&%tTaxAAAx	BRb	"T#%1	DMARdD&%tTaxAAAx 
r4   c                    \         P                  P                  ^*4      p\        R	V R7      w  rE^
p\	        V^,
          3WR7      p\	        V3WR7      p\	        V^,
          3WR7      p	\         P
                  ! VR
4      \         P
                  ! V4      ,           \         P
                  ! V	^4      ,           p
\	        V^3WR7      pV \        9   d   RMRpV'       d   V
P                  4       P                  MT
V,          pVR8X  d
   V! WxV	4      M	R.^,          w  rppppVR8X  do   \        \        WGRR
 WVW,WVVVR7       \        \        WGVRR
 WW,WVVVR7       \        \        WGWRR
 VW,WVVVR7       \        \        WGWVRR
 W,WVVVR7       R# \        \        WGWVW,VRR
 VVVVR7       \        \        WGWVW,WRR
 VVVR7       \        \        WGWVW,WVRR
 VVR7       \        \        WGWVW,WVVRR
 VR7       R# )r(  r   r  r~   r   rZ  Nrh  r  r  r   )r7   r   rm  r$   r3   rE  r   r  r~   r  rd  r  )r0   r  r  r1   r  r	  r   r  rs   r  r  r   r   r   r  r  r  r  r  r  s   &&&                 r2   "test_gtsvx_error_incompatible_sizer  
  s    ))


#C#$6eDLE
A	$acV5	BB#QD?A	$acV5	BB
B"''!*$rwwr1~5A#QF%AAK'CSE!qA-A !CKbRdVAX )DtUE5 s{j%CR!$E	7 	j%QsVR$E	7 	j%Q3B$E	7 	iA1Sb6$E	7 	j%QA$s)E	7 	j%QA$s8E	7 	j%QA$s)U	< 	j%QA$E#2JU	<r4   zdu,d,dl,b,xc           
      n    \        R VP                  R7      pV! W!W4      pVw
  rxrrrpp\        WL4       R# )r  r   Nr$   r0   r   )r  rs   r  r   r   r  r  r  r  r  r  r  r  r#  r  r  rn   s   &&&&&            r2   test_gtsvx_NAGr    s:    . WAGG4EbR#I@I=CSe4a(r4   zfact,df_de_lambdac                 <    \        R VP                  R7      ! W4      # r*  r   r$   r0   rs   r  s   &&r2   <lambda>r  %      (8?@ww)HHI)Nr4   c                     R# N)NNNr   r  s   &&r2   r  r  '      -?r4   c           	     :   \         P                  P                  ^*4      p^d\         P                  ! V 4      P                  ,          p\        RV R7      p^p\        V3W4      ^,           p\        V^,
          3W4      p	\         P                  ! V4      \         P                  ! V	R4      ,           \         P                  ! \         P                  ! V	4      ^4      ,           p
\        V^3WR7      pW,          pV! W4      w  rpVP                  4       V	P                  4       VP                  4       .pV! WWWR7      w  rppppp\        VV^ ,          4       \        V	V^,          4       \        VV^,          4       \        V^ 8H  RV R24       \        VV4       \         P                  ! VR4      \         P                  ! \         P                  ! V4      4      ,           p\         P                  ! V4      p\        V
VV,          \         P                  ! V4      P                  ,          VR7       \!        VR4      '       d   Q R	V 24       h\        VP"                  R8H  R
VP"                   R24       \        VP"                  R8H  RVP"                   R24       R# )a  
This tests the ?ptsvx lapack routine wrapper to solve a random system
Ax = b for all dtypes and input variations. Tests for: unmodified
input parameters, fact options, incompatible matrix shapes raise an error,
and singular matrices return info of illegal value.
ptsvxr   r  r  r  efzinfo should be 0 but is .r  r  r  r  z# but should be ({x_soln.shape[1]},)r  Nr   )rZ   )r7   r   rm  r   r   r$   r3   rE  r  r  r	   r   r   r   r   r~   r   r/   )r0   r<  r  df_de_lambdar1   r?  r  r   rs   r  r  r  r   r  r  rn   r  r   r#  r  r  r\  r  s   &&&&                   r2   
test_ptsvxr  !  s    ))


#C%$$$DWE2E	A#QD(81<A#QqSFE7A

RWWQ^#bggbggaj!&<<A(!QuFF	
A  %LBD !&&(AFFH-H */qQ24*=&BAudD$ q(1+&q(1+&q(1+&DAI1$q9:fa( 	B"''"''!*--A
AAqsBGGAJLL)5 ui(( 1
(01( DJJ$>$** >8 "8 : DJJ$>$** >8 "8 :r4   c                 <    \        R VP                  R7      ! W4      # r  r  r  s   &&r2   r  r  `  r  r4   c                     R# r  r   r  s   &&r2   r  r  b  r  r4   c                 D   \         P                  P                  ^*4      p\        RV R7      p^p\	        V3W4      ^,           p\	        V^,
          3W4      p\         P
                  ! V4      \         P
                  ! VR4      ,           \         P
                  ! \         P                  ! V4      ^4      ,           p	\	        V^3WR7      p
W,          pV! Wx4      w  rp\        \        WWRR WW,VR7       \        \        WWVRR WWR7       \        \        WWWRR W,VR7       R# )r(  r  r   r  Nr  r   )
r7   r   rm  r$   r3   rE  r  r  rd  r  )r0   r<  r  r  r1   r  r   rs   r  r  r  r   r  r  rn   s   &&&&           r2   test_ptsvx_error_raise_errorsr  \  s     ))


#CWE2E	A#QD(81<A#QqSFE7A

RWWQ^#bggbggaj!&<<A(!QuFF	
A  %LBD *esVQK*e#2K)UqCR&trJr4   c                 <    \        R VP                  R7      ! W4      # r  r  r  s   &&r2   r  r  {  r  r4   c                     R# r  r   r  s   &&r2   r  r  }  r  r4   c           	         \         P                  P                  ^*4      p\        RV R7      p^p\	        V3W4      ^,           p\	        V^,
          3W4      p\         P
                  ! V4      \         P
                  ! VR4      ,           \         P
                  ! \         P                  ! V4      ^4      ,           p	\	        V^3WR7      p
W,          pV! Wx4      w  rpVR8X  d^   ^ V^&   V! Wx4      w  rpV! WxV4      w  rpppppV^ 8  d   W8:  g   Q h\	        V3W4      pV! WxV4      w  rpppppV^ 8  d   W8:  g   Q hR# V! Wx4      w  rp^ V^ &   ^ V^ &   V! WxWWR7      w  rpppppV^ 8  g   Q hR# )r(  r  r   r  rh  r  Nr   )r7   r   rm  r$   r3   rE  r  )r0   r<  r  r  r1   r  r   rs   r  r  r  r   r  r  rn   r   r#  r  r  s   &&&&               r2   test_ptsvx_non_SPD_singularr  w  sw    ))


#CWE2E	A#QD(81<A#QqSFE7A

RWWQ^#bggbggaj!&<<A(!QuFF	
A  %LBDs{!#A)-21^*5$daxDI%% (h<-21^*5$daxDI%%I $A)11-2168.A*5$daxxr4   zd,e,b,xc                 f    \        R VP                  R7      pV! WV4      w  rVrxrp\        W74       R# )r  r   Nr  )rs   r  r   r   r  r  r  x_ptsvxr#  r  r  rn   s   &&&&        r2   test_ptsvx_NAGr    s0    . WAGG4E/4Q1~,BGDa)r4   r%  c           
      &   \         P                  P                  R 4      p\         P                  ! V 4      P                  ^d,          p^
^rT\        WD.WR7      p\        WE.WR7      pVP                  4       P                  V,           \         P                  ! W@R7      V ! R4      ,          ,           pV'       d^   \        V4       UU	u. uF  p\        W4       F  qNK  	  K  	  up	p\        V4       UU	u. uF  p\        W4       F  qNK  	  K  	  up	p3p
Ms\        ^V^,           4       UU	u. uF  p\        V4       F  qNK  	  K  	  up	p\        ^V^,           4       UU	u. uF  p\        V4       F  q^,
          NK  	  K  	  up	p3p
Wj,          p\        RV RR7      w  rrpV! WKVR7      w  pp\        V^ 4       \        WaR7      V
,          p\        VV^ VR7       V! VVVR7      w  pp\        V^ 4       \        V4      V
,          p\        VV^ VR7       V! VVWqR7      w  p	p\        V^ 4       \        Wg4      p\        V	V^ VR7       V! WKWqR7      w  pp\        V^ 4       \        VV^ VR7       \         P                   P#                  V^4      pV! WKVVR7      w  pp\        V^ 4       \%        \'        ^V,          \         P                   P)                  V^R	7      ,
          4      V,          ^8  4       R
# u up	pi u up	pi u up	pi u up	pi )r   r  r   r   r  r  r  ra  )r  r%  r  N)ppsvpptrfpptrspptrippcon)r7   r   rm  r   r   r3   r  r~   r   rH  r$   r   r   r   r   r   r  r   r   r   r  )r0   r%  r1   r?  r   r   rf   r   yr   rn  apr  r  r  r  r  ulrn   aululiaulibxxvr  r#  s   &&                        r2   !test_pptrs_pptri_pptrf_ppsv_ppconr    s    ))


%C88E?s"D!t#QF%AA#QIUDA	

Q/%);;A!!H:HqeAkkH:!!H:HqeAkkH:< "!QqSM<Mq58a8M<#Aqsm>mU1X1Xm>@	
B'74($Du
 Q%(HBq
1
"4
(CB!$/a5)ICqq6$<DCAD1Ar1*GAtq	qBAr-A1*HBqB.IINN1a EU%8KE4qC%"))..a.001%7!;<C ;:<>s   K;3L+L #Lc                 V   \         P                  P                  R 4      p\         P                  ! V 4      P                  ^d,          p^
p\        W3.WR7      p\        RV R7      w  rVV! R VRR7      p\        VR	,          ^ 4       V^ ,          pVR
,          p	VR,          p
V \        9   d$   \        V\         P                  ! V4      ^ VR7       \        W,          V	P                  4       P                  ,          V^ VR7       V! W^^4      p\        VR	,          ^ 4       V^ ,          pVR,          p	V \        9   d$   \        V\         P                  ! V4      ^ VR7       \        W,          V	P                  4       P                  ,          V^ VR7       \        VR,          V
^ VR7       R# )r   r  r   c                     R # Nr   r   s   &r2   r  !test_gees_trexc.<locals>.<lambda>      Dr4   Fr  ra  N)geestrexcr   rc  r^   r^   r  r   r7   r   rm  r   r   r3   r$   r   r,   r   r   r  r~   )r0   r1   r?  r   rf   r  r  r  r  rA  d2s   &          r2   test_gees_trexcr    sA   
))


%C88E?s"D
A#QF%AA"#4EBKD.!7FQq	Ar
A	
4B2771:AD9AEAFFHJJ&=1AFQq	Ar
A2771:AD9AEAFFHJJ&=AdGRad3r4   zt, expect, ifst, ilstc                    Rp\        RV P                  R7      pV! W W^ R7      p\        VR,          ^ 4       V^ ,          p \        W0VR7       R# )z[
This test implements the example found in the NAG manual,
f08qfc, f08qtc, f08qgc, f08quc.
r.  r  r   )wantqr  Nr   )r$   r0   r   r   )r  ifstilstexpectr?  r  r  s   &&&&   r2   test_trexc_NAGr    sH    < DWAGG4E11-FQq	AFD)r4   c                    \         P                  P                  R 4      p\         P                  ! V 4      P                  ^d,          p^
p\        W3.WR7      p\        W3.WR7      p\        RV R7      w  rgV! R WERRR7      p\        VR	,          ^ 4       V^ ,          p	V^,          p
VR
,          pVR,          pV	R,          V
R,          ,          pV	R,          V
R,          ,          pV \        9   dG   \        V	\         P                  ! V	4      ^ VR7       \        V
\         P                  ! V
4      ^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       V! WW^^4      p\        VR	,          ^ 4       V^ ,          p	V^,          p
V^,          pV^,          pV \        9   dG   \        V	\         P                  ! V	4      ^ VR7       \        V
\         P                  ! V
4      ^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        V	R,          V
R,          ,          V^ VR7       \        V	R,          V
R,          ,          V^ VR7       R# )r   r  r   c                     R # r  r   r  s   &r2   r  !test_gges_tgexc.<locals>.<lambda>I  r  r4   Fr;  overwrite_bra  N)ggestgexcr   r  rc  r   r  r  r  )r0   r1   r?  r   rf   r   r  r  r  r   r  r  rA  d1r  s   &              r2   test_gges_tgexcr  >  s    
))


%C88E?s"D
A#QF%AA#QF%AA"#4EBKD.!EuMFQq	Aq	Ar
Ar
A	
41T7	B	
41T7	B2771:AD92771:AD9AEAFFHJJ&=AEAFFHJJ&=1q!$FQq	Aq	Aq	Aq	A2771:AD92771:AD9AEAFFHJJ&=AEAFFHJJ&=AdGag%r=AdGag%r=r4   c                    \         P                  P                  R 4      p\         P                  ! V 4      P                  ^d,          p^
p\        W3.WR7      p\        R
V R7      w  rVpV! R VRR7      p\        VR,          ^ 4       V^ ,          p	VR,          p
V	R,          pV \        9   d$   \        V	\         P                  ! V	4      ^ VR7       \        W,          V
P                  4       P                  ,          V^ VR7       \         P                  ! V4      p^V^&   \        W|V	4      pV \        9   d   V! WWR7      pMV! WWV^,          R7      p\        VR,          ^ 4       V^ ,          p	V^,          p
V \        9   d$   \        V	\         P                  ! V	4      ^ VR7       \        W,          V
P                  4       P                  ,          V^ VR7       \        V	R,          V^ VR7       R	# )r   r  r   c                     R # r  r   r  s   &r2   r  !test_gees_trsen.<locals>.<lambda>y  r  r4   Fr  ra  r   r   liworkN)r  trsentrsen_lworkr   rc  r  r   r7   r   rm  r   r   r3   r$   r   r,   r   r   r  r~   r   r    )r0   r1   r?  r   rf   r  r  r  r  r  rA  r  selectr   s   &             r2   test_gees_trsenr  n  s   
))


%C88E?s"D
A#QF%AA/( 7D .!7FQq	Ar
A	
4B2771:AD9AEAFFHJJ&=XXa[FF1I;2Ev!1v!qBQq	Aq	A2771:AD9AEAFFHJJ&=AdGRad3r4   z*t, q, expect, select, expect_s, expect_sepg      ?g(\	@gRQ?gK?c                4   RpRp\        RV P                  R7      w  r\        WV 4      p
V P                  \        9   d   V! W WR7      pMV! W WV
^,          R7      p\	        VR	,          ^ 4       V^ ,          p V^,          pV P                  \        9   d   V^,          pV^,          pMV^,          pV^,          p\        W1V ,          VP                  4       P                  ,          VR7       \        V^V,          VR7       \        V^V,          VR7       R# )
zK
This test implements the example found in the NAG manual,
f08qgc, f08quc.
r.  {Gz?r   r   r  r  N)r  r  r   )r$   r0   r    r,   r   r   r  r~   )r  r  r  r  expect_s
expect_sepr?  atol2r  r  r   r  r   seps   &&&&&&        r2   test_trsen_NAGr    s    ` DE) 1E ;2Eww. v!1v!qBQq	Aq	Aww. 1IQi1IQiFEAFFHJJ.T:Ha!e%0JCe4r4   c           	      N   \         P                  P                  R 4      p\         P                  ! V 4      P                  ^d,          p^
p\        W3.WR7      p\        W3.WR7      p\        R	V R7      w  rgpV! R WERRR7      p	\        V	R
,          ^ 4       V	^ ,          p
V	^,          pV	R,          pV	R,          pV
R,          VR,          ,          pV
R,          VR,          ,          pV \        9   dG   \        V
\         P                  ! V
4      ^ VR7       \        V\         P                  ! V4      ^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \         P                  ! V4      p^V^&   \        VVW4      pV^ ,          ^,           V^,          3pV! VWWVR7      p	\        V	R
,          ^ 4       V	^ ,          p
V	^,          pV	R,          pV	R,          pV \        9   dG   \        V
\         P                  ! V
4      ^ VR7       \        V\         P                  ! V4      ^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        W,          VP                  4       P                  ,          V^ VR7       \        V
R,          VR,          ,          V^ VR7       \        V
R,          VR,          ,          V^ VR7       R# )r   r  r   c                     R # r  r   r  s   &r2   r  !test_gges_tgsen.<locals>.<lambda>  r  r4   Fr  ra  r   N)r  tgsentgsen_lworkr   r  rc  r   r  ir  r  )r0   r1   r?  r   rf   r   r  r  r  r  r   r  r  rA  r  r  r  r   s   &                 r2   test_gges_tgsenr    sc   
))


%C88E?s"D
A#QF%AA#QF%AA/( 7D .!EuMFQq	Aq	Ar
Ar
A	
41T7	B	
41T7	B2771:AD92771:AD9AEAFFHJJ&=AEAFFHJJ&=XXa[FF1I;5E 1XaZq"E61U3FQq	Aq	Ar
Ar
A2771:AD92771:AD9AEAFFHJJ&=AEAFFHJJ&=AdGag%r=AdGag%r=r4   za, b, c, d, e, f, rans, lansc	                 d   R p	\        RVR7      p
V
! WW#WE4      w  rrp\        V^ 4       \        VR^ \        P                  ! V4      P
                  ^d,          RR7       \        VR^ \        P                  ! V4      P
                  ^d,          RR7       \        WV	RR	7       \        WV	R
R	7       R# )r.  tgsylr   r   zSCALE must be 1.0r   r?  r+  r  zDIF must be nearly 0zSolution for R is incorrect)r?  r+  zSolution for L is incorrectN)r$   r   r   r7   r   r   )rf   r   r   rs   r  ri   ranslansr0   r?  r!  routloutrY   difrn   s   &&&&&&&&&       r2   test_tgsyl_NAGr(     s    H Dge4E#(qQ#: DDqE3QRXXe_-@-@-D/1C1288E?+>+>s+B24DT9;DT9;r4   r   ijobc                 x   V \         P                  8X  d   R MRp\         P                  P                  R4      p^
^re\	        VP                  R^
WU.4      P                  V 4      VP                  R^
WU.4      P                  V 4      RR7      vrxp	\	        VP                  R^
Wf.4      P                  V 4      VP                  R^
Wf.4      P                  V 4      RR7      vrp	VP                  R^WV.4      P                  V 4      pVP                  R^WV.4      P                  V 4      p\        RV R7      pV! WzWWWR7      w  pppppV^ 8X  g   Q R4       hVR	8  g   Q R
4       hV^ 8X  d7   \        VR	^ \         P                  ! V 4      P                  ^d,          RR7       MVR	8  g   Q R4       hV^8:  Ed   VR8X  d@   W,          VV
,          ,
          pVV,          pW,          VV,          ,
          pVV,          pMVR8X  d   \         P                  ! V4      V,          \         P                  ! V4      V,          ,           pVV,          pV\         P                  ! V
4      ,          V\         P                  ! V4      ,          ,           pRV,          V,          p\        XXVR	RR7       \        XXVR	RR7       R# R# )gMbP?g|=l   OElt/ r   )outputr!  r   )r   r)  zINFO is non-zeror  zSCALE must be non-negativezDIF must be 0 for ijob =0r"  zDIF must be non-negativerh  r~   zlhs1 and rhs1 do not match)r?  r   r+  zlhs2 and rhs2 do not matchNir  r  )r7   r  r   r   r   uniformr.   r$   r   r   r   r  )r0   r   r)  r?  r1   r   r   rf   rs   r6   r   r  r   ri   r!  r%  r&  rY   r'  rn   lhs1rhs1lhs2rhs2s   &&&                     r2   
test_tgsylr1  T  sl   
 BJJ&4ED
))

 0
1Crq#++c2v.55e<++c2v.55e<!HA1 #++c2v.55e<++c2v.55e<!HA1 	BA6"))%0ABA6"))%0Age4E#(qQ/4$A D$sD 19(((9C<555<qySqrxx/B/B3/F ;	= cz555z qyC<8dQh&D7D8dQh&D7Dc\<<?T)BLLOd,BBD7D",,q/)D2<<?,BBD:a<DdB <	>dB <	> r4   mtypec                 X   V R 8X  d"   V\         9   d   \        P                  ! R4       \        P                  P                  R4      p^^rTV\        9   dC   VP                  WD3R7      VP                  WD3R7      R,          ,           P                  V4      pM"VP                  WD3R7      P                  V4      pV R8X  d   WfP                  ,           MWfP                  4       P                  ,           pVP                  WE3R7      P                  V4      pV  R2V  R2V  R23p\        WR	7      w  rpV
! WBR
7      pV	! WlVR7      w  rpV^ 8X  g   Q hV! WWrR7      w  ppV^ 8X  g   Q h\        P                  ! V4      P                  p\        VV,          V^dV,          V,          R7       R# )rn  zhetrs not for real dtypes.   *M/t|0 r)  r+   rm  r  r  trsr   r  r  )rf   r  r   r%  r  N)r   r@   rA   r7   r   r   r,   r,  r.   r~   r  r$   r   r   r   )r2  r0   r%  r1   r   r   r  r   rH   r  r  r5  r   r"  r  rn   r   r   s   &&&               r2   test_sy_hetrsr6    sk    }+-01
))

 0
1C!t[[qf[%!(@(CCKKERKKaVK$++E2D=CCa&&(**nA!#**51AgSMeWI.5'=E*5>CCa%E!6OCt199Ca5GAt199
((5/

CAaCQs+r4   c                    VR 8X  d"   V \         9   d   \        P                  ! R4       \        P                  ! 4       R8X  d"   V \
        9   d   \        P                  ! R4       \        P                  P                  R4      p^pVP                  WD34      VP                  WD34      R,          ,           p\        P                  ! V \        P                  4      '       d   VP                  pVP                  V 4      pVR8X  d   WUP                  ,           MWUP                  4       P                  ,           pV R2V R23p\        W`R	7      w  rxV! WQR
7      w  rpV^ 8X  g   Q hV! WVR7      w  rV^ 8X  g   Q h\        P                   ! V 4      P"                  p\        P$                  P'                  V4      pV'       dG   \)        \        P*                  ! V4      \        P*                  ! V4      ^dV,          V,          R7       R# \)        \        P,                  ! V4      \        P,                  ! V4      ^dV,          V,          R7       R# )rn  zhetri not for real dtypes.z	win-arm64z1Test segfaulting on win-arm64 in CI, see gh-23133r4  r+   rm  r  r@  r   r  )rf   r  r%  r  N)r   r@   rA   	sysconfigget_platformr,   r7   r   r   r  r  r   r.   r~   r  r$   r   r   r  r   r   r   r   )r0   r%  r2  r1   r   r  rH   r  r@  r"  r  rn   A_invr   r   s   &&&            r2   test_sy_he_trir;    s    }+-01;.5N3JGH
))

 0
1C
A

A6SZZ/22A	}}UBKK((FF	AD=CCa&&(**nAgSMeWC=(E3HC!)OCt199e4KE199
((5/

C
))--
C3q59E3q59Er4   r   z
uplo, m, nc                    \         P                  P                  R 4      pVP                  W#3R7      P                  V4      p\	        RV34      w  rV! WWR7      p
VR8X  d   \         P
                  ! V4      M\         P                  ! V4      pVR8X  d&   \         P                  ! \        W#4      4      p^W{V3&   V	! W4      p\        WRR7       R# )l   8#q9
r)  )r_  rE  ri  >r   N)lantrr   )
r7   r   r   r.   r$   r   r   r  rq  r   )r   r_  r   r   rE  r0   r1   r  r>  r   rU  rT  r   s   &&&&&&       r2   
test_lantrr?    s     ))

 1
2C


&&u-A#$6=LE
d
.C ck
rwwqzAs{IIc!i Q$
.CC4(r4   c           	         \         P                  P                  R 4      p^
^^rTpVP                  W334      VP                  W334      R,          ,           pVP                  \         P                  ! ^ VP                  ^ ^
4      V4      4      pWg,          p\         P                  ! V \         P                  4      '       d   VP                  pVP                  V 4      p^ V\         P                  ! W4^,           4      &   ^ V\         P                  ! W5) ^,
          4      &   \        WTV4      p^V,          V,           ^,           p	\         P                  ! W3V R7      p
WVR1R3&   \         P                  P                  YaR8X  d   \         P                   M^R7      p\#        R
V
34      w  rV! WV4      w  rpV! WWNVVR7      ^ ,          p\#        RV34      w  ppV! V4      ^ ,          pV! VWR7      ^ ,          p\%        VV^R	7       R# )   2 r+   r   Nr8  r  r  )r   ru  rt  r^  r  r  r  r   )gbcongbtrfr  )r7   r   r   r  r  r  r  r  r   r.   r   r   r   r   r  r   r  r$   r   )r0   r   r1   r   rt  ru  r  r  tmpLDABr^  r  rB  rC  lu_bandr  r6   rU  r  r  r  r   s   &&                    r2   
test_gbconrG    s    ))


,C Aq2A

A6SZZ/22A\\"++aa)<a@AFKA	}}UBKK((FF	A$%Abooaa !%&Abooaq!" RQ
CR4"9q=D	4)5	)BrsAvJIINN1CK"&&QN?E#$6>LERR(G1
TR$ C $$6=LE5	q!B
E
%a
(C C1%r4   c                 2   \         P                  P                  R 4      p^
^^rTpVP                  W334      VP                  W334      R,          ,           p\         P                  ! V \         P                  4      '       d   VP
                  pVP                  V 4      p^ V\         P                  ! W4^,           4      &   ^ V\         P                  ! W5) ^,
          4      &   \        WTV4      p\        RV34      w  rV	! W4      p
V! WWG4      p\        WRR7       R# )rA  r+   r=  r   N)langbr   )r7   r   r   r  r  r   r.   r   r   r   r$   r   )r0   r   r1   r   rt  ru  r  r^  rI  r   r   rU  s   &&          r2   
test_langbrJ    s     ))


,C Aq2A

A6SZZ/22A	}}UBKK((FF	A$%Abooaa !%&Abooaq!"	BA	B#$6=LE
.C
"
!CC4(r4   	compute_vc                    \         P                  P                  R 4      p^
pVP                  W0R7      pVP                  V^,
          V R7      p\         P                  ! VR4      \         P                  ! V4      ,           \         P                  ! V^4      ,           p\         P                  P                  V4      p\        R4      pV! WEVR7      w  rpV^ 8X  g   Q h\        \         P                  ! V	4      \         P                  ! V4      4       V'       dc   \         P                  ! V 4      P                  p\        V
\         P                  ! V	4      ,          V
P                  ,          WlR,          R7       R# R# )l   J*Os{Ur   stevd)rK  r  r  Nr   )r7   r   r   rE  r  eigvalshr$   r   rF  r   r   r~   )r0   rK  r1   r   rs   r  r  r   rM  ri  r:  rn   r   s   &&           r2   
test_stevdrO    s    ))

 2
3C
A

1
"A

1q5
&A
2#bggam3A
))

Q
CW%Eqy1JA$199BGGAJ-hhuo!!BGGAJ,a3h? r4   )r  )r]   rZ      rQ  )r  1O)r^   r]   r  rB  )g)\(@gp=
ףgffffff?g
ףp=
)gQ?gQgGz?g(\)gQ޿gQgGz?gzGʿ)gQ?gQ?gHzG?g)\(?)ggq=
ףp@g333333r	  )ףp=
?g(\r  g(\)g cZB#@gI.!v@g?ܵ?r  )gC?g=yX5gc=yXga4?)gB`"?g:pΈҞgʡE?gn4@?)g[B>٬?g٬\m?gJ{/L?gOe?)gc]Fgꕲq׿g\m?fc]F)g؁sFڿgZB>?g0L
F%?gq=
ףp)g ?gR!u?guVſg&Sٿ)gǘ?gV-g	^)p?g()gFx$g6[ ٿgUN@giq?)g1Zd?gOnӿgΈ?g_vO?)g}?5^Iؿg58EGr?gi o?g7[ A)g @r  ffffff?r   )r@  r	        ffffff@)333333@@r         r  )r	  r  rX  rY  )rZ  r[  r_   r  gC>r   )r   rV  r`   )rZ   r[   r\   r]   r]         g	gffffff&r  rc  r         @             @      ?            ?      ?      )r^  r_  r`  ra  )?rb  ffffff
@333333ӿ333333@ffffff
?      ?             ?      ?)rf  rg         @      rg  )rb  rc  rd  re  )rf  rg  rh  rg  y ~:pffffff?)r_  r`  ra  y333333@      y@@y333333@3333332@y333333yffffff-ffffff#@y      333333yfffff?@y333333"@y      𿚙?y      ffffff(@y      @      y      ?       @y      @      @y             y       @       )rR  r  rS  ))r[   r_   )r_   r[   rP  )r\   r2        r]   )r  r     r`   )r\   ra   rj     rU   )r]  gK=Ur  r  )rl  )   .      )y      0@      0@y      2@      "      ?      )rl  ra   rU   r\   )rg  r^  rp  y      P@      0@y      0      @y     @W@      O@y     N@     Py     S@      Ty     Q@     Ry      ,@      ;y     A@      .@y             )gp=
ף@r  gq=
ףp?rT  )g\(\	@g
ףp=
g?)gŏ1w- @gR'?g/n?g&䃞ͪ?)g cZB>?gCl?g:pΈڿg??)gaTR'?gSۿg}гY?g%uο)g\mg٬\m?gAf?gL
F%u)gǘgŏ1w-!?g333333?gz6?)r  )r_   r^   r  )evevdevrevx)rU   r2  d   r  )r  g)\(r  gQ?)r  皙r  ffffff?)r  grv  g?)r  r  r  rv  )rv  lV}gV_?g|?5^?)g?rv  gV/?g;On?)r  r  r  ggj+)            y
ףp=
?
ףp=
׿yRQȿQ?y)\(?      п)r               @yQ
ףp=
yq=
ףpͿp=
ף?)r  r         @      yGz?(\?)r  r  r        @      )rz  y1%Ŀq?ys??ܵ|ȿyHzG??ܵ?)r  r{  yV/?ݓ?yjt?vտ)r  r  r|  yB>٬?=U?)r  r  r  ry  )g/$?gQIg~jtx?gJ4?)r  58EGrgGr?gyX5;?)r  g?߾r}  gt?)r  r  r  gyǹ)g؁sF?g_L?gGz?gUN@?)goT?g0*g'gz6>W)g(g&䃞ͪӿgbX9ҿg-!lV?)gb=y?gۊe?rx  g8EGr?)rw  g?gQg(\ſ)g
ףp=
?gQ?rU  rw  )g)\(ܿgQտgQg(\?)r  g{GzԿgp=
ףg)\(?)rU   r   r   rU   )yqh yfc]F?ڊe׿yMbȿ&S?y&1??п)r  y      ?5^I @yo0*yZd;OͿ~:p?)r  r  yx$(@4@y[ A?&?)r  r  r  y?ܵ@St$)y?ܵ꿽R!uy2U0*6[?yV-?=yXy8m4?1%̿)ySt$?\mҿyʡE?S㥛?y~:p	cڿyK7A`?[ A?)y:pΈ~jtԿyH}?9#J{yH}?	cZy+eXw?-ٿ)y"u?	c?y?տN@ayRQȿ{GzĿyh"lxz?EGrǿ)y47)yS!uqF%u@yyտGx$(?y3ı.n?rh|)yv?
F%uyd`TR?I&ۿyN@?ݓy4@
@	^)?)ys{
@ o_yH.@|Pk@y0*?*:Hy]m{?Gz)y)0[<?yI.!? ryqh 
@ׁsF?y1w-!?h o)r   r   r   r   )r  r@  r   r   )r  r   r@  r   )r  r  r  g      @)r   r   r   r   )r  r  r  r   )      r   r   g      (@)g      "r          r  )r~  r   r  r   )      r   r\  g      3@)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   )rW  r   g       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  r   r   )rh  r~   )r   rU   rZ   r[   r\   r  ))ri  r]   r2  )ri  r2  r2  )r\  r2  r]   )r\  r2  r2  )	functoolsr   r8  numpy.testingr   r   r   r   r   r	   r@   r
   r  numpyr7   r   r   r   r   r   r   r   r   scipy.linalgr   r9   r   r   r   r   r   r   r   r   r   r   r   scipy.linalg._basicr   rN   r    scipy.statsr!   r"   scipy.sparsesparsern  r#   r8   ImportErrorr$   rM   r%   scipy.__config__r&   blas_providerblas_versionr  rK  r   r  
complex128r,   r   r3   rK   rQ   rS   r   r   r3  r4  r  r  r$  r6  rY  r  r  r  r  r  r  r  r  r$  r,  r2  r=  rF  rU  rh  rq  rw  r~  r  r  r  r  r  r  r  r  skipifr  r  rH  r  r  r  r   r  r  r"  r%  r(  r  r0  r3  r5  r:  rB  rJ  rP  rR  rT  rX  rg  rj  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r1  r6  r;  rD   r?  rG  rJ  rO  r   r4   r2   <module>r     s  
  / /  * ! ! !F F F F * . 2 0 1 , ## #+,V4V<*+F3I>zz2::&,,.	~	%*O..]- ]-@
 
p9 p9f &)"BC D *- -*; ;(; ;DK/ K/^ &)1#s,#s,q"g& ) ' - - 2 *
 )F).'4T'6T48AG AGHL L^.?bA63>1>FD&DR7!t7:t&8R36D@"DJD4 LFUK UKp%PP%PP*/Z< DK  MKMK$:> &&!12+.q*q*q*!Q(!Q(b& ) ) + + + / 3b&J +.  / F (!1+!1+!1+!1+!1+!1+'11 988%?%?%@%=%?%?%A B 88$DE88%G%F%E%H%G%G%I J 88%G%H%F%G%I JK LM$,%M$,  &)XK *XKv L88$9:XX&@AXX&;<XX&9:XX&BCXXl3XXo6XXSz(,d|(+T{(+U|(+T{	') *  XXAw()2w()2w(*Bx(*Aw	'0 12&  XX&GHXX '4 5  XX&FGXX 'A BXX ': ;XX&?@XXo6XX*'=(3\'B(4i'@(3['A(1:'>	'@ A
  XX'7(.'7(.'8(/'8(.'7	'9 :%%)* V W* V ( &)1q"g&) ' 2 *)2 &)"BC D * [;6?A,&A,&^ [;6?A0A0 [;6?AMAM& A((#56((?3((#45((#89((QGaVaVb"X%&G$- .((S!Hq"g2wQ%&G$- . ((#34((#>?((=1((#56((VW$57G%+V$4vv6F$H I((T5MD$<$%)4L$2 3	E &1'&1.@ )V[;%>?AeAh/& 0A&: )V[;%>?AeAh/ 0A )V[;%>?AeAh/N 0AN )V[;%>?AeAh/ 0A :88$;<88$5688$DE88%F%G%G%F%H I	J 	=	= &)(@A=$ B *=$@. #>?t-	L . @	L D%=1t-
L . 2
L 6*01	' 2 +	' 6*+C ++C\ &)t}5#s,7@ - 6 *7@t &)1v.#s,-B - / *-B` &(+t}5#s,-< - 6 ,-<` 88$9:88$?@88$9:88c3Z#tsDk&(%[3+%? @88b!Wq"g2wR&(!W%. /0 88$EF88 %> ?88$DE88h
%;&1;%?&2H%=&1;%?&/%<	%> ?
 88ff%57G&,g%6&8I&,f%5%7 89:;());() )3v{1<8= ,> ?,NO  ?@BC
1:C?1:h )3v{1<8= ,> ?,NO  ?@BC
KC?K( )3v{1<8= ,> ?,NO  ?@BC
"C?"J 88$6788O488aWq!fq!fr2h&'W%. /88c1X2wB&(!Wq"g%7 8	9 88$4588$?@88h	%:&.%9&.%9&.%9%; < 88fg%6&,f%5&,f%5&,f%5%7 8	9:;"
*#;"
* 5$-0&)+= * 1+=\ &)!4 *!4H hh))*)+ , 	hh21113 4  	hhJKHHJ K 	hh 55567 8 0*10*  &),> *,>^ &)*4 **4Z 0hh11213 4 	hh03313 4 	hh21324 5 	hh| 	hh 67556 7 	hh 56567 8 	hh 65556 7 	hh|3')T5U)T5B &)5> *5>p "hh((((* + 	hh((((* + 	hh((((* + 	hh((((* + 	hh((((* + 	hh((((* + 	hh((((* + 	hh((((* +9, -!.D +.; /E!.F;" +.*-1-> 2 . /->` 4,/&)&), * * 0,. 4,/&)&)F * * 0F6 m!45 (E F#s,&)) * -F 6
)  &)1!& 2 *!&H m!45&)) * 6)& +.f-@ . /@ko  Gs   4AZ Z	AZZAZ