+
    nDj!                    -   ^ 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" ^ RI#H$t$ ^ RI%H&t& ^ R	I'H(t(H)t) ^ R
I*H+t+ ^ RI%H,t, ^ RI-H.t. ^ RI/H0t0 R;t1t2]0R,          R,          R,          t1]0R,          R,          R,          t2]Pf                  ]Ph                  .t5]Pl                  ]Pn                  .t8]5]8,           t9R t:R t;R t< ! R R4      t= ! R R4      t>]
P~                  P                  R]94      ]
P~                  P                  R. RO4      R 4       4       tA ! R R4      tB ! R R4      tC ! R  R!4      tD ! R" R#4      tE]
P~                  P                  R]94      ]
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       tFR, tGR- tHR. tIR/ tJ ! R0 R14      tK ! R2 R34      tLR4 tMR5 tNR6 tOR7 tPR8 tQR9 tRR: tSR; tTR< tUR= tVR> tWR? tXR@ tYRA tZ ! RB RC4      t[RD t\RE t]RF t^RG t_]
P~                  P                  RHRIRJ7      RK 4       taRL tb]
P~                  P                  RMRR.4      ]
P~                  P                  R]54      ]
P~                  P                  RN]c! ]d! ^4      4      4      ]
P~                  P                  RO]c! ]d! ^4      4      4      ]
P~                  P                  RP]c! ]d! ^4      4      4      ]
P~                  P                  RQ^ ^.4      ]
P~                  P                  RR^ ^.4      RRS l4       4       4       4       4       4       4       te]
P~                  P                  R]54      RT 4       tf]
P~                  P                  RURN^	/RO^	/RP^	/RQ^	/RV^	/RR^	/34      RW 4       tg]
P~                  P                  RX]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      RY 4       ti]
P~                  P                  R]94      RZ 4       tj]
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^.R_R.R`R.R\Ra..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      Rb 4       tk]
P~                  P                  R]94      ]
P~                  P                  R$. RO4      ]
P~                  P                  R*^^
.4      Rc 4       4       4       tl]
P~                  P                  R]94      ]
P~                  P                  R. RO4      Rd 4       4       tm]
P~                  P                  Re]c! ]n! ]5]5,           ]94      4      4      Rf 4       to]
P~                  P                  Re]c! ]n! ]5]5,           ]94      4      4      Rg 4       tp]
P~                  P                  Re]c! ]n! ]5]5,           ]94      4      4      Rh 4       tq]
P~                  P                  Ri]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! . RO4      ]P                  ! ^^
.^	^.^^	.^^A.^^..4      ]P                  ! Rj^.^R.^R.R^.^R..4      3]P                  ! . RO4      ]P                  ! . RO4      ]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      Rk 4       trRl ts]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  Rn]c! ]d! ^4      4      4      Ro 4       4       tt]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  Rn]c! ]d! ^4      4      4      Rp 4       4       tu]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  Rn]c! ]d! ^4      4      4      Rq 4       4       tv]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  Rn]c! ]d! ^4      4      4      Rr 4       4       tw]
P~                  P                  Rs^]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      Rt 4       tx]
P~                  P                  R]94      ]
P~                  P                  Ru. ERO4      Rv 4       4       tyRw tz]
P~                  P                  Rx. ERO4      ]
P~                  P                  RyRzR{.4      R| 4       4       t{]
P~                  P                  RxR}R~.4      ]
P~                  P                  RyRzR{.4      R 4       4       t|]
P~                  P                  R]94      ]
P~                  P                  R. ERO4      R 4       4       t}]
P~                  P                  R]94      R 4       t~]
P~                  P                  R]94      ]
P~                  P                  RRRH.4      ]
P~                  P                  RRR).4      R 4       4       4       t]
P~                  P                  R]94      ]
P~                  P                  R^ ^.4      ]
P~                  P                  RRR).4      R 4       4       4       t]
P~                  P                  R]9^,          4      ]
P~                  P                  RRRH.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^.R_R.R`R.R\Ra..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                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  RRR 3R)R 3.4      R 4       4       t]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      4      4      ]
P~                  P                  RRR 3R)R 3.4      R 4       4       t]
P~                  P                  Rm]c! ]n! ]9]5]5,           4      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                  ! Rj^.^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                  RRRH.4      ]
P~                  P                  R]94      R 4       4       t]
P~                  P                  R]94      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]94      R 4       t]
P~                  P                  R]94      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R.O4      RR3]P                  ! . ER/O. ER0O. ER1O. ER2O.4      ]P                  ! . ER3O. ER4O. ER5O. ER6O.4      ]P                  ! . ER7O. ER8O. ER9O. ER:O.4      ]P                  ! . ER.O4      RR3.4      R 4       t]
P~                  P                  R]94      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RAO. ERBO. ERCO. ERDO.4      ]P                  ! . EREO. ERFO. ERGO. ERHO.4      ]P                  ! . ERIO. ERJO. ERGO. ERKO.4      ]P                  ! . ERLO. ERMO. ERNO. EROO.4      ]P                  ! . ER?O. ERPO. ERQO. ERRO.4      ]P                  ! . ERSO. ERTO. ERUO. ERVO.4      3.4      ]
P~                  P                  R]54      R 4       4       t]
P~                  P                  R]54      ]
P~                  P                  RERW4      ]
P~                  P                  R. ERXO4      R 4       4       4       t]
P~                  P                  RRzR{.4      ]
P~                  P                  R]94      ]
P~                  P                  RERY4      R 4       4       4       t]
P~                  P                  RRzR{.4      ]
P~                  P                  R]94      ]
P~                  P                  RERY4      R 4       4       4       t]
P~                  P                  R$]c! R4      4      ]
P~                  P                  R. ERZO4      ]
P~                  P                  R(R)R&.4      ]
P~                  P                  R]94      R 4       4       4       4       t]
P~                  P                  R]94      ]
P~                  P                  R$. RO4      R 4       4       t]
P~                  P                  R$]c! R4      4      ]
P~                  P                  R]94      R 4       4       t]
P~                  P                  R]54      ]
P~                  P                  RERY4      R 4       4       tR# ([      )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)lapackinvsvdcholeskysolveldlnorm
block_diagqreighqz)
_to_banded)_compute_lwork)ortho_groupunitary_group)diags_array)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   &&&X/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/linalg/tests/test_lapack.pygenerate_random_dtype_arrayr2   '   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flapackHAS_LP64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       r1   test_lapack_documentedrJ   /   s    ~~,-$$&'E	K fGF$$)@!NN4   b=NNN=r3   c                  V    ^ RI Hp  ^ RIHp W8X  g   Q h^ RI Hp ^ RIHp W#8X  g   Q hR# )r   )r:   )r8   N)scipy.linalg.blasr:   scipy.linalg.lapackr8   )blas_has_ilp64lapack_has_ilp64blas_has_lp64lapack_has_lp64s       r1   (test_lp64_ilp64_blas_lapack_both_or_nonerR   F   s&    =A---;?+++r3   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\          F  p\        RVR7      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# )   gebalr/   N)permutescale)rV         )         )      	   )rV   r   r   ga2U0*3?)r]   r   r   gMb`?)r`   rV   r   r   )r   rV   r   r   )	DTYPESr#   r   reprr   r   lenr6   r   )
selfaa1r/   fbalohipivscaleinfos
   &         r1   
