Ë
    âQ(h} ã                   ób*  — d dl mZ d dlZd dlmZmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlZd dlmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d d	l+m,Z,m-Z- d dl.m/Z0 	 d d
l1m2Z2 	 d dlm4Z5 d dl)m6Z6 d dl7m8Z8 ejr                  ejt                  gZ;ejx                  ejz                  gZ>e;e>z   Z?dxZ@ZAe2�e2d   d   d   Z@e2d   d   d   ZAd„ ZBd„ ZC G d„ d«      ZD G d„ d«      ZE G d„ d«      ZFe
jŽ                  j‘                  de?«      e
jŽ                  j‘                  dg d¢«      d„ «       «       ZI G d„ d«      ZJ G d „ d!«      ZK G d"„ d#«      ZL G d$„ d%«      ZMe
jŽ                  j‘                  de?«      e
jŽ                  j‘                  d&g d'¢«      e
jŽ                  j‘                  d(d)d*g«      e
jŽ                  j‘                  d+d,d)g«      e
jŽ                  j‘                  d-d.d/g«      d0„ «       «       «       «       «       ZNd1„ ZOd2„ ZPd3„ ZQd4„ ZR G d5„ d6«      ZS G d7„ d8«      ZTd9„ ZUd:„ ZVd;„ ZWd<„ ZXd=„ ZYd>„ ZZd?„ Z[d@„ Z\dA„ Z]dB„ Z^dC„ Z_dD„ Z`dE„ ZadF„ Zb G dG„ dH«      ZcdI„ ZddJ„ ZedK„ ZfdL„ Zge
jŽ                  jÑ                  dMdN¬O«      dP„ «       ZidQ„ Zje
jŽ                  j‘                  dRdSdTg«      e
jŽ                  j‘                  de;«      e
jŽ                  j‘                  dU ekdV«      «      e
jŽ                  j‘                  dW ekdX«      «      e
jŽ                  j‘                  dY ekdX«      «      e
jŽ                  j‘                  dZd d[g«      e
jŽ                  j‘                  d\d d[g«      �dbd]„«       «       «       «       «       «       «       Zle
jŽ                  j‘                  de;«      d^„ «       Zme
jŽ                  j‘                  d_dUd`idWd`idYd`idZd`idad`id\d`if«      db„ «       Zne
jŽ                  j‘                  dc ejÞ                  g dd¢g de¢g df¢g dg¢g dh¢g di¢g«       ejÞ                  g dj¢«       ejÞ                  g dk¢g dl¢g dm¢g dn¢g do¢g dp¢g«       ejÞ                  g dq¢g dr¢g ds¢g dt¢g«      fg«      du„ «       Zpe
jŽ                  j‘                  de?«      dv„ «       Zqe
jŽ                  j‘                  dw ejÞ                  g dx¢«       ejÞ                  g dy¢«       ejÞ                  g dz¢«       ejÞ                  g d{¢«       ejÞ                  g d|¢«       ejÞ                  g d}¢«       ejÞ                  g d~¢«       ejÞ                  dd€gd�d‚gdƒd„gd…d†gdd‡gg«       ejÞ                  dˆd‰gdŠdˆgd.d‹gdˆdŒgd‹d[gg«      f	 ejÞ                  g d�¢«       ejÞ                  g dŽ¢«       ejÞ                  g d�¢«       ejÞ                  g d�¢«       ejÞ                  g d‘¢«       ejÞ                  g d’¢«       ejÞ                  g d~¢«       ejÞ                  d“d”gd•d–gd—d˜gd™dšgd›dœgg«       ejÞ                  d�džgdŸd gd¡d¢gd£d¤gd¥d¦gg«      f	g«      d§„ «       Zre
jŽ                  j‘                  de?«      e
jŽ                  j‘                  d&g d¨¢«      e
jŽ                  j‘                  d-d.d/g«      d©„ «       «       «       Zse
jŽ                  j‘                  de?«      e
jŽ                  j‘                  dg dª¢«      d«„ «       «       Zte
jŽ                  j‘                  d¬ eue;e;z   e?«      «      d­„ «       Zve
jŽ                  j‘                  d¬ eue;e;z   e?«      «      d®„ «       Zwe
jŽ                  j‘                  d¬ eue;e;z   e?«      «      d¯„ «       Zxe
jŽ                  j‘                  d° ejÞ                  g d±¢«       ejÞ                  g d²¢«       ejÞ                  g d³¢«       ejÞ                  g d´¢«       ejÞ                  dVd/gd`dXgdµd`gd¶d·gdŠd¸gg«       ejÞ                  d¹dµgdµdºgd[d‹gdºdVgd.d»gg«      f ejÞ                  g d¼¢«       ejÞ                  g d½¢«       ejÞ                  g d¾¢«       ejÞ                  g d¿¢«       ejÞ                  dÀdÁgdÂdÃgdÄdÅgdÆdÇgg«       ejÞ                  d¤dÈgd�d�gdÉdÉgd¥d¤gg«      fg«      dÊ„ «       ZydË„ Zze
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dÍ ekd.«      «      dÎ„ «       «       Z{e
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dÍ ekd.«      «      dÏ„ «       «       Z|e
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dÍ ekd.«      «      dÐ„ «       «       Z}e
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dÍ ekd.«      «      dÑ„ «       «       Z~e
jŽ                  j‘                  dÒdµ ejÞ                  g dÓ¢«       ejÞ                  g dÔ¢«       ejÞ                  g dÕ¢«       ejÞ                  g dÖ¢g d×¢g dØ¢g dÙ¢g«      fg«      dÚ„ «       Ze
jŽ                  j‘                  de?«      e
jŽ                  j‘                  dÛg dÜ¢«      dÝ„ «       «       Z€dÞ„ Z�e
jŽ                  j‘                  dßg dà¢«      e
jŽ                  j‘                  dádâdãg«      dä„ «       «       Z‚e
jŽ                  j‘                  dßdådæg«      e
jŽ                  j‘                  dádâdãg«      dç„ «       «       Zƒe
jŽ                  j‘                  dèe?«      e
jŽ                  j‘                  dég dê¢«      dë„ «       «       Z„e
jŽ                  j‘                  dèe?«      dì„ «       Z…e
jŽ                  j‘                  de?«      e
jŽ                  j‘                  dídîdMg«      e
jŽ                  j‘                  dïdðd,g«      dñ„ «       «       «       Z†e
jŽ                  j‘                  de?«      e
jŽ                  j‘                  díd d[g«      e
jŽ                  j‘                  dïdðd,g«      dò„ «       «       «       Z‡e
jŽ                  j‘                  de?dµz  «      e
jŽ                  j‘                  dídîdMg«      e
jŽ                  j‘                  dïdðd,g«      dó„ «       «       «       Zˆe
jŽ                  j‘                  dô ejÞ                  g dx¢«       ejÞ                  g dy¢«       ejÞ                  g dz¢«       ejÞ                  dd€gd�d‚gdƒd„gd…d†gdd‡gg«       ejÞ                  dˆd‰gdŠdˆgd.d‹gdˆdŒgd‹d[gg«      f ejÞ                  g d�¢«       ejÞ                  g dŽ¢«       ejÞ                  g d�¢«       ejÞ                  d“d”gd•d–gd—d˜gd™dšgd›dœgg«       ejÞ                  d�džgdŸd gd¡d¢gd£d¤gd¥d¦gg«      fg«      dõ„ «       Z‰e
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dödðd÷„ fd,dø„ fg«      dù„ «       «       ZŠe
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dödðdú„ fd,dû„ fg«      dü„ «       «       Z‹e
jŽ                  j‘                  dÌ eue?e;e;z   «      «      e
jŽ                  j‘                  dödðdý„ fd,dþ„ fg«      dÿ„ «       «       ZŒe
jŽ                  j‘                  �d  ejÞ                  g d±¢«       ejÞ                  g d²¢«       ejÞ                  dVd/gd`dXgdµd`gd¶d·gdŠd¸gg«       ejÞ                  d¹dµgdµdºgd[d‹gdºdVgd.d»gg«      f ejÞ                  g d¼¢«       ejÞ                  g d½¢«       ejÞ                  dÀdÁgdÂdÃgdÄdÅgdÆdÇgg«       ejÞ                  d¤dÈgd�d�gdÉdÉgd¥d¤gg«      fg«      �d„ «       Z�e
jŽ                  j‘                  �ddîdMg«      e
jŽ                  j‘                  de?«      �d„ «       «       ZŽe
jŽ                  j‘                  de?«      �d„ «       Z�e
jŽ                  j‘                  �d ejÞ                  g �d¢g �d¢g �d¢g �d	¢g«       ejÞ                  g �d
¢g �d¢g �d¢g �d	¢g«      dµd[f ejÞ                  g �d¢g �d¢g �d¢g �d¢g«       ejÞ                  g �d¢g �d¢g �d¢g �d¢g«      d[dXfg«      �d„ «       Z�e
jŽ                  j‘                  de?«      �d„ «       Z‘e
jŽ                  j‘                  de?«      �d„ «       Z’e
jŽ                  j‘                  �d ejÞ                  g �d¢g �d¢g �d¢g �d¢g«       ejÞ                  g �d¢g �d¢g �d¢g �d ¢g«       ejÞ                  g �d!¢g �d"¢g �d#¢g �d$¢g«       ejÞ                  g �d%¢«      �d&�d'f ejÞ                  g �d(¢g �d)¢g �d*¢g �d+¢g«       ejÞ                  g �d,¢g �d-¢g �d.¢g �d/¢g«       ejÞ                  g �d0¢g �d1¢g �d2¢g �d3¢g«       ejÞ                  g �d%¢«      �d4�d5fg«      �d6„ «       Z“e
jŽ                  j‘                  de?«      �d7„ «       Z”e
jŽ                  j‘                  �d8 ejÞ                  g �d9¢g �d:¢g �d;¢g �d<¢g«       ejÞ                  g �d=¢g �d:¢g �d;¢g �d>¢g«       ejÞ                  g �d?¢g �d@¢g �dA¢g �dB¢g«       ejÞ                  g �dC¢g �dD¢g �dE¢g �dF¢g«       ejÞ                  g �dG¢g �dH¢g �dE¢g �dI¢g«       ejÞ                  g �dJ¢g �dK¢g �dL¢g �dM¢g«       ejÞ                  g �d=¢g �dN¢g �dO¢g �dP¢g«       ejÞ                  g �dQ¢g �dR¢g �dS¢g �dT¢g«      fg«      e
jŽ                  j‘                  de;«      �dU„ «       «       Z•e
jŽ                  j‘                  de;«      e
jŽ                  j‘                  �dV�dW«      e
jŽ                  j‘                  �dXg �dY¢«      �dZ„ «       «       «       Z–e
jŽ                  j‘                  �d[dâdãg«      e
jŽ                  j‘                  de?«      e
jŽ                  j‘                  �d�d\«      �d]„ «       «       «       Z—e
jŽ                  j‘                  d& e˜�d^«      «      e
jŽ                  j‘                  �d_g �d`¢«      e
jŽ                  j‘                  d+d,d)g«      e
jŽ                  j‘                  de?«      �da„ «       «       «       «       Z™y# e3$ r dZ2Y �Œ¡w xY w# e3$ r dZ5Y �Œ¨w xY w(c  é    )Ú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)ÚrandÚrandintÚseed)Ú_flapackÚlapackÚinvÚsvdÚcholeskyÚsolveÚldlÚnormÚ
block_diagÚqrÚeighÚqz)Ú_compute_lwork)Úortho_groupÚunitary_group)ÚCONFIG)Ú_clapack)Úget_lapack_funcs)Úget_blas_funcszBuild DependenciesÚblasÚnameÚversionc                 ó°   — |t         v r1 |j                  | Ž  |j                  | Ž dz  z   j                  |«      S  |j                  | Ž j                  |«      S )Nù              ð?)ÚCOMPLEX_DTYPESr   Úastype)ÚshapeÚdtypeÚrngs      ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_lapack.pyÚgenerate_random_dtype_arrayr4   1   sZ   € à”ÑØ�—‘˜%Ð Ø�#—(‘(˜EÐ" 4Ñ'ñ(ß)/©°«ð	7àˆ3�8‰8�UÐ×"Ñ" 5Ó)Ð)ó    c                  óR  — t         j                  €t        j                  d«       t	        t         j                  j                  «       «      } h d£}t        «       }t        t         «      D ]/  }|j                  d«      rŒ||vsŒ|| vsŒ|j                  |«       Œ1 |g k(  sJ d«       ‚y)z%Test that all entries are in the doc.Nzlapack.__doc__ is None>   ÚnpÚclapackÚflapackÚdivisionÚ	HAS_ILP64Úprint_functionÚabsolute_importÚfind_best_lapack_typeÚ_z2Name(s) missing from lapack.__doc__ or ignore_list)
r   Ú__doc__ÚpytestÚskipÚsetÚsplitÚlistÚdirÚ
startswithÚappend)ÚnamesÚignore_listÚmissingr*   s       r3   Útest_lapack_documentedrL   9   sŽ   € ä‡~�~ÐÜ�‰Ð,Ô-Ü”—‘×$Ñ$Ó&Ó'€Eò	€Kô ‹f€GÜ”F“ò !ˆØ—‘ Õ$¨°[Ò)@Ø˜EÒ!Ø�N‰N˜4Õ ð!ð �bŠ=ÐNÐNÓN‰=r5   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestFlapackSimplec           	      ó®  — g d¢g d¢g d¢g}g d¢g d¢g d¢g d¢g}dD ]·  }t        t        |d	z   d «      }|€Œ ||«      \  }}}}}	t        |	 t        |	«      «       t	        ||«       t        ||fd
t        |d
   «      dz
  f«       t	        |t        j                  t        |«      «      «        ||dd¬«      \  }}}}}	t        |	 t        |	«      «       Œ¹ y )N)é   é   é   )é   é   é   )é   é   é	   )rP   r   r   ga2U0*©3?)rS   r   r   gü©ñÒMb`?)rV   rP   r   r   )r   rP   r   r   ÚsdzcÚgebalr   rP   )ÚpermuteÚscale)	Úgetattrr9   r   Úreprr   r   Úlenr7   r   )
ÚselfÚaÚa1ÚpÚfÚbaÚloÚhiÚpivscaleÚinfos
             r3   Ú
test_gebalzTestFlapackSimple.test_gebalR   sØ   € Úš	¢9Ð-ˆÚÚÚÚðˆð ò 	*ˆAÜœ  7¡¨DÓ1ˆAØˆyØÙ)*¨1«Ñ&ˆB��B˜ $Ü˜�Hœd 4›jÔ)Ü% b¨!Ô,Ü˜"˜b˜ A¤s¨1¨Q©4£y°¡{Ð#3Ô4Ü% h´·±¼¸A»³Ô@á)*¨2°qÀÔ)BÑ&ˆB��B˜ $Ü˜�Hœd 4›jÕ)ñ	*r5   c                 óš   — g d¢g d¢g d¢g}dD ];  }t        t        |dz   d «      }|€Œ ||«      \  }}}t        | t        |«      «       Œ= y )N©ikÿÿÿiÎÿÿÿifÿÿÿ©i  é´   i"  ©iåÿÿÿi÷ÿÿÿiçÿÿÿÚdÚgehrd)r]   r9   r   r^   )r`   ra   rc   rd   ÚhtÚtauri   s          r3   Ú
test_gehrdzTestFlapackSimple.test_gehrdg   s\   € ÚÚÚðˆð ò 	*ˆAÜœ  7¡¨DÓ1ˆAØˆyØÙ˜a›D‰MˆB��TÜ˜�Hœd 4›jÕ)ñ	*r5   c           	      ó   — t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  dd	gd
dgg«      }d}dD �]u  }|j                  |«      |j                  |«      |j                  |«      }}}t        d|f«      \  }	|j	                  «       r|dxx   dz  cc<   d} |	|||«      \  }
}}t        t        j                  ||
«      t        j                  |
|«      z   ||z  «        |	|||||¬«      \  }
}}t        t        j                  |j                  «       j                  |
«      t        j                  |
|j                  «       j                  «      z   ||z  d¬«        |	|||d¬«      \  }
}}t        t        j                  ||
«      t        j                  |
|«      z
  ||z  d¬«       �Œx y )NrP   rQ   r   rS   rT   rU   rW   rX   é
   é   é   ÚTÚfdFD)Útrsylr-   ÚC)ÚtranaÚtranb©Údecimaléÿÿÿÿ)Úisgn)	r7   Úarrayr/   r'   Úisupperr   ÚdotÚ	conjugatery   )r`   ra   ÚbÚcÚtransr1   rb   Úb1Úc1r{   Úxr\   ri   s                r3   Ú
test_trsylzTestFlapackSimple.test_trsylr   sœ  € Ü�H‰H�q˜!�f˜q !˜fÐ%Ó&ˆÜ�H‰H�q˜!�f˜q !˜fÐ%Ó&ˆÜ�H‰H�q˜"�g  B˜xÐ(Ó)ˆØˆð ó 	=ˆEØŸ™ %›¨!¯(©(°5«/¸1¿8¹8ÀE»?�B�ˆBÜ% j°2°%Ó8‰FˆEØ�}‰}ŒØ�1“˜‘“Ø�á" 2 r¨2Ó.‰NˆAˆu�dÜ%¤b§f¡f¨R°£m´b·f±f¸QÀ³mÑ&CØ&+¨b¡jô2ñ # 2 r¨2°UÀ%ÔH‰NˆAˆu�dÜ%Ü—F‘F˜2Ÿ<™<›>×+Ñ+¨QÓ/´"·&±&¸¸B¿L¹L»N×<LÑ<LÓ2MÑMØ˜B‘J¨õ+ñ # 2 r¨2°BÔ7‰NˆAˆu�dÜ%¤b§f¡f¨R°£m´b·f±f¸QÀ³mÑ&CØ&+¨b¡j¸!÷=ñ#	=r5   c                 ó:  — t        j                  g d¢g d¢g d¢g«      }dD �]w  }dD �]n  }|j                  |«      }|j                  «       r|dxx   dz  cc<   t	        d|f«      \  } |||«      }|d	v re|d
v rd}nd}t        j
                  t        j                  t        j                  t        j                  |«      «      «      «      }t        |||«       Œ³|dv r)t        j                  t        j                  |«      «      }nƒ|dv r>t        j                  t        j                  t        j                  |«      d¬«      «      }nA|dv r=t        j                  t        j                  t        j                  |«      d¬«      «      }t        |«       �Œq �Œz y )Nrl   rm   ro   rz   ÚMm1OoIiFfEe©r   r   r-   )ÚlangeÚFfEeÚFfrR   rV   ÚMmÚ1Oor   ©ÚaxisÚIirP   )r7   rƒ   r/   r„   r'   ÚsqrtÚsumÚsquareÚabsr   Úmaxr   )	r`   ra   r1   Únorm_strrb   r‘   Úvaluer€   Úrefs	            r3   Ú
test_langezTestFlapackSimple.test_langeŽ   sD  € Ü�H‰HÚÚÚðó ˆð
 ó 	-ˆEØ)ó -�Ø—X‘X˜e“_�Ø—=‘=”?à�t“H ‘N“Hä)¨*°r°eÓ<‘�Ù˜h¨Ó+�à˜vÑ%Ø ‘}Ø"#™à"#˜ÜŸ'™'¤"§&¡&¬¯©´2·6±6¸"³:Ó)>Ó"?Ó@�CÜ'¨¨s°GÕ<à 4Ñ'Ü Ÿf™f¤R§V¡V¨B£ZÓ0™Ø! UÑ*Ü Ÿf™f¤R§V¡V¬B¯F©F°2«J¸QÔ%?Ó@™Ø! TÑ)Ü Ÿf™f¤R§V¡V¬B¯F©F°2«J¸QÔ%?Ó@˜ä  ¨Ö,ò1-ñ	-r5   N)Ú__name__Ú
__module__Ú__qualname__rj   rt   r�   r¡   © r5   r3   rN   rN   P   s   „ ò*ò*	*ò=ó8-r5   rN   c                   ó   — e Zd Zd„ Zd„ Zy)Ú
TestLapackc                 ó&   — t        t        d«      ry y ©NÚempty_module)Úhasattrr9   ©r`   s    r3   Útest_flapackzTestLapack.test_flapack²   ó   € Ü”7˜NÔ+àð ,r5   c                 ó&   — t        t        d«      ry y r©   )r«   r8   r¬   s    r3   Útest_clapackzTestLapack.test_clapack·   r®   r5   N)r¢   r£   r¤   r­   r°   r¥   r5   r3   r§   r§   °   s   „ òó
r5   r§   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestLeastSquaresSolversc           	      ó²  — t        d«       t        t        «      D ]œ  \  }}d}d}d}t        ||«      j	                  |«      }t        |«      j	                  |«      }t        d|¬«      \  }}	t        |	|||«      }
 ||||
¬«      \  }}}t        |dk\  «        |||d	|   |
¬
«      \  }}}t        |dk\  «       Œž t        D �]  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d||f«      \  }}}|j                  \  }}t        |j                  «      dk(  r|j                  d   }nd}t        ||||«      }
 ||||
¬«      \  }}}t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«        ||«      \  }}}}t!        ||«       �Œ t"        D �]  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d||f«      \  }}}|j                  \  }}t        |j                  «      dk(  r|j                  d   }nd}t        ||||«      }
 ||||
¬«      \  }}}t        |d d t        j                  dd g|¬«      dt        j                  |«      j                  z  ¬«        ||«      \  }}}}t!        ||«       �Œ y )!NéÒ  rv   é   rP   )ÚgelsÚ
gels_lwork©r1   ©Úlworkr   ÚTTCC©r‰   rº   ç      ð?ç       @ç      @ç      @ç      @ç       @©ç      0@g      1@g      4@)r¶   r·   ÚgeqrfrQ   r�   ç¥ªªªªª,Àçûÿÿÿÿÿ-@é   ©Úrtolù      ð?      @ù      @      à?ù      @      Àù      @       Àù       @ffffffæ?©rÄ   y      1@       @y      4@      ÀùR úŠ–ò?¤îð\Îjþ¿ùµò£�,Æû?§ÿ² Wø?)r   Ú	enumerateÚDTYPESr   r/   r'   r"   r   ÚREAL_DTYPESr7   rƒ   r0   r_   r   ÚfinfoÚepsr	   r.   )r`   Úindr1   ÚmÚnÚnrhsrb   rŠ   ÚglsÚglslwrº   r?   ri   r¶   r·   rÅ   ÚlqrrŒ   Ú	lqr_truths                      r3   Ú	test_gelsz!TestLeastSquaresSolvers.test_gels¿   s  € ÜˆTŒ
ä#¤FÓ+ò 	‰JˆC�ØˆAØˆAØˆDÜ�a˜“×"Ñ" 5Ó)ˆBÜ�a“—‘ Ó&ˆBÜ)Ð*@ÈÔN‰JˆC�ô # 5¨!¨Q°Ó5ˆEÙ˜R ¨5Ô1‰JˆAˆq�$Ü�D˜A‘IÔÙ˜R ¨6°#©;¸eÔD‰JˆAˆq�$Ü�D˜A‘IÕð	ô !ó 	/ˆEÜ—‘˜C ˜:Ø ˜:Ø ˜:ð'à.3ô5ˆBô —‘Ò,°EÔ:ˆBÜ&6Ø3°b¸"°Xó'?Ñ#ˆD�*˜eð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ô # :¨q°!°TÓ:ˆEá  B¨eÔ4‰LˆC��DÜ˜A˜c˜r˜F¤B§H¡HÐ.AØ.@ð.Bà38ô%:ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7õ9ñ "' r£ÑˆI�q˜!˜QÜ˜s IÖ.ð/	/ô2 $ó 	/ˆEÜ—‘˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ô?ˆBô —‘Ò6¸eÔDˆBÜ&6Ø3°b¸"°Xó'?Ñ#ˆD�*˜eð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ô # :¨q°!°TÓ:ˆEá  B¨eÔ4‰LˆC��DÜ˜A˜c˜r˜FÜŸH™HÐ&JØ&Jð&Là+0ô2à8:¼2¿8¹8ÀE»?×;NÑ;NÑ8NõPñ "' r£ÑˆI�q˜!˜QÜ˜s IÖ.ñ/	/r5   c                 óš  — t         D �]U  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||d«      \  }	}
}t        t        j                  |	«      «      }|
} |||||ddd«      \  }}}}t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       t        |t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �ŒX t        D �]b  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||d«      \  }	}}
}t        t        j                  |	«      «      }t        |«      }|
} ||||||ddd«      \  }}}}t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       t        |t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �Œe y )Nr½   r¾   r¿   rÀ   rÁ   rÂ   r¸   rÃ   )ÚgelsdÚgelsd_lworkrQ   rP   r�   FrÆ   rÇ   rÈ   rÉ   çYNô))1)@ç*@ƒž.«â?rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   çU‹¯ý.*@çãÊ_ÅY@©rÕ   r7   rƒ   r'   r0   r_   ÚintÚrealr   rÖ   r×   r.   )r`   r1   rb   rŠ   râ   rã   rÙ   rÚ   rÛ   ÚworkÚiworkri   rº   Ú
iwork_sizerŒ   ÚsÚrankÚrworkÚ
rwork_sizes                      r3   Ú
test_gelsdz"TestLeastSquaresSolvers.test_gelsd  sà  € Ü ó 	9ˆEÜ—‘˜C ˜:Ø ˜:Ø ˜:ð'à.3ô5ˆBô —‘Ò,°EÔ:ˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ !,¨A¨q°$¸Ó ;ÑˆD�%˜ÜœŸ™ ›Ó&ˆEØˆJá$ R¨¨U°JØ%'¨°ó 7ÑˆAˆq�$˜ä˜A˜c˜r˜F¤B§H¡HÐ.AØ.@ð.Bà38ô%:ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7õ9ô ˜AœrŸx™xÐ);Ø):ð)<ØCHô Jà!#¤B§H¡H¨U£O×$7Ñ$7Ñ!7÷9ð3	9ô: $ó 	PˆEÜ—‘˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ô?ˆBô —‘Ò6¸eÔDˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ (3°1°a¸¸rÓ'BÑ$ˆD�%˜ ÜœŸ™ ›Ó&ˆEÜ˜U›ˆJØˆJá$ R¨¨U°JÀ
Ø%'¨°ó 7ÑˆAˆq�$˜ä˜A˜c˜r˜FÜŸH™HÐ&JØ&Jð&Là+0ô2à8:¼2¿8¹8ÀE»?×;NÑ;NÑ8NõPô ˜AÜŸH™HÐ&8Ð:KÐ%LØ+0ô2Ø8:¼2¿8¹8ÀE»?×;NÑ;NÑ8N÷Pñ5	Pr5   c           	      óx  — t         D �]S  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||d«      \  }	}
t        t        j                  |	«      «      } |||d|dd«      \  }}}}}	}
t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       t        |t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �ŒV t        D �]S  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||d«      \  }	}
t        t        j                  |	«      «      } |||d|dd«      \  }}}}}	}
t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       t        |t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �ŒV y )Nr½   r¾   r¿   rÀ   rÁ   rÂ   r¸   rÃ   )ÚgelssÚgelss_lworkrQ   rP   r�   FrÆ   rÇ   rÈ   rÉ   rä   rå   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   ræ   rç   rè   )r`   r1   rb   rŠ   rô   rõ   rÙ   rÚ   rÛ   rë   ri   rº   ÚvrŒ   rî   rï   s                   r3   Ú
test_gelssz"TestLeastSquaresSolvers.test_gelss?  sÁ  € ä ó 	9ˆEÜ—‘˜C ˜:Ø ˜:Ø ˜:ð'à.3ô5ˆBô —‘Ò,°EÔ:ˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ % Q¨¨4°Ó4‰JˆD�$ÜœŸ™ ›Ó&ˆEá(-¨b°"°b¸%ÀÈÓ(NÑ%ˆAˆq�!�T˜4 Ü˜A˜c˜r˜F¤B§H¡HÐ.AØ.@ð.Bà38ô%:ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7õ9ô ˜AœrŸx™xÐ);Ø):ð)<ØCHô Jà!#¤B§H¡H¨U£O×$7Ñ$7Ñ!7÷9ð/	9ô6 $ó 	9ˆEÜ—‘˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ô?ˆBô —‘Ò6¸eÔDˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ % Q¨¨4°Ó4‰JˆD�$ÜœŸ™ ›Ó&ˆEá(-¨b°"°b¸%ÀÈÓ(NÑ%ˆAˆq�!�T˜4 Ü˜A˜c˜r˜FÜŸH™HÐ&JØ&Jð&Là+0ô2ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7õ	9ô
 ˜AœrŸx™xÐ);Ø):ð)<ØCHô Jà!#¤B§H¡H¨U£O×$7Ñ$7Ñ!7÷9ñ1	9r5   c           
      ó(  — t         D �]  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||dt        j                  |«      j                  z  «      \  }	}
t        t        j                  |	«      «      }t        j                  |j                  d   dft        j                  ¬«      } ||||t        j                  |«      j                  |dd«      \  }}}}}
t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �Œ‚ t        D �]  }t        j                  ddgddgddgg|¬«      }t        j                  g d¢|¬«      }t        d	||f«      \  }}|j                  \  }}t        |j                  «      d
k(  r|j                  d   }nd} ||||dt        j                  |«      j                  z  «      \  }	}
t        t        j                  |	«      «      }t        j                  |j                  d   dft        j                  ¬«      } ||||t        j                  |«      j                  |dd«      \  }}}}}
t        |d d t        j                  ddg|¬«      dt        j                  |«      j                  z  ¬«       �Œ‚ y )Nr½   r¾   r¿   rÀ   rÁ   rÂ   r¸   rÃ   )Úgelsyrõ   rQ   rP   rv   Fr�   rÆ   rÇ   rÈ   rÉ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   )rÕ   r7   rƒ   r'   r0   r_   rÖ   r×   ré   rê   r   Úint32r   r.   )r`   r1   rb   rŠ   rù   Úgelsy_lworkrÙ   rÚ   rÛ   rë   ri   rº   Újptvrö   rŒ   Újrï   s                    r3   Ú
test_gelsyz"TestLeastSquaresSolvers.test_gelsyx  sÓ  € ä ó 	9ˆEÜ—‘˜C ˜:Ø ˜:Ø ˜:ð'à.3ô5ˆBô —‘Ò,°EÔ:ˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ % Q¨¨4°´B·H±H¸U³O×4GÑ4GÑ1GÓH‰JˆD�$ÜœŸ™ ›Ó&ˆEä—8‘8˜RŸX™X a™[¨!Ð,´B·H±HÔ=ˆDÙ"'¨¨B°´b·h±h¸u³o×6IÑ6IØ(-¨u°eó#=ÑˆAˆq�!�T˜4ä˜A˜c˜r˜F¤B§H¡HÐ.AØ.@ð.Bà38ô%:ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7÷9ð+	9ô4 $ó 	9ˆEÜ—‘˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ô?ˆBô —‘Ò6¸eÔDˆBÜ!1Ð2JØ35°r°(ó"<ÑˆE�;ð —8‘8‰DˆAˆqÜ�2—8‘8‹} Ò!Ø—x‘x ‘{‘à�ñ % Q¨¨4°´B·H±H¸U³O×4GÑ4GÑ1GÓH‰JˆD�$ÜœŸ™ ›Ó&ˆEä—8‘8˜RŸX™X a™[¨!Ð,´B·H±HÔ=ˆDÙ"'¨¨B°´b·h±h¸u³o×6IÑ6IØ(-¨u°eó#=ÑˆAˆq�!�T˜4ä˜A˜c˜r˜FÜŸH™HÐ&JØ&Jð&Là+0ô2ð "$¤B§H¡H¨U£O×$7Ñ$7Ñ!7÷	9ñ+	9r5   N)r¢   r£   r¤   rà   rò   r÷   rþ   r¥   r5   r3   r²   r²   ½   s   „ òB/òH:Pòx79ór59r5   r²   r1   r0   )©rR   rS   )rT   rQ   ©é   r  c                 óZ   — t        d| ¬«      }|\  }} |||¬«      \  }}t        |d«       y )NÚgeqrf_lworkr¸   ©rÙ   rÚ   r   ©r'   r   )r1   r0   r  rÙ   rÚ   rº   ri   s          r3   Útest_geqrf_lworkr  °  s3   € ô # M¸%Ô@€KØ�D€A€qÙ  QÔ'�K€Eˆ4Ü��qÕr5   c                   ó   — e Zd Zd„ Zy)ÚTestRegressionc                 ó   — t         D ]Å  }t        j                  d|¬«      }t        dg|g«      \  }t	        t
        ||d¬«        ||«      \  }}}}|t        v r6t        dg|g«      \  }t	        t
        ||dd  |d¬«        ||dd  |d¬«       Œˆ|t        v sŒ‘t        d	g|g«      \  }	t	        t
        |	|dd  |d¬«        |	|dd  |d¬«       ŒÇ y )