test_gebalTestFlapackSimple.test_gebalR   s    	9- E 6Ay)*1&BB$Hd4j)%b,"As1Q4y{#34%hA@)*2q)B&BB$Hd4j) r3   c                    . RO. RO. RO.p\         P                  3 F;  p\        RVR7      pVf   K  V! V4      w  rEp\        V'       * \	        V4      4       K=  	  R# )   gehrdrX   Nikiifi     i"  iii)r6   float64r#   r   rd   )rf   rg   r/   ri   httaurn   s   &      r1   
test_gehrdTestFlapackSimple.test_gehrdg   sU     jj\E 6AyaDMBTHd4j) "r3   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# )rV   TfdFDr*   C)tranatranbdecimal)isgnN)trsyl)	r6   arrayr-   r#   isupperr   dot	conjugater~   )rf   rg   bctransr/   rh   b1c1r   xrZ   rn   s   &            r1   
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!= =# r3   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IiNrt   ru   rw   r   r   )lange)r6   r   r-   r   r#   sqrtsumsquareabsr   maxr   )	rf   rg   r/   norm_strrh   r   valuer   refs	   &        r1   
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 * r3    N)
__name__
__module____qualname____firstlineno__ro   r{   r   r   __static_attributes____classdictcell____classdict__s   @r1   rT   rT   P   s     **	*=8- -r3   rT   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# )  rX   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?)r6   randomdefault_rng	enumeraterc   r-   r#   r   r   REAL_DTYPESr   r.   re   r   finfoepsr	   r+   )rf   r0   indr/   mnnrhsrh   r   glsglslwr   r5   rn   r   r   r   lqrr   	lqr_truths   &                   r1   	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./ $r3   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   rX   FNr   r   YN))1)@*@.?U.*@_Y@r   )gelsdgelsd_lworkr   r   r   r   r   r   r   r   r   r   r   r6   r   r#   r.   re   intrealr   r   r   r+   )rf   r/   rh   r   r   r   r   r   r   workiworkrn   r   
iwork_sizer   srankrwork
rwork_sizes   &                  r1   
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 $r3   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   rX   FNr   r   r   r   r   r   r   )gelssgelss_lworkr   r   r   r   r   r   r   r   r   r   r   )rf   r/   rh   r   r   r   r   r   r   r   rn   r   vr   r   r   s   &               r1   
test_gelss"TestLeastSquaresSolvers.test_gelss2  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 $r3   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   rX   FNr   r   r   )gelsyr   r   r   r   r   r   r   r   r   r   r   )r   r6   r   r#   r.   re   r   r   r   r   r   int32r   r+   )rf   r/   rh   r   r   gelsy_lworkr   r   r   r   rn   r   jptvr   r   jr   s   &                r1   
test_gelsy"TestLeastSquaresSolvers.test_gelsyk  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+ $r3   r   N)
r   r   r   r   r   r   r   r   r   r   r   s   @r1   r   r      s#     B/H:Px79r59 59r3   r   r/   r.   c                 V    \        R V R7      pVw  r4V! W4R7      w  rV\        V^ 4       R# )geqrf_lworkrX   r   r   Nr#   r   )r/   r.   r  r   r   r   rn   s   &&     r1   test_geqrf_lworkr    s-     #M%@KDA'KEqr3   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# )	,  rX   gerqfr   orgrqNungrq)r
  r[   )rc   r6   r   r#   assert_raises	Exceptionr   r+   )
rf   r/   rg   r  rqrz   r   rn   r  r  s
   &         r1   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!, r3   r   N)r   r   r   r   r  r   r   r   s   @r1   r  r    s     - -r3   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)r6   r   r   normalr   r~   r#   r   r   r   r   )rf   r  r  r0   r   rg   dpotrfdpotrir   r5   dpts   &&&        r1   test_gh_2691TestDpotr.test_gh_2691  s     ii##B'JJFJ#EE!##J)*<qeDae,Qq!BGGCL"''#a&/:BGGCL"''#a&/:r3   r   N)
r   r   r   r   r?   markparametrizer"  r   r   r   s   @r1   r  r    sI     [[WtUm4[[WtUm4; 5 5;r3   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   )r6   r   hstackvstackdiagr   re   newaxisr   concatenater   r#   rangerF   r   anyisnanr   r   rx   r   )rf   sigmasm_vecMSMit_lensgmmvcr.  rootsiress   &           r1   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	;r3   r   N)r   r   r   r   rF  r   r   r   s   @r1   r'  r'    s     ; ;r3   r'  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  r/   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