N)i,  rQ   r¸   ÚgerqfrQ   r¹   ÚorgrqéþÿÿÿrP   Úungrq)rÔ   r7   r   r'   Úassert_raisesÚ	ExceptionrÕ   r.   )
r`   r1   ra   r
  Úrqrs   rë   ri   r  r  s
             r3   Útest_ticket_1645zTestRegression.test_ticket_1645»  s×   € äò 	-ˆEÜ—‘˜¨Ô/ˆAä% w i°!°Ó5‰FˆEÜœ) U¨A°QÕ7Ù"'¨£(ÑˆB��T˜4àœÑ#Ü)¨7¨)°a°SÓ9‘�Üœi¨°°2°3°¸ÀAÕFÙ�b˜˜�g˜s¨!Ö,Øœ.Ò(Ü)¨7¨)°a°SÓ9‘�Üœi¨°°2°3°¸ÀAÕFÙ�b˜˜�g˜s¨!Ö,ñ	-r5   N)r¢   r£   r¤   r  r¥   r5   r3   r  r  ¹  s   „ ó-r5   r  c                   ó   — e Zd Zd„ Zy)Ú	TestDpotrc           
      ó"  — dD �]	  }dD �]   }t         j                  j                  d«       t         j                  j                  d¬«      }|j	                  |j
                  «      }t        d|f«      \  }} ||||¬«      \  }} |||«      d   }	|r<t        t        j                  |	«      t        j                  t        |«      «      «       ŒÆt        t        j                  |	«      t        j                  t        |«      «      «       �Œ �Œ y )N)TFé*   )rR   rR   ©Úsize)ÚpotrfÚpotri)Úcleanr   )r7   Úrandomr   Únormalr…   ry   r'   r   r   r   r   )
r`   Úlowerr  rŒ   ra   ÚdpotrfÚdpotrirˆ   ri   Údpts
             r3   Útest_gh_2691zTestDpotr.test_gh_2691Ï  sÑ   € à"ó 	CˆEØ&ó C�Ü—	‘	—‘˜rÔ"Ü—I‘I×$Ñ$¨&Ð$Ó1�Ø—E‘E˜!Ÿ#™#“J�ä!1Ð2DÀqÀeÓ!L‘�˜á   E°Ô7‘��4Ù˜Q Ó& qÑ)�áÜ#¤B§G¡G¨C£L´"·'±'¼#¸a»&³/ÕBä#¤B§G¡G¨C£L´"·'±'¼#¸a»&³/ÖBòCñ	Cr5   N)r¢   r£   r¤   r!  r¥   r5   r3   r  r  Î  s   „ óCr5   r  c                   ó   — e Zd Zd„ Zy)Ú
TestDlasd4c                 ó:  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  t        j                  t        j                  |dd «      t        j
                  dt        |«      dz
  f«      f«      |d d …t         j                  f   f«      }t        |dddd¬«      }t        |«      }t        j                  |d d d…   |d   |t        |«      z  z   gf«      }t        j                  |d d d…   df«      }t        d	|f«      }g }	t        d|«      D ]5  }
 ||
||«      }|	j                  |d   «       t        |d
   dk  d|
z  «       Œ7 t        j                  |	«      d d d…   }	t        t        j                  t        j                   |	«      «       df«       t#        ||	dt        j$                  t         j&                  «      j(                  z  dt        j$                  t         j&                  «      j(                  z  ¬«       y )N)r¿   ç      @r¾   r   )gö(\�Âõ@gÍÌÌÌÌÌ@g333333Àçš™™™™™Àr   r�   rP   F)Úfull_matricesÚ
compute_uvÚoverwrite_aÚcheck_finite©r   Úlasd4rR   zcLAPACK root finding dlasd4 failed to find                                     the singular value %izThere are NaN rootséd   ©ÚatolrÊ   )r7   rƒ   ÚhstackÚvstackÚdiagr   r_   Únewaxisr   Úconcatenater   r'   ÚrangerH   r   ÚanyÚisnanr   rÖ   Úfloat64r×   )r`   ÚsigmasÚm_vecÚMÚSMÚit_lenÚsgmÚmvcr,  ÚrootsÚiÚress               r3   Útest_sing_val_updatezTestDlasd4.test_sing_val_updateã  sÏ  € ä—‘š/Ó*ˆÜ—‘Ò0Ó1ˆä�I‰I”r—y‘y¤"§'¡'¨&°°2¨,Ó"7Ü"$§(¡(¨A¬s°5«z¸A©~Ð+>Ó"?ð"Aó BàšQ¤§
¡
˜]Ñ+ð-ó .ˆô � %°EÀuØ#ô%ˆô �V“ˆÜ�n‰n˜f¡T r T™l¨V°A©Y¸ÄÀUÃÑ9KÑ-KÐ,LÐMÓNˆÜ�n‰n˜e¡D b D™k¨4Ð0Ó1ˆä  ¨6¨)Ó4ˆàˆÜ�q˜&Ó!ò 	@ˆAÙ˜˜3 Ó$ˆCØ�L‰L˜˜Q™Ô ä�S˜‘V˜q‘[ð $;Ø=>ñ$?õ @ð		@ô —‘˜“¡ " Ñ%ˆä”R—V‘VœBŸH™H U›OÓ,Ð,Ð.CÐDÔEÜ˜˜E¨¬B¯H©H´R·Z±ZÓ,@×,DÑ,DÑ(DØ ¤§¡¬"¯*©*Ó!5×!9Ñ!9Ñ9ö	;r5   N)r¢   r£   r¤   rC  r¥   r5   r3   r#  r#  â  s   „ ó;r5   r#  c                   ó   — e Zd Zej                  j                  de«      d„ «       Zej                  j                  deD � ���cg c]  }dD ]  }|dk(  r|t        v s||f‘Œ Œ c}}}} «      ej                  j                  dddg«      ej                  j                  d	d
dg«      d„ «       «       «       Z	ej                  j                  dg d¢g d¢g d¢g«      d„ «       Z
d„ Zej                  j                  dddg«      d„ «       Zyc c}}}} w )Ú	TestTbtrsr1   c                 óD  — |t         v rdt        j                  g d¢g d¢g|¬«      }t        j                  ddgddgdd	gd
dgg|¬«      }t        j                  ddgddgddgddgg|¬«      }n~|t        v rgt        j                  g d¢g d¢g d¢g|¬«      }t        j                  ddgddgddgddgg|¬«      }t        j                  ddgd d!gd"d#gd$d%gg|¬«      }nt	        d&|› d'�«      ‚t        d(|¬«      } |||d)¬*«      \  }}t        |d+«       t        ||d+d,¬-«       y.)/zýTest 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

        )ç¤p=
×£Àg…ëQ¸@gHáz®G@g{®GázÄ?)g      Àgq=
×£p@gHáz®GÀr   r¸   g¤p=
×£0ÀrG  g�Âõ(\�+Àg×£p=
—0Àg333333*@gÃõ(\�ÂÀgHáz®G,ÀgìQ¸…ë#ÀrS   rP   r�   éýÿÿÿrR   rQ   r  )y
×£p=
ÿ¿¸…ëQ¸@y{®Gáz@®GázÀy…ëQ¸…Û?Ház®GÀy)\�Âõ(Ü?š™™™™™¹?)y…ëQ¸À…ëQ¸…@yq=
×£pý¿®Gáz@y×£p=
×û?{®Gáz¤¿r   )yìQ¸…ëù?q=
×£p@y)\�Âõ(Àáz®Gáþ¿r   r   y¸…ëQ¸!À
×£p=
Ày×£p=
8À®GázÀy¤p=
×#/À)\�Âõh7Ày\�Âõ(üLÀHáz®G @y…ëQ¸…ÀHáz®Ç6@y×£p=
3@Ãõ(\�‚=Ày{®Gáz-À333333ÀyìQ¸…+3@®GázT5@y               @y      ð?      @y      ð?      Ày      À       Àyt&mªîÀâ=–#ôÀy×i¤¥ò6@U¾g$B@y[aú^Cðÿ?b->À¸ð¿y-@ÛjÖiÀ& ÿ”*ù!Àz	Datatype z not understood.ÚtbtrsÚL©Úabr‡   Úuplor   çñhãˆµøä>©rÊ   r/  N)rÕ   r7   rƒ   r.   Ú
ValueErrorr'   r   r   )r`   r1   rL  r‡   Úx_outrI  rŒ   ri   s           r3   Útest_nag_example_f07vef_f07vsfz(TestTbtrs.test_nag_example_f07vef_f07vsf  s  € ð ”KÑÜ—‘Ò4Ú2ð4à %ô'ˆBô —‘˜6 5˜/Ø! 6Ð*Ø  %˜.Ø! 5˜/ð+ð  %ô	&ˆAô
 —H‘H˜q !˜fØ! 2˜hØ  !˜fØ  "˜gð'ð $)ô	*‰Eð
 ”nÑ$Ü—‘ÒKÚFÚ:ð<ð !&ô'ˆBô —‘˜=¨.Ð9Ø*¨NÐ;Ø)¨>Ð:Ø)¨>Ð:ð<ð  %ô	&ˆAô
 —H‘H˜r 6˜lØ% wÐ/Ø4Ð6JÐKØ3Ð5JÐKðMð $)ô	*‰Eô ˜y¨¨Ð/?Ð@ÓAÐAä  '°%Ô8ˆÙ˜2 ¨Ô-‰ˆˆ4Ü�T˜1ÔÜ˜˜5 q¨tÖ4r5   zdtype,trans)ÚNry   r|   r|   rM  ÚUrJ  r2  rS  c           	      óˆ  — t         j                  j                  d«      }d\  }}}t        d|¬«      }	|dk(  }
||
z  }||z
  }t	        || dz
  d«      }|D �cg c]  }|t        |«      z
  ‘Œ }}|D �cg c]  }t        |f||«      ‘Œ }}|dk(  rt        j                  ||¬«      ||<   t        j                  ||d¬	«      }t        j                  |dz   |f|«      }t        |«      D ]4  \  }}|j                  |«      ||t        |d
«      t        ||z   |«      …f<   Œ6 t        ||f||«      } |	|||||¬«      \  }}t        |d
«       |dk(  rt!        ||z  |d¬«       y |dk(  rt!        |j"                  |z  |d¬«       y |dk(  r*t!        |j"                  j%                  «       |z  |d¬«       y t'        d«      ‚c c}w c c}w )Ni¼  )rS   rR   rQ   rI  r¸   rT  rP   r�   Údia)Úformatr   )rL  r‡   rM  r‰   r2  rS  g-Cëâ6
?rÉ   ry   r|   zInvalid trans argument)r7   r  ÚRandomStater'   r5  rœ   r4   r   ÚspsÚdiagsr   rÓ   Údiagonalr�   Úminr   r   ry   r†   rP  )r`   r1   r‰   rM  r2  r2   rÚ   rÛ   ÚkdrI  Úis_upperÚkuÚklÚband_offsetsrŒ   Úband_widthsÚwidthÚbandsra   rL  ÚrowÚkr‡   ri   s                           r3   Útest_random_matriceszTestTbtrs.test_random_matrices2  sÒ  € ô �i‰i×#Ñ# DÓ)ˆð
 ‰ˆˆ4�Ü  °Ô6ˆà˜C‘KˆØ�(‰]ˆØ�"‰Wˆô ˜R "  q¡¨"Ó-ˆØ+7Ö8 a�qœ3˜q›6“zÐ8ˆÐ8à)ö+Øô -¨e¨X°u¸cÕBð +ˆð +ð �3Š;ÜŸ™ ¨Ô/ˆE�"‰Iô �I‰I�e˜\°%Ô8ˆô �X‰X�r˜A‘v˜q�k 5Ó)ˆÜ Ó-ò 	;‰FˆC�Ø-.¯Z©Z¸«]ˆBˆs”C˜˜1“Iœc ! A¡# q›kÐ)Ð)Ò*ð	;ô (¨¨D¨	°5¸#Ó>ˆá˜2 ¨°UÀÔF‰ˆˆ4Ü�T˜1Ôà�CŠ<Ü˜A ™E 1¨4Ö0Ø�cŠ\Ü˜AŸC™C !™G Q¨TÖ2Ø�cŠ\Ü˜AŸC™CŸM™M›O¨aÑ/°¸Ö>äÐ5Ó6Ð6ùò9 9ùò+s   ÁF:Á2F?zuplo,trans,diag)rT  rS  ÚInvalid)rT  rh  rS  )rh  rS  rS  c           	      ó”   — t        dt        j                  ¬«      }t        dd«      }t        dd«      }t	        t
        ||||||«       y)z?Test if invalid values of uplo, trans and diag raise exceptionsrI  r¸   rS   rQ   N)r'   r7   r8  r   r  r  )r`   rM  r‰   r2  rI  rL  r‡   s          r3   Ú&test_invalid_argument_raises_exceptionz0TestTbtrs.test_invalid_argument_raises_exceptionf  s>   € ô ! ´·
±
Ô;ˆÜ�!�Q‹ZˆÜ��A‹JˆÜ”i ¨¨A¨t°U¸DÕAr5   c                 óÐ   — t        j                  dt        ¬«      }t        j                  dt        ¬«      }t        dt        ¬«      }d|d<    |||d¬«      \  }}t	        |d«       y	)
aH  Test if a matrix with a zero diagonal element is singular

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

        Note that ?tbtrs requires the matrix A to be stored in banded form.
        In this form the diagonal corresponds to the last row.rÿ   r¸   rS   rI  r   )r�   rR   rT  rK  N)r7   r   Úfloatr'   r   )r`   rL  r‡   rI  r?   ri   s         r3   Útest_zero_element_in_diagonalz'TestTbtrs.test_zero_element_in_diagonals  sU   € ô �W‰W�V¤5Ô)ˆÜ�G‰G�AœUÔ#ˆÜ  ´Ô6ˆàˆˆ5‰	Ù˜2 ¨Ô-‰ˆˆ4Ü�T˜1Õr5   zldab,n,ldb,nrhs)rT   rT   r   rT   )rT   rT   rR   rT   c                 ó¾   — t        j                  ||ft        ¬«      }t        j                  ||ft        ¬«      }t        dt        ¬«      }t	        t
        |||«       y)z2Test ?tbtrs fails correctly if shapes are invalid.r¸   rI  N©r7   r   rl  r'   r  r  )r`   ÚldabrÚ   ÚldbrÛ   rL  r‡   rI  s           r3   Útest_invalid_matrix_shapesz$TestTbtrs.test_invalid_matrix_shapesƒ  sF   € ô �W‰W�d˜A�Y¤eÔ,ˆÜ�G‰G�S˜$�K¤uÔ-ˆÜ  ´Ô6ˆÜ”i ¨¨AÕ.r5   N)r¢   r£   r¤   rA   ÚmarkÚparametrizerÔ   rR  rÕ   rg  rj  rm  rr  )Ú.0r1   r‰   rÕ   s   0000r3   rE  rE    s@  „ à‡[�[×Ñ˜W fÓ-ñ+5ó .ð+5ðZ ‡[�[×Ñ˜]à+1÷Nñ NØ"'¸òNØ6;Ø&+¨s¢l°uÄÑ7Kð  % ešnð N˜nõ NóOð ‡[�[×Ñ˜V c¨3 ZÓ0Ø‡[�[×Ñ˜V c¨3 ZÓ0ñ,7ó 1ó 1ó	Oð,7ð\ ‡[�[×ÑÐ.Ú3Ú3Ú3ð5ó6ñBó	6ðBòð  ‡[�[×ÑÐ.Ø*Ø*ð1ó ñ/ó	ñ/ùõiNs   ÁDrE  r   )ÚIÚ1ÚOrM  rT  rJ  r2  rS  rÚ   rR   rv   c           	      óâ  — t        j                  | › |› |› |› |› �«       t        j                   j                  t        j                  dd«      «      }|j                  ||f¬«      |j                  ||f¬«      dz  z   }|j                  t        j                  d|j                  dd«      |«      «      }||z  }t        j                  | t        j                  «      r|j                  n|}|dk(  rt        j                  |«      nt        j                  |«      }|dk(  r-|t        j                  |«      d d …t        j                  f   z  }|j                  | «      }t!        d|f«      } |||||¬«      \  }	}
|d	k(  r„t        j"                  j%                  |t        j&                  ¬
«      }t        j"                  j%                  t        j"                  j)                  |«      t        j&                  ¬
«      }d||z  z  }n]t        j*                  |«      j-                  d¬«      j/                  «       }t!        d|f«      \  }} ||«      \  }}} ||||¬«      \  }}
d}t1        |	||¬«       y )Nr   l   ÿåa$r  r-   rv   rT  Útrcon)r   rM  r2  rv  )ÚordrP   r–   ©ÚgeconÚgetrf©r   rÉ   )r  r   r7   Údefault_rngr   ÚpermutedÚlogspaceÚintegersÚ
issubdtypeÚfloatingrê   r   r   r2  r3  r/   r'   Úlinalgr   Úinfr   rœ   rš   r�   r   )r1   r   rM  r2  rÚ   r2   ÚAÚoffsetrz  rB  r?   Únorm_AÚ
norm_inv_Ar    Úanormr}  r~  ÚluÚipvtri   rÊ   s                        r3   Ú
test_trconr�  �  sí  € ô ‡K�K�5�'˜$˜ ˜v d V¨A¨3Ð/Ô0Ü
�)‰)×
Ñ
¤§¡¨q°-Ó @Ó
A€Cà�
‰
˜˜A˜ˆ
Ó #§*¡*°1°a°& *Ó"9¸"Ñ"<Ñ<€Aà�\‰\œ"Ÿ+™+ a¨¯©°a¸Ó)<¸aÓ@ÓA€FØˆ�K€AÜ—-‘- ¤r§{¡{Ô3ˆ�Š¸€AØ˜c’kŒ�‰�Œ
¤r§w¡w¨q£z€AØˆs‚{Ø	ŒR�W‰W�Q‹Zšœ2Ÿ:™:˜Ñ&Ñ&ˆØ	�‰�‹€Aä˜W q dÓ+€EÙ�1˜4 d°Ô6�F€Cˆàˆs‚{Ü—‘—‘ ¤r§v¡v�Ó.ˆÜ—Y‘Y—^‘^¤B§I¡I§M¡M°!Ó$4¼"¿&¹&�^ÓAˆ
Ø�6˜JÑ&Ñ'‰ä—‘�q“	—‘ 1�Ó%×)Ñ)Ó+ˆÜ'Ð(:¸Q¸DÓA‰ˆˆuÙ˜q›‰ˆˆD�$Ù�r˜5 tÔ,‰ˆˆQð
 €DÜ�C˜ 4Ö(r5   c                  óÂ  — dD ]Ú  } t        d| ¬«      }t        j                  d| «      }t        j                  d| «      }t        j                  |«      r|dz  } |||«      \  }}}t	        |d«       t	        |d«       t        j                  |«      r?t	        |d	«       t        t        |t        «      «       t        t        |t        «      «       ŒÏt	        |d
«       ŒÜ y )Nrz   Úlartgr¸   rR   rS   r-   ç333333ã?rÀ   y       €š™™™™™é¿çš™™™™™é?)	r'   r7   rƒ   Úiscomplexobjr   r   Ú
isinstanceÚcomplexrl  )r1   r‘  rd   ÚgÚcsÚsnÚrs          r3   Ú
test_lartgr›  ¸  sµ   € Øò )ˆÜ  °Ô6ˆä�H‰H�Q˜ÓˆÜ�H‰H�Q˜Óˆä�?‰?˜1ÔØ�‰GˆAá˜!˜Q“K‰	ˆˆB�ä˜˜GÔ$Ü˜˜3Ôä�?‰?˜1ÔÜ˜B 	Ô*Ü”J˜q¤'Ó*Ô+Ü”J˜r¤5Ó)Õ*ä˜B Õ(ñ')r5   c                  ó’  — dD �]Á  } d}d}t        j                  dd| «      }t        j                  dd| «      }dt        j                  | «      j                  dz
   z  }| dv rt	        d	| ¬
«      }d}nt        d	| ¬
«      }|dz  }|dz  }d}t         |||||«      g d¢g d¢g|¬«       t         |||||d¬«      g d¢dd||gg|¬«       t         |||||dd¬«      g d¢||ddgg|¬«       t         |||||ddd¬«      g d¢||ddgg|¬«       t         |||||ddd¬«      g d¢d|d|gg|¬«       t         |||||ddddd¬«	      g d¢||d|gg|¬«       t         |||||ddd¬«      g d¢d|d|gg|¬«        |||||dd¬«      \  }}	t        ||u «       t        |	|u «       t        |g d¢|¬«       t        |	g d¢|¬«       �ŒÄ y )Nrz   r’  r“  rS   rR   rv   rP   ÚfdÚrotr¸   y       €      ð¿r-   y              @)rT   rT   rT   rT   )r   r   r   r   ©r/  rQ   )rÚ   )rT   rT   rR   rR   r   )ÚoffxÚoffy)rR   rR   rT   rT   )Úincxr¡  rÚ   )rT   rR   rT   rR   )r   ÚincyrÚ   )r   r¢  r¡  r£  rÚ   )rR   rR   rT   rR   r  )r¢  r£  rÚ   )Úoverwrite_xÚoverwrite_y)r7   ÚfullrÖ   Ú	precisionr(   r'   r   r   )
r1   rˆ   rî   Úurö   r/  rž  rd   ra   r‡   s
             r3   Útest_rotr©  Ï  s  € ð ó $4ˆØˆØˆä�G‰G�A�q˜%Ó ˆÜ�G‰G�A�q˜%Ó ˆØ”R—X‘X˜e“_×.Ñ.¨qÑ0Ð1Ñ1ˆà�D‰=Ü  ¨eÔ4ˆCØ‰Aä" 5°Ô6ˆCØ�‰HˆAØ�‰GˆAØˆAä™˜A˜q ! Q›ª,Ú*6ð*8Ø>Bõ	Dä™˜A˜q ! Q¨!Ô,ª|Ø01°1°a¸¨|ð/=ØCGõ	Iä™˜A˜q ! Q¨Q°QÔ7Ú%¨¨1¨a° |Ð4¸4õ	Aä™˜A˜q ! Q¨Q°Q¸!Ô<Ú%¨¨1¨a° |Ð4¸4õ	Aä™˜A˜q ! Q¨Q°Q¸!Ô<Ú%¨¨1¨a° |Ð4¸4õ	Aä™˜A˜q ! Q¨Q°Q¸QÀQÈ!ÔLÚ%¨¨1¨a° |Ð4¸4õ	Aä™˜A˜q ! Q¨R°b¸AÔ>Ú%¨¨1¨a° |Ð4¸4õ	Añ �1�a˜˜A¨1¸!Ô<‰ˆˆ1Ü��Q�ŒÜ��Q�ŒÜ˜š<¨dÕ3Ü˜š<¨d×3ñI$4r5   c            
      ób  — t         j                  j                  d«       t         j                  j                  d«      } | j                  j	                  | «      } t         j                  j                  d«      dt         j                  j                  d«      z  z   }|j                  j                  «       j	                  |«      }dD �]e  }t        ddg|¬«      \  }}|dv r|j                  «       }n| j                  «       } ||j                  d	   d
z
  |d   |dd …d	f   «      \  }}}t        j                  |d d …d	f   «      }	|d   |	d	<   ||	d
<   t        j                  |d
d …d	f   «      }
d|
d	<   ||
d
d   ||
|j                  «       |d
d …d d …f   t        j                  |j                  d
   «      «      |d
d …d d …f<    ||
||d d …d
d …f   t        j                  |j                  d	   «      d¬«      |d d …d
d …f<   t        |d d …d	f   |	d¬«       t        |d	d d …f   |	d¬«       �Œh y )Nr´   )rS   rS   r-   rz   ÚlarfgÚlarfr¸   ÚFDr   rP   ©rP   r   rQ   r�   r½   ÚR©ÚsiderN  rŸ  )r7   r  r   ry   r…   Úconjr'   Úcopyr0   r   r†   r   r   )Úa0Úa0jr1   r«  r¬  ra   ÚalpharŒ   rs   Úexpectedrö   s              r3   Útest_larfg_larfr¸  ù  së  € Ü‡I�I‡N�N�4ÔÜ	�‰×	Ñ	˜&Ó	!€BØ	�‰�‰�"‹€Bä
�)‰)×
Ñ
˜6Ó
" R¬¯	©	×(8Ñ(8¸Ó(@Ñ%@Ñ
@€CØ
�%‰%�*‰*‹,×
Ñ
˜3Ó
€Cð
 ó 6ˆÜ&¨°Ð'8ÀÔF‰ˆˆtà�D‰=Ø—‘“
‰Aà—‘“	ˆAñ ˜aŸg™g a™j¨™l¨A¨d©G°Q°q±r¸1°u±XÓ>‰ˆˆq�#ô —=‘= ¢1 a 4¡Ó)ˆØ˜‘gˆ�‰Øˆ�‰ô �M‰M˜!˜A™B ˜E™(Ó#ˆØˆˆ!‰Øˆˆ!ˆ"ˆñ ˜˜3Ÿ=™=›?¨A¨a©b²!¨e©H´b·h±h¸q¿w¹wÀq¹zÓ6JÓKˆˆ!‰"Šaˆ%‰ñ ˜˜3 ¢! Q¡R %¡¬"¯(©(°1·7±7¸1±:Ó*>ÀSÔIˆŠ!ˆQ‰Rˆ%‰ä˜š!˜Q˜$™ °Õ5Ü˜˜!šQ˜$™ °×5ñ96r5   c                  óz   — t        dt        j                  d¬«      } d}t        | ||dd¬«      }|dk(  s|dk(  sJ ‚y y )	NÚgesdd_lworkÚ	preferred©r1   Úilp64iA%  T)r(  r'  i`”Di€”D)r'   r7   Úfloat32r"   )Úsgesdd_lworkrÚ   rº   s      r3   Ú test_sgesdd_lwork_bug_workaroundrÀ  #  sQ   € ô $ M¼¿¹Ø*5ô7€Là€AÜ˜<¨¨AØ&*¸$ô@€Eð  �IÒ ¨)Ò!3Ð3Ð3Ð!3Ðr5   c                   óÒ   — e Zd Zej                  j                  de«      d„ «       Zej                  j                  de«      ej                  j                  dd«      d„ «       «       Zy)Ú	TestSytrdr1   c                 ón   — t        j                  d|¬«      }t        d|f«      }t        t        ||«       y )Nr�   r¸   Úsytrd©r7   r   r'   r  rP  )r`   r1   rˆ  rÄ  s       r3   Útest_sytrd_with_zero_dim_arrayz(TestSytrd.test_sytrd_with_zero_dim_array@  s.   € ô �H‰H�V 5Ô)ˆÜ  ¨1¨$Ó/ˆÜ”j %¨Õ+r5   rÚ   ©rP   rR   c                 ó€  — t        j                  ||f|¬«      }t        d|f«      \  }}t        j                  d||dz   z  dz  dz   |¬«      |t        j                  |«      <    ||«      \  }}t        |d«        ||d|¬«      \  }}	}
}}t        |d«       t        ||dt        j                  |«      j                  z  d¬	«       t        |	t        j                  |«      «       t        |
d
«       t        |d
«        |||¬«      \  }}	}
}}t        |d«       t        j                  ||¬«      }t        j                  |j                  d   «      }|	|||f<   t        j                  |j                  d   dz
  «      }|
||dz   |f<   |
|||dz   f<   t        j                  |||¬«      }t        |dz
  «      D ]x  }t        j                  ||¬«      }|d |…|dz   f   |d | d||<   t        j                  |||¬«      ||   t        j                  ||«      z  z
  }t        j                  ||«      }Œz t        j                   |d«      }|j"                  |   ||<   t        j                  |j"                  t        j                  ||«      «      }t        ||dt        j                  |«      j                  z  d¬	«       y )Nr¸   )rÄ  Úsytrd_lworkrP   rQ   r   ©r  rº   rT   r½   r.  ç        r¹   r�   )r7   r   r'   ÚarangeÚtriu_indices_fromr   r   rÖ   r×   r2  r   r0   r   r5  Úouterr…   r   ry   )r`   r1   rÚ   rˆ  rÄ  rÉ  rº   ri   Údatarp   Úers   ry   rf  Úk2ÚQrA  rö   ÚHÚi_lowerÚQTAQs                        r3   Ú
test_sytrdzTestSytrd.test_sytrdG  s|  € ô �H‰H�a˜�V 5Ô)ˆô Ð5¸°tÓ<ñ 	ˆˆ{ô
 �I‰I�a˜˜A˜a™C™ !™ A™¨UÔ3ð 	
Œ"×
Ñ
˜qÓ
!Ñ"ñ " !“n‰ˆˆtÜ�T˜1Ôñ !& a¨q¸Ô >Ñˆˆa��C˜Ü�T˜1Ôä˜˜a a¬¯©°«×(;Ñ(;Ñ&;À#ÕFÜ˜œ2Ÿ7™7 1›:Ô&Ü˜˜3ÔÜ˜˜SÔ!ñ !& a¨uÔ 5Ñˆˆa��C˜Ü�T˜1Ôô
 �M‰M˜! 5Ô)ˆÜ�I‰I�a—g‘g˜a‘jÓ!ˆØˆˆ!ˆQˆ$‰Ü�Y‰Y�q—w‘w˜q‘z !‘|Ó$ˆØˆˆ"ˆQ‰$�ˆ(‰Øˆˆ"ˆb�‰dˆ(‰ô �F‰F�1�a˜uÔ%ˆÜ�q˜‘s“ò 	ˆAÜ—‘˜ %Ô(ˆAØ˜˜!˜˜Q˜q™S˜‘MˆAˆbˆqˆEØˆAˆa‰DÜ—‘�q˜! 5Ô)¨C°©F´R·X±X¸aÀ³^Ñ,CÑCˆAÜ—‘�q˜!“‰Að	ô —/‘/ ! RÓ(ˆØ—S‘S˜‘\ˆˆ'‰
ä�v‰v�a—c‘cœ2Ÿ6™6 ! Q›<Ó(ˆô 	˜˜a a¬¯©°«×(;Ñ(;Ñ&;À#ÖFr5   N)	r¢   r£   r¤   rA   rs  rt  rÕ   rÆ  rÖ  r¥   r5   r3   rÂ  rÂ  ?  se   „ Ø‡[�[×Ñ˜W kÓ2ñ,ó 3ð,ð ‡[�[×Ñ˜W kÓ2Ø‡[�[×Ñ˜S &Ó)ñ7Gó *ó 3ñ7Gr5   rÂ  c                   óà   — e Zd Zej                  j                  de«      d„ «       Zej                  j                  d ee	e«      «      ej                  j                  dd«      d„ «       «       Z
y)Ú	TestHetrdÚcomplex_dtypec                 ón   — t        j                  d|¬«      }t        d|f«      }t        t        ||«       y )Nr�   r¸   ÚhetrdrÅ  )r`   rÙ  rˆ  rÛ  s       r3   Útest_hetrd_with_zero_dim_arrayz(TestHetrd.test_hetrd_with_zero_dim_array„  s.   € ô �H‰H�V =Ô1ˆÜ  ¨1¨$Ó/ˆÜ”j %¨Õ+r5   zreal_dtype,complex_dtyperÚ   rÇ  c           	      ó"  — t        j                  ||f|¬«      }t        d|f«      \  }}t        j                  d||dz   z  dz  dz   |¬«      dt        j                  d||dz   z  dz  dz   |¬«      z  z   |t        j                  |«      <   t        j
                  |t        j                  t        j                  |«      «      «       dD ]  } |||¬«      \  }}	t        |	d«       Œ t        ||«      }
 ||d|
¬	«      \  }}}}}	t        |	d«       t        ||d
t        j                  |«      j                  z  d¬«       t        |t        j                  t        j                  |«      «      «       t        |d«       t        |d«        |||
¬«      \  }}}}}	t        |	d«       t        j                  ||¬«      }t        j                  |j                  d   t        ¬«      }||||f<   t        j                  |j                  d   dz
  t        ¬«      }|||dz   |f<   ||||dz   f<   t        j                   |||¬«      }t#        |dz
  «      D ]‹  }t        j                  ||¬«      }|d |…|dz   f   |d | d||<   t        j                   |||¬«      ||   t        j$                  |t        j&                  |«      «      z  z
  }t        j(                  ||«      }Œ� t        j*                  |d«      }t        j&                  |j,                  |   «      ||<   t        j(                  t        j&                  |j,                  «      t        j(                  ||«      «      }t        ||dt        j                  |«      j                  z  d¬«       y )Nr¸   )rÛ  Úhetrd_lworkrP   rQ   r-   ©r   rP   ©r  r   rÊ  rT   r½   r.  rË  r¹   r�   rv   )r7   r   r'   rÌ  rÍ  Úfill_diagonalrê   r2  r   r"   r   rÖ   r×   r   r0   ré   r   r5  rÎ  r²  r…   r   ry   )r`   rÚ   Ú
real_dtyperÙ  rˆ  rÛ  rÞ  rŒ   r?   ri   rº   rÏ  rp   rÐ  rs   ry   rf  rÑ  rÒ  rA  rö   rÓ  rÔ  ÚQHAQs                           r3   Ú
test_hetrdzTestHetrd.test_hetrd‹  s  € ô �H‰H�a˜�V =Ô1ˆäÐ5¸°tÓ<ñ 	ˆˆ{ô
 �I‰I�a˜˜A˜a™C™ !™ A™¨ZÔ8Ø”2—9‘9˜Q  1 Q¡3¡¨¡
¨1¡°JÔ?Ñ?ñ@ð 	
Œ"×
Ñ
˜qÓ
!Ñ"ô 	×Ñ˜œBŸG™G¤B§G¡G¨A£JÓ/Ô0ð ò 	"ˆAÙ! !¨1Ô-‰GˆAˆtÜ˜˜qÕ!ð	"ô
 ˜{¨AÓ.ˆñ !& a¨q¸Ô >Ñˆˆa��C˜Ü�T˜1Ôä˜˜a a¬¯©°Ó(<×(@Ñ(@Ñ&@ÀsÕKä˜œ2Ÿ7™7¤2§7¡7¨1£:Ó.Ô/Ü˜˜3ÔÜ˜˜SÔ!ñ !& a¨uÔ 5Ñˆˆa��C˜Ü�T˜1Ôô
 �M‰M˜! :Ô.ˆÜ�I‰I�a—g‘g˜a‘j¬Ô,ˆØˆˆ!ˆQˆ$‰Ü�Y‰Y�q—w‘w˜q‘z !‘|¬3Ô/ˆØˆˆ"ˆQ‰$�ˆ(‰Øˆˆ"ˆb�‰dˆ(‰ô �F‰F�1�a˜}Ô-ˆÜ�q˜‘s“ò 	ˆAÜ—‘˜ -Ô0ˆAØ˜˜!˜˜Q˜q™S˜‘MˆAˆbˆqˆEØˆAˆa‰DÜ—‘�q˜! =Ô1Ø�a‘&œ2Ÿ8™8 A¤r§w¡w¨q£zÓ2Ñ2ñ3ˆAä—‘�q˜!“‰Að	ô —/‘/ ! RÓ(ˆÜ—W‘W˜QŸS™S ™\Ó*ˆˆ'‰
ä�v‰v”b—g‘g˜aŸc™c“l¤B§F¡F¨1¨a£LÓ1ˆô 	Ø�!˜"œRŸX™X jÓ1×5Ñ5Ñ5¸Cö	r5   N)r¢   r£   r¤   rA   rs  rt  r.   rÜ  ÚziprÕ   rä  r¥   r5   r3   rØ  rØ  ƒ  sp   „ Ø‡[�[×Ñ˜_¨nÓ=ñ,ó >ð,ð ‡[�[×ÑÐ7Ù  ¨nÓ=ó?à‡[�[×Ñ˜S &Ó)ñAó *ó?ñAr5   rØ  c            
      óØ  — t        t        «      D �]W  \  } }t        d|¬«      \  }}t        |ddd¬«      }| dk  r\t	        j
                  g d¢g d¢g d	¢g d
¢g d¢g d¢g|¬«      }t	        j
                  g d¢|¬«      }t	        j
                  ddg|¬«      }n_t	        j
                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }t	        j
                  dgdgdgdgdgdgg«      }t	        j                  d|¬«      }t	        j
                  g d¢g d¢g|¬«      } ||||||¬«      \  }	}	}	}
}	| dk  rt	        j
                  g d¢«      }nt	        j
                  g d¢«      }t        |
|d¬ «       �ŒZ y )!N)ÚgglseÚgglse_lworkr¸   rU   rS   rQ   )rÙ   rÚ   rc   )g=
×£p=â¿g{®Gázô¿gö(\�ÂõØ¿ç      Ð?)çáz®Gáþ¿gHáz®Gñ?g×£p=
×Ó¿ç…ëQ¸À)çffffff@g¸…ëQ¸Î?gš™™™™™Ù?gffffffÖ¿)rê  g{®Gázä?ç…ëQ¸å¿g{®Gáz´?)ç333333Ã?g333333Ó?rî  g
×£p=
À)g{®Gáz”¿ç{®Gázð?gáz®Gáö¿ç      à?)g      ø¿rë  g®Gáz®ó?gHáz®Gá¿gáz®Gáú¿g=
×£p=ê?rË  )y¸…ëQ¸î?ìQ¸…ëé¿y¸…ëQ¸ž¿¸…ëQ¸î?y…ëQ¸í¿{®Gáz @yš™™™™™©¿=
×£p=Ú?)y\�Âõ(\ï¿®Gáz®ÿ?y333333ó¿R¸…ëQÈ?y…ëQ¸å¿áz®GáÚ?yìQ¸…ëé¿ìQ¸…ëá?)y×£p=
×ã?q=
×£pÝ¿y)\�Âõ(ð?{®Gáz”?y)\�Âõ(ä?Ãõ(\�ÂÅ¿yÃõ(\�Âñ¿333333ã?)y®Gáz®×?R¸…ëQØ?yR¸…ëQÈ?Ház®Gá¿y\�Âõ(\ï¿
×£p=
×¿y)\�Âõ(Ì?š™™™™™É¿)y�Âõ(\�ê?R¸…ëQà?yš™™™™™É?{®Gáz„?yÃõ(\�ÂÅ¿q=
×£pÝ¿y…ëQ¸…÷?q=
×£pù?)yHáz®Gñ?ìQ¸…ëÑ¿yš™™™™™É?¸…ëQ¸¾¿yìQ¸…ë±¿®Gáz®ó?y¤p=
×£Ð?¤p=
×£Ð?yR¸…ëQÀ
×£p=
·?yffffffú?®GázÀyáz®Gá À®Gáz®Ày…ëQ¸ý?ffffff
@y¤p=
×£À)\�Âõ(@y�Âõ(\� @…ëQ¸å?)r½   rË  ç      ð¿rË  )rË  r½   rË  rñ  r¹   )çÐ^"ƒ�Lß?ç¢\}éëï?rò  ró  )yàÜ!fñ?$_KÀ–dÿ¿y‰^g¿Åµç¿¸F€�Ö@yàÜ!fñ?}²Þ–dÿ¿y61ŸÅµç¿eðæ_�Ö@r   )rÓ   rÔ   r'   r"   r7   rƒ   r   r   )rØ   r1   ÚfuncÚ
func_lworkrº   ra   rˆ   rp   r‡   r?   Úresultr·  s               r3   Ú
test_gglser÷  Ò  sx  € ä¤Ó'ó ,?‰
ˆˆUä+Ð,DØ27ô9Ñˆˆjä˜z¨Q°!°qÔ9ˆà�Š7Ü—‘Ò5Ú5Ú3Ú4Ú3Ú4ð6ð
 >CôDˆAô —‘ÒAÈÔOˆAÜ—‘˜"˜b˜¨Ô/‰Aô —‘ÒMÚNÚKÚKÚKÚKðMó NˆAô —‘˜;˜-Ø%˜,Ø&˜-Ø%˜,Ø&˜-Ø%˜,ð(ó )ˆAô —‘˜ %Ô(ˆAä�H‰HÒ'Ò):Ð;À5ÔIˆá! ! Q¨¨1°EÔ:Ñˆˆ1ˆa�˜Ø�Š7Ü—x‘xò !-ó .‰Hô
 —x‘xò !:ó ;ˆHô 	" &¨(¸A×>ñY,?r5   c            
      óÊ  — t        d«       t        t        t        z   «      D �]>  \  } }d}| dk  r9t	        d|¬«      }t	        d|¬«      \  }}t        ||«      j                  |«      }nHt	        d|¬«      }t	        d|¬«      \  }}t        ||«      t        ||«      d	z  z   j                  |«      }||j                  «       j                  z   d
z  d
t        j                  ||¬«      z  z   }t        |d«      }t        ||«      } |||d¬«      \  }	}
} ||	|
|d¬«      \  }}t        t        d|z  t        j                  j!                  |d¬«      z
  «      |z  dk  «       �ŒA y )Nr´   rv   rS   Úsytrf_lworkr¸   )ÚsyconÚsytrfÚhetrf_lwork)ÚheconÚhetrfr-   rQ   rP   )rº   r  )ra   ÚipivrŒ  r  ©rc   )r   rÓ   rÔ   r.   r'   r   r/   r²  ry   r7   r   r   r"   r   rœ   r†  Úcond)rØ   r1   rÚ   rõ  ÚfunconÚfunctrfrˆ  rŒ  rº   Úldurÿ  r?   Úrconds                r3   Útest_sycon_heconr    sJ  € Üˆ„JÜ¤¤~Ñ 5Ó6ó A‰
ˆˆUàˆà�Š7Ü)¨-¸uÔEˆJÜ.Ð/AÈÔO‰OˆF�GÜ�a˜“×#Ñ# EÓ*‰Aô *¨-¸uÔEˆJÜ.Ð/AÈÔO‰OˆF�GÜ�a˜“œd 1 a›j¨™mÑ+×3Ñ3°EÓ:ˆAð �—‘“—‘‰^˜QÑ ¤2§6¡6¨!°5Ô#9Ñ!9Ñ9ˆä�Q˜“
ˆÜ˜z¨1Ó-ˆÙ˜q¨°QÔ7‰ˆˆT�1Ù˜C d°%¸qÔA‰ˆˆqä”�A�e‘GœbŸi™iŸn™n¨Q°!˜nÓ4Ñ4Ó5°eÑ;¸aÑ?Ö@ñ-Ar5   c                  óJ  — t        d«       t        t        «      D �]  \  } }d}t        d|¬«      \  }}}}t	        ||«      j                  |«      }||j                  z   dz  }t	        ||«      j                  |«      }||j                  z   dz  dt        j                  ||¬«      z  z   } |||«      \  }	}
}t        |dk(  «        ||«      \  }}t        |dk(  «        |||«      \  }}t        |dk(  «        ||«      \  }}
}t        |dk(  «       t        ||	d¬«       �Œ y )	Nr´   rv   )r  ÚsygstÚsyevdÚsygvdr¸   rQ   r   giUMu?rÉ   )r   rÓ   rÕ   r'   r   r/   ry   r7   r   r   r   )rØ   r1   rÚ   r  r  r	  r
  rˆ  ÚBÚeig_gvdr?   ri   r‡   ra   Úeigs                  r3   Ú
test_sygstr    s%  € Üˆ„JÜ¤Ó,ó 3‰
ˆˆUàˆä%5ð 7Ià<Aô&CÑ"ˆˆu�e˜Uô ��A‹J×Ñ˜eÓ$ˆØ�—‘‰W�a‰Kˆä��A‹J×Ñ˜eÓ$ˆØ�—‘‰W�a‰K˜!œbŸf™f Q¨eÔ4Ñ4Ñ4ˆñ !  A›;Ñˆ��DÜ�˜‘	Ôñ ˜“(‰ˆˆ4Ü�˜‘	ÔÙ˜˜1“+‰ˆˆ4Ü�˜‘	Ôá˜Q“x‰ˆˆQ�Ü�˜‘	ÔÜ˜˜W¨6×2ñ53r5   c                  óþ  — t        d«       t        t        «      D �]_  \  } }d}t        d|¬«      \  }}}}t	        ||«      j                  |«      dt	        ||«      j                  |«      z  z   }||j                  «       j                  z   dz  }t	        ||«      j                  |«      dt	        ||«      j                  |«      z  z   }||j                  «       j                  z   dz  dt        j                  ||¬«      z  z   } |||«      \  }	}
}t        |dk(  «        ||«      \  }}t        |dk(  «        |||«      \  }}t        |dk(  «        ||«      \  }}
}t        |dk(  «       t        ||	d¬	«       �Œb y )
Nr´   rv   )r  ÚhegstÚheevdÚhegvdr¸   r-   rQ   r   ç-Cëâ6?rÉ   )r   rÓ   r.   r'   r   r/   r²  ry   r7   r   r   r   )rØ   r1   rÚ   r  r  r  r  rˆ  r  r  r?   ri   r‡   ra   r  s                  r3   Ú
test_hegstr  =  si  € Üˆ„JÜ¤Ó/ó 1‰
ˆˆUàˆä%5ð 7Ià<Aô&CÑ"ˆˆu�e˜Uô ��A‹J×Ñ˜eÓ$ r¬D°°A«J×,=Ñ,=¸eÓ,DÑ'DÑDˆØ�—‘“—‘‰^˜QÑˆä��A‹J×Ñ˜eÓ$ r¬D°°A«J×,=Ñ,=¸eÓ,DÑ'DÑDˆØ�—‘“—‘‰^˜QÑ ¤R§V¡V¨A°UÔ%;Ñ!;Ñ;ˆñ !  A›;Ñˆ��DÜ�˜‘	Ôñ ˜“(‰ˆˆ4Ü�˜‘	ÔÙ˜˜1“+‰ˆˆ4Ü�˜‘	Ôá˜Q“x‰ˆˆQ�Ü�˜‘	ÔÜ˜˜W¨4×0ñ51r5   c                  ó¤  — t         j                  j                  d«      } d\  }}t        t        «      D �]  \  }}t        d|¬«      \  }}t        |||«      }|dk  r+t        | j                  ||«      j                  |«      «      }n@t        | j                  ||«      | j                  ||«      dz  z   j                  |«      «      }t        t        ||j                  «        |||¬«      \  }	}
}t        |dk(  «       t        j                  |	d	d	…d	|…f   t        j                  |||z
  f|¬«      f«      }t        j                  t        j                   ||¬«      |	d	d	…|d	…f   f«      }t        j                   ||¬«      }t#        |«      D �cg c]D  }||
|   ||gd	d	…f   j                  j%                  ||gd	d	…f   j'                  «       «      z  z
  ‘ŒF }}t)        t         j$                  |«      }t+        |j%                  |«      |z
  t-        ||¬«      d
t        j.                   |d«      j0                  «      z  d¬«       �Œ y	c c}w )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´   ©rv   é   ©ÚtzrzfÚtzrzf_lworkr¸   rQ   r-   r¹   r   Nrv   r½   rË  r.  )r7   r  rX  rÓ   rÔ   r'   r"   r   r   r/   r  r  ry   r   r0  r   r   r5  r…   r²  r   r   r   Úspacingrê   )r2   rÙ   rÚ   rØ   r1   r  Útzrzf_lwrº   rˆ  Úrzrs   ri   r¯  ÚVÚIdrŒ   r    ÚZs                     r3   Ú
test_tzrzfr!  \  sð  € ô �)‰)×
Ñ
 Ó
%€CØ�D€A€qÜ¤Ó'ó F‰
ˆˆUÜ*Ð+CØ16ô8‰ˆˆxä˜x¨¨AÓ.ˆà�Š7Ü�S—X‘X˜a “^×*Ñ*¨5Ó1Ó2‰Aä�c—h‘h˜q !“n s§x¡x°°1£~°bÑ'8Ñ8×@Ñ@ÀÓGÓHˆAô 	”i ¨¯©Ô,Ù˜a uÔ-‰ˆˆC�ä�˜‘	Ôô �I‰I�rš!˜R˜a˜R˜%‘y¤"§(¡(¨A¨q°©s¨8¸5Ô"AÐBÓCˆÜ�I‰I”r—v‘v˜a uÔ-¨r²!°Q±R°%©yÐ9Ó:ˆÜ�V‰V�A˜UÔ#ˆÜDIÈ!ÃHÖM¸qˆr�#�a‘&˜˜A˜3¢˜6™Ÿ™Ÿ™¨¨A¨3²¨6©¯©Ó)9Ó:Ñ:Ó:ÐMˆÐMÜ”2—6‘6˜3ÓˆÜ˜Ÿ™˜a› 1™¤j°¸%Ô&@Ø¤§
¡
©5°«:¯?©?Ó ;Ñ;À"÷	Fñ-Fùò( Ns   ÆA	Ic            	      óÐ  — t         j                  j                  d«      } t        t        «      D �]4  \  }}d}|dkD  rOt        | j                  ||«      | j                  ||«      dz  z   t        |«      z   «      j                  |«      }d}n8t        | j                  ||«      t        |«      z   «      j                  |«      }d}t        d|¬«      \  }}} ||«      \  }	}
| j                  |d	«      j                  |«      } |d
|	|«      }t        |t        | |«      |d	z  dk(  rdnd¬«        |d
|	||¬«      }t        |t        |j                  «       j                   |«      |d	z  dk(  rdnd¬«        |d«      |t        j                  |«      t        j                  |«      f<    |d
|	||d¬«      }t        |t        |j                  «       j                   |«      |d	z  dk(  rdnd¬«       | j                  d|«      j                  |«      } |d
|	||dd¬«      }t        |t        | |j                  «      j                  «       j                  |d	z  dk(  rdnd¬«       �Œ7 y)z„
    Test for solving a linear system with the coefficient matrix is a
    triangular array stored in Full Packed (RFP) format.
    r´   rµ   rP   r-   r|   ry   )ÚtrttfÚtfttrÚtfsmr¸   rQ   r�   r   rS   rU   r   ©r‰   r½   rT  )r‰   r2  rR   r¯  )r‰   r2  r±  N)r7   r  rX  rÓ   rÔ   r   r   r   r/   r'   r   r   r²  ry   rÌ  )r2   rØ   r1   rÚ   rˆ  r‰   r#  r$  r%  ÚAfpr?   r  ÚsolnÚB2s                 r3   Ú	test_tfsmr*  ~  s,  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó  D‰
ˆˆUØˆØ�Š7Ü�S—X‘X˜a “^ c§h¡h¨q°!£n°RÑ&7Ñ7¼#¸a»&Ñ@ÓA×HÑHÈÓOˆAØ‰Eä�S—X‘X˜a “^¤c¨!£fÑ,Ó-×4Ñ4°UÓ;ˆAØˆEä-Ð.HØ49ô;Ñˆˆu�dñ �q“‰ˆˆQØ�H‰H�Q˜‹N×!Ñ! %Ó(ˆÙ�B˜˜QÓˆÜ! $¬¨q¨b°!«Ø/2°Q©w¸!ª|©!Àõ	Dñ �B˜˜Q eÔ,ˆÜ! $¬¨q¯v©v«x¯z©z¨k¸1Ó(=Ø/2°Q©w¸!ª|©!Àõ	Dñ ).¨b«	ˆŒ"�)‰)�A‹,œŸ	™	 !›Ð
$Ñ%Ù�B˜˜Q e°#Ô6ˆÜ! $¬¨q¯v©v«x¯z©z¨k¸1Ó(=Ø/2°Q©w¸!ª|©!Àõ	Dð �X‰X�a˜‹^×"Ñ" 5Ó)ˆÙ�B˜˜R u°3¸SÔAˆÜ! $¬¨q¨b°"·$±$«×(<Ñ(<Ó(>×(@Ñ(@Ø/2°Q©w¸!ª|©!À÷	Dñ? Dr5   c                  ó<  — t         j                  j                  d«      } d\  }}}t        t        «      D �]_  \  }}t        d|¬«      \  }}t        |||«      }|dk  r\t        | j                  ||«      j                  |«      «      }	| j                  ||«      j                  |«      }
t        d|¬«      \  }}n�t        | j                  ||«      | j                  ||«      dz  z   j                  |«      «      }	| j                  ||«      t        ||«      dz  z   j                  |«      }
t        d|¬«      \  }}t        |||«      } ||	|¬	«      \  }}}t        j                  t        j                  ||¬«      |d
d
…|d
…f   f«      }t        j                  ||¬«      }t        |«      D �cg c]D  }|||   ||gd
d
…f   j                  j                  ||gd
d
…f   j                  «       «      z  z
  ‘ŒF }}t!        t         j                  |«      }|dk  rdnd}dt        j"                   |d«      j$                  «      z  } ||||
|¬	«      \  }}t'        |dk(  «       t)        ||j                  |
«      z
  t+        |
«      |d¬«        ||||
||¬«      \  }}t'        |dk(  «       t)        ||j                  «       j                  j                  |
«      z
  t+        |
«      |d¬«        ||||
d|¬«      \  }}t'        |dk(  «       t)        ||
j                  |«      z
  t+        |
«      |d¬«        ||||
d||¬«      \  }}t'        |dk(  «       t)        ||
j                  |j                  «       j                  «      z
  t+        |
«      |d¬«       �Œb y
c c}w )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´   )rv   r  r  r  r¸   rQ   )ÚormrzÚormrz_lworkr-   )ÚunmrzÚunmrz_lworkr¹   Nry   r|   rv   r½   r   rË  r.  r¼   r¯  )r±  rº   )r±  r‰   rº   )r7   r  rX  rÓ   rÔ   r'   r"   r   r   r/   r0  r   r5  ry   r…   r²  r   r  rê   r   r   r   )r2   ÚqmÚqnÚcnrØ   r1   r  r  Úlwork_rzrˆ  r|   Úorun_mrzÚorun_mrz_lwÚ	lwork_mrzr  rs   ri   r  r  rŒ   r    rÒ  r‰   ÚtolÚcqs                            r3   Útest_ormrz_unmrzr9  §  s6  € ô �)‰)×
Ñ
 Ó