rX   g333333*@y               @z	Datatype z not understood.tbtrsLabr   uploh㈵>r   r0  Np=
ף)rR  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   r6   r   r+   
ValueErrorr#   r   r   )rf   r/   rN  r   x_outrK  r   rn   s   &&      r1   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4r3   zdtype,transNr   rO  UrL  r6  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&   \        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  rK  rX   rY  dia)offsetsformat)rN  r   rO  r   r6  rX  g-C6
?r   r~   r   zInvalid trans argumentNr   )r6   r   RandomStater#   r9  r   r2   r   r"   r   r   diagonalr   minr   r   r~   r   rT  )rf   r/   r   rO  r6  r0   r   r   kdrK  is_upperkuklband_offsetsr   band_widthswidthbandsrg   rN  rowkr   rn   s   &&&&&                   r1   test_random_matricesTestTbtrs.test_random_matrices'  s    ii##D)
 A 6CK]W Rq"-+78<a3q6zz<8)+)U -eXuB) 	 + 3;/E"I |EB 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 exceptionsrK  rX   r   N)r]   r[   )r[   r]   )r#   r6   rx   r   r   r  r  )rf   rO  r   r6  rK  r0   rN  r   s   &&&&    r1   &test_invalid_argument_raises_exception0TestTbtrs.test_invalid_argument_raises_exception[  sR     !

;ii##D)ZZJJviAUAr3   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.rX   rK  rY  rM  Nr\   r]   )r   r\   )r6   r   floatr#   r   )rf   rN  r   rK  r5   rn   s   &     r1   test_zero_element_in_diagonal'TestTbtrs.test_zero_element_in_diagonali  sQ     WWV5)GGAU# 65	2-T1r3   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.rX   rK  Nr6   r   rr  r#   r  r  )rf   ldabr   ldbr   rN  r   rK  s   &&&&&   r1   test_invalid_matrix_shapes$TestTbtrs.test_invalid_matrix_shapesy  s@     WWdYe,GGSKu- 6iA.r3   r   N)rX  r~   r   )rY  rX  Invalid)rY  r{  rX  )r{  rX  rX  )r^   r^   r   r^   )r^   r^   r\   r^   )r   r   r   r   r?   r$  r%  rc   rV  r   rk  rn  rs  ry  r   r   )r/   r   r   s   00@r1   rI  rI    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rI  r   rO  rY  rL  r6  rX  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*   rY  r)  trcon)r   rO  r6  Iordr   r   Ngecongetrf)rC   encoder6   r   r   permutedlogspaceintegers
issubdtypefloatingr   r   r   r6  r7  r-   r#   linalgr   infr   r   )r/   r   rO  r6  r   seedr0   Aoffsetr}  rE  r5   norm_A
norm_inv_Ar   anormr  r  luipvtrn   r   s   &&&&&                 r1   
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(r3   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   lartgrX   r*   r   N333333?y       皙?)	r#   r6   r   iscomplexobjr   r   
isinstancecomplexrr  )r/   r  ri   gcssnrs          r1   
test_lartgr    s     6HHQHHQ??1GA!K	G$3??1B	*Jq'*+Jr5)*B(' r3   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rotrX   r*   y              @r0  )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  )r6   fullr   	precisionr$   r#   r   r   )
r/   r   r   ur   r0  r  ri   rg   r   s
             r1   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 r3   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larfrX   FDrV   NNr   RsiderP  r  N)r]   r]   rV   r   ):r[   NNr   )r)  r   r   )r  r   r  r)  )r)  r  )r   r)  )r6   r   r   r~   r   conjr#   copyr.   r   r   r   r   )r0   a0a0jr/   r  r  rg   alphar   rz   expectedr   s               r1   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 r3   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r/   ilp64iA%  T)r+  r*  i`DiDN)r#   r6   float32r   )sgesdd_lworkr   r   s      r1    test_sgesdd_lwork_bug_workaroundr    sO     $M*57LA<A&*$@E  I)!333!3r3   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# )		TestSytrdi5  r/   c                p    \         P                  ! RVR7      p\        RV34      p\        \        W24       R# )r   rX   sytrdNr   r6   r   r#   r  rT  )rf   r/   r  r  s   &&  r1   test_sytrd_with_zero_dim_array(TestSytrd.test_sytrd_with_zero_dim_array6  s,     HHV5) 1$/j%+r3   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# )	rX   r  r   r   r/          r   N)r  sytrd_lworkr   )r6   r   r#   arangetriu_indices_fromr   r   r   r   r6  r   r.   r   r9  outerr   r   r~   )rf   r/   r   r  r  r  r   rn   dataderz   r~   rj  k2QrD  r   Hi_lowerQTAQs   &&&                  r1   
test_sytrdTestSytrd.test_sytrd=  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(;(;&;#Fr3   r   NrV   r\   )r   r   r   r   r?   r$  r%  r   r  r  r   r   r   s   @r1   r  r  5  sh     [[Wk2, 3, [[Wk2[[S&)7G * 37Gr3   r  c            	          a  ] tR tRt o ]P
                  P                  R]4      R 4       t]P
                  P                  R]	! ]
! ]]4      4      4      ]P
                  P                  RR	4      R 4       4       tRtV tR# )
	TestHetrdiy  complex_dtypec                p    \         P                  ! RVR7      p\        RV34      p\        \        W24       R# )r   rX   hetrdNr   r  )rf   r  r  r  s   &&  r1   test_hetrd_with_zero_dim_array(TestHetrd.test_hetrd_with_zero_dim_arrayz  s,     HHV=1 1$/j%+r3   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# )rX   r*   r  r  r   r/  r  r   N)r  hetrd_lworkr   rV   r   )r6   r   r#   r  r  fill_diagonalr   r6  r   r   r   r   r   r   r.   r   r   r9  r  r  r   r   r~   )rf   r   