%€CØ�J€BˆˆBÜ¤Ó'ó .!‰
ˆˆUÜ*Ð+CØ16ô8‰ˆˆxä! (¨B°Ó3ˆà�Š7Ü�S—X‘X˜b "Ó%×,Ñ,¨UÓ3Ó4ˆAØ—‘˜˜RÓ ×'Ñ'¨Ó.ˆAÜ$4Ð5MØ;@ô%BÑ!ˆH‘kô �c—h‘h˜r 2Ó&¨¯©°"°bÓ)9¸"Ñ)<Ñ<×DÑDÀUÓKÓLˆAØ—‘˜"˜bÓ!¤D¨¨R£L°¡OÑ3×;Ñ;¸EÓBˆAÜ$4Ð5MØ;@ô%BÑ!ˆH�kô # ;°°BÓ7ˆ	Ù˜a xÔ0‰ˆˆC�ô �I‰I”r—v‘v˜b¨Ô.°²1°b±c°6±
Ð;Ó<ˆÜ�V‰V�B˜eÔ$ˆÜDIÈ"ÃIÖN¸qˆr�#�a‘&˜˜A˜3¢˜6™Ÿ™Ÿ™¨¨A¨3²¨6©¯©Ó)9Ó:Ñ:Ó:ÐNˆÐNÜ”2—6‘6˜3Óˆð ˜Q’w‘ CˆØ”—‘™E #›JŸO™OÓ,Ñ,ˆá˜B  Q¨iÔ8‰ˆˆDÜ�˜‘	ÔÜ˜˜QŸU™U 1›X™¤z°!£}¸3ÀRÕHá˜B  Q¨e¸9ÔE‰ˆˆDÜ�˜‘	ÔÜ˜˜QŸV™V›XŸZ™ZŸ^™^¨AÓ.Ñ.´
¸1³ÀCØõ	!ñ ˜B  Q¨S¸	ÔB‰ˆˆDÜ�˜‘	ÔÜ˜˜QŸU™U 1›X™¤z°!£}¸3ÀRÕHá˜B  Q¨S¸ÀYÔO‰ˆˆDÜ�˜‘	ÔÜ˜˜QŸU™U 1§6¡6£8§:¡:Ó.Ñ.´
¸1³ÀCØ÷	!ñ[.!ùò, Os   Æ/A	Nc            	      óö  — t         j                  j                  d«      } t        t        «      D �]G  \  }}d}|dkD  r:| j                  ||«      | j                  ||«      dz  z   j                  |«      }d}n#| j                  ||«      j                  |«      }d}t        d|¬«      \  }} ||«      \  }}	t        |	d	k(  «        ||d
¬«      \  }
}	t        |	d	k(  «        |||d¬«      \  }}	t        |	d	k(  «        |||d
¬«      \  }}	t        |	d	k(  «       t        |dz   |dz  f|¬«      }t        |«      dd…|dz  d…f   |dd…dd…f<   ||dz  dz   d…dd…fxx   t        |«      d|dz  …d|dz  …f   j                  «       j                  z  cc<   t        |dz   |dz  f|¬«      }t        |«      dd…d|dz  …f   |dd…dd…f<   |d|dz  …dd…fxx   t        |«      |dz  d…|dz  d…f   j                  «       j                  z  cc<   t        ||j                  dd¬«      «       t        ||j                  «       j                  j                  dd¬«      «       t        |
|j                  dd¬«      «       t        ||j                  «       j                  j                  dd¬«      «        |||«      \  }}	t        |	d	k(  «        |||
d
¬«      \  }}	t        |	d	k(  «        ||||d¬«      \  }}	t        |	d	k(  «        ||||d
¬«      \  }}	t        |	d	k(  «       t        |t        |«      «       t        |t        |«      «       t        |t        |«      «       t        |t        |«      «       �ŒJ y)úz
    Test conversion routines between the Rectangular Full Packed (RFP) format
    and Standard Triangular Array (TR)
    r´   rµ   rP   r-   r|   ry   )r#  r$  r¸   r   rJ  ©rM  rT  )ÚtransrrM  rQ   Nr�   ÚF)Úorder)r7   r  rX  rÓ   rÔ   r   r/   r'   r   r   r   r²  ry   r   r   Úreshape)r2   rØ   r1   rÚ   ÚA_fullr=  r#  r$  ÚA_tf_Uri   Ú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                      r3   Útest_tfttr_trttfrL  á  sX  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó 1:‰
ˆˆUØˆØ�Š7Ø—h‘h˜q !“n s§x¡x°°1£~°bÑ'8Ñ8×@Ñ@ÀÓGˆFØ‰Fà—h‘h˜q !“n×,Ñ,¨UÓ3ˆFØˆFä'Ð(:À%ÔH‰ˆˆuÙ˜V“}‰ˆ�Ü�˜‘	ÔÙ˜V¨#Ô.‰ˆ�Ü�˜‘	ÔÙ˜v¨f¸3Ô?‰ˆ�$Ü�˜‘	ÔÙ˜v¨f¸3Ô?‰ˆ�$Ü�˜‘	Ôô ˜!˜A™#˜q !™t˜¨EÔ2ˆÜ ›<ª¨1¨a©4©5¨Ñ1ˆ��"�’a�ÑØ��A‘�a‘‘š!�Ó¤ V£¨U¨a°©d¨U°E°Q¸±T°E¨\Ñ :× ?Ñ ?Ó A× CÑ CÑCÓä˜!˜A™#˜q !™t˜¨EÔ2ˆÜ˜v›,¢q¨%¨1¨a©4¨% xÑ0ˆ�‘’Q�‰Ø��!�Q‘$�š�Óœd 6›l¨1¨a©4©5°!°Q±$±%¨<Ñ8×=Ñ=Ó?×AÑAÑAÓä! &¨(×*:Ñ*:¸2ÀSÐ*:Ó*IÔJÜ! (Ø"*§-¡-£/×"3Ñ"3×";Ñ";¸BÀcÐ";Ó"Jô	Lô 	" &¨(×*:Ñ*:¸2ÀSÐ*:Ó*IÔJÜ! (Ø"*§-¡-£/×"3Ñ"3×";Ñ";¸BÀcÐ";Ó"Jô	Lñ ˜Q Ó'‰ˆ�Ü�˜‘	ÔÙ˜Q ¨SÔ1‰ˆ�Ü�˜‘	ÔÙ˜q (°6ÀÔD‰ˆ�$Ü�˜‘	ÔÙ˜q (°6ÀÔD‰ˆ�$Ü�˜‘	Ôä! &¬$¨v«,Ô7Ü! (¬D°«LÔ9Ü! &¬$¨v«,Ô7Ü! (¬D°«LÖ9ñc1:r5   c                  óœ  — t         j                  j                  d«      } t        t        «      D �]š  \  }}d}|dkD  r8| j                  ||«      | j                  ||«      dz  z   j                  |«      }n!| j                  ||«      j                  |«      }t        d|¬«      \  }} ||«      \  }}t        |dk(  «        ||d¬	«      \  }	}t        |dk(  «       t        |«      }
t        ||dz   z  d
z  |¬«      }t        |«      j                  |
   |dd t        |«      }
t        ||dz   z  d
z  |¬«      }t        |«      j                  |
   |dd t        ||«       t        |	|«        |||«      \  }}t        |dk(  «        |||	d¬	«      \  }}t        |dk(  «       t        |t        |«      «       t        |t        |«      «       �Œ� y)r;  r´   rµ   rP   r-   )ÚtrttpÚtpttrr¸   r   rJ  r<  rQ   N)r7   r  rX  rÓ   rÔ   r   r/   r'   r   r   r   r   ry   r   r   r   )r2   rØ   r1   rÚ   rA  rN  rO  ÚA_tp_Uri   ÚA_tp_LÚindsÚA_tp_U_mÚA_tp_L_mrH  rI  s                  r3   Útest_tpttr_trttprU    s§  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó  8‰
ˆˆUØˆØ�Š7Ø—h‘h˜q !“n s§x¡x°°1£~°bÑ'8Ñ8×@Ñ@ÀÓG‰Fà—h‘h˜q !“n×,Ñ,¨UÓ3ˆFä'Ð(:À%ÔH‰ˆˆuÙ˜V“}‰ˆ�Ü�˜‘	ÔÙ˜V¨#Ô.‰ˆ�Ü�˜‘	Ôô ˜A‹ˆÜ˜˜A˜a™C™ !™¨5Ô1ˆÜ˜F“|—~‘~ tÑ,ˆ‘ˆä˜A‹ˆÜ˜˜A˜a™C™ !™¨5Ô1ˆÜ˜F“|—~‘~ tÑ,ˆ‘ˆä! &¨(Ô3Ü! &¨(Ô3ñ ˜Q Ó'‰ˆ�Ü�˜‘	ÔÙ˜Q ¨SÔ1‰ˆ�Ü�˜‘	Ôä! &¬$¨v«,Ô7Ü! &¬$¨v«,Ö7ñA 8r5   c                  óz  — t         j                  j                  d«      } t        t        «      D �]	  \  }}d}|dkD  rd| j                  ||«      | j                  ||«      dz  z   j                  |«      }||j                  «       j                  z   |t        |«      z  z   }n?| j                  ||«      j                  |«      }||j                  z   |t        |«      z  z   }t        d|¬«      \  }}} ||«      \  }}	 |||«      \  }
}	t        |	dk(  «        |||
«      \  }}t        |«      }t        ||«       �Œ y)	zk
    Test Cholesky factorization of a positive definite Rectangular Full
    Packed (RFP) format array
    r´   rµ   rP   r-   )Úpftrfr#  r$  r¸   r   N)r7   r  rX  rÓ   rÔ   r   r/   r²  ry   r   r'   r   r   r   )r2   rØ   r1   rÚ   rˆ  rW  r#  r$  r'  ri   Ú	Achol_rfpÚA_chol_rr?   ÚAchols                 r3   Ú
test_pftrfr[  D  s"  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó 3‰
ˆˆUØˆØ�Š7Ø—‘˜!˜Q“ #§(¡(¨1¨a£.°Ñ"3Ñ3×;Ñ;¸EÓBˆAØ�A—F‘F“H—J‘J‘ ¤3 q£6¡Ñ)‰Aà—‘˜!˜Q“×'Ñ'¨Ó.ˆAØ�A—C‘C‘˜!œC ›F™(Ñ"ˆAä.Ð/JØ5:ô<Ñˆˆu�eñ ˜!“H‰	ˆˆTÙ  3›-‰ˆ	�4Ü�˜‘	ÔÙ˜A˜yÓ)‰ˆ�!Ü˜“ˆÜ! (¨EÖ2ñ%3r5   c                  ó¾  — t         j                  j                  d«      } t        t        «      D �]+  \  }}d}|dkD  rd| j                  ||«      | j                  ||«      dz  z   j                  |«      }||j                  «       j                  z   |t        |«      z  z   }n?| j                  ||«      j                  |«      }||j                  z   |t        |«      z  z   }t        d|¬«      \  }}}} ||«      \  }	}
 |||	«      \  }}
 |||«      \  }}
t        |
dk(  «        |||«      \  }}t        |«      }t        |t        |«      |dz  dk(  rd	nd
¬«       �Œ. y)z
    Test Cholesky factorization of a positive definite Rectangular Full
    Packed (RFP) format array to find its inverse
    r´   rµ   rP   r-   )ÚpftrirW  r#  r$  r¸   r   rQ   rS   rU   r   N)r7   r  rX  rÓ   rÔ   r   r/   r²  ry   r   r'   r   r   r   r   )r2   rØ   r1   rÚ   rˆ  r]  rW  r#  r$  r'  ri   Ú
A_chol_rfpÚ	A_inv_rfpÚA_inv_rr?   ÚAinvs                   r3   Ú
test_pftrirb  _  sT  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó D‰
ˆˆUØˆØ�Š7Ø—‘˜!˜Q“ #§(¡(¨1¨a£.°Ñ"3Ñ3×;Ñ;¸EÓBˆAØ�A—F‘F“H—J‘J‘ ¤3 q£6¡Ñ)‰Aà—‘˜!˜Q“×'Ñ'¨Ó.ˆAØ�A—C‘C‘˜!œC ›F™(Ñ"ˆAä%5ð 7@ð =Bô	&CÑ"ˆˆu�e˜Uñ ˜!“H‰	ˆˆTÙ   C›=Ñˆ
�DÙ  :Ó.‰ˆ	�4Ü�˜‘	ÔÙ˜1˜iÓ(‰
ˆ�Ü�1‹vˆÜ! '¬4°«:Ø/2°Q©w¸!ª|©!À÷	Dñ-Dr5   c                  óV  — t         j                  j                  d«      } t        t        «      D �]w  \  }}d}|dkD  rd| j                  ||«      | j                  ||«      dz  z   j                  |«      }||j                  «       j                  z   |t        |«      z  z   }n?| j                  ||«      j                  |«      }||j                  z   |t        |«      z  z   }t        |df|¬«      }t        |dz   df|¬«      }t        |dz
  df|¬«      }t        d|¬«      \  }}	}
} |
|«      \  }} |	||«      \  }} ||||«      \  }}t        |d	k(  «       t        t        ||||«        ||||«      \  }}t        |d	k(  «       t        t!        ||«      ||dz  d	k(  rd
nd¬«       �Œz y)z…
    Test Cholesky factorization of a positive definite Rectangular Full
    Packed (RFP) format array and solve a linear system
    r´   rµ   rP   r-   rR   r¸   rQ   )ÚpftrsrW  r#  r$  r   rS   rU   r   N)r7   r  rX  rÓ   rÔ   r   r/   r²  ry   r   r   r'   r   r  r  r   r   )r2   rØ   r1   rÚ   rˆ  r  ÚBf1ÚBf2rd  rW  r#  r$  r'  ri   r^  r(  s                   r3   Ú
test_pftrsrg    s¥  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó D‰
ˆˆUØˆØ�Š7Ø—‘˜!˜Q“ #§(¡(¨1¨a£.°Ñ"3Ñ3×;Ñ;¸EÓBˆAØ�A—F‘F“H—J‘J‘ ¤3 q£6¡Ñ)‰Aà—‘˜!˜Q“×'Ñ'¨Ó.ˆAØ�A—C‘C‘˜!œC ›F™(Ñ"ˆAä�!�Q�˜uÔ%ˆÜ�A�a‘C˜�8 5Ô)ˆÜ�A�a‘C˜�8 5Ô)ˆÜ%5ð 7@ð =Bô	&CÑ"ˆˆu�e˜Uñ ˜!“H‰	ˆˆTÙ   C›=Ñˆ
�Dá˜1˜j¨#Ó.‰
ˆˆdÜ�˜‘	ÔÜ”i ¨¨:°sÔ;Ù˜1˜j¨!Ó,‰
ˆˆdÜ�˜‘	ÔÜ!¤%¨¨1£+¨tØ/2°Q©w¸!ª|©!À÷	Dñ7Dr5   c            
      ó0  — t         j                  j                  d«      } t        t        «      D �]d  \  }}d}|dkD  rd| j                  ||«      | j                  ||«      dz  z   j                  |«      }||j                  «       j                  z   |t        |«      z  z   }n?| j                  ||«      j                  |«      }||j                  z   |t        |«      z  z   }|dk  rdnd}t        dd	|› d
�f|¬«      \  }}} ||«      \  }	}
| j                  |d«      j                  |«      } ||dd|d|	«      } |||«      \  }}
t        |t        |j                  |j                  «       j                  «       d|z  z   «      |dz  dk(  rdnd¬«       �Œg y)zT
    Test for performing a symmetric rank-k operation for matrix in RFP format.
    r´   rµ   rP   r-   rQ   rî   Úhr#  r$  Úfrkr¸   r�   r   rS   rU   r   N)r7   r  rX  rÓ   rÔ   r   r/   r²  ry   r   r'   r   r   r…   )r2   rØ   r1   rÚ   rˆ  Úprefixr#  r$  Úshfrkr'  r?   r|   ÚAfp_outÚA_outs                 r3   Útest_sfrk_hfrkro  ¤  s}  € ô �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó D‰
ˆˆUØˆØ�Š7Ø—‘˜!˜Q“ #§(¡(¨1¨a£.°Ñ"3Ñ3×;Ñ;¸EÓBˆAØ�A—F‘F“H—J‘J‘ ¤3 q£6¡Ñ)‰Aà—‘˜!˜Q“×'Ñ'¨Ó.ˆAØ�A—C‘C‘˜!œC ›F™(Ñ"ˆAà˜Q’w‘ CˆÜ.°¸ÀVÀHÈCÀ.Ð/QØ5:ô<Ñˆˆu�eñ �q“‰ˆˆQØ�H‰H�Q˜‹N×!Ñ! %Ó(ˆÙ˜˜1˜b ! Q¨Ó,ˆÙ˜˜GÓ$‰ˆˆqÜ! %¬¨q¯u©u°Q·V±V³X·Z±ZÓ/@Ð.@À1ÀQÁ3Ñ.FÓ)GØ/2°Q©w¸!ª|©!À÷	Dñ#Dr5   c            
      óÌ  — t         j                  j                  d«      } t        t        «      D �]²  \  }}d}|dkD  r[| j                  dd||f«      | j                  dd||f«      dz  z   j                  |«      }||j                  «       j                  z   }nB| j                  dd||f«      j                  |«      }||j                  z   |t        |«      z  z   }dt        j                   |d«      j                  «      z  }t        d	|¬
«      \  }}}t        ||d¬«      }	t        |dd¬«      \  }
}}t        ||d¬«      }	 ||d|	¬«      \  }}} |||d¬«      \  }}}t        t!        |d«      t!        |
|dd…f   d«      |d¬«       t        |dd¬«      \  }}} ||d¬«      \  }}} |||d¬«      \  }}}t        t#        |d«      t#        ||dd…f   d«      |d¬«       �Œµ y)zt
    Test for going back and forth between the returned format of he/sytrf to
    L and D factors/permutations.
    r´   rv   rP   iâÿÿÿé   r-   r-  r½   )Úsyconvrû  rù  r¸   rà  F)r  Ú	hermitianrÊ  r�   NrË  r.  r   )r7   r  rX  rÓ   rÔ   r   r/   r²  ry   r   r  rê   r'   r"   r   r   r   r   )r2   rØ   r1   rÚ   rˆ  r7  rr  ÚtrfÚ	trf_lworkÚlwrJ  ÚDÚpermr  rÿ  ri   ra   rÐ  rT  s                      r3   Útest_syconvry  ¾  sÝ  € ô
 �)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó L‰
ˆˆUØˆà�Š7Ø—‘˜S " q¨! fÓ-Ø—‘˜S " q¨! fÓ-¨bÑ0ñ1ß28±&¸³-ð ð �A—F‘F“H—J‘J‘‰Aà—‘˜C  a¨ VÓ,×3Ñ3°EÓ:ˆAØ�A—C‘C‘˜!œC ›F™(Ñ"ˆAà”"—*‘*™U 3›ZŸ_™_Ó-Ñ-ˆÜ!1ð 3BØINô"PÑˆ��Yä˜I q°Ô2ˆÜ˜ !¨uÔ5‰
ˆˆ1ˆdÜ˜I q°Ô2ˆÙ˜a q°Ô3‰ˆˆT�4Ù˜C ¨QÔ/‰
ˆˆ1ˆdÜœ˜Q ›¤d¨1¨T²1¨W©:°rÓ&:ÀÈ2ÕNô ˜ !¨uÔ5‰
ˆˆ1ˆdÙ˜a qœ/‰ˆˆT�4Ù˜C ¨QÔ/‰
ˆˆ1ˆdÜœ˜Q ›
¤D¨¨4²¨7©°QÓ$7¸cÈ×Kñ5Lr5   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestBlockedQRzd
    Tests for the blocked QR factorization, namely through geqrt, gemqrt, tpqrt
    and tpmqr.
    c           
      óœ  — t         j                  j                  d«      }t        t        «      D �]š  \  }}d}|dkD  r8|j                  ||«      |j                  ||«      dz  z   j                  |«      }n!|j                  ||«      j                  |«      }dt        j                   |d«      j                  «      z  }t        d|¬«      \  }} |||«      \  }	}
}|d	k(  sJ ‚t        j                  |	d
«      t        j                  ||¬«      z   }t        j                  ||¬«      ||
z  |j                  j                  «       z  z
  }t        j                  |	«      }t        |j                  j                  «       |z  t        j                  ||¬«      |d¬«       t        ||z  ||d¬«       |dkD  r:|j                  ||«      |j                  ||«      dz  z   j                  |«      }d}n#|j                  ||«      j                  |«      }d}dD ]‹  }d|fD ]‚  } ||	|
|||¬«      \  }}|d	k(  sJ ‚||k(  r|j                  j                  «       }n|}|dk(  r||z  }n||z  }t        |||d¬«       ||fdk(  sŒc ||	|
|«      \  }}|d	k(  sJ ‚t!        ||«       Œ„ Œ� t#        t$        ||	|
|d¬«       t#        t$        ||	|
|d¬«       �Œ� y )Nr´   rµ   rP   r-   r-  r½   )ÚgeqrtÚgemqrtr¸   r   r�   rË  r.  r|   ry   ©rJ  r¯  rS  ©r±  r‰   rJ  ©rJ  rS  rˆ  r°  r&  )r7   r  rX  rÓ   rÔ   r   r/   r  rê   r'   r   r   ry   r²  r   r   r   r  r  )r`   r2   rØ   r1   rÚ   rˆ  r7  r}  r~  ra   Útri   rö   rÒ  r¯  r|   Ú	transposer±  r‰   rˆ   ÚqÚqCÚ	c_defaults                          r3   Útest_geqrt_gemqrtzTestBlockedQR.test_geqrt_gemqrtç  sž  € Ü�i‰i×#Ñ# DÓ)ˆÜ#¤FÓ+ó :	A‰JˆC�ØˆAà�QŠwØ—X‘X˜a “^ c§h¡h¨q°!£n°RÑ&7Ñ7×?Ñ?ÀÓF‘à—X‘X˜a “^×+Ñ+¨EÓ2�à”b—j‘j¡ s£§¡Ó1Ñ1ˆCÜ,Ð-@ÈÔN‰MˆE�6á˜q !›‰JˆAˆq�$Ø˜1’9Ð�9ô —‘˜˜2“¤§¡¨°Ô!7Ñ7ˆAä—‘�q Ô&¨¨Q©°·±·±³Ñ);Ñ;ˆAÜ—‘˜“
ˆAô ˜AŸC™CŸH™H›J¨™N¬B¯F©F°1¸EÔ,BÈØ!#õ%ä˜A ™E 1¨3°RÕ8à�QŠwØ—X‘X˜a “^ c§h¡h¨q°!£n°RÑ&7Ñ7×?Ñ?ÀÓF�Ø‘	à—X‘X˜a “^×+Ñ+¨EÓ2�Ø�	à"ò 3�Ø! 9Ð-ò 3�EÙ$ Q¨¨1°4¸uÔE‘G�A�tØ 1š9Ð$˜9à 	Ò)ØŸC™CŸH™H›J™à˜à˜s’{Ø ™U™à ™U˜ä# A r°¸"Õ=ð ˜e�}¨
Ó2Ù*0°°A°q«/™˜	 4Ø# qšyÐ(˜yÜ$ Y°Õ2ñ)3ð3ô0 œ) V¨Q°°1¸3Õ?Üœ) V¨Q°°1¸C×@ñu:	Ar5   c                 ó
  — t         j                  j                  d«      }t        t        «      D �]Ò  \  }}d}|dkD  ro|j                  ||«      |j                  ||«      dz  z   j                  |«      }|j                  ||«      |j                  ||«      dz  z   j                  |«      }nB|j                  ||«      j                  |«      }|j                  ||«      j                  |«      }dt        j                   |d«      j                  «      z  }t        d|¬«      \  }}	d	|d
z  |fD �]Ð  }
 ||
|||«      \  }}}}|d	k(  sJ ‚t        t        j                  |d«      t        j                  |d«      «       t        t        j                  ||
|z
  dz
  «      t        j                  ||
|z
  dz
  «      «       t        j                  ||
|z
  «      t        j                  ||
|z
  «      }}t        j                  t        j                  ||¬«      |f«      }t        j                  d
|z  |¬«      ||z  |j                  j!                  «       z  z
  }t        j                  t        j                  |«      t        j"                  |«      f«      }t%        |j                  j!                  «       |z  t        j                  d
|z  |¬«      |d¬«       t%        ||z  t        j                  t        j                  |«      |f«      |d¬«       |dkD  rq|j                  ||«      |j                  ||«      dz  z   j                  |«      }|j                  ||«      |j                  ||«      dz  z   j                  |«      }d}nD|j                  ||«      j                  |«      }|j                  ||«      j                  |«      }d}dD �]  }d|fD ]ø  } |	|
||||||¬«      \  }}}|d	k(  sJ ‚||k(  r|j                  j!                  «       }n|}|dk(  r8t        j                  ||fd	¬«      }t        j                  ||fd	¬«      }||z  }n7t        j                  ||fd¬«      }t        j                  ||fd¬«      }||z  }t%        |||d¬«       ||fdk(  sŒÊ |	|
||||«      \  }} }|d	k(  sJ ‚t        ||«       t        | |«       Œú �Œ t'        t(        |	|
||||d¬«       t'        t(        |	|
||||d¬«       �ŒÓ �ŒÕ y )Nr´   rµ   rP   r-   r-  r½   )ÚtpqrtÚtpmqrtr¸   r   rQ   r�   rË  r.  r|   ry   r  rS  r€  rJ  r–   r�  rˆ  r°  r&  )r7   r  rX  rÓ   rÔ   r   r/   r  rê   r'   r   r   r   r4  r   ry   r²  r   r   r  r  )!r`   r2   rØ   r1   rÚ   rˆ  r  r7  r‰  rŠ  Úlra   r‡   r‚  ri   ÚB_pentÚb_pentrö   rÒ  r¯  r|   rw  rƒ  r±  r‰   rˆ   rp   r„  ÚcdÚCDÚqCDr†  Ú	d_defaults!                                    r3   Útest_tpqrt_tpmqrtzTestBlockedQR.test_tpqrt_tpmqrt%  s{  € Ü�i‰i×#Ñ# DÓ)ˆÜ#¤FÓ+ó O	K‰JˆC�ØˆAà�QŠwØ—X‘X˜a “^ c§h¡h¨q°!£n°RÑ&7Ñ7×?Ñ?ÀÓF�Ø—X‘X˜a “^ c§h¡h¨q°!£n°RÑ&7Ñ7×?Ñ?ÀÓF‘à—X‘X˜a “^×+Ñ+¨EÓ2�Ø—X‘X˜a “^×+Ñ+¨EÓ2�à”b—j‘j¡ s£§¡Ó1Ñ1ˆCÜ,Ð-@ÈÔN‰MˆE�6ð ˜˜a™ �^ó @K�Ù % a¨¨A¨qÓ 1‘��1�a˜Ø˜q’yÐ �yô œRŸW™W Q¨›^¬R¯W©W°Q¸«^Ô<ô œRŸW™W Q¨¨A©°©	Ó2´B·G±G¸A¸qÀ1¹uÀq¹yÓ4IÔJô "$§¡¨¨A°©EÓ!2´B·G±G¸A¸qÀ1¹uÓ4E˜�ô —N‘N¤B§F¡F¨1°EÔ$:¸FÐ#CÓD�ä—F‘F˜1˜q™5¨Ô.°°Q±¸¿¹¿¹»Ñ1CÑC�Ü—N‘N¤B§G¡G¨A£J´·±¸aÓ0@Ð#AÓB�ô   §¡§¡£
¨Q¡´·±°q¸1±uÀEÔ0JØ%(¨rõ3ä  A¡¤r§~¡~´r·w±w¸q³zÀ6Ð6JÓ'KØ%(¨rõ3ð ˜’7ØŸ™ ! Q›¨#¯(©(°1°a«.¸Ñ*;Ñ;×CÑCÀEÓJ�AØŸ™ ! Q›¨#¯(©(°1°a«.¸Ñ*;Ñ;×CÑCÀEÓJ�AØ #‘IàŸ™ ! Q›×/Ñ/°Ó6�AØŸ™ ! Q›×/Ñ/°Ó6�AØ #�Ià&ó 7�DØ"% yÐ!1ò 7˜Ù%+¨A¨q°!°Q¸ÀØ27ô&9™
˜˜1˜dà# qšyÐ(˜yà  IÒ-Ø !§¡§¡£
™Aà !˜Aà 3š;Ü!#§¡°°A°¸QÔ!?˜BÜ!#§¡°°A°¸QÔ!?˜BØ"# b¡&™Cä!#§¡°°A°¸QÔ!?˜BÜ!#§¡°°A°¸QÔ!?˜BØ"$ q¡&˜Cä'¨¨C°cÀÕCà  %˜=¨JÓ6Ù9?ÀÀ1ÀaÈÈAÓ9NÑ6˜I y°$Ø#'¨1¢9Ð, 9Ü(¨°AÔ6Ü(¨°AÕ6ò37ð7ô: œi¨°°A°q¸!¸QÀSÕIÜœi¨°°A°q¸!¸QÀc×JòA@KñO	Kr5   N)r¢   r£   r¤   r@   r‡  r’  r¥   r5   r3   r{  r{  á  s   „ ñò
<Aó|QKr5   r{  c                  ó:  — t         j                  j                  d«      } t        t        «      D �]i  \  }}d}d}t        d|¬«      }|dkD  rj| j                  |||z
  «      j                  |«      d| j                  |||z
  «      j                  |«      z  z   }||j                  «       j                  z  }n3| j                  |||z
  «      j                  |«      }||j                  z  } ||«      \  }}}	}
t        |«      }d||	|z
  d …|	|z
  d …f<   t        |
d«       d	t        j                  t         j                  «      j                  z  }d	t        j                  t         j                  «      j                  z  }|d
v r|n|}t!        ||dz
     d d …|dz
  f   |j                  «       j                  |z  d|¬«        ||d¬«      \  }}}	}
t#        |«      }d||	|z
  d …|	|z
  d …f<   t        |
d«       d	t        j                  t         j                  «      j                  z  }d	t        j                  t         j                  «      j                  z  }|d
v r|n|}t!        ||dz
     d d …|dz
  f   ||j                  «       j                  z  d|¬«       �Œl y )Nr´   rv   rQ   Úpstrfr¸   rP   r-   rË  éè  ©r   rQ   rO  rà  ©r7   r  rX  rÓ   rÔ   r'   r   r/   r²  ry   r   r   rÖ   r¾  r×   r8  r   r   )r2   rØ   r1   rÚ   rš  r”  rˆ  rˆ   ÚpivÚr_cri   rT  Úsingle_atolÚdouble_atolr/  rJ  s                   r3   Ú
test_pstrfrœ  y  óG  € Ü
�)‰)×
Ñ
 Ó
%€CÜ¤Ó'ó #P‰
ˆˆUàˆØˆÜ  °Ô6ˆð �Š7Ø—‘˜˜A˜a™CÓ ×'Ñ'¨Ó.°°c·h±h¸qÀ!ÀAÁ#Ó6F×6MÑ6MÈeÓ6TÑ1TÑTˆAØ�A—F‘F“H—J‘J‘‰Aà—‘˜˜A˜a™CÓ ×'Ñ'¨Ó.ˆAØ�A—C‘C‘ˆAá! !›HÑˆˆ3��TÜ�‹GˆØ "ˆˆ#�‰'‰(�C˜!‘G‘HÐ
Ñä�T˜1Ôð œRŸX™X¤b§j¡jÓ1×5Ñ5Ñ5ˆØœRŸX™X¤b§j¡jÓ1×5Ñ5Ñ5ˆØ! V™m‰{°ˆÜ˜˜#˜a™%™¢ C¨¡E Ñ*¨A¯F©F«H¯J©J¸©NÀÈ$ÕOá! !¨1Ô-Ñˆˆ3��TÜ�‹GˆØ "ˆˆ#�‰'‰(�C˜!‘G‘HÐ
Ñä�T˜1ÔàœRŸX™X¤b§j¡jÓ1×5Ñ5Ñ5ˆØœRŸX™X¤b§j¡jÓ1×5Ñ5Ñ5ˆØ! V™m‰{°ˆÜ˜˜#˜a™%™¢ C¨¡E Ñ*¨A°·±³·
±
©NÀÈ$×OñG#Pr5   c                  ó:  — t         j                  j                  d«      } t        t        «      D �]i  \  }}d}d}t        d|¬«      }|dkD  rj| j                  |||z
  «      j                  |«      d| j                  |||z
  «      j                  |«      z  z   }||j                  «       j                  z  }n3| j                  |||z
  «      j                  |«      }||j                  z  } ||«      \  }}}	}
t        |«      }d||	|z
  d …|	|z
  d …f<   t        |
d«       d	t        j                  t         j                  «      j                  z  }d	t        j                  t         j                  «      j                  z  }|d
v r|n|}t!        ||dz
     d d …|dz
  f   |j                  «       j                  |z  d|¬«        ||d¬«      \  }}}	}
t#        |«      }d||	|z
  d …|	|z
  d …f<   t        |
d«       d	t        j                  t         j                  «      j                  z  }d	t        j                  t         j                  «      j                  z  }|d
v r|n|}t!        ||dz
     d d …|dz
  f   ||j                  «       j                  z  d|¬«       �Œl y )Nr´   rv   rQ   Úpstf2r¸   rP   r-   rË  r•  r–  rO  rà  r—  )r2   rØ   r1   rÚ   rš  rŸ  rˆ  rˆ   r˜  r™  ri   rT  rš  r›  r/  rJ  s                   r3   Ú
test_pstf2r   ¡  r�  r5   c                  ó¾  — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g«      }t        t        «      D �]  \  }}|dk  r3t        j                  g d	¢g d
¢g d¢g d¢g«      }|j	                  |«      }nUt        j                  g d¢g d¢g d¢g|¬«      }|t        j                  g d¢g d¢g d¢g«      dz  z  }|j	                  |«      }t        d|¬«      } ||«      \  }}}}	}
}|dk  r,t        | j	                  |«      |d d …d f   |z  |z  dd¬«       Œát        |j	                  |«      |d d …d f   |z  |z  dd¬«       �Œ y )N)g      ä?r½   g�1w-!¤?gÃdª`TRÛ¿)r½   g³êsµûá¿rñ  rñ  )gësµûËâ?rñ  g2æ®%äƒ®¿g,eâXá¿)rñ  g‚sF”öã¿g%ušž¿g?ÆÜï?)y/n£¼Ò¿¥½Á&á?yDioð…É´?×òAÏfí?y Òo_Îç¿À[ AñcÐ¿)yësµûËÖ¿òAÏfÕçÒ¿y±Pkšwœî?ñôJY†8¦¿y¨5Í;NÑ‘¿�•C‹lçÃ?)y´Yõ¹ÚŠë?1™*•ÔÁ?yÙ=yX¨Ñ¿@aÃÓ+ç?yÜh o�Å¿F¶óýÔxÁ¿rQ   )g   ÐˆÃBg   €tÒBgffffff @g   ÈÙ“ Â)ç      @gš™™™™™ÀgÑ®#®fD¾gffffffÀ)gHáz®Gù?g…ëQ¸…Àg'Vä»íó½g¤p=
×£ð¿)gÃõ(\�Âñ¿rí  gÈSƒÁ7Ð½r“  )gq=
×£põ¿g   €“ÜäAg�Âõ(\�À)g333333û¿g   ¬§ÓBg333333Ã¿)gZ9œ‚·�ð=gìQ¸…ëá¿gŽ‹‡›ÐÖ½r¸   )gffffff@g   tÞ…Br&  )g�Âõ(\�ö¿g   ÀZÖÁgq=
×£põ?)gEõoÃpÅ=g…ëQ¸…÷?gZ€Eq÷Ò½r-   Úgeequr   r  rO  )r7   rƒ   rÓ   rÔ   r/   r'   r   )Údesired_realÚdesired_cplxrØ   r1   rˆ  r£  rš  rˆ   ÚrowcndÚcolcndÚamaxri   s               r3   Ú
test_geequr©  É  sy  € Ü—8‘8Ò>Ú@Ú@Ú@ðBó C€Lô
 —8‘8ò 1ò1ò1ð2ó 3€Lô  ¤Ó'ó /‰
ˆˆUØ�Š7ä—‘ÒCÚEÚEÚEðGó HˆAð —‘˜“‰Aä—‘Ò:Ú:Ú:ð<àCHôJˆAð ”—‘Ò:Ú;Ú:ð<ó =à=?ñ@ñ @ˆAð —‘˜“ˆAä  °Ô6ˆÙ+0°«8Ñ(ˆˆ1ˆf�f˜d Dà�Š7Ü˜L×/Ñ/°Ó6¸º!¸T¸'¹
À1¹ÀQ¹Ø!"¨ö/ô ˜L×/Ñ/°Ó6¸º!¸T¸'¹
À1¹ÀQ¹Ø!"¨÷/ñ3/r5   c            	      ó  — t        j                  g d¢«      } t        t        «      D ]×  \  }}t        j                  d|¬«      } ||dk  rdnd«      }t        j                  t        dd«      D �cg c]
  }|d	|z  z  ‘Œ c}|¬«      }|t        j                  t        j                  |«      «      z  }t        d
|¬«      } ||«      \  }}	}
}t        t        j                  |«      j                  t        «      | «       ŒÙ y c c}w )N)
r   r   r   r   r   r   r�   r�   r  rH  rv   r¸   rQ   r½   r-   éûÿÿÿrT   r¾   Úsyequb)r7   rƒ   rÓ   rÔ   r   r5  Úrot90r2  r'   r   Úlog2r/   ré   )Údesired_log2srØ   r1   rˆ  r¶  rŒ   rp   r¬  rî   Úscondr¨  ri   s               r3   Útest_syequbr±  ö  sÏ   € Ü—H‘HÒ?Ó@€Mä¤Ó'ò 	<‰
ˆˆUÜ�F‰F�2˜UÔ#ˆÙ˜C !šG‘b¨Ó-ˆÜ�H‰H¬U°2°q«\Ö:¨�e˜b !™e“mÒ:À%ÔHˆØ	ŒR�X‰X”b—g‘g˜a“jÓ!Ñ!ˆä! (°%Ô8ˆÙ% a›yÑˆˆ5�$˜ä”R—W‘W˜Q“Z×&Ñ&¤sÓ+¨]Õ;ñ	<ùò ;s   Á0D
Tz.Failing on some OpenBLAS version, see gh-12276)Úreasonc            	      ó®  — t        j                  dgdz  dgdz  z   «      t        j                  t        j                  d«      d¬«      dz  z   } t        j                  | «      \  }}}}t        |d«       t        t        j                  |«      d	d
gdz  d	gz   dgdz  z   «       t        j                  dt        j                  t        j                  dd«      «      z  dz   «      } d| d<   d| d<   t        j                  | j                  t         j                  «      d¬«      \  }}}}t        |d«       t        t        j                  |«      g d¢«       y )NrQ   rT   iê  rX   rP   )rf  r-   r   rË  rñ  éüÿÿÿr«  rU   ù                i   ©rT   rT   y              0@)rT   r   rà  )r  r�   r�   r   r   r«  r   r�   r�   r  r  )r7   r2  r   r   Úzheequbr   r   r®  rœ   rÌ  Úcheequbr/   Ú	complex64)rˆ  rî   r°  r¨  ri   s        r3   Útest_heequbrº    s  € ô 	�‰���A‘˜˜˜q™Ñ Ó!¤B§G¡G¬B¯G©G°A«J¸!Ô$<¸RÑ$?Ñ?€AÜ!Ÿ>™>¨!Ó,Ñ€A€uˆd�DÜ��qÔÜ”B—G‘G˜A“J  S 	¨!¡¨r¨dÑ 2°b°T¸!±VÑ ;Ô<ä
�‰�”2—6‘6œ"Ÿ)™) B¨Ó*Ó+Ñ+¨bÑ0Ó1€AØ€A€d�GØ€A€d�GÜ!Ÿ>™>¨!¯(©(´2·<±<Ó*@ÈÔJÑ€A€uˆd�DÜ��qÔÜ”B—G‘G˜A“JÒ IÕJr5   c                  ó   — t         j                  j                  d«      } d}| j                  |«      }| j                  |«      | j                  |«      dz  z   }t	        t
        «      D �]  \  }}|dk  r:| j                  ||«      }|j                  |«      }||z  }|j                  |«      }nO| j                  ||«      | j                  ||«      dz  z   }|j                  |«      }||z  }|j                  |«      }t        d|¬«      }t        d|¬«      }	 ||d¬	«      \  }
}}} |	|
|||d¬
«      \  }}|dk  r!t        |j                  |«      ||z  d¬«       Œôt        |j                  |«      ||z  d¬«       �Œ y )Nr  rv   r-   rQ   Úgetc2r¸   Úgesc2r   ©r)  )Úoverwrite_rhsrS   r   )	r7   r  rX  r   rÓ   rÔ   r/   r'   r   )r2   rÚ   r¤  r¥  rØ   r1   rˆ  r‡   r¼  r½  r�  rÿ  Újpivri   rŒ   r\   s                   r3   Útest_getc2_gesc2rÁ    sg  € Ü
�)‰)×
Ñ
 Ó
#€CØ
€AØ—8‘8˜A“;€LØ—8‘8˜A“; §¡¨!£¨R¡Ñ/€Lä¤Ó'ó :‰
ˆˆUØ�Š7Ø—‘˜˜A“ˆAØ—‘˜“ˆAØ�LÑ ˆAØ—‘˜“‰Aà—‘˜˜A“ §¡¨!¨Q£°Ñ!2Ñ2ˆAØ—‘˜“ˆAØ�LÑ ˆAØ—‘˜“ˆAä  °Ô6ˆÜ  °Ô6ˆÙ$ Q°AÔ6ÑˆˆD�$˜Ù˜˜Q  d¸!Ô<‰ˆˆ5à�Š7Ü% l×&9Ñ&9¸%Ó&@Ø&'¨¡g°qö:ô & l×&9Ñ&9¸%Ó&@Ø&'¨¡g°q÷:ñ+:r5   r  )rU   rT   r¶  ÚjobarU   ÚjoburS   ÚjobvÚjobrrP   Újobpc                 óØ  — t         j                  j                  d«      }| \  }	}
dt        j                  |«      j                  z  }t        | ||«      }t        d|¬«      }|dk  }|dk  }|dk(  xr |	|
k(  }t        j                  |«      }|dk(  xr | xr | }|dk(  xr |xr | xr |}|dk(  xr |xr | xr |}|rd}n	|s|rd}nd	}|dkD  r|dk(  rt        t        ||||||||«	       y ||||||||¬
«      \  }}}}}}t        ||«       |�sW|d	   |d   z  |d|
 z  }t        |t        |d¬«      |¬«       |dk(  r|dd…d|
…f   }|rA|r?t        |t        j                  |«      z  |j                  «       j                  z  ||¬«       |r<t        |j                  «       j                  |z  t        j                   |
«      |¬«       |r<t        |j                  «       j                  |z  t        j                   |
«      |¬«       t        |d	   t         j"                  j%                  |«      «       t        |d   t        j&                  |«      «       t        |d   d	«       yy)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.
    r  r-  Úgejsvr¸   rQ   rP   r  rH  r   )rÂ  rÃ  rÄ  rÅ  ÚjobtrÆ  NF)r(  rŸ  )r7   r  rX  rÖ   r×   r4   r'   r”  r  r  r   r   r   r2  r²  ry   Úidentityr†  Úmatrix_rankÚcount_nonzero)r  r1   rÂ  rÃ  rÄ  rÅ  rÆ  rÉ  r2   rÙ   rÚ   r/  rˆ  rÈ  ÚlsvecÚrsvecÚl2tranÚ
is_complexÚinvalid_real_jobvÚinvalid_cplx_jobuÚinvalid_cplx_jobvÚexit_statusÚsvar¨  rö   rë   rì   ri   Úsigmas                                r3   Útest_gejsv_generalr×  8  sc  € ôB �)‰)×
Ñ
 Ó
#€Cð �D€A€qØ”—‘˜%“×$Ñ$Ñ$€DÜ# D¨%°Ó5€AÜ˜W¨EÔ2€Eð
 �1‰H€EØ�1‰H€EØ�a‰iÒ%˜a 1™f€FÜ—‘ Ó#€Jà ™ÒH¨U¨ÒH¸Z¸ÐØ ™ÒM¨UÒ-=°vÐ(>ÒMÀ:ÐØ ™ÒM¨UÒ-=°vÐ(>ÒMÀ:Ðñ
 Ø‰Ù	Ñ/Ø‰àˆàˆqŠ�t˜q’yÜ”i ¨¨4°°t¸TÀ4ÈÕNá',¨QØ26Ø26Ø26Ø26Ø26Ø26ô(8Ñ$ˆˆQ��4˜ ô 	�T˜;Ô'ò ð ˜!‘W˜t A™wÑ&¨#¨b¨q¨'Ñ1ˆEÜ˜E¤3 q°UÔ#;À$ÕGà�qŠyð ’a˜˜!˜�e‘H�á™Ü ¤B§G¡G¨E£NÑ 2°Q·V±V³X·Z±ZÑ ?ÀÈÕNÙÜ §¡£§
¡
¨Q¡´·±¸A³ÀTÕJÙÜ §¡£§
¡
¨Q¡´·±¸A³ÀTÕJä˜˜q™¤2§9¡9×#8Ñ#8¸Ó#;Ô<Ü˜˜q™¤2×#3Ñ#3°EÓ#:Ô;ô ˜˜q™ 1Õ%ð5 r5   c                 ó
  — t        d| ¬«      } |d«      \  }}}}}}t        |d«       t        |j                  d«       t        |j                  d«       t        |t        j                  dg| ¬«      «       t        j
                  d| ¬«      } ||«      \  }}}}}}t        |d«       t        |j                  d«       t        |j                  d«       t        |t        j                  dg| ¬«      «       t        j
                  d| ¬«      } ||«      \  }}}}}}t        |d«       t        |j                  d«       t        |j                  d«       t        |t        j                  g | ¬«      «       t        j                  t        j                  d«      j                  d	d	«      «      j                  | «      }t        j                  ||j                  z   «      }|j                  d
«      }	 ||«      }
t        ||	«       y)z*Test edge arguments return expected statusrÈ  r¸   r½   r   ©rP   rP   )rP   r®  r-  rv   rˆ  N)r'   r   r0   r7   rƒ   r   ÚsinrÌ  r@  r/   Úasfortranarrayry   r³  r   )r1   rÈ  rÕ  r¨  rö   rë   rì   ri   rˆ  ÚAcr?   s              r3   Útest_gejsv_edge_argumentsrÝ  ¤  s•  € ô ˜W¨EÔ2€Eñ $)¨£9Ñ €CˆˆAˆt�U˜DÜ��qÔÜ�—‘˜&Ô!Ü�—‘˜&Ô!Ü�”b—h‘h ˜t¨5Ô1Ô2ô 	�‰�˜EÔ"€AÙ#(¨£8Ñ €CˆˆAˆt�U˜DÜ��qÔÜ�—‘˜&Ô!Ü�—‘˜&Ô!Ü�”b—h‘h ˜t¨5Ô1Ô2ô 	�‰�˜eÔ$€AÙ#(¨£8Ñ €CˆˆAˆt�U˜DÜ��qÔÜ�—‘˜&Ô!Ü�—‘˜&Ô!Ü�”b—h‘h˜r¨Ô/Ô0ô 	�‰Œr�y‰y˜‹~×%Ñ% b¨"Ó-Ó.×5Ñ5°eÓ<€AÜ
×Ñ˜!˜aŸc™c™'Ó"€AØ	
�‰�‹€BÙˆa‹€AÜ�A�rÕr5   ÚkwargsrX   rÉ  c                 ó€   — t        j                  dt        ¬«      }t        dt        ¬«      }t	        t
        ||fi | ¤Ž y)z-Test invalid job arguments raise an Exception)rQ   rQ   r¸   rÈ  Nro  )rÞ  rˆ  rÈ  s      r3   Ú test_gejsv_invalid_job_argumentsrà  È  s1   € ô 	�‰�œeÔ$€AÜ˜W¬EÔ2€EÜ”)˜U AÑ0¨Ó0r5   zA,sva_expect,u_expect,v_expect)g)\�Âõ(@g¤p=
×£ø¿gffffffò?g
×£p=
ÿ¿)gìQ¸…ëÑ?g¸…ëQ¸ú¿g®Gázî?gö(\�Âõè¿)g¸…ëQ¸Þ¿g¸…ëQ¸Àg®Gáz®ï?gáz®GáÊ¿)g…ëQ¸ñ?g…ëQ¸…ó?gHáz®Gé?g)\�Âõ(ä?)gÍÌÌÌÌÌÀgq=
×£p@g333333÷¿rì  )ç×£p=
×ã?g�Âõ(\�Àrï  g�Âõ(\�À)g cîZBþ#@gI.ÿ!ýv@g?ÆÜµõ?rð  )gþCúíëÀÑ?gÙ=yX¨5ã¿gcÙ=yXÀ¿gåa¡Ö4ïÀ?)gB`åÐ"ÛÉ?gû:pÎˆÒž¿gÁÊ¡E¶óÑ?gn4€·@‚æ?)g[B>èÙ¬Ò?gèÙ¬ú\mÕ?gJ{ƒ/L¦ä?g„O¯”eÈ?)gˆc]ÜF¸¿gê•²q¬×¿gû\mÅþ²å?çfˆc]ÜFá¿)gØ�sF”öÚ¿gîZB>èÙà?g0L¦
F%¥?gq=
×£p­¿)g·Ñ Þé?g½R–!ŽuÕ?gu“VÅ¿g¥½Á&SÙ¿)g‚âÇ˜»–È?gV-²é¿g	ž^)Ëp?gçŒ(íâ¿)gÜFx$ì¿gã6À[ Ù¿gUÁ¨¤N@³¿g­iÞqŠŽÐ?)g1¬ZdË?gßO�—nÓ¿gÎˆÒÞàé?gÙ_vOà?)g}?5^ºIØ¿g5ï8EGrÕ?gi o�Åã?g7À[ Aã¿c                 ó¨   — d}t        d| j                  ¬«      } || «      \  }}}}	}
}t        |||¬«       t        |||¬«       t        |||¬«       y)z~
    This test implements the example found in the NAG manual, f08khf.
    An example was not found for the complex case.
    r  rÈ  r¸   rŸ  N)r'   r1   r   )rˆ  Ú
sva_expectÚu_expectÚv_expectr/  rÈ  rÕ  r¨  rö   rë   rì   ri   s               r3   Útest_gejsv_NAGrç  ×  sS   € ð0 €DÜ˜W¨A¯G©GÔ4€Eá#(¨£8Ñ €CˆˆAˆt�U˜Dä�J ¨$Õ/Ü�H˜a dÕ+Ü�H˜a dÖ+r5   c           	      ó¼  — t         j                  j                  d«      }d}dt        j                  | «      j                  z  }t        |dz
  f| |¬«      }t        |f| |¬«      }t        |dz
  f| |¬«      }|j                  «       |j                  «       |j                  «       g}t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   }t         j                  j                  |«      }	||	z  }
t        d| ¬«      \  }} ||||«      \  }}}}}}t        ||d	   «       t        ||d   «       t        ||d
   «       t        j                  |d	«      t        j                  |d«      z   t        j                  |d
«      z   }t        j                  || ¬«      }t        |«      D ]?  \  }}||   dz
  }|d d …||gf   |d d …||gf<   |d d …|fxx   |d d …|dz   f   |z  z  cc<   ŒA d|d   dz
  }}|d d …||gf   |d d …||gf<   t        |||z  |¬«       |
j                  «       } |||||||
«      \  }}t        |
|«       t        |	||¬«       | t        v rd}|j                  |	z  }nd}|j!                  «       j                  |	z  } ||||||||¬«      \  }}t        |	||¬«       t#        t$        «      5   ||d d ||«       d d d «       t#        t$        «      5   |||d d |«       d d d «       t#        t$        «      5   ||||d d «       d d d «       t#        t$        «      5   ||d	   |d d |d	   «       d d d «       d	|d	<   d	|d	<    ||||«      \  }}}}} }!t         j&                  j)                  ||dz
     d	k(  d||dz
     › d�«       y # 1 sw Y   ŒÍxY w# 1 sw Y   Œ´xY w# 1 sw Y   Œ›xY w# 1 sw Y   Œ|xY w)Nr  rv   r-  rP   ©r1   r2   r�   ©ÚgttrfÚgttrsr¸   r   rQ   rŸ  ry   r|   r&  z?gttrf: _d[info-1] is ú, not the illegal value :0.)r7   r  rX  rÖ   r×   r4   r³  r2  r   r'   r	   r   rÓ   r   rÕ   ry   r²  r  rP  Útestingr   )"r1   r2   rÚ   r/  Údurp   ÚdlÚdiag_cpyrˆ  rŒ   r‡   rë  rì  Ú_dlÚ_dÚ_duÚdu2rÿ  ri   rT  rJ  rA  rÙ   r˜  Úb_cpyÚx_gttrsr‰   Úb_transÚ__dlÚ__dÚ__duÚ_du2Ú_ipivÚ_infos"                                     r3   Útest_gttrf_gttrsrÿ  ù  sØ  € ô �)‰)×
Ñ
 Ó
#€CØ
€AØ”—‘˜%“×$Ñ$Ñ$€Dô 
% a¨¡c V°5¸cÔ	B€BÜ# Q D°¸3Ô?€AÜ	$ a¨¡c V°5¸cÔ	B€Bà—‘“	˜1Ÿ6™6›8 R§W¡W£YÐ/€Hä
�‰�‹
”R—W‘W˜R “_Ñ$¤r§w¡w¨r°1£~Ñ5€AÜ
�	‰	�‰�qÓ€AØ	ˆA‰€Aä#Ð$6¸eÔD�L€Eˆ5á$)¨"¨a°Ó$4Ñ!€CˆˆS�#�t˜Tä�r˜8 A™;Ô'Ü�q˜( 1™+Ô&Ü�r˜8 A™;Ô'ô 	�‰��A‹œŸ™  a›Ñ(¬2¯7©7°3¸«?Ñ:€AÜ
�‰ˆq˜Ô€Aä˜#“ò ‰ˆˆ1ð �1‰g˜‰kˆàš1˜s A˜h˜;™ˆŠ!ˆa�ˆXˆ+‰à	Š!ˆQˆ$‹�1’Q˜˜!™�V‘9˜Q‘;ÑŒðð ��b‘˜A‘€s€Aà’q˜3 ˜(�{‘^€A‚aˆ!ˆSˆ€k�Nô �A�q˜1‘u 4Õ(à�F‰F‹H€EÙ˜#˜r 3¨¨T°1Ó5�M€GˆTä�q˜%Ô ä�A�w TÕ*ð ”ÑØˆØ—#‘#˜‘'‰àˆØ—&‘&“(—*‘*˜q‘.ˆá˜#˜r 3¨¨T°7À%ÔH�M€GˆTÜ�A�w TÕ*ô 
”zÓ	"ñ Ùˆb��"ˆg�q˜"Ô÷ä	”zÓ	"ñ Ùˆb�!�C�R�&˜"Ô÷ä	”zÓ	"ñ Ùˆb�!�R˜˜�WÔ÷ô 
”zÓ	"ñ #Ùˆb�‰e�Q�r˜�U˜B˜q™EÔ"÷#ð €B€q�EØ€A€a�DÙ*/°°A°rÓ*:Ñ'€Dˆ#ˆt�T˜5 %Ü‡J�J×Ñ�s˜4 !™8‘}¨Ñ)Ð.DÀSÈÐPQÉÁ]ÀOð TIð -Iõ K÷ð ú÷ð ú÷ð ú÷#ð #ús0   ËN.Ë9N:ÌOÍOÎ.N7Î:OÏOÏOz1du, d, dl, du_exp, d_exp, du2_exp, ipiv_exp, b, x)gÍÌÌÌÌÌ @rñ  çffffffþ?rÂ   )r%  rì  ç      ÀçÍÌÌÌÌÌì¿çffffff@)ç333333@çÍÌÌÌÌÌ@rÁ   ç      À)rì  r«  r  r  )r  r  rV   éúÿÿÿgÏÜCÂ÷>ð¿)r�   r   rW   )rQ   rR   rS   rT   rT   gš™™™™™@gffffff@ç      à¿gš™™™™™%@gÍÌÌÌÌÌ@gš™™™™™	Àr’  gffffff&Àgš™™™™3@r´  rT   rV   rH  r  )ù       @      ð¿ù       @      ð?ù      ð¿      ð?ù      ð?      ð¿)ùÍÌÌÌÌÌô¿ÍÌÌÌÌÌô?r  ùÍÌÌÌÌÌô¿ffffff
@ù333333Ó¿333333@ùffffff
ÀÍÌÌÌÌÌô?)ù      ð?       Àù      ð?      ð?ù       @      Àr  )r  r  r  r  )r  r  r  r  y ‘~û:põ¿ffffffÒ?)r
  r  r  y333333@      Àyš™™™™™@š™™™™™@y333333@3333332@yš™™™™™À333333Àyffffff-Àffffff#@y      À333333ã¿yfffffæ?@ÍÌÌÌÌÌÀy333333Àš™™™™™"@y      ð¿š™™™™™ù?y      Àffffff(@r  r	  y      @      ð¿y      ð?       @y      @      @r  y      ð¿       Àr
  r  y       @       Àc	                 óð   — t        d| d   | d   f«      \  }	}
 |	||| «      \  }}}}}}t        ||«       t        ||«       t        ||d¬«       t        ||«        |
||||||«      \  }}t        ||«       y )Nrê  r   r  rŸ  )r'   r   )rï  rp   rð  Údu_expÚd_expÚdu2_expÚipiv_expr‡   rŒ   rë  rì  rò  ró  rô  rõ  rÿ  ri   r÷  s                     r3   Ú0test_gttrf_gttrs_NAG_f07cdf_f07cef_f07crf_f07csfr  U  s‰   € ôd $Ð$6¸¸A¹ÀÀ1Á¸ÓG�L€Eˆ5á$)¨"¨a°Ó$4Ñ!€CˆˆS�#�t˜TÜ�C˜Ô!Ü�C˜Ô Ü�B˜ DÕ)Ü�D˜(Ô#á˜#˜r 3¨¨T°1Ó5�M€GˆTä�G˜QÕr5   )rw  rv  rx  c           	      ó€  — t         j                  j                  d«      }|j                  |«      |j                  |«      dz  z   }|j                  |dz
  «      |j                  |dz
  «      dz  z   }|j                  |dz
  «      |j                  |dz
  «      dz  z   }t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   }t        j                  | t         j
                  «      r3|j                  |j                  |j                  |j                  f\  }}}}|j                  | «      |j                  | «      |j                  | «      |j                  | «      f\  }}}}t        j                  |«      j                  d¬«      j                  «       }t        d|f«      \  }	}
 |	|||«      \  }}}}}} |