real_dtyper  r  r  r  r   r5   rn   r   r  r  r  rz   r~   rj  r  r  rD  r   r  r  QHAQs   &&&&                    r1   
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	r3   r   Nr  )r   r   r   r   r?   r$  r%  r+   r  rC   zipr   r  r   r   r   s   @r1   r  r  y  sz     [[_n=, >, [[7!#k>"BCE[[S&)A *EAr3   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# )gglserX   )r   r   pr  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   rc   r#   r   r6   r   r   r   )r   r/   func
func_lworkr   rg   r   r  r   r5   resultr  s               r1   
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 (r3   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_lworkrX   hetrf_lworkr*   r   r  )rg   ipivr  r  r  N)syconsytrf)heconhetrf)r6   r   r   r   rc   r+   r#   r-   r  r~   r   r   r   r   r   r  cond)r0   r   r/   r   r  funconfunctrfr  r  r   ldur
  r5   rconds                 r1   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?@- 7r3   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   rX   giUMu?r   N)r  sygstsyevdsygvd)r6   r   r   r   r   r#   r-   r~   r   r   r   )r0   r   r/   r   r  r  r  r  r  Beig_gvdr5   rn   r   rg   eigs                   r1   
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 -r3   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   rX   r*   -C6?r   N)r  hegstheevdhegvd)r6   r   r   r   r+   r#   r-   r  r~   r   r   r   )r0   r   r/   r   r  r   r!  r"  r  r  r  r5   rn   r   rg   r  s                   r1   
test_hegstr#  3  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 0r3   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   rX   r*   r   r)  Nr   r  r/  tzrzftzrzf_lwork)r6   r   r^  r   rc   r#   r   r   r,   r-   r  r  r~   r   r4  r   r   r9  r   r  r   r   r   spacingr   )r0   r   r   r   r/   r&  tzrzf_lwr   r  rzrz   rn   r  VIdr   r   Zs                     r1   
test_tzrzfr.  R  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~   rX   r   r   r   rY  )r   r6  r  )r   r6  r  N)trttftfttrtfsmr   )r6   r   r^  r   rc   r   r,   r   r-   r#   r   r   r  r~   r  )r0   r   r/   r   r  r   r1  r2  r3  Afpr5   r  solnB2s                 r1   	test_tfsmr7  t  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? (r3   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   rX   r*   r   r)  Nr~   r   r   r  r/  r   r  )r  r   )r  r   r   r%  )ormrzormrz_lwork)unmrzunmrz_lwork)r6   r   r^  r   rc   r#   r   r   r-   r4  r   r9  r~   r   r  r   r(  r   r   r   r   )r0   qmqncnr   r/   r&  r)  lwork_rzr  r   orun_mrzorun_mrz_lw	lwork_mrzr*  rz   rn   r+  r,  r   r   r  r   tolcqs                            r1   test_ormrz_unmrzrF    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~   rX   rL  rO  rY  )transrrO  r)  NF)order)r1  r2  r   r  )r6   r   r^  r   rc   r,   r-   r#   r   r   r   r  r~   r   r   reshape)r0   r   r/   r   A_fullrJ  r1  r2  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                      r1   test_tfttr_trttfrY    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 (r3   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# )	rH  r   r*   rX   rL  rI  r)  N)trttptpttr)r6   r   r^  r   rc   r,   r-   r#   r   r   r   r   r~   r   r   r   )r0   r   r/   r   rN  r[  r\  A_tp_Urn   A_tp_LindsA_tp_U_mA_tp_L_mrU  rV  s                  r1   test_tpttr_trttprb    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 (r3   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*   rX   N)pftrfr1  r2  )r6   r   r^  r   rc   r,   r-   r  r~   r   r#   r   r   r   )r0   r   r/   r   r  rd  r1  r2  r4  rn   	Achol_rfpA_chol_rr5   Achols                 r1   
test_pftrfrh  :  s   
 ))


%C'
7!#((1."33;;EBAFFHJJ3q6)A!''.ACC!CF("A./J5:<e !H	-		A)!(2% (r3   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*   rX   r   N)pftrird  r1  r2  )r6   r   r^  r   rc   r,   r-   r  r~   r   r#   r   r   r   r   )r0   r   r/   r   r  rj  rd  r1  r2  r4  rn   
A_chol_rfp	A_inv_rfpA_inv_rr5   Ainvs                   r1   
test_pftriro  U  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- (r3   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*   rX   r   N)pftrsrd  r1  r2  )r6   r   r^  r   rc   r,   r-   r  r~   r   r   r#   r   r  r  r   r   )r0   r   r/   r   r  r  Bf1Bf2rq  rd  r1  r2  r4  rn   rk  r5  s                   r1   
test_pftrsrt  u  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 (r3   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   hr1  r2  frkrX   r   Nr   )r6   r   r^  r   rc   r,   r-   r  r~   r   r#   r   r   r   )r0   r   r/   r   r  prefixr1  r2  shfrkr4  r5   r   Afp_outA_outs                 r1   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# (r3   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   rX   r  F)r  	hermitianr  r)  r  r/  Ni)syconvr  r  r   )r6   r   r^  r   rc   randintr-   r  r~   r   r(  r   r#   r   r   r   r   r   )r0   r   r/   r   r  rD  r  trf	trf_lworklwrL  Dpermr  r
  rn   rg   r  rY  s                      r1   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 (r3   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   rX   r  r/  r   r~   rL  rX  r  r   r  r  r0  N)geqrtgemqrtr   rL  r  rL  rX  )r6   r   r^  r   rc   r,   r-   r(  r   r#   r   r   r~   r  r   r   r   r  r  )rf   r0   r   r/   r   r  rD  r  r  rg   trn   r   r  r  r   	transposer  r   r   qqC	c_defaults   &                      r1   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 ,r3   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   rX   r  r/  r   r~   rL  rX  r  r   r  r  r0  N)tpqrttpmqrtr   r  r  )r6   r   r^  r   rc   r,   r-   r(  r   r#   r   r   r   r8  r   r~   r  r   r   r  r  )!rf   r0   r   r/   r   r  r  rD  r  r  lrg   r   r  rn   B_pentb_pentr   r  r  r   r  r  r  r   r   r  r  cdCDqCDr  	d_defaults!   &                                r1   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 $ ,r3   r   N)	r   r   r   r   r>   r  r  r   r   r   s   @r1   r  r    s     
<A|QK QKr3   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   pstrfrX   r*   r  N  r)  rQ  r  r   r[   r6   r   r^  r   rc   r#   r,   r-   r  r~   r   r   r   r  r   rx   r   r   )r0   r   r/   r   r  r  r  r   pivr_crn   rY  single_atoldouble_atolr0  rL  s                   r1   
test_pstrfr  o  !   
))