|||||||¬«      \  }}t        d	|f«      \  }} ||«      \  }}} ||||¬«      \  }}t        j                  | «      j                  d
z  }t        |||¬«       y )NiTŽfr-   rP   r�   r   r–   )rë  Úgtconr  r|  g      è?rÉ   )r7   r  r€  r2  r„  r…  rê   r/   rœ   rš   r�   r'   rÖ   r×   r   )r1   r   rÚ   r2   rp   rð  rï  rˆ  rŒ  rë  r  rõ  rÿ  ri   rB  r?   r}  r~  r�  rŽ  r    rÊ   s                         r3   Ú
test_gtconr  ”  sæ  € ô �)‰)×
Ñ
 Ó
)€Cà�
‰
�1‹˜Ÿ
™
 1› bÑ(Ñ(€AØ	�‰�A˜‘EÓ	˜SŸZ™Z¨¨A©Ó.¨rÑ1Ñ	1€BØ	�‰�A˜‘EÓ	˜SŸZ™Z¨¨A©Ó.¨rÑ1Ñ	1€BÜ
�‰�‹
”R—W‘W˜R “_Ñ$¤r§w¡w¨r°1£~Ñ5€AÜ	‡}�}�UœBŸK™KÔ(Ø—v‘v˜qŸv™v r§w¡w°·±Ð7‰ˆˆ1ˆb�"Ø—8‘8˜E“? A§H¡H¨U£O°R·Y±Y¸uÓ5EÀrÇyÁyÐQVÓGWÐW�L€A€qˆ"ˆbä�F‰F�1‹I�M‰M˜qˆMÓ!×%Ñ%Ó'€Eä#Ð$6¸¸Ó=�L€Eˆ5Ù!& r¨1¨bÓ!1Ñ€Bˆˆ2ˆs�D˜$Ù�2�q˜"˜c 4¨°TÔ:�F€Cˆä#Ð$6¸¸Ó=�L€Eˆ5Ù˜1“X�N€BˆˆdÙ�2�u 4Ô(�F€Cˆä�8‰8�E‹?×Ñ Ñ$€DÜ�C˜ 4Ö(r5   ))rR   rV   )rV   rR   r   c                 óZ   — t        d| ¬«      }|\  }} |||¬«      \  }}t        |d«       y )NÚgeqrfp_lworkr¸   r  r   r  )r1   r0   r  rÙ   rÚ   rº   ri   s          r3   Útest_geqrfp_lworkr  °  s3   € ô $ ^¸EÔB€LØ�D€A€qÙ  aÔ(�K€Eˆ4Ü��qÕr5   zddtype,dtypec                 ó  — t         j                  j                  d«      }dt        j                  |«      j                  z  }d}t        |f| |«      dz   }t        |dz
  f||«      }t        j                  |«      t        j                  |d«      z   t        j                  t        j                  |«      d«      z   }|j                  «       |j                  «       g}t        d|¬«      }	 |	||«      \  }
}}t        ||d	   «       t        ||d   «       t        |d	d
|› d�¬«       t        j                  |d«      t        j                  t        j                  |«      «      z   }t        j                  |
«      }t        |||z  |j                  «       j                  z  |¬«       t        |f||«      }||z  }t        d|¬«      } ||
|j                  «       |«      \  }}t        |d	d|› d�¬«       t        |||¬«       y )Nr  r-  rv   rS   rP   r�   Úpttrfr¸   r   zpttrf: info = z, should be 0)Úerr_msgrŸ  Úpttrszpttrs: info = )r7   r  rX  rÖ   r×   r4   r2  r²  r³  r'   r	   r   r   r   r†   ry   )Úddtyper1   r2   r/  rÚ   rp   rÐ  rˆ  rñ  r!  ró  Ú_eri   rJ  rw  rŒ   r‡   r#  Ú_xs                      r3   Útest_pttrf_pttrsr'  ¹  s±  € ô �)‰)×
Ñ
 Ó
#€CàŒr�x‰x˜‹×"Ñ"Ñ"€Dà
€Aô
 	$ Q D¨&°#Ó6¸Ñ:€Aä# Q q¡S F¨E°3Ó7€Aô 	�‰�‹
”R—W‘W˜Q “^Ñ#¤b§g¡g¬b¯g©g°a«j¸!Ó&<Ñ<€Aà—‘“˜!Ÿ&™&›(Ð#€Hä˜W¨EÔ2€Eá˜˜A“;�L€BˆˆDä�q˜( 1™+Ô&Ü�q˜( 1™+Ô&Ü��q N°4°&¸Ð"FÕGô 	�‰��B‹œ"Ÿ'™'¤"§'¡'¨!£*Ó-Ñ-€AÜ
�‰�‹€Aä�A�q˜‘s˜1Ÿ;™;›=Ÿ?™?Ñ*°Õ6ô 	$ Q D¨%°Ó5€Aà	ˆ!‰€Aô ˜W¨EÔ2€EÙ�R˜Ÿ™› AÓ&�H€BˆÜ��q N°4°&¸Ð"FÕGô �A�r Ö%r5   c                 óø   — d}t         j                  j                  d«      }t        d|¬«      }t	        |f| |«      dz   }t	        |dz
  f||«      }t        t        ||d d |«       t        t        |||d d «       y )Nrv   r´   r!  r¸   rQ   rP   r�   )r7   r  rX  r'   r4   r  rP  )r$  r1   rÚ   r2   r!  rp   rÐ  s          r3   Ú*test_pttrf_pttrs_errors_incompatible_shaper)  ê  sz   € ð 	€AÜ
�)‰)×
Ñ
 Ó
%€CÜ˜W¨EÔ2€EÜ# Q D¨&°#Ó6¸Ñ:€AÜ# Q q¡S F¨E°3Ó7€Aä”*˜e Q s¨ V¨QÔ/Ü”*˜e Q¨¨#¨2¨Õ/r5   c                 ó`  — d}t         j                  j                  d«      }t        d|¬«      }t	        |f| |«      dz   }t	        |dz
  f||«      }d|d<   d|d<    |||«      \  }}}	t        ||	dz
     dd||	dz
     › d	�«       t	        |f| |«      } |||«      \  }}}	t        |	dk7  d
«       y )Nrv   r  r!  r¸   rQ   rP   r   z?pttrf: _d[info-1] is rí  z2?pttrf should fail with non-spd matrix, but didn't)r7   r  rX  r'   r4   r   r   )
r$  r1   rÚ   r2   r!  rp   rÐ  ró  r%  ri   s
             r3   Ú'test_pttrf_pttrs_errors_singular_nonSPDr+  ÷  sÑ   € ð 	€AÜ
�)‰)×
Ñ
 Ó
#€CÜ˜W¨EÔ2€EÜ# Q D¨&°#Ó6¸Ñ:€AÜ# Q q¡S F¨E°3Ó7€Aà€A€a�DØ€A€a�DÙ˜˜A“;�L€BˆˆDÜ��D˜1‘H‘˜qØ)¨"¨T°A©X©,¨Ð7RÐSôUô 	$ Q D¨&°#Ó6€AÙ˜˜A“;�L€BˆˆDÜˆD�A‰IÐKÕLr5   z%d, e, d_expect, e_expect, b, x_expect)rS   rv   é   rÈ   rT   )r  r  r  rW   )rS   rX   rÈ   é   rP   )r  gKÈ=›Uå¿r’  rð  rQ   é   éA   é   g      @r�   r«  )r-  é)   é.   é   )y      0@      0@y      2@      "Àù      ð?      À)r-  rX   rP   rS   )r  r	  r4  y      P@      0@y      0À      @Ày     @W@      O@y     €N@     €PÀy     €S@      TÀy     ÀQ@     €RÀy      ,@      ;Ày     €A@      .@y      À       Àr  c                 óL  — d}t        d|d   ¬«      } || |«      \  }}	}
t        |||¬«       t        |	||¬«       t        d|d   ¬«      } |||	j                  «       |«      \  }}
t        |||¬«       |j                  t        v r |||	|d¬«      \  }}
t        |||¬«       y y )	Nr  r!  r   r¸   rŸ  r#  rP   rà  )r'   r   r²  r1   r.   )rp   rÐ  Úd_expectÚe_expectr‡   Úx_expectr/  r!  ró  r%  ri   r#  r&  s                r3   Útest_pttrf_pttrs_NAGr9  	  s©   € ð4 €DÜ˜W¨A¨a©DÔ1€EÙ˜˜A“;�L€BˆˆDÜ�B˜ tÕ,Ü�B˜ tÕ,ä˜W¨A¨a©DÔ1€EÙ�R˜Ÿ™› AÓ&�H€BˆÜ�B˜ tÕ,ð 	‡w�w”.Ñ Ù˜˜R ¨!Ô,‰ˆˆDÜ˜˜H¨4Ö0ð !r5   c                 ó–  — t         j                  j                  d«      }|dk(  röt        ||f| |«      }|t        j                  t        j
                  |«      d|z  z   «      z   }||j                  «       j                  z   dz  }t        |«      d   }t        |f||«      dz   }t        |dz
  f||«      }t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   }	||	z  |j                  «       j                  z  }
|}nªt        |f||«      }t        |dz
  f||«      }|dz   }t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   }
t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   }|||
|fS )Nr  rP   rS   rQ   r�   )	r7   r  rX  r4   r2  r   r²  ry   r    )r1   ÚrealtyperÚ   Ú	compute_zr2   ÚA_eigÚvrrp   rÐ  Útrirˆ  Úzs               r3   Úpteqr_get_d_e_A_zrA  6	  s�  € ô �)‰)×
Ñ
 Ó
#€CØ�A‚~ä+¨Q°¨F°E¸3Ó?ˆØœŸ™¤§¡¨£¨a°©cÑ 1Ó2Ñ2ˆØ˜Ÿ™›Ÿ™Ñ'¨1Ñ,ˆä�%‹[˜‰^ˆä'¨¨¨h¸Ó<¸qÑ@ˆÜ'¨¨1©¨°¸#Ó>ˆÜ�g‰g�a‹jœ2Ÿ7™7 1 a›=Ñ(¬2¯7©7°1°b«>Ñ9ˆà�‰H�r—w‘w“y—{‘{Ñ"ˆà‰ô (¨¨¨h¸Ó<ˆÜ'¨¨1©¨°¸#Ó>ˆð �‰EˆÜ�G‰G�A‹JœŸ™  A›Ñ&¬¯©°°B«Ñ7ˆÜ�G‰G�A‹JœŸ™  B›Ñ'¬"¯'©'°!°Q«-Ñ7ˆØˆq�!�Qˆ<Ðr5   zdtype,realtyper<  c                 óv  — t        d«       dt        j                  | «      j                  z  }t	        d| ¬«      }d}t        | |||«      \  }}}}	 ||||	|¬«      \  }
}}}t        |dd|› d	�«       t        t        j                  t        |«      d   «      t        j                  |
«      |¬
«       |r†t        |t        j                  |«      j                  z  t        j                  |«      |¬
«       t        |t        j                  |
«      z  t        j                  |«      j                  z  ||¬
«       yy)a  
    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  r•  Úpteqrr¸   rv   ©rp   rÐ  r@  r<  r   zinfo = z, should be 0.rŸ  N)r   r7   rÖ   r×   r'   rA  r   r   Úsortr    r²  ry   rÊ  r2  )r1   r;  r<  r/  rC  rÚ   rp   rÐ  rˆ  r@  Úd_pteqrÚe_pteqrÚz_pteqrri   s                 r3   Ú
test_pteqrrI  V	  s  € ô 	ˆ„HØ”—‘˜“×#Ñ#Ñ#€DÜ˜g¨eÔ4€Eà
€Aä" 5¨(°A°yÓA�J€A€qˆ!ˆQá&+¨a°1¸ÀYÔ&OÑ#€GˆW�g˜tÜ��q˜G D 6¨Ð8Ô9ô ”B—G‘GœD ›G A™JÓ'¬¯©°Ó)9ÀÕEáä˜¤"§'¡'¨'Ó"2×"4Ñ"4Ñ4´b·k±kÀ!³nØ!õ	#ô 	˜¤"§'¡'¨'Ó"2Ñ2´R·W±W¸WÓ5E×5GÑ5GÑGØ ö	&ð r5   c                 ó”   — t        d«       t        d| ¬«      }d}t        | |||«      \  }}}} ||dz
  |||¬«      \  }	}
}}|dkD  sJ ‚y )Nr  rC  r¸   rv   rS   ©r@  r<  r   ©r   r'   rA  ©r1   r;  r<  rC  rÚ   rp   rÐ  rˆ  r@  rF  rG  rH  ri   s                r3   Útest_pteqr_error_non_spdrN  w	  s^   € ô 	ˆ„HÜ˜g¨eÔ4€Eà
€AÜ" 5¨(°A°yÓA�J€A€qˆ!ˆQñ ',¨A°©E°1¸ÀYÔ&OÑ#€GˆW�g˜tØ�!Š8€O‰8r5   c           	      óô   — t        d«       t        d| ¬«      }d}t        | |||«      \  }}}}t        t        ||d d |||¬«       t        t        |||d d ||¬«       |rt        t        ||||d d |¬«       y y )Nr  rC  r¸   rv   r�   rK  )r   r'   rA  r  rP  )	r1   r;  r<  rC  rÚ   rp   rÐ  rˆ  r@  s	            r3   Ú"test_pteqr_raise_error_wrong_shaperP  †	  s„   € ô 	ˆ„HÜ˜g¨eÔ4€EØ
€AÜ" 5¨(°A°yÓA�J€A€qˆ!ˆQä”*˜e Q s¨ V¨Q°!¸yÕIÜ”*˜e Q¨¨#¨2¨°!¸yÕIÙÜ”j %¨¨A°°3°B°À9ÖMð r5   c                 ó¢   — t        d«       t        d| ¬«      }d}t        | |||«      \  }}}}d|d<   d|d<    |||||¬«      \  }	}
}}|dkD  sJ ‚y )Nr  rC  r¸   rv   r   rK  rL  rM  s                r3   Útest_pteqr_error_singularrR  •	  sj   € ô 	ˆ„HÜ˜g¨eÔ4€EØ
€AÜ" 5¨(°A°yÓA�J€A€qˆ!ˆQà€A€a�DØ€A€a�DÙ&+¨A¨q°AÀÔ&KÑ#€GˆW�g˜tØ�!Š8€O‰8r5   zcompute_z,d,e,d_expect,z_expect)g¤p=
×£@r¢  gq=
×£pñ?rá  )g\�Âõ(\	@g
×£p=
ï¿gš™™™™™á?)gÅ�1w- @gR' ‰°áÿ?g/n£¼ð?g&äƒžÍª¿?)g cîZB>ä?g–C‹lçûã?gû:pÎˆÒÚ¿gÉå?¤Ç?)gaTR' ‰è?g‡ÙÎ÷SÛ¿g}Ð³Yõ¹Ú?g%ušÎ¿)gû\mÅþ²»¿gèÙ¬ú\mã?g×òAÏfÝ?gL¦
F%uä¿)g‚âÇ˜»–€¿gÅ�1w-!Ï?g333333å?g—�z6«æ?c                 ób  — d}t        d|j                  ¬«      }t        j                  |«      t        j                  |d«      z   t        j                  |d«      z   } ||||| ¬«      \  }}	}
}t	        |||¬«       t	        t        j
                  |
«      t        j
                  |«      |¬«       y)	zb
    Implements real (f08jgf) example from NAG Manual Mark 26.
    Tests for correct outputs.
    r  rC  r¸   rP   r�   rD  rŸ  N)r'   r1   r7   r2  r   rœ   )r<  rp   rÐ  r6  Úz_expectr/  rC  r@  ró  r%  Ú_zri   s               r3   Útest_pteqr_NAG_f08jgfrV  ¤	  s†   € ð  €DÜ˜g¨a¯g©gÔ6€Eä
�‰�‹
”R—W‘W˜Q “]Ñ"¤R§W¡W¨Q°£^Ñ3€AÙ˜q A¨°iÔ@Ñ€BˆˆB�Ü�B˜ tÕ,Ü”B—F‘F˜2“J¤§¡ xÓ 0°tÖ<r5   Úmatrix_size)rÿ   )rV   rU   ©rU   rU   c                 óþ  — t         j                  j                  d«      }dt        j                  | «      j                  z  }dt        j                  | «      j                  z  }t        d| ¬«      }t        d| ¬«      }|\  }}t        ||f| |¬«      }	 ||	«      \  }
}}t        j                  |
«      }||kD  r3t        j                  ||f| ¬«      }|
|d d …d |…f<    ||||¬«      d	   }n ||
d d …d |…f   ||¬«      d	   }t        ||z  |	|¬
«       t        t        j                  |j                  d	   «      ||j                  «       j                  z  ||¬«       t        |t        j                  |«      |¬
«       t        t        j                  t        j                   |«      t        j                  t#        t        j                   |«      «      «      kD  «      «       t        |d	k(  «       t        ||f| |¬«      dz  }t%        |«      \  }} ||«      \  }}}t        t        j&                  t        j                   |«      d	k  «      xr+ t        j                  t        j                   |«      d	kD  «      «       y )Nr  éú   r-  Úgeqrfpr¸   Úorgqrré  )rs   rº   r   rÉ   rO  r�   )r7   r  rX  rÖ   r×   r'   r4   r   r   r   r   r0   r²  ry   r   Úallr2  r_   r   r6  )r1   rW  r2   rÊ   r/  r[  ÚgqrrÙ   rÚ   rˆ  Úqr_Ars   ri   rš  Úqqrr„  Ú
A_negativeÚr_rq_negÚq_rq_negÚrq_A_negÚtau_negÚinfo_negs                         r3   Útest_geqrfprg  ½	  s  € ô �)‰)×
Ñ
 Ó
#€CØŒr�x‰x˜‹×"Ñ"Ñ"€DØŒr�x‰x˜‹×"Ñ"Ñ"€Dä˜x°Ô6€FÜ
˜G¨EÔ
2€Cà�D€A€qô 	$ Q¨ F°%¸SÔA€Aá˜Q“i�O€Dˆ#ˆtô 	�‰�‹€Að
 	ˆ1‚uô �h‰h˜˜1�v UÔ+ˆàˆŠAˆr�ˆrˆE‰
ñ �˜ AÔ& qÑ)‰á�’Q˜˜˜�U‘ ¨AÔ.¨qÑ1ˆô �A�a‘C˜ Õ&ä”B—F‘F˜1Ÿ7™7 1™:Ó&¨¨1¯6©6«8¯:©:©¸TØõô �A”r—w‘w˜q“z¨Õ-äŒB�F‰F”2—7‘7˜1“:¤§¡¬¬R¯W©W°Q«Z«Ó 9Ñ9Ó:Ô;äˆD�A‰IÔô -¨a°¨V¸5ÀcÔJÈRÑO€JÜ˜J›Ñ€HˆhÙ"(¨Ó"4Ñ€Hˆg�xô ŒB�F‰F”2—7‘7˜8Ó$ qÑ(Ó)ò #Ü�F‰F”2—7‘7˜1“: ‘>Ó"õ$r5   c                  ó~   — t        j                  g «      } t        d| j                  ¬«      }t	        t
        || «       y )Nr[  r¸   )r7   rƒ   r'   r1   r  r  )ÚA_emptyr[  s     r3   Ú#test_geqrfp_errors_with_empty_arrayrj  ÿ	  s+   € ä�h‰h�r‹l€GÜ˜h¨g¯m©mÔ<€FÜ”)˜V WÕ-r5   Údriver)ÚevÚevdÚevrÚevxÚpfxÚsyÚhec                 ó"  — d}| dk(  rt         nt        }t        | |z   dz   |d   ¬«      }t        | |z   dz   |d   ¬«      }	 t        ||d¬«       t        ||d¬«       y # t        $ r'}t        j                  | |z   › d|› �«       Y d }~y d }~ww xY w)	Né°  rq  Ú_lworkr   r¸   rP   rà  ú$_lwork raised unexpected exception: ©rÕ   r.   r'   r"   r  rA   Úfail©rp  rk  rÚ   r1   Úsc_dlwÚdz_dlwrÐ  s          r3   Útest_standard_eigh_lworksr|  
  s—   € ð 	€AØ $š;�K¬N€EÜ˜c &™j¨Ñ1¸¸q¹ÔB€FÜ˜c &™j¨Ñ1¸¸q¹ÔB€FðLÜ�v˜q¨Õ*Ü�v˜q¨Ö*øÜò LÜ�‰�s˜6‘z�lÐ"FÀqÀcÐJ×KÑKûðLúó   ÁA Á	BÁ'B	Â	BÚgvÚgvxc                 ó"  — d}| dk(  rt         nt        }t        | |z   dz   |d   ¬«      }t        | |z   dz   |d   ¬«      }	 t        ||d¬«       t        ||d¬«       y # t        $ r'}t        j                  | |z   › d	|› �«       Y d }~y d }~ww xY w)
Nrt  rq  ru  r   r¸   rP   rJ  r<  rv  rw  ry  s          r3   Útest_generalized_eigh_lworksr�  
  s—   € ð 	€AØ $š;�K¬N€EÜ˜c &™j¨Ñ1¸¸q¹ÔB€FÜ˜c &™j¨Ñ1¸¸q¹ÔB€FðLÜ�v˜q sÕ+Ü�v˜q sÖ+øÜò LÜ�‰�s˜6‘z�lÐ"FÀqÀcÐJ×KÑKûðLúr}  Údtype_rÙ   )rP   rv   r-  r•  c                 óî   — t        d«       t        d|«      }||z
  }| t        v rdnd}|dz   }t        || ¬«      }t	        ||||«      }|dk(  r|n|f}t        |D �cg c]  }|dkD  ‘Œ	 c}«      sJ ‚y c c}w )Nr´   r   ÚorÚunÚ	csd_lworkr¸   )r   r   rÕ   r'   r"   r]  )	r‚  rÙ   rc   r„  rp  Údlwrv  ÚlwvalrŒ   s	            r3   Útest_orcsd_uncsd_lworkr‰  #
  s‚   € ô 	ˆ„JÜ��1‹€AØ	ˆA‰€AØœKÑ'‰$¨T€CØ
�Ñ
€CÜ	˜# VÔ	,€BÜ˜2˜q ! QÓ'€EØ˜D’[‰E u h€EÜ˜uÖ%˜!��A“Ò%Ô&Ð&Ñ&ùÒ%s   ÁA2c           
      óÄ  — d\  }}}| t         v rdnd}|dk(  rt        j                  |«      nt        j                  |«      }t	        |dz   |dz   f| ¬«      \  }}t        ||||«      }|dk(  rd|int        t        ddg|«      «      }	 ||d |…d |…f   |d |…|d …f   ||d …d |…f   ||d …|d …f   fi |	¤Ž\
  }
}}}}}}}}}|d	k(  sJ ‚t        ||«      }t        ||«      }t        t        ||«      t        ||z
  ||z
  «      «      }t        ||«      |z
  }t        |||z
  «      |z
  }t        ||z
  |«      |z
  }t        ||z
  ||z
  «      |z
  }t        j                  ||f| ¬«      } | d
«      }t        |«      D ]	  }||||f<   Œ t        |«      D ]  }||||z   ||z   f<   Œ t        |«      D ]  }| |||z   |z   ||z   |z   |z   |z   |z   f<   Œ! t        |«      D ]  }||||z   |z   |z   ||z   |z   f<   Œ t        |«      D ]¤  }t        j                  ||   «      |||z   ||z   f<   t        j                  ||   «      |||z   |z   ||z   |z   |z   f<   t        j                  ||   «       |||z   ||z   |z   |z   |z   f<   t        j                  ||   «      |||z   |z   ||z   f<   Œ¦ ||z  |z  }t        ||ddt        j                   | «      j"                  z  ¬«       y )N)rZ  éP   éª   r„  r…  Úcsdr†  r¸   rº   Úlrworkr   r½   rË  g     ˆÃ@rO  )rÕ   r#   Úrvsr$   r'   r"   Údictrå  r   r\  r7   r   r5  ÚcosrÚ  r   rÖ   r×   )r‚  rÙ   rc   r„  rp  ÚXÚdrvr‡  rˆ  ÚlwvalsÚcs11Úcs12Úcs21Úcs22ÚthetaÚu1Úu2Úv1tÚv2tri   rT  ÚVHrš  Ún11Ún12Ún21Ún22ÚSÚonerA  ÚXcs                                  r3   Útest_orcsd_uncsdr¦  1
  s_  € à�G€A€qˆ!àœKÑ'‰$¨T€CØ! TškŒ�‰˜Ô¬}×/@Ñ/@ÀÓ/C€Aä  u¡¨c°KÑ.?Ð @ÈÔO�H€CˆÜ˜3  1 aÓ(€EØ!$¨¢ˆg�uÑ´$´s¸GØ<Dð<FØGLó8Nó 3O€Fñ 	ˆAˆbˆqˆb�"�1�"ˆf‰I�q˜˜!˜˜Q™R˜‘y ! A¡B¨¨¨ F¡)¨Q¨q©r°1±2¨v©YÑA¸&ÑAñ :€Dˆ$��d˜E 2 r¨3°°Tð �1Š9Ðˆ9ä�2�rÓ€AÜ	�C˜Ó	€BÜŒC��1‹I”s˜1˜Q™3  !¡“}Ó%€AÜ
ˆa�‹)�a‰-€CÜ
ˆa��1‘‹+˜‰/€CÜ
ˆa�‰c�1‹+˜‰/€CÜ
ˆa�‰c�1�Q‘3‹-˜!Ñ
€Cä
�‰�!�Q�˜vÔ&€AÙ
�‹*€CÜ�3‹Zò ˆØˆˆ!ˆQˆ$Šðä�3‹Zò ˆØˆˆ!ˆA‰#ˆq�‰sˆ(Šðä�3‹Zò -ˆØ),¨ˆˆ!ˆC‰%�‰'�1�S‘5˜‘7˜3‘;˜s‘? 1Ñ$Ð
$Ò%ð-ä�3‹Zò $ˆØ #ˆˆ!ˆC‰%�‰'�!‰)�S˜‘U˜1‘WÐ
Òð$ô �1‹Xò -ˆÜŸ&™&  q¡Ó*ˆˆ!ˆC‰%��3‘ˆ,‰Ü"$§&¡&¨¨q©Ó"2ˆˆ!ˆC‰%�‰'�1�Q‘3�s‘7˜3‘;Ð
Ñä%'§V¡V¨E°!©HÓ%5Ð$5ˆˆ!ˆC‰%��3‘�s‘˜3‘˜q‘Ð
 Ñ!ÜŸF™F 5¨¡8Ó,ˆˆ!ˆC‰%�‰'�1�S‘5ˆ.Òð-ð 
ˆQ‰�‰€BÜ�A�r ¨¬R¯X©X°fÓ-=×-AÑ-AÑ)AÖBr5   Ú
trans_boolFÚfactr>  c                 ó   — t         j                  j                  d«      }dt        j                  | «      j                  z  }t        d| ¬«      \  }}d}t        |dz
  f| |¬«      }t        |f| |¬«      }	t        |dz
  f| |¬«      }
t        j                  |d«      t        j                  |	«      z   t        j                  |
d«      z   }t        |d	f| |¬«      }|r| t        v rd
ndnd}|r|j                  «       j                  n||z  }|j                  «       |	j                  «       |
j                  «       |j                  «       g}|dk(  r
 |||	|
«      ndgdz  \  }}}}}} |||	|
||||||||¬«      }|\
  }}}}}}}}}} t        | dk(  d| › d�«       t        ||d   «       t        |	|d   «       t        |
|d	   «       t        ||d   «       t        |||¬«       t        t        |d«      dud|› �«       t        |j                   d   |j                   d   k(  d|j                   d   › d|j                   d   › �«       t        |j                   d   |j                   d   k(  d|j                   d   › d|j                   d   › �«       y)aS  
    These tests uses ?gtsvx to solve a random Ax=b system for each dtype.
    It tests that the outputs define an LU matrix, that inputs are unmodified,
    transposal options, incompatible shapes, singular matrices, and
    singular factorizations. It parametrizes DTYPES and the 'fact' value along
    with the fact related inputs.
    r  r-  ©Úgtsvxrë  r¸   rv   rP   ré  r�   rQ   ry   r|   rS  r>  NrU   ©r¨  r‰   ÚdlfÚdfÚdufrõ  rÿ  r   z?gtsvx info = z, should be zerorR   rŸ  Ú__len__Túrcond should be scalar but is úferr.shape is z but should be úberr.shape is )r7   r  rX  rÖ   r×   r'   r4   r2  rÕ   r²  ry   r³  r   r	   r   r«   r0   )!r1   r§  r¨  r2   r/  r«  rë  rÚ   rð  rp   rï  rˆ  rŒ   r‰   r‡   Ú
inputs_cpyÚdlf_Údf_Úduf_Údu2f_Úipiv_Úinfo_Ú	gtsvx_outr­  r®  r¯  Údu2frÿ  Úx_solnr  ÚferrÚberrri   s!                                    r3   Ú
test_gtsvxrÀ  `
  s‰  € ô �)‰)×
Ñ
 Ó
#€Cà”—‘˜%“×$Ñ$Ñ$€Dä#Ð$6¸eÔD�L€Eˆ5à
€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ# Q D°¸3Ô?€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ
�‰��B‹œ"Ÿ'™' !›*Ñ$¤r§w¡w¨r°1£~Ñ5€Aä# Q¨ F°%¸SÔA€Aá6@�Eœ[Ñ(‰S©cÀc€EÙ!ˆ�‰‹�Š q¨AÑ-€Að —'‘'“)˜QŸV™V›X r§w¡w£y°!·&±&³(Ð;€Jð ! CšK‰ˆb�!�RÔ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ñ �b˜!˜R ¨°UÀÈØ E°ô7€Ià@IÑ=€CˆˆS�$˜˜f e¨T°4¸ÜˆD�A‰I˜¨ vÐ-=Ð>Ô?ô �r˜: a™=Ô)Ü�q˜* Q™-Ô(Ü�r˜: a™=Ô)Ü�q˜* Q™-Ô(ô �A�v DÕ)ô ŒG�E˜9Ó%¨TÐ1Ø,¨U¨GÐ4ô6ô ˆD�J‰J�q‰M˜QŸW™W Q™ZÑ'¨N¸4¿:¹:Àa¹=¸/ð J1Ø12·±¸±°ð+>ô @ô ˆD�J‰J�q‰M˜QŸW™W Q™ZÑ'¨N¸4¿:¹:Àa¹=¸/ð J1Ø12·±¸±°ð+>õ @r5   c                 ó,  — t         j                  j                  d«      }t        d| ¬«      \  }}d}t	        |dz
  f| |¬«      }t	        |f| |¬«      }t	        |dz
  f| |¬«      }	t        j
                  |d«      t        j
                  |«      z   t        j
                  |	d«      z   }
t	        |df| |¬«      }| t        v rd	nd
}|r|
j                  «       j                  n|
|z  }|dk(  r
 ||||	«      nd gdz  \  }}}}}} ||||	||||||||¬«      }|\
  }}}}}}}}}}|dk(  r/d|d<   d|d<    ||||	|«      }|\
  }}}}}}}}}}|dkD  sJ d«       ‚y |dk(  r;d|d<   d|d<   d|d<    ||||	|||||||¬«
      }|\
  }}}}}}}}}}|dkD  sJ d«       ‚y y )Nr  rª  r¸   rv   rP   ré  r�   rQ   ry   r|   r>  rU   r¬  rS  r   z&info should be > 0 for singular matrix)r¨  r­  r®  r¯  rõ  rÿ  )	r7   r  rX  r'   r4   r2  rÕ   r²  ry   )r1   r§  r¨  r2   r«  rë  rÚ   rð  rp   rï  rˆ  rŒ   r‰   r‡   rµ  r¶  r·  r¸  r¹  rº  r»  r­  r®  r¯  r¼  rÿ  r½  r  r¾  r¿  ri   s                                  r3   Útest_gtsvx_error_singularrÂ  �
  sü  € ô �)‰)×
Ñ
 Ó
#€Cä#Ð$6¸eÔD�L€Eˆ5à
€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ# Q D°¸3Ô?€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ
�‰��B‹œ"Ÿ'™' !›*Ñ$¤r§w¡w¨r°1£~Ñ5€Aä# Q¨ F°%¸SÔA€AàœKÑ'‰C¨S€EÙ!ˆ�‰‹�Š q¨AÑ-€Að ! CšK‰ˆb�!�RÔ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ñ �b˜!˜R ¨°UÀÈØ E°ô7€Ià@IÑ=€CˆˆS�$˜˜f e¨T°4¸ð ˆs‚{àˆˆ"‰Øˆˆ2‰á˜"˜a  QÓ'ˆ	ØDMÑAˆˆR��d˜D &¨%°°t¸Tà�aŠxÐAÐAÓA‰xà	�ŠàˆˆB‰ØˆˆR‰Øˆˆb‰	á˜"˜a  Q¨T°tÀÈØ#¨%ô1ˆ	àDMÑAˆˆR��d˜D &¨%°°t¸Tà�aŠxÐAÐAÓA‰xð 
r5   c                 ó   — t         j                  j                  d«      }t        d| ¬«      \  }}d}t	        |dz
  f| |¬«      }t	        |f| |¬«      }t	        |dz
  f| |¬«      }	t        j
                  |d«      t        j
                  |«      z   t        j
                  |	d«      z   }
t	        |df| |¬«      }| t        v rd	nd
}|r|
j                  «       j                  n|
|z  }|dk(  r
 ||||	«      nd gdz  \  }}}}}}|dk(  r}t        t        ||d d ||	||||||||¬«       t        t        |||d d |	||||||||¬«       t        t        ||||	d d ||||||||¬«       t        t        ||||	|d d |||||||¬«       y t        t        ||||	||||d d ||||¬«       t        t        ||||	|||||d d |||¬«       t        t        ||||	||||||d d ||¬«       t        t        ||||	|||||||d d |¬«       y )Nr  rª  r¸   rv   rP   ré  r�   rQ   ry   r|   r>  rU   rS  r¬  )r7   r  rX  r'   r4   r2  rÕ   r²  ry   r  rP  r  )r1   r§  r¨  r2   r«  rë  rÚ   rð  rp   rï  rˆ  rŒ   r‰   r‡   rµ  r¶  r·  r¸  r¹  rº  s                       r3   Ú"test_gtsvx_error_incompatible_sizerÄ  Ð
  s]  € ô �)‰)×
Ñ
 Ó
#€Cä#Ð$6¸eÔD�L€Eˆ5à
€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ# Q D°¸3Ô?€AÜ	$ a¨¡c V°5¸cÔ	B€BÜ
�‰��B‹œ"Ÿ'™' !›*Ñ$¤r§w¡w¨r°1£~Ñ5€Aä# Q¨ F°%¸SÔA€AàœKÑ'‰C¨S€EÙ!ˆ�‰‹�Š q¨AÑ-€Að ! CšK‰ˆb�!�RÔ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ð ˆs‚{Ü”j %¨¨C¨R¨°!°R¸Ø u°$¸3Ø E°õ	7ô 	”j %¨¨Q¨s°¨V°R¸Ø u°$¸3Ø E°õ	7ô 	”j %¨¨Q°°3°B°¸Ø u°$¸3Ø E°õ	7ô 	”i ¨¨A¨r°1°S°b°6Ø u°$¸3Ø E°ö	7ô 	”j %¨¨Q°°AØ u°$°s¸°)ÀØ E°õ	7ô 	”j %¨¨Q°°AØ u°$¸3¸sÀ¸8Ø E°õ	7ô 	”j %¨¨Q°°AØ u°$¸3Ø˜s ˜)¨°Uõ	<ô 	”j %¨¨Q°°AØ u°$¸3Ø E¨#¨2 J°Uö	<r5   zdu,d,dl,b,xc           
      óz   — t        d|j                  ¬«      } |||| |«      }|\
  }}}	}
}}}}}}t        ||«       y )Nr«  r¸   ©r'   r1   r   )rï  rp   rð  r‡   rŒ   r«  r»  r­  r®  r¯  r¼  rÿ  r½  r  r¾  r¿  ri   s                    r3   Útest_gtsvx_NAGrÇ    sH   € ô. ˜W¨A¯G©GÔ4€Eá�b˜!˜R Ó#€IØ@IÑ=€CˆˆS�$˜˜f e¨T°4¸ä˜a Õ(r5   zfact,df_de_lambdac                 ó>   —  t        d|j                  ¬«      | |«      S ©Nr!  r¸   ©r'   r1   ©rp   rÐ  s     r3   ú<lambda>rÌ  &  ó'   € ð )HÔ(8¸Ø?@¿w¹wô)HØHIÈ1ó)N€ r5   c                  ó   — y©N)NNNr¥   rË  s     r3   rÌ  rÌ  (  ó   � r5   c                 óÌ  — t         j                  j                  d«      }dt        j                  | «      j                  z  }t        d| ¬«      }d}t        |f||«      dz   }t        |dz
  f| |«      }	t        j                  |«      t        j                  |	d«      z   t        j                  t        j                  |	«      d«      z   }
t        |d	f| |¬
«      }|
|z  } |||	«      \  }}}|j                  «       |	j                  «       |j                  «       g} |||	||||¬«      \  }}}}}}}t        ||d   «       t        |	|d   «       t        ||d	   «       t        |dk(  d|› d�«       t        ||«       t        j                  |d«      t        j                  t        j                  |«      «      z   }t        j                  |«      }t        |
||z  t        j                  |«      j                  z  |¬«       t!        |d«      r
J d|› �«       ‚t        |j"                  dk(  d|j"                  › d�«       t        |j"                  dk(  d|j"                  › d�«       y)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.
    r  r-  Úptsvxr¸   rT   rS   rP   r�   rQ   ré  ©r¨  r®  Úefr   zinfo should be 0 but is ú.rŸ  r°  r±  )rQ   r²  z# but should be ({x_soln.shape[1]},)r³  N)r7   r  rX  rÖ   r×   r'   r4   r2  r²  r³  r	   r   r   r   r   ry   r«   r0   )r1   r;  r¨  Údf_de_lambdar2   r/  rÒ  rÚ   rp   rÐ  rˆ  r½  r‡   r®  rÔ  ri   rñ  rŒ   r  r¾  r¿  rJ  rw  s                          r3   Ú
test_ptsvxr×  "  s-  € ô �)‰)×
Ñ
 Ó
#€Cà”—‘˜%“×$Ñ$Ñ$€DÜ˜W¨EÔ2€EØ	€Aä# Q D¨(°CÓ8¸1Ñ<€AÜ# Q q¡S F¨E°3Ó7€AÜ
�‰�‹
”R—W‘W˜Q “^Ñ#¤b§g¡g¬b¯g©g°a«j¸!Ó&<Ñ<€AÜ(¨!¨Q¨°uÀ#ÔF€FØ	ˆF‰
€Añ    1Ó%�L€BˆˆDð —‘“˜!Ÿ&™&›( A§F¡F£HÐ-€Hñ */¨q°!°Q¸TØ24¸ô*=Ñ&€BˆˆAˆu�d˜D $ô �q˜( 1™+Ô&Ü�q˜( 1™+Ô&Ü�q˜( 1™+Ô&ÜˆD�A‰IÐ1°$°°qÐ9Ô:Ü˜f aÔ(ô 	�‰��B‹œ"Ÿ'™'¤"§'¡'¨!£*Ó-Ñ-€AÜ
�‰�‹€AÜ�A�q˜‘sœBŸG™G A›JŸL™LÑ)°Õ5ô �u˜iÔ(ð 1Ø
(¨¨Ð0ó1Ð(ô ˆD�J‰J˜$Ñ >°$·*±*°ð >8ð "8ô :ô ˆD�J‰J˜$Ñ >°$·*±*°ð >8ð "8õ :r5   c                 ó>   —  t        d|j                  ¬«      | |«      S rÉ  rÊ  rË  s     r3   rÌ  rÌ  a  rÍ  r5   c                  ó   — yrÏ  r¥   rË  s     r3   rÌ  rÌ  c  rÐ  r5   c           
      ó0  — t         j                  j                  d«      }t        d| ¬«      }d}t	        |f||«      dz   }t	        |dz
  f| |«      }t        j
                  |«      t        j
                  |d«      z   t        j
                  t        j                  |«      d«      z   }	t	        |df| |¬	«      }
|	|
z  } |||«      \  }}}t        t        ||d d |||||¬
«       t        t        |||d d ||||¬
«       t        t        ||||d d |||¬
«       y )Nr  rÒ  r¸   rT   rS   rP   r�   rQ   ré  rÓ  )
r7   r  rX  r'   r4   r2  r²  r  rP  r  )r1   r;  r¨  rÖ  r2   rÒ  rÚ   rp   rÐ  rˆ  r½  r‡   r®  rÔ  ri   s                  r3   Útest_ptsvx_error_raise_errorsrÛ  ]  s  € ô �)‰)×
Ñ
 Ó
#€CÜ˜W¨EÔ2€EØ	€Aä# Q D¨(°CÓ8¸1Ñ<€AÜ# Q q¡S F¨E°3Ó7€AÜ
�‰�‹
”R—W‘W˜Q “^Ñ#¤b§g¡g¬b¯g©g°a«j¸!Ó&<Ñ<€AÜ(¨!¨Q¨°uÀ#ÔF€FØ	ˆF‰
€Añ    1Ó%�L€BˆˆDô ”*˜e Q s¨ V¨Q°¸ÀÈÕKÜ”*˜e Q¨¨#¨2¨°¸ÀÈÕKÜ”)˜U A q¨!¨C¨R¨&°tÀÀrÖJr5   c                 ó>   —  t        d|j                  ¬«      | |«      S rÉ  rÊ  rË  s     r3   rÌ  rÌ  |  rÍ  r5   c                  ó   — yrÏ  r¥   rË  s     r3   rÌ  rÌ  ~  rÐ  r5   c                 óÀ  — t         j                  j                  d«      }t        d| ¬«      }d}t	        |f||«      dz   }t	        |dz
  f| |«      }t        j
                  |«      t        j
                  |d«      z   t        j
                  t        j                  |«      d«      z   }	t	        |df| |¬	«      }
|	|
z  } |||«      \  }}}|d
k(  r]d|d<    |||«      \  }}} ||||«      \  }}}}}}}|dkD  r||k  sJ ‚t	        |f||«      } ||||«      \  }}}}}}}|dkD  r||k  sJ ‚y  |||«      \  }}}d|d<   d|d<    |||||||¬«      \  }}}}}}}|dkD  sJ ‚y )Nr  rÒ  r¸   rT   rS   rP   r�   rQ   ré  rS  r   rR   rÓ  )r7   r  rX  r'   r4   r2  r²  )r1   r;  r¨  rÖ  r2   rÒ  rÚ   rp   rÐ  rˆ  r½  r‡   r®  rÔ  ri   rŒ   r  r¾  r¿  s                      r3   Útest_ptsvx_non_SPD_singularrß  x  s¡  € ô �)‰)×
Ñ
 Ó
#€CÜ˜W¨EÔ2€EØ	€Aä# Q D¨(°CÓ8¸1Ñ<€AÜ# Q q¡S F¨E°3Ó7€AÜ
�‰�‹
”R—W‘W˜Q “^Ñ#¤b§g¡g¬b¯g©g°a«j¸!Ó&<Ñ<€AÜ(¨!¨Q¨°uÀ#ÔF€FØ	ˆF‰
€Añ    1Ó%�L€BˆˆDàˆs‚{Øˆˆ!‰á# A qÓ)‰ˆˆB�á-2°1°a¸«^Ñ*ˆˆB��5˜$  dà�aŠx˜D AšIÐ%Ð%ô (¨¨¨h¸Ó<ˆÙ-2°1°a¸«^Ñ*ˆˆB��5˜$  dØ�aŠx˜D AšIÐ%Ð%˜Iñ $ A qÓ)‰ˆˆB�Øˆˆ1‰Øˆˆ1‰Ù-2°1°a¸ÀØ68¸Rô.AÑ*ˆˆB��5˜$  dà�aŠxˆ‰xr5   zd,e,b,xc                 ón   — t        d|j                  ¬«      } || ||«      \  }}}}}	}
}t        ||«       y )NrÒ  r¸   rÆ  )rp   rÐ  r‡   rŒ   rÒ  r®  rÔ  Úx_ptsvxr  r¾  r¿  ri   s               r3   Útest_ptsvx_NAGrâ  ¤  s:   € ô. ˜W¨A¯G©GÔ4€Eá/4°Q¸¸1«~Ñ,€BˆˆG�U˜D $¨ä˜a Õ)r5   r  c           	      óº  — t         j                  j                  d«      }t        j                  | «      j                  dz  }d\  }}t        ||g| |¬«      }t        ||g| |¬«      }|j                  «       j                  |z   t        j                  || ¬«       | d«      z  z   }|rYt        |«      D ��	cg c]  }t        ||«      D ]  }	|	‘Œ Œ c}	}t        |«      D ��	cg c]  }t        ||«      D ]  }	|‘Œ Œ c}	}f}
nat        d|dz   «      D ��	cg c]  }t        |«      D ]  }	|	‘Œ Œ c}	}t        d|dz   «      D ��	cg c]  }t        |«      D ]  }	|dz
  ‘Œ	 Œ c}	}f}
||
   }t        d| d	¬
«      \  }}}}} ||||¬«      \  }}t        |d«       t        ||¬«      |
   }t        ||d|¬«        ||||¬«      \  }}t        |d«       t        |«      |
   }t        ||d|¬«        |||||¬«      \  }	}t        |d«       t        ||«      }t        |	|d|¬«        |||||¬«      \  }}t        |d«       t        ||d|¬«       t         j                   j#                  |d«      } |||||¬«      \  }}t        |d«       t%        t'        d|z  t         j                   j)                  |d¬«      z
  «      |z  dk  «       y c c}	}w c c}	}w c c}	}w c c}	}w )Nr´   r-  )rv   rS   ré  r¸   rÀ   rP   )ÚppsvÚpptrfÚpptrsÚpptriÚppconr»  r¼  rà  r   rO  )rŒ  r  r   )r7   r  rX  rÖ   r×   r4   r²  ry   r   r5  r'   r   r   r   r   r   r†  r   r   rœ   r  )r1   r  r2   r/  rÚ   rÛ   ra   r‡   ÚyrŒ   rR  Úaprä  rå  ræ  rç  rè  Úulri   ÚaulÚuliÚauliÚbxÚxvrŒ  r  s                             r3   Ú!test_pptrs_pptri_pptrf_ppsv_ppconrñ  Â  s©  € ô �)‰)×
Ñ
 Ó
%€CÜ�8‰8�E‹?×Ñ˜sÑ"€Dà�G€A€tÜ# Q¨ F°%¸SÔA€AÜ# Q¨ I°UÀÔD€Aà	�‰‹�
‰
�Q‰œŸ™ ¨Ô/±%¸³)Ñ;Ñ;€AÙÜ! !›H×:�q¬e°A°q«kÒ:¨’Ð:�Ó:Ü! !›H×:�q¬e°A°q«kÒ:¨’Ð:�Ó:ð<‰ô " ! Q q¡S›M×<�q´5¸³8Ò<¨a’Ð<�Ó<Ü# A q¨¡s›m×>˜´U¸1³XÒ>°��1“Ð>�Ó>ð@ˆà	
ˆ4‰€BÜ'7Ø4ØØô(Ñ$€Dˆ%�˜˜uñ
 �Q˜ %Ô(�H€BˆÜ��qÔÜ
�1˜EÔ
" 4Ñ
(€CÜ�B˜ !¨$Õ/á�a˜ 5Ô)�I€CˆÜ��qÔÜˆq‹6�$‰<€DÜ�C˜ A¨DÕ1á�A�r˜1 EÔ*�G€A€tÜ��qÔÜ	ˆq�!‹€BÜ�A�r ¨Õ-á�A�r˜1 EÔ*�H€BˆÜ��qÔÜ�B˜ ¨Õ.ä�I‰I�N‰N˜1˜aÓ €EÙ˜˜2 U°%Ô8�K€Eˆ4Ü��qÔÜŒC��%‘œ"Ÿ)™)Ÿ.™.¨¨a˜.Ó0Ñ0Ó1°%Ñ7¸!Ñ;Õ<ùóC ;ùÛ:ùã<ùÛ>s   Â5KÃ KÄKÅ Kc                 óæ  — t         j                  j                  d«      }t        j                  | «      j                  dz  }d}t        ||g| |¬«      }t        d| ¬«      \  }} |d„ |d¬	«      }t        |d
   d«       |d   }|d   }	|d   }
| t        v r"t        |t        j                  |«      d|¬«       t        |	|z  |	j                  «       j                  z  |d|¬«        |||	dd«      }t        |d
   d«       |d   }|d   }	| t        v r"t        |t        j                  |«      d|¬«       t        |	|z  |	j                  «       j                  z  |d|¬«       t        |d   |
d|¬«       y )Nr´   r-  rv   ré  )ÚgeesÚtrexcr¸   c                  ó   — y ©Nr¥   ©rŒ   s    r3   rÌ  z!test_gees_trexc.<locals>.<lambda>ü  rÐ  r5   Fr¾  r�   r   rH  rX  rO  rV   rP   r  r�   ©r7   r  rX  rÖ   r×   r4   r'   r   r.   r   r   r²  ry   )r1   r2   r/  rÚ   ra   ró  rô  rö  r‚  r@  Úd2s              r3   Útest_gees_trexcrú  ò  sM  € ä
�)‰)×
Ñ
 Ó
%€CÜ�8‰8�E‹?×Ñ˜sÑ"€Dà
€AÜ# Q¨ F°%¸SÔA€Aä"Ð#4¸EÔB�K€Dˆ%á‘. !°Ô7€FÜ�˜‘˜QÔàˆq‰	€AØˆr‰
€Aà	
ˆ4‰€Bà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=á�1�a˜˜AÓ€FÜ�˜‘˜QÔàˆq‰	€AØˆr‰
€Aà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�A�d‘G˜R a¨dÖ3r5   zt, expect, ifst, ilst)r“  g)\�Âõ(¼¿ç{®Gáz„?g¸…ëQ¸ž?)rË  çš™™™™™¹¿ré  çffffffÖ?)rË  gÍÌÌÌÌÌä¿rü  gš™™™™™É?)rË  rË  rË  rü  )rü  çôlV}®ä¿gVŸ«­Ø_¶?gî|?5^ºÉ?)g»¸�ðÐ?rü  gÐÕVì/»·?g;ßO�—nÖ?)rË  rË  r“  ggÕçj+ö‡¿)ù      À      Ày
×£p=
×?
×£p=
×¿yR¸…ëQÈ¿¸…ëQ¸Þ?y)\�Âõ(ì?      Ð¿)rµ  ù      À       @y¸…ëQ¸ž¿
×£p=
ç¿yq=
×£pÍ¿¤p=
×£À?)rµ  rµ  ù       @      ð¿y®Gázî?ö(\�Âõà?)rµ  rµ  rµ  ù      @      À)r   y¡ø1æ®%Ä¿³q¬‹Ûæ?yësµûËÆ??ÆÜµ„|È¿yHáz®GÙ??ÆÜµØ?)rµ  r  y«ÏÕVì/ñ?ö—Ý“‡…Â?yj¼t“Ð?vàœ¥½Õ¿)rµ  rµ  r  yB>èÙ¬úÌ?=›UŸ«­ì?)rµ  rµ  rµ  rÿ  c                 ó”   — d}t        d| j                  ¬«      } || | ||d¬«      }t        |d   d«       |d   } t        || |¬«       y)	zg
    This test implements the example found in the NAG manual,
    f08qfc, f08qtc, f08qgc, f08quc.
    r  rô  r¸   r   )Úwantqr�   rŸ  N)r'   r1   r   r   )r‚  ÚifstÚilstÚexpectr/  rô  rö  s          r3   Útest_trexc_NAGr    sN   € ð< €DÜ˜W¨A¯G©GÔ4€Eá�1�a˜˜t¨1Ô-€FÜ�˜‘˜QÔàˆq‰	€AÜ�F˜A DÖ)r5   c                 óÐ  — t         j                  j                  d«      }t        j                  | «      j                  dz  }d}t        ||g| |¬«      }t        ||g| |¬«      }t        d| ¬«      \  }} |d„ ||dd¬	«      }t        |d
   d«       |d   }	|d   }
|d   }|d   }|	d   |
d   z  }|	d   |
d   z  }| t        v rDt        |	t        j                  |	«      d|¬«       t        |
t        j                  |
«      d|¬«       t        ||	z  |j                  «       j                  z  |d|¬«       t        ||
z  |j                  «       j                  z  |d|¬«        ||	|
||dd«      }t        |d
   d«       |d   }	|d   }
|d   }|d   }| t        v rDt        |	t        j                  |	«      d|¬«       t        |
t        j                  |
«      d|¬«       t        ||	z  |j                  «       j                  z  |d|¬«       t        ||
z  |j                  «       j                  z  |d|¬«       t        |	d   |
d   z  |d|¬«       t        |	d   |
d   z  |d|¬«       y )Nr´   r-  rv   ré  )ÚggesÚtgexcr¸   c                  ó   — y rö  r¥   r÷  s    r3   rÌ  z!test_gges_tgexc.<locals>.<lambda>J  rÐ  r5   F©r)  Úoverwrite_br�   r   rP   r´  rH  r�   rX  rO  rV   rQ   rR   rÙ  rø  )r1   r2   r/  rÚ   ra   r‡   r
  r  rö  rî   r‚  r„  r@  Úd1rù  s                  r3   Útest_gges_tgexcr  ?  s8  € ä
�)‰)×
Ñ
 Ó
%€CÜ�8‰8�E‹?×Ñ˜sÑ"€Dà
€AÜ# Q¨ F°%¸SÔA€AÜ# Q¨ F°%¸SÔA€Aä"Ð#4¸EÔB�K€Dˆ%á‘. ! Q°EÀuÔM€FÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€AØˆr‰
€AØˆr‰
€Aà	
ˆ4‰�1�T‘7Ñ	€BØ	
ˆ4‰�1�T‘7Ñ	€Bà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9Ü˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=Ü�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=á�1�a˜˜A˜q !Ó$€FÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€AØˆq‰	€AØˆq‰	€Aà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9Ü˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=Ü�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�A�d‘G˜a ™gÑ% r°¸Õ=Ü�A�d‘G˜a ™gÑ% r°¸Ö=r5   c                 ój  — t         j                  j                  d«      }t        j                  | «      j                  dz  }d}t        ||g| |¬«      }t        d| ¬«      \  }}} |d„ |d¬	«      }t        |d
   d«       |d   }	|d   }
|	d   }| t        v r"t        |	t        j                  |	«      d|¬«       t        |
|	z  |
j                  «       j                  z  |d|¬«       t        j                  |«      }d|d<   t        |||	«      }| t        v r |||	|
|¬«      }n |||	|
||d   ¬«      }t        |d
   d«       |d   }	|d   }
| t        v r"t        |	t        j                  |	«      d|¬«       t        |
|	z  |
j                  «       j                  z  |d|¬«       t        |	d   |d|¬«       y )Nr´   r-  rv   ré  )ró  ÚtrsenÚtrsen_lworkr¸   c                  ó   — y rö  r¥   r÷  s    r3   rÌ  z!test_gees_trsen.<locals>.<lambda>z  rÐ  r5   Fr¾  r�   r   rH  rX  rO  rP   rU   r¹   ©rº   Úliworkr�   ©r7   r  rX  rÖ   r×   r4   r'   r   r.   r   r   r²  ry   r   r"   )r1   r2   r/  rÚ   ra   ró  r  r  rö  r‚  r@  rù  Úselectrº   s                 r3   Útest_gees_trsenr  o  s–  € ä
�)‰)×
Ñ
 Ó
%€CÜ�8‰8�E‹?×Ñ˜sÑ"€Dà
€AÜ# Q¨ F°%¸SÔA€Aä/Ø(°ô 7Ñ€Dˆ%�ñ ‘. !°Ô7€FÜ�˜‘˜QÔàˆq‰	€AØˆr‰
€Aà	
ˆ4‰€Bà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�X‰X�a‹[€FØ€Fˆ1�Iä˜;¨°Ó2€Eà”ÑÙ�v˜q !¨5Ô1‰á�v˜q !¨5¸¸q¹ÔBˆÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€Aà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�A�d‘G˜R a¨dÖ3r5   z*t, q, expect, select, expect_s, expect_sep)g/Ý$�•é?g“©‚QI½¿gú~j¼t“x?gŒJê4¡?)rË  ç5ï8EGr¹¿gGrùé·Ï?gyX¨5Í;Ö?)rË  gÉå?¤ß¾ä¿r  gtµûËîÉ?)rË  rË  rË  gµ¦yÇ¹¿)gØ�sF”öä?g_˜LŒº?g®GázÖ?gUÁ¨¤N@å?)goð…ÉTÁà?g¾0™*•â¿g»'µ¦ã¿gz6«>W»¿)g¸¯çŒ(á¿g&äƒžÍªÓ¿gbX9´ÈÒ¿g-!ôlVç?)g·bÙ=y¸?gÛŠýe÷äç?rþ  gï8EGrù¿?)rý  gÍÌÌÌÌÌÜ?gìQ¸…ëÁ¿gÃõ(\�ÂÅ¿)g
×£p=
·?gìQ¸…ë±?râ  rý  )g)\�Âõ(Ü¿g…ëQ¸Õ¿g¸…ëQ¸ž¿gÃõ(\�ÂÅ?)ré  g{®GázÔ¿g¤p=
×£À¿g)\�Âõ(¼?)rP   r   r   rP   g      ü?gÃõ(\�Â	@)yq¬‹Ûh ÀäÉåÿÀyfˆc]ÜF×?õ¹ÚŠýe×¿yªñÒMbÈ¿Â&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–!ŽuÁ¿y2U0*©°¿ëâ6À[Ø?yV-²Ñ?Ù=yX¨µ¿y†8ÖÅm4°?¡ø1æ®%Ì¿)y�St$—ÿ°?­ú\mÅþÒ¿yƒÀÊ¡EÎ?øSã¥›Äà?y‘~û:pÎâ¿	ŠcîÚ¿yÇK7‰A`µ?À[ AñË?)yû:pÎˆ¢¿ú~j¼t“Ô¿yÌH¿}Ô?Á9#J{ƒá¿y’ËH¿}­?	ŠcîZâ¿yÔ+eâXw?à-� øÙ¿)y"ýöuàœ�?	ŠcîÒ?y?ÆÜÕ¿©¤N@a³¿yR¸…ëQÈ¿{®GázÄ¿yh"lxz¥ê?EGrùéÇ¿)y4¢´7øÂÀÓÞà“)ÀyS–!ŽuqÀF%uš@yµ¦yÇÕ¿Gx$(ð?y3Ä±.n£ô?°rh‘í|ë¿)yvàœ¥½Õ?¦
F%uø¿yÃdª`TRø?I�€&Â†Û¿yÁ¨¤N@þ?ö—Ý“‡…Ày4€·@‚â
@	ž^)Ëä?)y³êsµ{
@ Òo_ÎÀy§èH.ÿ@|ò°Pkš@yí¾0™*ì?*:’ËHñ¿y]mÅþ²{ä?®Gáz®÷¿)y)í¾0™ñ¿[±¿ìž<ê?yI.ÿ!ýöü?¦›Ä °rù¿yq¬‹Ûh 
@õÛ×�sFõ?y�1w-!ù?Üh o�„ÀgR¸…ëQð?g²�ï§ÆKÇ?c                 óÔ  — d}d}t        d| j                  ¬«      \  }}	t        |	|| «      }
| j                  t        v r ||| ||
¬«      }n ||| ||
|
d   ¬«      }t	        |d   d	«       |d	   } |d   }| j                  t        v r|d
   }|d   }n
|d   }|d   }t        ||| z  |j                  «       j                  z  |¬«       t        |d|z  |¬«       t        |d|z  |¬«       y)zW
    This test implements the example found in the NAG manual,
    f08qgc, f08quc.
    r  rû  )r  r  r¸   r¹   rP   r  r�   r   rS   rT   rU   rŸ  N)r'   r1   r"   r.   r   r   r²  ry   )r‚  r„  r  r  Úexpect_sÚ
expect_sepr/  Úatol2r  r  rº   rö  rî   Úseps                 r3   Útest_trsen_NAGr   �  sø   € ð` €DØ€EÜ)Ø ¨¯©ô1Ñ€Eˆ;ô ˜;¨°Ó2€Eà‡w�w”.Ñ Ù�v˜q !¨5Ô1‰á�v˜q !¨5¸¸q¹ÔBˆÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€AØ‡w�w”.Ñ Ø�1‰IˆØ�Q‰i‰à�1‰IˆØ�Q‰iˆä�F˜A ™E A§F¡F£H§J¡JÑ.°TÕ:Ü�H˜a !™e¨%Õ0Ü�J  C¡¨eÖ4r5   c                 ó>  — t         j                  j                  d«      }t        j                  | «      j                  dz  }d}t        ||g| |¬«      }t        ||g| |¬«      }t        d| ¬«      \  }}} |d„ ||dd¬	«      }	t        |	d
   d«       |	d   }