%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 (r3   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   pstf2rX   r*   r  Nr  r)  rQ  r  r  r  )r0   r   r/   r   r  r  r  r   r  r  rn   rY  r  r  r0  rL  s                   r1   
test_pstf2r    r  r3   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*   rX   geequNr  rQ  )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ޅBr2  )g(\g   Zgq=
ףp?)gEop=gQ?gZEqҽ)r)  N)r6   r   r   rc   r-   r#   r   )desired_realdesired_cplxr   r/   r  r  r  r   rowcndcolcndamaxrn   s               r1   
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 (r3   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   rX   r   r*   r   syequbN)
r   r   r   r   r   r   r   r   r  rS  )r6   r   r   rc   r   r9  rot90r6  r#   r   log2r-   r   )desired_log2sr   r/   r  r  r   r  r  r   scondr  rn   s               r1   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	# )r[   i  )rj  r*   r                  i   y              0@r  Nr  r  r^   r^   )r^   r   )r  r   r   r   r   r  r   r   r   r  r  )r6   r6  r   r   zheequbr   r   r  r   r  cheequbr-   	complex64)r  r   r  r  rn   s        r1   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Jr3   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*   getc2rX   gesc2r,  )overwrite_rhsr   N)	r6   r   r^  r,   r   rc   r-   r#   r   )r0   r   r  r  r   r/   r  r   r  r  r  r
  jpivrn   r   rZ   s                   r1   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: :+ (r3   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.
gejsvrX   )r  r  r  r  jobtr  NF)r+  r  r)  r  rS  )r6   r   r^  r   r   r2   r#   r  r  r  r   r   r   r6  r  r~   identityr  matrix_rankcount_nonzero)r  r/   r  r  r  r  r  r  r0   r   r   r0  r  r  lsvecrsvecl2tran
is_complexinvalid_real_jobvinvalid_cplx_jobuinvalid_cplx_jobvexit_statussvar  r   r   r   rn   sigmas   &&&&&&&&                     r1   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 r3   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  rX   r   r  NrV   rV   )rV   r  )r#   r   r.   r6   r   r   sinr  rM  r-   asfortranarrayr~   r  r   )r/   r  r  r  r   r   r   rn   r  Acr5   s   &          r1   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r3   kwargsr  c                    \         P                  ! R\        R7      p\        R\        R7      p\	        \
        W!3/ V B  R# )z-Test invalid job arguments raise an ExceptionrX   r  N)r[   r[   rv  )r  r  r  s   &  r1    test_gejsv_invalid_job_argumentsr    s/     	e$AWE2E)U00r3   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  rX   r  N)r#   r/   r   )r  
sva_expectu_expectv_expectr0  r  r  r  r   r   r   rn   s   &&&&        r1   test_gejsv_NAGr    sG    0 DWAGG4E#(8 CAUJ$/Hd+Hd+r3   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  r/   r0   rX   r)  r  r~   r   r0  N:NrV   Nz?gttrf: _d[info-1] is , not the illegal value :0.r   gttrfgttrs)r6   r   r^  r   r   r2   r  r6  r#   r	   r   r   r   r   r~   r  r  rT  testingr   )"r/   r0   r   r0  dur  dldiag_cpyr  r   r   r  r  _dl_d_dudu2r
  rn   rY  rL  rD  r   r  b_cpyx_gttrsr   b_trans__dl__d__du_du2_ipiv_infos"   &                                 r1   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  r  r  du_expd_expdu2_expipiv_expr   r   r  r  r   r  r  r  r
  rn   r  s   &&&&&&&&&         r1   0test_gttrf_gttrs_NAG_f07cdf_f07cef_f07crf_f07csfr  K  ss    d $$6A1GLE$)"$4!CStTC!C BD)D##3T5MGTGQr3   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  )r6   r   r   r6  r  r  r   r-   r  r   r  r#   r   r   r   )r/   r   r   r0   r  r  r  r  r  r  r  r  r
  rn   rE  r5   r  r  r  r  r   r   s   &&&                   r1   
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(r3   c                 V    \        R V R7      pVw  r4V! W4R7      w  rV\        V^ 4       R# )geqrfp_lworkrX   r  Nr  )r/   r.   r  r   r   r   rn   s   &&     r1   test_geqrfp_lworkr    s-     $^EBLDA(KEqr3   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  pttrfrX   zpttrf: info = z, should be 0)err_msgr  pttrszpttrs: info = Nr   )r6   r   r^  r   r   r2   r6  r  r  r#   r	   r   r   r   r   r~   )ddtyper/   r0   r0  r   r  r  r  r  r  r  _ern   rL  r  r   r   r  _xs   &&                 r1   test_pttrf_pttrsr!    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%r3   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  rX   Nr   )r6   r   r^  r#   r2   r  rT  )r  r/   r   r0   r  r  r  s   &&     r1   *test_pttrf_pttrs_errors_incompatible_shaper$    sr     	A
))


%CWE2E#QD&6:A#QqSFE7A*esVQ/*e#2/r3   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# )r#  r  rX   z?pttrf: _d[info-1] is r  z2?pttrf should fail with non-spd matrix, but didn'tN)r6   r   r^  r#   r2   r   r   )
r  r/   r   r0   r  r  r  r  r  rn   s
   &&        r1   'test_pttrf_pttrs_errors_singular_nonSPDr&    s     	A
))