|	d   }|	d   }|	d   }|
d   |d   z  }|
d   |d   z  }| t        v rDt        |
t        j                  |
«      d|¬«       t        |t        j                  |«      d|¬«       t        ||
z  |j                  «       j                  z  |d|¬«       t        ||z  |j                  «       j                  z  |d|¬«       t        j                  |«      }d|d<   t        |||
|«      }|d   dz   |d   f} |||
||||¬«      }	t        |	d
   d«       |	d   }
|	d   }|	d   }|	d   }| t        v rDt        |
t        j                  |
«      d|¬«       t        |t        j                  |«      d|¬«       t        ||
z  |j                  «       j                  z  |d|¬«       t        ||z  |j                  «       j                  z  |d|¬«       t        |
d   |d   z  |d|¬«       t        |
d   |d   z  |d|¬«       y )Nr´   r-  rv   ré  )r
  ÚtgsenÚtgsen_lworkr¸   c                  ó   — y rö  r¥   r÷  s    r3   rÌ  z!test_gges_tgsen.<locals>.<lambda>ô  rÐ  r5   Fr  r�   r   rP   r´  rH  r�   rX  rO  rU   r¹   iùÿÿÿr  rÙ  r  )r1   r2   r/  rÚ   ra   r‡   r
  r"  r#  rö  rî   r‚  r„  r@  r  rù  r  rº   s                     r3   Útest_gges_tgsenr%  è  s}  € ä
�)‰)×
Ñ
 Ó
%€CÜ�8‰8�E‹?×Ñ˜sÑ"€Dà
€AÜ# Q¨ F°%¸SÔA€AÜ# Q¨ F°%¸SÔA€Aä/Ø(°ô 7Ñ€Dˆ%�ñ ‘. ! Q°EÀuÔM€FÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€AØˆr‰
€AØˆr‰
€Aà	
ˆ4‰�1�T‘7Ñ	€BØ	
ˆ4‰�1�T‘7Ñ	€Bà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9Ü˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=Ü�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�X‰X�a‹[€FØ€Fˆ1�Iä˜;¨°°1Ó5€Eð �1‰X�a‰Z˜˜q™Ð"€Eá�6˜1˜a  A¨UÔ3€FÜ�˜‘˜QÔàˆq‰	€AØˆq‰	€AØˆr‰
€AØˆr‰
€Aà”ÑÜ˜œ2Ÿ7™7 1›:¨A°DÕ9Ü˜œ2Ÿ7™7 1›:¨A°DÕ9ä�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=Ü�A˜‘E˜AŸF™F›HŸJ™JÑ&¨°¸Õ=ä�A�d‘G˜a ™gÑ% r°¸Õ=Ü�A�d‘G˜a ™gÑ% r°¸Ö=r5   za, b, c, d, e, f, rans, lans)r¿   r½   r½   r¾   )rË  r%  r¿   r½   )rË  r½   r%  r½   )rË  rË  rË  g      @)r½   r½   r½   r½   )rË  rË  rË  r¿   )ç      ÀrÁ   r½   g      (@)g      "Àr¾   ç       Àr'  )r&  r¾   r'  rÂ   )ç      ÀrÁ   r  g      3@)r¾   r½   r½   r%  )rË  r½   r¾   r½   )rË  rË  r½   r½   )rË  rË  rË  r¾   )r½   r½   r½   r¾   )rË  r½   r¿   r½   )rË  rË  rË  r½   )r(  rÀ   rË  rÁ   )r  r½   g       ÀrË  )rñ  r¾   ç      ÀrÀ   )r)  r¾   rË  rÀ   )rñ  r¾   rñ  rñ  )rñ  r½   r%  r½   )rñ  r½   rñ  r¿   )r¿   rñ  r½   rñ  )r½   r%  rñ  r½   )rñ  r½   r¾   rñ  )r½   rñ  r½   r½   c	                 ó\  — d}	t        d|¬«      }
 |
| |||||«      \  }}}}}t        |d«       t        |ddt        j                  |«      j
                  dz  d¬«       t        |d	dt        j                  |«      j
                  dz  d
¬«       t        |||	d¬«       t        |||	d¬«       y )Nr  Útgsylr¸   r   r½   r-  zSCALE must be 1.0©rÊ   r/  r"  rË  zDIF must be nearly 0zSolution for R is incorrect)r/  r"  zSolution for L is incorrect)r'   r   r   r7   rÖ   r×   )ra   r‡   rˆ   rp   rÐ  rd   ÚransÚlansr1   r/  r+  ÚroutÚloutr\   Údifri   s                   r3   Útest_tgsyl_NAGr2  !  s­   € ðH €Dä˜g¨eÔ4€EÙ#(¨¨A¨q°!°Q¸Ó#:Ñ €Dˆ$��s˜Dä��qÔÜ�E˜3 Q¬R¯X©X°e«_×-@Ñ-@ÀÑ-DØ/õ1ä�C˜ 1¬2¯8©8°E«?×+>Ñ+>¸sÑ+BØ2õ4ä�D˜$ TØ9õ;ä�D˜$ TØ9ö;r5   r‰   )rS  ry   Úijob)r   rP   rQ   rR   rS   c           
      óØ  — | t         j                  k(  rdnd}t         j                  j                  d«      }d\  }}t	        |j                  dd||g«      j                  | «      |j                  dd||g«      j                  | «      d¬«      ^}}}	t	        |j                  dd||g«      j                  | «      |j                  dd||g«      j                  | «      d¬«      ^}
}}	|j                  d	d
||g«      j                  | «      }|j                  d	d
||g«      j                  | «      }t        d| ¬«      } |||
||||||¬«      \  }}}}}|dk(  sJ d«       ‚|dk\  sJ d«       ‚|dk(  r1t        |ddt        j                  | «      j                  dz  d¬«       n|dk\  sJ d«       ‚|d
k  r»|dk(  r!||z  ||
z  z
  }||z  }||z  ||z  z
  }||z  }nt|dk(  rot        j                  |«      |z  t        j                  |«      |z  z   }||z  }|t        j                  |
«      z  |t        j                  |«      z  z   }d|z  |z  }t        |dd¬«       t        |dd¬«       y y )Ngü©ñÒMbP?g»½×Ùß|Û=l   OElÔt/ r  iöÿÿÿrv   rê   )Úoutputr  rQ   r+  r¸   )r‰   r3  r   zINFO is non-zerorË  zSCALE must be non-negativer-  zDIF must be 0 for ijob =0r,  zDIF must be non-negativerS  ry   rñ  zlhs1 and rhs1 do not match)r/  rÊ   r"  zlhs2 and rhs2 do not match)r7   r¾  r  r€  r!   Úuniformr/   r'   r   rÖ   r×   rƒ  )r1   r‰   r3  r/  r2   rÙ   rÚ   ra   rp   r?   r‡   rÐ  rˆ   rd   r+  r/  r0  r\   r1  ri   Úlhs1Úrhs1Úlhs2Úrhs2s                           r3   Ú
test_tgsylr;  U  sŠ  € ð
 œBŸJ™JÒ&‰4¨E€DÜ
�)‰)×
Ñ
Ð 0Ó
1€CØ�D€A€qä�#—+‘+˜c 2¨¨1 vÓ.×5Ñ5°eÓ<Ø—+‘+˜c 2¨¨1 vÓ.×5Ñ5°eÓ<Øô!€H€A€qˆ1ô �#—+‘+˜c 2¨¨1 vÓ.×5Ñ5°eÓ<Ø—+‘+˜c 2¨¨1 vÓ.×5Ñ5°eÓ<Øô!€H€A€qˆ1ð 	�‰�B˜˜A˜q˜6Ó"×)Ñ)¨%Ó0€AØ�‰�B˜˜A˜q˜6Ó"×)Ñ)¨%Ó0€Aä˜g¨eÔ4€EÙ#(¨¨A¨q°!°Q¸Ø/4¸4ô$AÑ €Dˆ$��s˜Dð �1Š9Ð(Ð(Ó(ˆ9Ø�CŠ<Ð5Ð5Ó5ˆ<Øˆq‚yÜ˜˜S q¬r¯x©x¸«×/BÑ/BÀ3Ñ/FØ ;ö	=ð �cŠzÐ5Ð5Ó5ˆzð ˆq‚yØ�CŠ<Ø�t‘8˜d Q™hÑ&ˆDØ˜‘7ˆDØ�t‘8˜d Q™hÑ&ˆDØ˜‘7‰DØ�cŠ\Ü—<‘< “? TÑ)¬B¯L©L¸«O¸dÑ,BÑBˆDØ˜‘7ˆDØœ"Ÿ,™, q›/Ñ)¨D´2·<±<À³?Ñ,BÑBˆDØ˜‘:˜a‘<ˆDä˜˜d¨°BØ <õ	>ä˜˜d¨°BØ <ö	>ð r5   Úmtyperß  c                 ó  — | dk(  r|t         v rt        j                  d«       t        j                  j                  d«      }d\  }}|t        v r<|j                  ||f¬«      |j                  ||f¬«      dz  z   j                  |«      }n#|j                  ||f¬«      j                  |«      }| dk(  r||j                  z   n||j                  «       j                  z   }|j                  ||f¬«      j                  |«      }| › d�| › d	�| › d
�f}t        ||¬«      \  }	}
} |
||¬«      } |	||¬«      \  }}}|dk(  sJ ‚ ||||¬«      \  }}|dk(  sJ ‚t        j                  |«      j                  }t        ||z  |d|z  |z  ¬«       y )Nrr  zhetrs not for real dtypes.l   *Mö/t|0 )rµ   rT   r  r-   rq  rt  ru  Útrsr¸   rà  r¹   r   )ra   rÿ  r‡   r-  rŸ  )rÕ   rA   rB   r7   r  r€  r.   r6  r/   ry   r²  r'   rÖ   r×   r   )r<  r1   r  r2   rÚ   rÛ   rˆ  r‡   rI   rt  ru  r>  rº   r  rÿ  ri   rŒ   r×   s                     r3   Útest_sy_hetrsr?  ˆ  sƒ  € ð �‚}˜¤+Ñ-Ü�‰Ð0Ô1Ü
�)‰)×
Ñ
Ð 0Ó
1€CØ�G€A€tØ”ÑØ�[‰[˜q !˜fˆ[Ó%¨¯©¸!¸Q¸¨Ó(@ÀÑ(CÑC×KÑKÈEÓR‰à�K‰K˜a ˜VˆKÓ$×+Ñ+¨EÓ2ˆà˜D’=ˆˆA�C‰CŠ a¨!¯&©&«(¯*©*¡n€AØ�‰˜!˜T˜ˆÓ#×*Ñ*¨5Ó1€AØˆg�SˆM˜e˜W IÐ.°5°'¸°Ð=€EÜ*¨5¸Ô>Ñ€Cˆ�CÙ�a˜uÔ%€EÙ˜! 5Ô)�O€CˆˆtØ�1Š9Ðˆ9Ù�C˜d aÔ(�G€A€tØ�1Š9Ðˆ9Ü
�(‰(�5‹/×
Ñ
€CÜ�A�a‘C˜  Q¡ s¡Ö+r5   r�   z
uplo, m, n))rT  rT   rv   )rT  rv   rv   )rJ  rv   rT   )rJ  rv   rv   c                 ó¢  — t         j                  j                  d«      }|j                  ||f¬«      j                  |«      }t	        d|f«      \  }}	 || |||¬«      }
|dk(  rt        j
                  |«      nt        j                  |«      }|dk(  r&t        j                  t        ||«      «      }d|||f<    |	| |«      }t        |
|d¬«       y )	Nl   8#ìqà9í
r  )Úlantrr‘   )rM  r2  rT  rP   g�íµ ÷ÆÀ>rÉ   )
r7   r  r€  r/   r'   r   r   rÌ  r\  r   )r   rM  rÙ   rÚ   r2  r1   r2   rˆ  rA  r‘   rB  rA  r    s                r3   Ú
test_lantrrB  ¢  s¹   € ô �)‰)×
Ñ
Ð 1Ó
2€CØ�
‰
˜˜A˜ˆ
Ó×&Ñ& uÓ-€AÜ#Ð$6¸¸Ó=�L€Eˆ5Ù
��a˜d¨Ô
.€Cð ˜c’kŒ�‰�Œ
¤r§w¡w¨q£z€AØˆs‚{Ü�I‰I”c˜!˜Q“iÓ ˆØˆˆ!ˆQˆ$‰Ù
��a‹.€Cä�C˜ 4Ö(r5   r+  )šÚ	functoolsr   r  Únumpy.testingr   r   r   r   r   r	   rA   r
   r  Únumpyr7   r   r   r   r   r   r   r   r   Únumpy.randomr   r   r   Úscipy.linalgr   r9   r   r   r   r   r   r   r   r   r   r    r!   Úscipy.linalg.lapackr"   Úscipy.statsr#   r$   Úscipy.sparseÚsparserY  Úscipy.__config__r%   ÚImportErrorr&   r8   r'   Úscipy.linalg.blasr(   r¾  r8  rÕ   r¹  Ú
complex128r.   rÔ   Úblas_providerÚblas_versionr4   rL   rN   r§   r²   rs  rt  r  r  r  r#  rE  r�  r›  r©  r¸  rÀ  rÂ  rØ  r÷  r  r  r  r!  r*  r9  rL  rU  r[  rb  rg  ro  ry  r{  rœ  r   r©  r±  Úskipifrº  rÁ  r5  r×  rÝ  rà  rƒ   rç  rÿ  r  r  r  rå  r'  r)  r+  r9  rA  rI  rN  rP  rR  rV  rg  rj  r|  r�  r‰  r¦  rÀ  rÂ  rÄ  rÇ  r×  rÛ  rß  râ  rñ  rú  r  r  r  r   r%  r2  r;  r?  rE   rB  r¥   r5   r3   ú<module>rS     s¹  ðõ
 Û ÷/÷ /ó Ý *ã ÷!÷ !ó !÷ -Ñ ,÷F÷ F÷ Fó Fõ /ß 2å ðÝ'ðÝ0õ 1Ý ,à�z‰z˜2Ÿ:™:Ð&€Ø—,‘, §¡Ð.€Ø	�~Ñ	%€à#Ð #€�Ø	ÐØÐ/Ñ0°Ñ8¸Ñ@€MØÐ.Ñ/°Ñ7¸	ÑB€Lò*òO÷.]-ñ ]-÷@
ñ 
÷p9ñ p9ðf ‡�×Ñ˜ &Ó)Ø‡�×Ñ˜Ò"BÓCñó Dó *ð÷-ñ -÷*Cñ C÷(;ñ ;÷@J/ñ J/ð\ ‡�×Ñ˜ &Ó)Ø‡�×Ñ˜¢Ó1Ø‡�×Ñ˜ # s Ó,Ø‡�×Ñ˜ # s Ó,Ø‡�×Ñ˜˜q "˜gÓ&ñ )ó 'ó -ó -ó 2ó *ð
 )òF)ò.'4òT'6òT4÷8AGñ AG÷HLñ Lò^.?òbAò63ò>1ò>FòD&DòR7!òt7:òt&8òR3ò6Dò@"DòJDò4 L÷FUKñ UKòp%PòP%PòP*/òZ<ð ‡�×Ñ�DØKð ó MñKóMðKò$:ð> ‡�×Ñ˜ &¨&Ð!1Ó2Ø‡�×Ñ˜ +Ó.Ø‡�×Ñ˜¡ q£Ó*Ø‡�×Ñ˜¡ q£Ó*Ø‡�×Ñ˜¡ q£Ó*Ø‡�×Ñ˜ ! Q Ó(Ø‡�×Ñ˜ ! Q Ó(ób&ó )ó )ó +ó +ó +ó /ó 3ðb&ðJ ‡�×Ñ˜ +Ó.ñ ó /ð ðF ‡�×Ñ˜(Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+ð'óñ1óð1ð ‡�×ÑÐ9Ø#˜2Ÿ8™8Ò%?Ú%?Ú%@Ú%=Ú%?Ú%?ð%Aó Bð $˜2Ÿ8™8Ò$DÓEØ#˜2Ÿ8™8Ò%GÚ%FÚ%EÚ%HÚ%GÚ%Gð%Ió Jð $˜2Ÿ8™8Ò%GÚ%HÚ%FÚ%Gð%Ió JðKð LóMñ$,ó%Mð$,ð  ‡�×Ñ˜ &Ó)ñXKó *ðXKðv ‡�×ÑÐLØ#˜2Ÿ8™8Ò$9Ó:Ø%˜RŸX™XÒ&@ÓAØ%˜RŸX™XÒ&;Ó<Ø%˜RŸX™XÒ&9Ó:Ø%˜RŸX™XÒ&BÓCØ%˜RŸX™X¢lÓ3Ø%˜RŸX™X¢oÓ6Ø%˜RŸX™X¨¨S zØ(,¨d |Ø(+¨T {Ø(+¨U |Ø(+¨T {ð	')ó *ð &˜RŸX™X¨¨A wØ()¨2 wØ()¨2 wØ(*¨B xØ(*¨A wð	'0ó 1ð2ð& &˜RŸX™XÒ&GÓHØ%˜RŸX™Xò '4ó 5ð &˜RŸX™XÒ&FÓGà%˜RŸX™Xò 'Aó Bà%˜RŸX™Xò ':ó ;à%˜RŸX™XÒ&?Ó@Ø%˜RŸX™X¢oÓ6Ø%˜RŸX™X¨°*Ð'=Ø(3°\Ð'BØ(4°iÐ'@Ø(3°[Ð'AØ(1°:Ð'>ð	'@ó Að
 &˜RŸX™X¨°Ð'7Ø(.°Ð'7Ø(.°Ð'8Ø(/°Ð'8Ø(.°Ð'7ð	'9ó :ð%ð%)ó* ñV óW* ðV ð( ‡�×Ñ˜ &Ó)Ø‡�×Ñ˜¢Ó1Ø‡�×Ñ˜˜q "˜gÓ&ñ)ó 'ó 2ó *ð)ð2 ‡�×Ñ˜ &Ó)Ø‡�×Ñ˜Ò"BÓCñó Dó *ðð ‡�×Ñ˜Ù˜[¨;Ñ6¸Ó?óAñ,&óAð,&ð^ ‡�×Ñ˜Ù˜[¨;Ñ6¸Ó?óAñ0óAð0ð ‡�×Ñ˜Ù˜[¨;Ñ6¸Ó?óAñMóAðMð& ‡�×ÑÐAØ"˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™(¢?Ó3Ø"˜"Ÿ(™(Ò#4Ó5Ø"˜"Ÿ(™(Ò#8Ó9Ø"˜"Ÿ(™( Q¨ G¨a°¨V°a¸°V¸bÀ"¸XØ%&¨ Gð$-ó .à"˜"Ÿ(™( S¨! H¨q°"¨g¸¸2°wÀÀQÀØ%&¨ Gð$-ó .ðð #˜"Ÿ(™(Ò#3Ó4Ø"˜"Ÿ(™(Ò#>Ó?Ø"˜"Ÿ(™(¢=Ó1Ø"˜"Ÿ(™(Ò#5Ó6Ø"˜"Ÿ(™( V¨WÐ$5¸ÀÐ7GØ%+¨VÐ$4°v¸vÐ6Fð$Hó Ià"˜"Ÿ(™( T¨5 M°D¸$°<À$ÈÀØ%)¨4 Lð$2ó 3ð	ðEó ñ&1ó'ð&1ò.ð@ ‡�×ÑÐ)Ù˜V [°;Ñ%>Ó?óAà‡�×Ñ˜¡e¨A£hÓ/ñ&ó 0óAð&ð< ‡�×ÑÐ)Ù˜V [°;Ñ%>Ó?óAà‡�×Ñ˜¡e¨A£hÓ/ñ	ó 0óAð	ð ‡�×ÑÐ)Ù˜V [°;Ñ%>Ó?óAà‡�×Ñ˜¡e¨A£hÓ/ñ	Nó 0óAð	Nð ‡�×ÑÐ)Ù˜V [°;Ñ%>Ó?óAà‡�×Ñ˜¡e¨A£hÓ/ñ	ó 0óAð	ð ‡�×ÑÐ:ØØ#˜2Ÿ8™8Ò$;Ó<Ø#˜2Ÿ8™8Ò$5Ó6Ø#˜2Ÿ8™8Ò$DÓEØ#˜2Ÿ8™8Ò%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 ‡�×Ñ˜ &Ó)Ø‡�×Ñ˜¨¨1 vÓ.Ø‡�×Ñ˜ # s Ó,ñ-Bó -ó /ó *ð-Bð` ‡�×Ñ˜ &¨¡(Ó+Ø‡�×Ñ˜¨¨t }Ó5Ø‡�×Ñ˜ # s Ó,ñ-<ó -ó 6ó ,ð-<ð` ‡�×Ñ˜Ø#˜2Ÿ8™8Ò$9Ó:Ø#˜2Ÿ8™8Ò$?Ó@Ø#˜2Ÿ8™8Ò$9Ó:Ø#˜2Ÿ8™8 c¨3 Z°#°t°¸sÀD¸kØ&(¨% [°3¸°+ð%?ó @à#˜2Ÿ8™8 b¨! W¨q°"¨g¸¸2°wÀÀRÀØ&(¨! Wð%.ó /ð0ð $˜2Ÿ8™8Ò$EÓFØ#˜2Ÿ8™8ò %>ó ?à#˜2Ÿ8™8Ò$DÓEØ#˜2Ÿ8™8 h°
Ð%;Ø&1°;Ð%?Ø&2°HÐ%=Ø&1°;Ð%?Ø&/°Ð%<ð	%>ó ?ð
 $˜2Ÿ8™8 f¨fÐ%5¸ÀÐ7GØ&,¨gÐ%6¸À&Ð8IØ&,¨fÐ%5ð%7ó 8ð9ð:ó;ñ()ó);ð()ð ‡�×ÑÐ)©3¨v°{Ø1<ñ8=ó ,>ó ?à‡�×ÑÐ,ØñNðOð Ñ ?Ð@ðBóCñ
1:óCó?ð1:ðh ‡�×ÑÐ)©3¨v°{Ø1<ñ8=ó ,>ó ?à‡�×ÑÐ,ØñNðOð Ñ ?Ð@ðBóCñ
KóCó?ðKð( ‡�×ÑÐ)©3¨v°{Ø1<ñ8=ó ,>ó ?à‡�×ÑÐ,ØñNðOð Ñ ?Ð@ðBóCñ
"óCó?ð"ðJ ‡�×Ñ™Ø#˜2Ÿ8™8Ò$6Ó7Ø#˜2Ÿ8™8¢OÓ4Ø#˜2Ÿ8™8 a¨ W¨q°!¨f°q¸!°f¸rÀ2¸hØ&'¨ Wð%.ó /à#˜2Ÿ8™8 c¨1 X°°2¨w¸¸B¸Ø&(¨! W¨q°"¨gð%7ó 8ð	9ð $˜2Ÿ8™8Ò$4Ó5Ø#˜2Ÿ8™8Ò$?Ó@Ø#˜2Ÿ8™8 h°	Ð%:Ø&.°Ð%9Ø&.°Ð%9Ø&.°Ð%9ð%;ó <ð $˜2Ÿ8™8 f¨gÐ%6Ø&,¨fÐ%5Ø&,¨fÐ%5Ø&,¨fÐ%5ð%7ó 8ð	9ð:ó;ò"
*ó#;ð"
*ð ‡�×Ñ™ 5¨$ -Ó0Ø‡�×Ñ˜ &Ó)ò+=ó *ó 1ð+=ð\ ‡�×Ñ˜ &Ó)ò!4ó *ð!4ðH ‡�×ÑÙØ€b‡h�hÓ)Û)Û*Û)ð+ó ,ð €b‡h�hÓ2Û1Û1Û1ð3ó 4ð ˆðð €b‡h�hÓJÛKÛHÛHðJó Kð €b‡h�hó 5ó5ó5ó6ð7ó 8ð ˆððóò0*ó1ð0*ð  ‡�×Ñ˜ &Ó)ò,>ó *ð,>ð^ ‡�×Ñ˜ &Ó)ò*4ó *ð*4ðZ ‡�×ÑÙ0Ø€b‡h�hÓ1Û1Û2Û1ð3ó 4ð €b‡h�hÓ0Û3Û3Û1ð3ó 4ð €b‡h�hÓ2Û1Û3Û2ð4ó 5ð €b‡h�h‹|ÓÙ‘ðð €b‡h�hó 6ó7ó5ó5ð6ó 7ð €b‡h�hó 5ó6ó5ó6ð7ó 8ð €b‡h�hó 6ó5ó5ó5ð6ó 7ð €b‡h�h‹|ÓÙ‘ð3ð'ó)òT5óU)ðT5ðB ‡�×Ñ˜ &Ó)ò5>ó *ð5>ðp ‡�×ÑÙ"Ø€b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð €b‡h�hÓ(Û(Û(Û(ð*ó +ð9,ð -ó!.ðD ‡�×Ñ˜ +Ó.ò;ó /óE!.ðF;ð" ‡�×Ñ˜ +Ó.Ø‡�×Ñ™¡*Ó-Ø‡�×Ñ™£Ó1ò->ó 2ó .ó /ð->ð` ‡�×Ñ™ 4¨ ,Ó/Ø‡�×Ñ˜ &Ó)Ø‡�×Ñ™¡&Ó)ò,ó *ó *ó 0ð,ð. ‡�×Ñ˜¡¡mÓ!4Ó5Ø‡�×Ñ™ó (Eó Fà‡�×Ñ˜ # s Ó,Ø‡�×Ñ˜ &Ó)ò)ó *ó -óFó 6ñ
)øðUl ò ØƒFðûð
 ò ØƒGðús.   Á8AT Á?AT# ÁTAT ÁTAT ÁT#AT.ÁT-AT.