#CWE2E#QD&6:A#QqSFE7AAaDAaD;LBD1Hq)"AX,7RSU 	$QD&6A;LBDDAIKLr3   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  rX   r  r  r  N)r#   r   r  r/   r+   )r  r  d_expecte_expectr   x_expectr0  r  r  r  rn   r  r   s   &&&&&&       r1   test_pttrf_pttrs_NAGr+  	  s    4 DWAaD1E;LBDBt,Bt,WAaD1ERA&HBBt, 	ww. !,40 !r3   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   )	r6   r   r^  r2   r6  r   r  r~   r   )r/   realtyper   	compute_zr0   A_eigvrr  r  trir  zs   &&&&        r1   pteqr_get_d_e_A_zr3  ,	  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!<r3   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  pteqrrX   r  r  r2  r.  zinfo = z, should be 0.r  N)r6   r   r   r#   r3  r   r   sortr   r  r~   r  r6  )r/   r-  r.  r0  r5  r   r  r  r  r2  d_pteqre_pteqrz_pteqrrn   s   &&&           r1   
test_pteqrr;  L	  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	& r3   c                 ~    \        R V R7      p^
p\        WWB4      w  rVrxV! V^,
          WhVR7      w  rrV^ 8  g   Q hR# r5  rX   r2  r.  Nr#   r3  r/   r-  r.  r5  r   r  r  r  r2  r8  r9  r:  rn   s   &&&          r1   test_pteqr_error_non_spdrA  l	  sI     ge4E
A"5AAJA! ',AE1Y&O#Gg!8O8r3   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# )r5  rX   Nr>  r   )r#   r3  r  rT  )	r/   r-  r.  r5  r   r  r  r  r2  s	   &&&      r1   "test_pteqr_raise_error_wrong_shaperC  z	  si     ge4E
A"5AAJA!*esVQyI*e#2!Ij%A3B9M r3   c                     \        R V R7      p^
p\        WWB4      w  rVrx^ V^ &   ^ V^ &   V! WVWR7      w  rrV^ 8  g   Q hR# r=  r?  r@  s   &&&          r1   test_pteqr_error_singularrE  	  sS     ge4E
A"5AAJA!AaDAaD&+AA&K#Gg!8O8r3   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  r5  rX   r6  r  Nr   )r#   r/   r6   r6  r   r   )r.  r  r  r(  z_expectr0  r5  r2  r  r  _zrn   s   &&&&&       r1   test_pteqr_NAG_f08jgfrI  	  s|      Dgagg6E

RWWQ]"RWWQ^3Aq@BBBt,BFF2Jx 0t<r3   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  geqrfprX   orgqrr  r)  N)rz   r   r   rQ  r   )r6   r   r^  r   r   r#   r2   r   r   r   r   r.   r  r~   r   allr6  re   r   r:  )r/   rJ  r0   r   r0  rL  gqrr   r   r  qr_Arz   rn   r  qqrr  
A_negativer_rq_negq_rq_negrq_A_negtau_neginfo_negs   &&                    r1   test_geqrfprX  	  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:>"$r3   c                      \         P                  ! . 4      p \        R V P                  R7      p\	        \
        W4       R# )rL  rX   N)r6   r   r#   r/   r  r  )A_emptyrL  s     r1   #test_geqrfp_errors_with_empty_arrayr[  	  s)    hhrlGhgmm<F)V-r3   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)  r^  _lworkrX   r  $_lwork raised unexpected exception: Nr   r+   r#   r   r  r?   failr]  r\  r   r/   sc_dlwdz_dlwr  s   &&     r1   test_standard_eigh_lworksri  	  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)ra  r^  rb  rX   rL  rI  rc  Nrd  rf  s   &&     r1   test_generalized_eigh_lworksrn  
  s     	A$;KNEcj1qBFcj1qBFLvs+vs+ Lszl"FqcJKKLrj  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_lworkrX   N)r6   r   r   r  r   r#   r   rN  )
ro  r   r0   r  r  r]  dlwr  lwvalr   s
   &&        r1   test_orcsd_uncsd_lworkrv  
  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# )   rq  rr  csdrs  rX   r   lrworkNr   r  g     @rQ  )r   r    rvsr!   r#   r   dictr  r   r`  r6   r   r9  cosr  r   r   r   )ro  r   r  r  r]  Xdrvrt  ru  lwvalscs11cs12cs21cs22thetau1u2v1tv2trn   rY  VHr  n11n12n21n22SonerD  Xcs   &                              r1   test_orcsd_uncsdr  #
  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Br3   
trans_boolFfactrK  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.
rX   r  r~   r   rX  rK  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   )r6   r   r^  r   r   r#   r2   r6  r   r  r~   r  r   r	   r   hasattrr.   )!r/   r  r  r0   r0  r  r  r   r  r  r  r  r   r   r   
inputs_cpydlf_df_duf_du2f_ipiv_info_	gtsvx_outr  r  r  du2fr
  x_solnr  ferrberrrn   s!   &&&                              r1   
test_gtsvxr  R
  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+> @r3   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  rX   r  r~   r   rK  Nr  rX  z&info should be > 0 for singular matrix)r  r  r  r  r  r
  r  r   )	r6   r   r^  r#   r2   r6  r   r  r~   )r/   r  r  r0   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  rn   s   &&&                            r1   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 
r3   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  rX   r  r~   r   rK  NrX  r  r  r   )r6   r   r^  r#   r2   r6  r   r  r~   r  rT  r  )r/   r  r  r0   r  r  r   r  r  r  r  r   r   r   r  r  r  r  r  r  s   &&&                 r1   "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	<r3   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  rX   Nr#   r/   r   )r  r  r  r   r   r  r  r  r  r  r  r
  r  r  r  r  rn   s   &&&&&            r1   test_gtsvx_NAGr  
  s:    . WAGG4EbR#I@I=CSe4a(r3   zfact,df_de_lambdac                 <    \        R VP                  R7      ! W4      # r  rX   r#   r/   r  r  s   &&r1   <lambda>r        (8?@ww)HHI)Nr3   c                     R# N)NNNr   r  s   &&r1   r  r        -?r3   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.
ptsvxrX   r  r  r  efzinfo should be 0 but is .r  r  r  r  z# but should be ({x_soln.shape[1]},)r  Nr   )r[   )r6   r   r^  r   r   r#   r2   r6  r  r  r	   r   r   r   r   r~   r  r.   )r/   r-  r  df_de_lambdar0   r0  r  r   r  r  r  r  r   r  r  rn   r  r   r  r  r  rL  r  s   &&&&                   r1   
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 :r3   c                 <    \        R VP                  R7      ! W4      # r  r  r  s   &&r1   r  r  S  r  r3   c                     R# r  r   r  s   &&r1   r  r  U  r  r3   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  rX   r  Nr  r   )
r6   r   r^  r#   r2   r6  r  r  rT  r  )r/   r-  r  r  r0   r  r   r  r  r  r  r   r  r  rn   s   &&&&           r1   test_ptsvx_error_raise_errorsr  O  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Jr3   c                 <    \        R VP                  R7      ! W4      # r  r  r  s   &&r1   r  r  n  r  r3   c                     R# r  r   r  s   &&r1   r  r  p  r  r3   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  rX   r  rX  r  Nr   )r6   r   r^  r#   r2   r6  r  )r/   r-  r  r  r0   r  r   r  r  r  r  r   r  r  rn   r   r  r  r  s   &&&&               r1   test_ptsvx_non_SPD_singularr  j  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xr3   zd,e,b,xc                 f    \        R VP                  R7      pV! WV4      w  rVrxrp\        W74       R# )r  rX   Nr  )r  r  r   r   r  r  r  x_ptsvxr  r  r  rn   s   &&&&        r1   test_ptsvx_NAGr    s0    . WAGG4E/4Q1~,BGDa)r3   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  rX   r   r  r  r  rQ  )r  r  r  N)ppsvpptrfpptrspptrippcon)r6   r   r^  r   r   r2   r  r~   r   r9  r#   r   r   r   r   r   r  r   r   r   r  )r/   r  r0   r0  r   r   rg   r   yr   r_  apr  r  r  r  r  ulrn   aululiaulibxxvr  r  s   &&                        r1   !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  rX   c                     R # Nr   r   s   &r1   r  !test_gees_trexc.<locals>.<lambda>      Dr3   Fr  rQ  N)geestrexcr   rS  r_   r_   r  r   r6   r   r^  r   r   r2   r#   r   r+   r   r   r  r~   )r/   r0   r0  r   rg   r  r  r  r  r2  d2s   &          r1   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3r3   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  rX   )wantqr  Nr   )r#   r/   r   r   )r  ifstilstexpectr0  r  r  s   &&&&   r1   test_trexc_NAGr  	  sH    < DWAGG4E11-FQq	AFD)r3   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  rX   c                     R # r  r   r  s   &r1   r  !test_gges_tgexc.<locals>.<lambda><  r  r3   Fr,  overwrite_brQ  N)ggestgexcr   r  rS  r   r  r  r  )r/   r0   r0  r   rg   r   r  r  r  r   r  r  r2  d1r  s   &              r1   test_gges_tgexcr  1  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=r3   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  rX   c                     R # r  r   r  s   &r1   r  !test_gees_trsen.<locals>.<lambda>l  r  r3   Fr  rQ  r   r   liworkN)r  trsentrsen_lworkr   rS  r  r   r6   r   r^  r   r   r2   r#   r   r+   r   r   r  r~   r   r   )r/   r0   r0  r   rg   r  r  r   r  r  r2  r  selectr   s   &             r1   test_gees_trsenr  a  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3r3   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?rX   r   r  r  N)r  r   r   )r#   r/   r   r+   r   r   r  r~   )r  r  r  r  expect_s
expect_sepr0  atol2r  r   r   r  r   seps   &&&&&&        r1   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4r3   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  rX   c                     R # r  r   r  s   &r1   r  !test_gges_tgsen.<locals>.<lambda>  r  r3   Fr  rQ  r   N)r  tgsentgsen_lworkr   r  rS  r   r  ir  r  )r/   r0   r0  r   rg   r   r  r  r  r  r   r  r  r2  r  r  r  r   s   &                 r1   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=r3   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  tgsylrX   r   zSCALE must be 1.0r   r0  r  r  zDIF must be nearly 0zSolution for R is incorrect)r0  r  zSolution for L is incorrectN)r#   r   r   r6   r   r   )rg   r   r   r  r  ri   ranslansr/   r0  r  routloutrZ   difrn   s   &&&&&&&&&       r1   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;r3   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  rX   )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-negativerX  r~   zlhs1 and rhs1 do not match)r0  r   r  zlhs2 and rhs2 do not matchNir  r  )r6   r  r   r   r   uniformr-   r#   r   r   r   r  )r/   r   r  r0  r0   r   r   rg   r  r5   r   r  r   ri   r  r  r  rZ   r  rn   lhs1rhs1lhs2rhs2s   &&&                     r1   
test_tgsylr#  G  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 <	> r3   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# )r_  zhetrs not for real dtypes.   *M/t|0 r  r*   r^  r  r  trsrX   r  r	  )rg   r
  r   r  r  N)r   r?   r@   r6   r   r   r+   r  r-   r~   r  r#   r   r   r   )r$  r/   r  r0   r   r   r  r   rG   r  r  r'  r   r  r
  rn   r   r   s   &&&               r1   test_sy_hetrsr(  z  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+r3   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# )r_  zhetri not for real dtypes.z	win-arm64z1Test segfaulting on win-arm64 in CI, see gh-23133r&  r*   r^  r  r1  rX   r  )rg   r
  r  r  N)r   r?   r@   	sysconfigget_platformr+   r6   r   r   r  r  r   r-   r~   r  r#   r   r   r  r   r   r   r   )r/   r  r$  r0   r   r  rG   r  r1  r  r
  rn   A_invr   r   s   &&&            r1   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Er3   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  )rO  r6  rY  >r   N)lantrr   )
r6   r   r   r-   r#   r   r   r  r`  r   )r   rO  r   r   r6  r/   r0   r  r0  r   rE  rD  r   s   &&&&&&       r1   
test_lantrr1    s     ))

 1
2C


&&u-A#$6=LE
d
.C ck
rwwqzAs{IIc!i Q$
.CC4(r3   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*   rX   Nr)  r~  r  )r   rd  rc  rN  r
  r  r  r   )gbcongbtrfr  )r6   r   r   r  r  r  r  r  r   r-   r   r   r   r   r  r   r  r#   r   )r/   r   r0   r   rc  rd  r  r  tmpLDABrN  r  r4  r5  lu_bandr
  r5   rE  r  r  r  r   s   &&                    r1   
test_gbconr9    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%r3   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# )r3  r*   r/  r   N)langbr   )r6   r   r   r  r  r   r-   r   r   r   r#   r   )r/   r   r0   r   rc  rd  r  rN  r;  r   r   rE  s   &&          r1   
test_langbr<    s     ))


,C Aq2A

A6SZZ/22A	}}UBKK((FF	A$%Abooaa !%&Abooaq!"	BA	B#$6=LE
.C
"
!CC4(r3   	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rX   stevd)r=  r  r  Nr   )r6   r   r   r6  r  eigvalshr#   r   r7  r   r   r~   )r/   r=  r0   r   r  r  r  r   r?  rY  r+  rn   r   s   &&           r1   
test_stevdrA    s    ))

 2
3C
A

1
"A

1q5
&A
2#bggam3A
))

Q
CW%Eqy1JA$199BGGAJ-hhuo!!BGGAJ,a3h? r3   )rq  )r^   r[      rC  )r~  1O)r_   r^   r  r3  )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   )r1  r        ffffff@)333333@@r         r  )r  r  rJ  rK  )rL  rM  r`   r  gC>r   )r   rH  ra   )r[   r\   r]   r^   r^         g	gffffff&r  rS  r         @             @      ?            ?      ?      )rP  rQ  rR  rS  )?rT  ffffff
@333333ӿ333333@ffffff
?      ?             ?      ?)rX  rY         @      rY  )rT  rU  rV  rW  )rX  rY  rZ  rY  y ~:pffffff?)rQ  rR  rS  y333333@      y@@y333333@3333332@y333333yffffff-ffffff#@y      333333yfffff?@y333333"@y      𿚙?y      ffffff(@y      @      y      ?       @y      @      @y             y       @       )rD  r~  rE  ))r\   r`   )r`   r\   rB  )r]   r#        r^   )r  r     ra   )r]   rb   r\     rV   )rO  gK=Ur  r  )r^  )   .      )y      0@      0@y      2@      "      ?      )r^  rb   rV   r]   )rY  rP  rb  y      P@      0@y      0      @y     @W@      O@y     N@     Py     S@      Ty     Q@     Ry      ,@      ;y     A@      .@y             )gp=
ף@r  gq=
ףp?rF  )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?)rq  )r`   r_   r  )evevdevrevx)rV   r#  d   r  )r  g)\(r  gQ?)r  皙r  ffffff?)r  grh  g?)r  r  r  rh  )rh  lV}gV_?g|?5^?)g?rh  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        @      )rl  y1%Ŀq?ys??ܵ|ȿyHzG??ܵ?)r  rm  yV/?ݓ?yjt?vտ)r  r  rn  yB>٬?=U?)r  r  r  rk  )g/$?gQIg~jtx?gJ4?)r  58EGrgGr?gyX5;?)r  g?߾ro  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?rj  g8EGr?)ri  g?gQg(\ſ)g
ףp=
?gQ?rG  ri  )g)\(ܿgQտgQg(\?)r  g{GzԿgp=
ףg)\(?)rV   r   r   rV   )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  r1  r   r   )r  r   r1  r   )r  r  r  g      @)r   r   r   r   )r  r  r  r   )      r   r   g      (@)g      "r          rq  )rp  r   rq  r   )      r   rN  g      3@)r   r   r   r1  )r  r   r   r   )r  r  r   r   )r  r  r  r   )r   r   r   r   )r  r   r   r   )r  r  r  r   )rr  r   r  r   )rI  r   g       r  )r  r         r   )rs  r   r  r   )r  r   r  r  )r  r   r1  r   )r  r   r  r   )r   r  r   r  )r   r1  r  r   )r  r   r   r  )r   r  r   r   )rX  r~   )r   rV   r[   r\   r]   r  ))rY  r^   r#  )rY  r#  r#  )rL  r#  r^   )rL  r#  r#  )	functoolsr   r*  numpy.testingr   r   r   r   r   r	   r?   r
   r  numpyr6   r   r   r   r   r   r   r   r   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   scipy.linalg._basicr   rM   r   scipy.statsr    r!   scipy.sparser"   r#   rL   r$   scipy.__config__r%   blas_providerblas_versionr  rx   r   r  
complex128r+   rc   r2   rJ   rR   rT   r   r$  r%  r  r  r  r'  rI  r  r  r  r  r  r  r  r  r  r  r#  r.  r7  rF  rY  rb  rh  ro  rt  r|  r  r  r  r  r  r  skipifr  r  rC   r9  r  r  r  r   r  r  r  r  r  r  r!  r$  r&  r+  r3  r;  rA  rC  rE  rI  rX  r[  ri  rn  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r#  r(  r-  r1  r9  r<  rA  r   r3   r1   <module>r     sH  
  / /  * ! ! !    + . 2 $ 0 , ## #+,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+.eAh0eAh0eAh0!Q(!Q(b& ) ) 1 1 1 / 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 * c+";VDEG,&G,&^ c+";VDEG0G0 S{!:FCDFMF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.@ )c&+*CDEGd58n5& 6G&: )c&+*CDEGd58n5 6G )c&+*CDEGd58n5N 6GN )c&+*CDEGd58n5 6G :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:;());() )4FK1<== 1> ,? @,NO  ?@BC
1:C@1:h )4FK1<== 1> ,? @,NO  ?@BC
KC@K( )4FK1<== 1> ,? @,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-@ . /@r3   