§
    ¢éUgä÷ ã                   óÎ&  — d dl m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.Z/ 	 d d
l0m1Z1 n# e2$ r dZ1Y nw xY w	 d dlm3Z4 n# e2$ r dZ4Y nw xY wd dl(m5Z5 d dl6m7Z7 ej8        ej9        gZ:ej;        ej<        gZ=e:e=z   Z>dxZ?Z@e1�(e1d         d         d         Z?e1d         d         d         Z@d„ ZAd„ ZB G d„ d¦  «        ZC G d„ d¦  «        ZD G d„ d¦  «        ZEe	jF         G                    de>¦  «        e	jF         G                    dg d¢¦  «        d„ ¦   «         ¦   «         ZH G d„ d¦  «        ZI G d „ d!¦  «        ZJ G d"„ d#¦  «        ZK G d$„ d%¦  «        ZLd&„ ZMd'„ ZNd(„ ZOd)„ ZP G d*„ d+¦  «        ZQ G d,„ d-¦  «        ZRd.„ ZSd/„ ZTd0„ ZUd1„ ZVd2„ ZWd3„ ZXd4„ ZYd5„ ZZd6„ Z[d7„ Z\d8„ Z]d9„ Z^d:„ Z_d;„ Z` G d<„ d=¦  «        Zad>„ Zbd?„ Zcd@„ ZddA„ Zee	jF         f                    dBdC¬D¦  «        dE„ ¦   «         ZgdF„ Zhe	jF         G                    dGdHdIg¦  «        e	jF         G                    de:¦  «        e	jF         G                    dJ eidK¦  «        ¦  «        e	jF         G                    dL eidM¦  «        ¦  «        e	jF         G                    dN eidM¦  «        ¦  «        e	jF         G                    dOd dPg¦  «        e	jF         G                    dQd dPg¦  «        �dQdR„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zje	jF         G                    de:¦  «        dS„ ¦   «         Zke	jF         G                    dTdJdUidLdUidNdUidOdUidVdUidQdUif¦  «        dW„ ¦   «         Zle	jF         G                    dX ejm        g dY¢g dZ¢g d[¢g d\¢g d]¢g d^¢g¦  «         ejm        g d_¢¦  «         ejm        g d`¢g da¢g db¢g dc¢g dd¢g de¢g¦  «         ejm        g df¢g dg¢g dh¢g di¢g¦  «        fg¦  «        dj„ ¦   «         Zne	jF         G                    de>¦  «        dk„ ¦   «         Zoe	jF         G                    dl ejm        g dm¢¦  «         ejm        g dn¢¦  «         ejm        g do¢¦  «         ejm        g dp¢¦  «         ejm        g dq¢¦  «         ejm        g dr¢¦  «         ejm        g ds¢¦  «         ejm        dtdugdvdwgdxdygdzd{gdtd|gg¦  «         ejm        d}d~gdd}gd€d�gd}d‚gd�dPgg¦  «        f	 ejm        g dƒ¢¦  «         ejm        g d„¢¦  «         ejm        g d…¢¦  «         ejm        g d†¢¦  «         ejm        g d‡¢¦  «         ejm        g dˆ¢¦  «         ejm        g ds¢¦  «         ejm        d‰dŠgd‹dŒgd�dŽgd�d�gd‘d’gg¦  «         ejm        d“d”gd•d–gd—d˜gd™dšgd›dœgg¦  «        f	g¦  «        d�„ ¦   «         Zpe	jF         G                    de>¦  «        e	jF         G                    dg dž¢¦  «        dŸ„ ¦   «         ¦   «         Zqe	jF         G                    d  ere:e:z   e>¦  «        ¦  «        d¡„ ¦   «         Zse	jF         G                    d  ere:e:z   e>¦  «        ¦  «        d¢„ ¦   «         Zte	jF         G                    d  ere:e:z   e>¦  «        ¦  «        d£„ ¦   «         Zue	jF         G                    d¤ ejm        g d¥¢¦  «         ejm        g d¦¢¦  «         ejm        g d§¢¦  «         ejm        g d¨¢¦  «         ejm        dKd©gdUdMgdªdUgd«d¬gdd­gg¦  «         ejm        d®dªgdªd¯gdPd�gd¯dKgd€d°gg¦  «        f ejm        g d±¢¦  «         ejm        g d²¢¦  «         ejm        g d³¢¦  «         ejm        g d´¢¦  «         ejm        dµd¶gd·d¸gd¹dºgd»d¼gg¦  «         ejm        dšd½gd“d“gd¾d¾gd›dšgg¦  «        fg¦  «        d¿„ ¦   «         ZvdÀ„ Zwe	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dÂ eid€¦  «        ¦  «        dÃ„ ¦   «         ¦   «         Zxe	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dÂ eid€¦  «        ¦  «        dÄ„ ¦   «         ¦   «         Zye	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dÂ eid€¦  «        ¦  «        dÅ„ ¦   «         ¦   «         Zze	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dÂ eid€¦  «        ¦  «        dÆ„ ¦   «         ¦   «         Z{e	jF         G                    dÇdª ejm        g dÈ¢¦  «         ejm        g dÉ¢¦  «         ejm        g dÊ¢¦  «         ejm        g dË¢g dÌ¢g dÍ¢g dÎ¢g¦  «        fg¦  «        dÏ„ ¦   «         Z|e	jF         G                    de>¦  «        e	jF         G                    dÐg dÑ¢¦  «        dÒ„ ¦   «         ¦   «         Z}dÓ„ Z~e	jF         G                    dÔg dÕ¢¦  «        e	jF         G                    dÖd×dØg¦  «        dÙ„ ¦   «         ¦   «         Ze	jF         G                    dÔdÚdÛg¦  «        e	jF         G                    dÖd×dØg¦  «        dÜ„ ¦   «         ¦   «         Z€e	jF         G                    dÝe>¦  «        e	jF         G                    dÞg dß¢¦  «        dà„ ¦   «         ¦   «         Z�e	jF         G                    dÝe>¦  «        dá„ ¦   «         Z‚e	jF         G                    de>¦  «        e	jF         G                    dâdãdBg¦  «        e	jF         G                    dädådæg¦  «        dç„ ¦   «         ¦   «         ¦   «         Zƒe	jF         G                    de>¦  «        e	jF         G                    dâd dPg¦  «        e	jF         G                    dädådæg¦  «        dè„ ¦   «         ¦   «         ¦   «         Z„e	jF         G                    de>dªz  ¦  «        e	jF         G                    dâdãdBg¦  «        e	jF         G                    dädådæg¦  «        dé„ ¦   «         ¦   «         ¦   «         Z…e	jF         G                    dê ejm        g dm¢¦  «         ejm        g dn¢¦  «         ejm        g do¢¦  «         ejm        dtdugdvdwgdxdygdzd{gdtd|gg¦  «         ejm        d}d~gdd}gd€d�gd}d‚gd�dPgg¦  «        f ejm        g dƒ¢¦  «         ejm        g d„¢¦  «         ejm        g d…¢¦  «         ejm        d‰dŠgd‹dŒgd�dŽgd�d�gd‘d’gg¦  «         ejm        d“d”gd•d–gd—d˜gd™dšgd›dœgg¦  «        fg¦  «        dë„ ¦   «         Z†e	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dìdådí„ fdædî„ fg¦  «        dï„ ¦   «         ¦   «         Z‡e	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dìdådð„ fdædñ„ fg¦  «        dò„ ¦   «         ¦   «         Zˆe	jF         G                    dÁ ere>e:e:z   ¦  «        ¦  «        e	jF         G                    dìdådó„ fdædô„ fg¦  «        dõ„ ¦   «         ¦   «         Z‰e	jF         G                    dö ejm        g d¥¢¦  «         ejm        g d¦¢¦  «         ejm        dKd©gdUdMgdªdUgd«d¬gdd­gg¦  «         ejm        d®dªgdªd¯gdPd�gd¯dKgd€d°gg¦  «        f ejm        g d±¢¦  «         ejm        g d²¢¦  «         ejm        dµd¶gd·d¸gd¹dºgd»d¼gg¦  «         ejm        dšd½gd“d“gd¾d¾gd›dšgg¦  «        fg¦  «        d÷„ ¦   «         ZŠe	jF         G                    dødãdBg¦  «        e	jF         G                    de>¦  «        dù„ ¦   «         ¦   «         Z‹e	jF         G                    de>¦  «        dú„ ¦   «         ZŒe	jF         G                    dû ejm        g dü¢g dý¢g dþ¢g dÿ¢g¦  «         ejm        g �d ¢g �d¢g �d¢g dÿ¢g¦  «        dªdPf ejm        g �d¢g �d¢g �d¢g �d¢g¦  «         ejm        g �d¢g �d¢g �d	¢g �d
¢g¦  «        dPdMfg¦  «        �d„ ¦   «         Z�e	jF         G                    de>¦  «        �d„ ¦   «         ZŽe	jF         G                    de>¦  «        �d„ ¦   «         Z�e	jF         G                    �d ejm        g �d¢g �d¢g �d¢g �d¢g¦  «         ejm        g �d¢g �d¢g �d¢g �d¢g¦  «         ejm        g �d¢g �d¢g �d¢g �d¢g¦  «         ejm        g �d¢¦  «        �d�df ejm        g �d¢g �d¢g �d ¢g �d!¢g¦  «         ejm        g �d"¢g �d#¢g �d$¢g �d%¢g¦  «         ejm        g �d&¢g �d'¢g �d(¢g �d)¢g¦  «         ejm        g �d¢¦  «        �d*�d+fg¦  «        �d,„ ¦   «         Z�e	jF         G                    de>¦  «        �d-„ ¦   «         Z‘e	jF         G                    �d. ejm        g �d/¢g �d0¢g �d1¢g �d2¢g¦  «         ejm        g �d3¢g �d0¢g �d1¢g �d4¢g¦  «         ejm        g �d5¢g �d6¢g �d7¢g �d8¢g¦  «         ejm        g �d9¢g �d:¢g �d;¢g �d<¢g¦  «         ejm        g �d=¢g �d>¢g �d;¢g �d?¢g¦  «         ejm        g �d@¢g �dA¢g �dB¢g �dC¢g¦  «         ejm        g �d3¢g �dD¢g �dE¢g �dF¢g¦  «         ejm        g �dG¢g �dH¢g �dI¢g �dJ¢g¦  «        fg¦  «        e	jF         G                    de:¦  «        �dK„ ¦   «         ¦   «         Z’e	jF         G                    de:¦  «        e	jF         G                    �dL�dM¦  «        e	jF         G                    �dNg �dO¢¦  «        �dP„ ¦   «         ¦   «         ¦   «         Z“dS (R  é    )Úreduce)Úassert_equalÚassert_array_almost_equalÚassert_Úassert_allcloseÚassert_almost_equalÚassert_array_equalN)Ú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 r=t          j        j        | Ž t          j        j        | Ž dz  z                        |¦  «        S t          j        j        | Ž                      |¦  «        S )Nù              ð?)ÚCOMPLEX_DTYPESÚnpÚrandomr   Úastype)ÚshapeÚdtypes     ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_lapack.pyÚgenerate_random_dtype_arrayr5   0   s\   € à•ÐÐÝ”	” Ð&Ý”)”. %Ð(¨Ñ-ñ.ß/5ªv°e©}¬}ð	=åŒ9Œ>˜5Ð!×(Ò(¨Ñ/Ô/Ð/ó    c                  ór  — t           j        €t          j        d¦  «         t	          t           j                             ¦   «         ¦  «        } h d£}t          ¦   «         }t          t           ¦  «        D ]4}|                     d¦  «        s||vr|| vr| 	                    |¦  «         Œ5|g k    s
J d¦   «         ‚dS )z%Test that all entries are in the doc.Nzlapack.__doc__ is None>   r/   Ú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       r4   Útest_lapack_documentedrL   8   s»   € å„~ÐÝŒÐ,Ñ-Ô-Ð-Ý•”×$Ò$Ñ&Ô&Ñ'Ô'€Eð	ð 	ð 	€Kõ ‰fŒf€GÝ•F‘”ð !ð !ˆØ—’ Ñ$Ô$ð 	!¨°[Ð)@Ð)@Ø˜EÐ!Ð!Ø�NŠN˜4Ñ Ô Ð øØ�bŠ=ˆ=ˆ=ÐN‰=Œ=ˆ=ˆ=ˆ=r6   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú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          |	¦  «        ¦  «         Œéd S )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   Úlenr/   r   )
ÚselfÚaÚa1ÚpÚfÚbaÚloÚhiÚpivscaleÚinfos
             r4   Ú
test_gebalzTestFlapackSimple.test_gebalQ   s6  € ØˆYˆY˜	˜	˜	 9 9 9Ð-ˆØˆoˆoØˆoˆoØˆlˆlØˆlˆlðˆð ð 	*ð 	*ˆAÝ�  7¡¨DÑ1Ô1ˆAØˆyØØ)*¨¨1©¬Ñ&ˆB��B˜ $Ý˜�H�d 4™jœjÑ)Ô)Ð)Ý% b¨!Ñ,Ô,Ð,Ý˜"˜b˜ A¥s¨1¨Q¬4¡y¤y°¡{Ð#3Ñ4Ô4Ð4Ý% hµ´½¸A¹¼±´Ñ@Ô@Ð@à)*¨¨2°qÀÐ)BÑ)BÔ)BÑ&ˆB��B˜ $Ý˜�H�d 4™jœjÑ)Ô)Ð)Ð)ð	*ð 	*r6   c                 ó¸   — g d¢g d¢g d¢g}dD ]K}t          t          |dz   d ¦  «        }|€Œ ||¦  «        \  }}}t          | t          |¦  «        ¦  «         ŒLd S )N©ikÿÿÿiÎÿÿÿifÿÿÿ©i  é´   i"  ©iåÿÿÿi÷ÿÿÿiçÿÿÿÚdÚgehrd)r]   r9   r   r^   )r`   ra   rc   rd   ÚhtÚtauri   s          r4   Ú
test_gehrdzTestFlapackSimple.test_gehrdf   s†   € ØÐÐØˆ_ˆ_Øˆ^ˆ^ðˆð ð 	*ð 	*ˆAÝ�  7¡¨DÑ1Ô1ˆAØˆyØØ˜A˜a™DœD‰MˆB��TÝ˜�H�d 4™jœjÑ)Ô)Ð)Ð)ð	*ð 	*r6   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 �]™}|                     |¦  «        |                     |¦  «        |                     |¦  «        }}}t          d|f¦  «        \  }	|                     ¦   «         r|dxx         dz  cc<   d} |	|||¦  «        \  }
}}t          t          j        ||
¦  «        t          j        |
|¦  «        z   ||z  ¦  «          |	|||||¬¦  «        \  }
}}t          t          j        |                     ¦   «         j        |
¦  «        t          j        |
|                     ¦   «         j        ¦  «        z   ||z  d¬¦  «          |	|||d¬¦  «        \  }
}}t          t          j        ||
¦  «        t          j        |
|¦  «        z
  ||z  d¬¦  «         �Œ›d S )NrP   rQ   r   rS   rT   rU   rW   rX   é
   é   é   ÚTÚfdFD)Útrsylr-   ÚC)ÚtranaÚtranb©Údecimaléÿÿÿÿ)Úisgn)	r/   Úarrayr1   r'   Úisupperr   ÚdotÚ	conjugatery   )r`   ra   ÚbÚcÚtransr3   rb   Úb1Úc1r{   Úxr\   ri   s                r4   Ú
test_trsylzTestFlapackSimple.test_trsylq   s  € ÝŒH�q˜!�f˜q !˜fÐ%Ñ&Ô&ˆÝŒH�q˜!�f˜q !˜fÐ%Ñ&Ô&ˆÝŒH�q˜"�g  B˜xÐ(Ñ)Ô)ˆØˆð ð 	=ñ 	=ˆEØŸš %™œ¨!¯(ª(°5©/¬/¸1¿8º8ÀE¹?¼?�B�ˆBÝ% j°2°%Ñ8Ô8‰FˆEØ�}Š}‰Œð Ø�1��”˜‘��‘Ø�à"˜U 2 r¨2Ñ.Ô.‰NˆAˆu�dÝ%¥b¤f¨R°¡m¤mµb´f¸QÀ±m´mÑ&CØ&+¨b¡jñ2ô 2ð 2ð #˜U 2 r¨2°UÀ%ÐHÑHÔH‰NˆAˆu�dÝ%Ý”F˜2Ÿ<š<™>œ>Ô+¨QÑ/Ô/µ"´&¸¸B¿LºL¹N¼NÔ<LÑ2MÔ2MÑMØ˜B‘J¨ð+ñ +ô +ð +ð #˜U 2 r¨2°BÐ7Ñ7Ô7‰NˆAˆu�dÝ%¥b¤f¨R°¡m¤mµb´f¸QÀ±m´mÑ&CØ&+¨b¡j¸!ð=ñ =ô =ð =ñ =ð#	=ð 	=r6   c                 óN  — t          j        g d¢g d¢g d¢g¦  «        }dD �]ƒ}dD �]|}|                     |¦  «        }|                     ¦   «         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¬¦  «        ¦  «        }n>|dv r:t          j
        t          j        t          j        |¦  «        d¬¦  «        ¦  «        }t          ||¦  «         �Œ~�Œ…d S )Nrl   rm   ro   rz   ÚMm1OoIiFfEe©r   r   r-   )ÚlangeÚFfEeÚFfrR   rV   ÚMmÚ1Oor   ©ÚaxisÚIirP   )r/   rƒ   r1   r„   r'   ÚsqrtÚsumÚsquareÚabsr   Úmaxr   )	r`   ra   r3   Únorm_strrb   r‘   Úvaluer€   Úrefs	            r4   Ú
test_langezTestFlapackSimple.test_lange�   s±  € ÝŒHØÐÐØˆOˆOØˆNˆNðñ ô ˆð
 ð 	-ñ 	-ˆEØ)ð -ñ -�Ø—X’X˜e‘_”_�Ø—=’=‘?”?ð #à�t�H�H”H ‘N�H�H‘Hå)¨*°r°eÑ<Ô<‘�Ø˜˜h¨Ñ+Ô+�à˜vÐ%Ð%Ø �}�}Ø"#˜˜à"#˜Ýœ'¥"¤&­¬µ2´6¸"±:´:Ñ)>Ô)>Ñ"?Ô"?Ñ@Ô@�CÝ'¨¨s°GÑ<Ô<Ð<Ð<à 4Ð'Ð'Ý œf¥R¤V¨B¡Z¤ZÑ0Ô0˜˜Ø! UÐ*Ð*Ý œf¥R¤V­B¬F°2©J¬J¸QÐ%?Ñ%?Ô%?Ñ@Ô@˜˜Ø! TÐ)Ð)Ý œf¥R¤V­B¬F°2©J¬J¸QÐ%?Ñ%?Ô%?Ñ@Ô@˜å  ¨Ñ,Ô,Ð,Ñ,ñ1-ð	-ð 	-r6   N)Ú__name__Ú
__module__Ú__qualname__rj   rt   r�   r¡   © r6   r4   rN   rN   O   sP   € € € € € ð*ð *ð *ð*	*ð 	*ð 	*ð=ð =ð =ð8-ð -ð -ð -ð -r6   rN   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú
TestLapackc                 ó4   — t          t          d¦  «        rd S d S ©NÚempty_module)Úhasattrr9   ©r`   s    r4   Útest_flapackzTestLapack.test_flapack±   ó#   € Ý•7˜NÑ+Ô+ð 	àˆDð	ð 	r6   c                 ó4   — t          t          d¦  «        rd S d S r©   )r«   r8   r¬   s    r4   Útest_clapackzTestLapack.test_clapack¶   r®   r6   N)r¢   r£   r¤   r­   r°   r¥   r6   r4   r§   r§   ¯   s2   € € € € € ðð ð ð
ð ð ð ð r6   r§   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestLeastSquaresSolversc           	      ó@  — t          d¦  «         t          t          ¦  «        D ]Ç\  }}d}d}d}t          ||¦  «                             |¦  «        }t          |¦  «                             |¦  «        }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!          ||¦  «         �Œd S )!NéÒ  rv   é   rP   )ÚgelsÚ
gels_lwork©r3   ©Ú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   r1   r'   r"   r   ÚREAL_DTYPESr/   rƒ   r2   r_   r   ÚfinfoÚepsr	   r.   )r`   Úindr3   ÚmÚnÚnrhsrb   rŠ   ÚglsÚglslwrº   r?   ri   r¶   r·   rÅ   ÚlqrrŒ   Ú	lqr_truths                      r4   Ú	test_gelsz!TestLeastSquaresSolvers.test_gels¾   sÏ  € ÝˆT‰
Œ
ˆ
å#¥FÑ+Ô+ð 	ð 	‰JˆC�ØˆAØˆAØˆDÝ�a˜‘”×"Ò" 5Ñ)Ô)ˆBÝ�a‘”—’ Ñ&Ô&ˆBÝ)Ð*@ÈÐNÑNÔN‰JˆC�õ # 5¨!¨Q°Ñ5Ô5ˆEØ˜˜R ¨5Ð1Ñ1Ô1‰JˆAˆq�$Ý�D˜A’IÑÔÐØ˜˜R ¨6°#¬;¸eÐDÑDÔD‰JˆAˆq�$Ý�D˜A’IÑÔÐÐå ð 	/ñ 	/ˆEÝ”˜C ˜:Ø ˜:Ø ˜:ð'à.3ð5ñ 5ô 5ˆBõ ”Ð,Ð,Ð,°EÐ:Ñ:Ô:ˆBÝ&6Ø3°b¸"°Xñ'?ô '?Ñ#ˆD�*˜eð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�õ # :¨q°!°TÑ:Ô:ˆEà˜4  B¨eÐ4Ñ4Ô4‰LˆC��DÝ˜A˜c˜r˜cœF¥B¤HÐ.AØ.@ð.Bà38ð%:ñ %:ô %:ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9ð "'  r¡¤ÑˆI�q˜!˜QÝ˜s IÑ.Ô.Ð.Ñ.å#ð 	/ñ 	/ˆEÝ”˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ð?ñ ?ô ?ˆBõ ”Ð6Ð6Ð6¸eÐDÑDÔDˆBÝ&6Ø3°b¸"°Xñ'?ô '?Ñ#ˆD�*˜eð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�õ # :¨q°!°TÑ:Ô:ˆEà˜4  B¨eÐ4Ñ4Ô4‰LˆC��DÝ˜A˜c˜r˜cœFÝœHÐ&JØ&Jð&Là+0ð2ñ 2ô 2à8:½2¼8ÀE¹?¼?Ô;NÑ8NðPñ Pô Pð Pð "'  r¡¤ÑˆI�q˜!˜QÝ˜s IÑ.Ô.Ð.Ñ.ð/	/ð 	/r6   c                 ó¬  — t           D �]X}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  ¬¦  «         �ŒZt          D �]i}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  ¬¦  «         �Œkd S )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Õ   r/   rƒ   r'   r2   r_   ÚintÚrealr   rÖ   r×   r.   )r`   r3   rb   rŠ   râ   rã   rÙ   rÚ   rÛ   ÚworkÚiworkri   rº   Ú
iwork_sizerŒ   ÚsÚrankÚrworkÚ
rwork_sizes                      r4   Ú
test_gelsdz"TestLeastSquaresSolvers.test_gelsd  s£  € Ý ð 	9ñ 	9ˆEÝ”˜C ˜:Ø ˜:Ø ˜:ð'à.3ð5ñ 5ô 5ˆBõ ”Ð,Ð,Ð,°EÐ:Ñ:Ô:ˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð !, ¨A¨q°$¸Ñ ;Ô ;ÑˆD�%˜Ý�œ ™œÑ&Ô&ˆEØˆJà$˜u R¨¨U°JØ%'¨°ñ 7ô  7ÑˆAˆq�$˜å˜A˜c˜r˜cœF¥B¤HÐ.AØ.@ð.Bà38ð%:ñ %:ô %:ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9õ ˜A�rœxÐ);Ø):ð)<ØCHð Jñ  Jô  Jà!#¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9ñ 9õ $ð 	Pñ 	PˆEÝ”˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ð?ñ ?ô ?ˆBõ ”Ð6Ð6Ð6¸eÐDÑDÔDˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð (3 {°1°a¸¸rÑ'BÔ'BÑ$ˆD�%˜ Ý�œ ™œÑ&Ô&ˆEÝ˜U™œˆJØˆJà$˜u R¨¨U°JÀ
Ø%'¨°ñ 7ô  7ÑˆAˆq�$˜å˜A˜c˜r˜cœFÝœHÐ&JØ&Jð&Là+0ð2ñ 2ô 2à8:½2¼8ÀE¹?¼?Ô;NÑ8NðPñ Pô Pð Põ ˜AÝœHÐ&8Ð:KÐ%LØ+0ð2ñ 2ô 2Ø8:½2¼8ÀE¹?¼?Ô;NÑ8NðPñ Pô Pð Pñ Pð5	Pð 	Pr6   c           	      ó‚  — t           D �]V}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  ¬¦  «         �ŒXt          D �]V}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  ¬¦  «         �ŒXd S )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`   r3   rb   rŠ   rô   rõ   rÙ   rÚ   rÛ   rë   ri   rº   ÚvrŒ   rî   rï   s                   r4   Ú
test_gelssz"TestLeastSquaresSolvers.test_gelss>  sw  € å ð 	9ñ 	9ˆEÝ”˜C ˜:Ø ˜:Ø ˜:ð'à.3ð5ñ 5ô 5ˆBõ ”Ð,Ð,Ð,°EÐ:Ñ:Ô:ˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð %˜ Q¨¨4°Ñ4Ô4‰JˆD�$Ý�œ ™œÑ&Ô&ˆEà(-¨¨b°"°b¸%ÀÈÑ(NÔ(NÑ%ˆAˆq�!�T˜4 Ý˜A˜c˜r˜cœF¥B¤HÐ.AØ.@ð.Bà38ð%:ñ %:ô %:ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9õ ˜A�rœxÐ);Ø):ð)<ØCHð Jñ  Jô  Jà!#¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9ñ 9õ $ð 	9ñ 	9ˆEÝ”˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ð?ñ ?ô ?ˆBõ ”Ð6Ð6Ð6¸eÐDÑDÔDˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð %˜ Q¨¨4°Ñ4Ô4‰JˆD�$Ý�œ ™œÑ&Ô&ˆEà(-¨¨b°"°b¸%ÀÈÑ(NÔ(NÑ%ˆAˆq�!�T˜4 Ý˜A˜c˜r˜cœFÝœHÐ&JØ&Jð&Là+0ð2ñ 2ô 2ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð	9ñ 9ô 9ð 9õ
 ˜A�rœxÐ);Ø):ð)<ØCHð Jñ  Jô  Jà!#¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9ñ 9ð1	9ð 	9r6   c           
      óò  — t           D �]r}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  ¬¦  «         �Œtt          D �]r}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  ¬¦  «         �Œtd S )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Õ   r/   rƒ   r'   r2   r_   rÖ   r×   ré   rê   r   Úint32r   r.   )r`   r3   rb   rŠ   rù   Úgelsy_lworkrÙ   rÚ   rÛ   rë   ri   rº   Újptvrö   rŒ   Újrï   s                    r4   Ú
test_gelsyz"TestLeastSquaresSolvers.test_gelsyw  sU  € å ð 	9ñ 	9ˆEÝ”˜C ˜:Ø ˜:Ø ˜:ð'à.3ð5ñ 5ô 5ˆBõ ”Ð,Ð,Ð,°EÐ:Ñ:Ô:ˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð %˜ Q¨¨4°µB´H¸U±O´OÔ4GÑ1GÑHÔH‰JˆD�$Ý�œ ™œÑ&Ô&ˆEå”8˜RœX aœ[¨!Ð,µB´HÐ=Ñ=Ô=ˆDØ"' %¨¨B°µb´h¸u±o´oÔ6IØ(-¨u°eñ#=ô #=ÑˆAˆq�!�T˜4å˜A˜c˜r˜cœF¥B¤HÐ.AØ.@ð.Bà38ð%:ñ %:ô %:ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð9ñ 9ô 9ð 9ñ 9õ
 $ð 	9ñ 	9ˆEÝ”˜H c˜?Ø$ hÐ/Ø$ hÐ/ð1à8=ð?ñ ?ô ?ˆBõ ”Ð6Ð6Ð6¸eÐDÑDÔDˆBÝ!1Ð2JØ35°r°(ñ"<ô "<ÑˆE�;ð ”8‰DˆAˆqÝ�2”8‰}Œ} Ò!Ð!Ø”x ”{��à�ð %˜ Q¨¨4°µB´H¸U±O´OÔ4GÑ1GÑHÔH‰JˆD�$Ý�œ ™œÑ&Ô&ˆEå”8˜RœX aœ[¨!Ð,µB´HÐ=Ñ=Ô=ˆDØ"' %¨¨B°µb´h¸u±o´oÔ6IØ(-¨u°eñ#=ô #=ÑˆAˆq�!�T˜4å˜A˜c˜r˜cœFÝœHÐ&JØ&Jð&Là+0ð2ñ 2ô 2ð "$¥B¤H¨U¡O¤OÔ$7Ñ!7ð	9ñ 9ô 9ð 9ñ 9ð+	9ð 	9r6   N)r¢   r£   r¤   rà   rò   r÷   rþ   r¥   r6   r4   r²   r²   ¼   sY   € € € € € ðB/ð B/ð B/ðH:Pð :Pð :Pðx79ð 79ð 79ðr59ð 59ð 59ð 59ð 59r6   r²   r3   r2   )©rR   rS   )rT   rQ   ©é   r  c                 ór   — t          d| ¬¦  «        }|\  }} |||¬¦  «        \  }}t          |d¦  «         d S )NÚgeqrf_lworkr¸   ©rÙ   rÚ   r   ©r'   r   )r3   r2   r  rÙ   rÚ   rº   ri   s          r4   Útest_geqrf_lworkr  ¯  sM   € õ # M¸%Ð@Ñ@Ô@€KØ�D€A€qØ�+  QÐ'Ñ'Ô'�K€Eˆ4Ý��qÑÔÐÐÐr6   c                   ó   — e Zd Zd„ ZdS )ÚTestRegressionc                 ó  — t           D ]ý}t          j        d|¬¦  «        }t          dg|g¦  «        \  }t	          t
          ||d¬¦  «          ||¦  «        \  }}}}|t          v rLt          dg|g¦  «        \  }t	          t
          ||dd …         |d¬¦  «          ||dd …         |d¬¦  «         Œ©|t          v rKt          d	g|g¦  «        \  }	t	          t
          |	|dd …         |d¬¦  «          |	|dd …         |d¬¦  «         Œþd S )
N)i,  rQ   r¸   ÚgerqfrQ   r¹   ÚorgrqéþÿÿÿrP   Úungrq)rÔ   r/   r   r'   Úassert_raisesÚ	ExceptionrÕ   r.   )
r`   r3   ra   r
  Úrqrs   rë   ri   r  r  s
             r4   Útest_ticket_1645zTestRegression.test_ticket_1645º  s5  € åð 	-ð 	-ˆEÝ”˜¨Ð/Ñ/Ô/ˆAå% w i°!°Ñ5Ô5‰FˆEÝ�) U¨A°QÐ7Ñ7Ô7Ð7Ø"' %¨¡(¤(ÑˆB��T˜4à�Ð#Ð#Ý)¨7¨)°a°SÑ9Ô9‘�Ý�i¨°°2°3°3´¸ÀAÐFÑFÔFÐFØ��b˜˜˜”g˜s¨!Ð,Ñ,Ô,Ð,Ð,Ø�.Ð(Ð(Ý)¨7¨)°a°SÑ9Ô9‘�Ý�i¨°°2°3°3´¸ÀAÐFÑFÔFÐFØ��b˜˜˜”g˜s¨!Ð,Ñ,Ô,Ð,øð	-ð 	-r6   N)r¢   r£   r¤   r  r¥   r6   r4   r  r  ¸  s#   € € € € € ð-ð -ð -ð -ð -r6   r  c                   ó   — e Zd Zd„ ZdS )Ú	TestDpotrc           
      óL  — dD �]}dD �]}t           j                             d¦  «         t           j                             d¬¦  «        }|                     |j        ¦  «        }t          d|f¦  «        \  }} ||||¬¦  «        \  }} |||¦  «        d         }	|rBt          t          j        |	¦  «        t          j        t          |¦  «        ¦  «        ¦  «         Œ×t          t          j
        |	¦  «        t          j
        t          |¦  «        ¦  «        ¦  «         �Œ�Œ!d S )N)TFé*   )rR   rR   )Úsize)ÚpotrfÚpotri)Úcleanr   )r/   r0   r   Únormalr…   ry   r'   r   r   r   r   )
r`   Úlowerr  rŒ   ra   ÚdpotrfÚdpotrirˆ   ri   Údpts
             r4   Útest_gh_2691zTestDpotr.test_gh_2691Î  s  € à"ð 	Cñ 	CˆEØ&ð Cñ C�Ý”	—’˜rÑ"Ô"Ð"Ý”I×$Ò$¨&Ð$Ñ1Ô1�Ø—E’E˜!œ#‘J”J�å!1Ð2DÀqÀeÑ!LÔ!L‘�˜à ˜&  E°Ð7Ñ7Ô7‘��4Ø�f˜Q Ñ&Ô& qÔ)�àð CÝ#¥B¤G¨C¡L¤Lµ"´'½#¸a¹&¼&±/´/ÑBÔBÐBÐBå#¥B¤G¨C¡L¤Lµ"´'½#¸a¹&¼&±/´/ÑBÔBÐBÑBñCð	Cð 	Cr6   N)r¢   r£   r¤   r  r¥   r6   r4   r  r  Í  s(   € € € € € ðCð Cð Cð Cð Cr6   r  c                   ó   — e Zd Zd„ ZdS )Ú
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 ]G}
 ||
||¦  «        }|	                     |d         ¦  «         t          |d
         dk    d|
z  ¦  «         ŒHt          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  ¬¦  «         d S )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Ê   )r/   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               r4   Útest_sing_val_updatezTestDlasd4.test_sing_val_updateâ  s9  € å”˜/˜/˜/Ñ*Ô*ˆÝ”Ð0Ð0Ð0Ñ1Ô1ˆåŒI•r”y¥"¤'¨&°°2°¬,Ñ"7Ô"7Ý"$¤(¨A­s°5©z¬z¸A©~Ð+>Ñ"?Ô"?ð"Añ Bô Bà˜Q˜Q˜Q¥¤
˜]Ô+ð-ñ .ô .ˆõ � %°EÀuØ#ð%ñ %ô %ˆõ �V‘”ˆÝŒn˜f T T r Tœl¨V°A¬Y¸ÅÀUÁÄÑ9KÑ-KÐ,LÐMÑNÔNˆÝŒn˜e D D b Dœk¨4Ð0Ñ1Ô1ˆå  ¨6¨)Ñ4Ô4ˆàˆÝ�q˜&Ñ!Ô!ð 	@ð 	@ˆAØ�%˜˜3 Ñ$Ô$ˆCØ�LŠL˜˜QœÑ Ô Ð å�S˜”V˜q’[ð $;Ø=>ñ$?ñ @ô @ð @ð @å”˜‘”   " Ô%ˆå•R”V�BœH U™OœOÑ,Ô,Ð,Ð.CÐDÑEÔEÐEÝ˜˜E¨­B¬HµR´ZÑ,@Ô,@Ô,DÑ(DØ ¥¤­"¬*Ñ!5Ô!5Ô!9Ñ9ð	;ñ 	;ô 	;ð 	;ð 	;ð 	;r6   N)r¢   r£   r¤   rA  r¥   r6   r4   r!  r!  á  s#   € € € € € ð;ð ;ð ;ð ;ð ;r6   r!  c                   óê  — e Zd Zej                             de¦  «        d„ ¦   «         Zej                             dd„ eD ¦   «         ¦  «        ej                             dddg¦  «        ej                             dd	dg¦  «        d
„ ¦   «         ¦   «         ¦   «         Zej                             dg d¢g d¢g d¢g¦  «        d„ ¦   «         Z	d„ Z
ej                             dddg¦  «        d„ ¦   «         ZdS )Ú	TestTbtrsr3   c                 ód  — |t           v rat          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 rdt          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,¬-¦  «         d.S )/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ÀrE  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Õ   r/   rƒ   r.   Ú
ValueErrorr'   r   r   )r`   r3   rJ  r‡   Úx_outrG  rŒ   ri   s           r4   Útest_nag_example_f07vef_f07vsfz(TestTbtrs.test_nag_example_f07vef_f07vsf  sÿ  € ð •KÐÐÝ”Ð4Ð4Ð4Ø2Ð2Ð2ð4à %ð'ñ 'ô 'ˆBõ ”˜6 5˜/Ø! 6Ð*Ø  %˜.Ø! 5˜/ð+ð  %ð	&ñ &ô &ˆAõ
 ”H˜q !˜fØ! 2˜hØ  !˜fØ  "˜gð'ð $)ð	*ñ *ô *ˆEˆEð
 •nÐ$Ð$Ý”ÐKÐKÐKØFÐFÐFØ:Ð:Ð:ð<ð !&ð'ñ 'ô 'ˆBõ ”˜=¨.Ð9Ø*¨NÐ;Ø)¨>Ð:Ø)¨>Ð:ð<ð  %ð	&ñ &ô &ˆAõ
 ”H˜r 6˜lØ% wÐ/Ø4Ð6JÐKØ3Ð5JÐKðMð $)ð	*ñ *ô *ˆEˆEõ Ð@¨Ð@Ð@Ð@ÑAÔAÐAå  '°%Ð8Ñ8Ô8ˆØ�%˜2 ¨Ð-Ñ-Ô-‰ˆˆ4Ý�T˜1ÑÔÐÝ˜˜5 q¨tÐ4Ñ4Ô4Ð4Ð4Ð4r6   zdtype,transc                 ó>   — g | ]}d D ]}|dk    r	|t           v °||f‘ŒŒS ))ÚNry   r|   r|   )rÕ   )Ú.0r3   r‰   s      r4   ú
<listcomp>zTestTbtrs.<listcomp>2  sP   € ð Nð Nð NØ"'¸ðNð NØ6;Ø&+¨s¢l l°uÅÐ7KÐ7Kð  % e˜nà7KÐ7KÐ7KÐ7Kr6   rK  ÚUrH  r0  rR  c           	      ó‚  ‡‡— t          d¦  «         d\  Š}}t          d‰¬¦  «        }|dk    }||z  }	||	z
  }
t          |	|
 dz
  d¦  «        }ˆfd„|D ¦   «         }ˆfd	„|D ¦   «         }|dk    rt          j        ‰‰¬¦  «        ||	<   t          j        ||d
¬¦  «        }t          j        |dz   ‰f‰¦  «        }t          |¦  «        D ]@\  }}| 	                    |¦  «        ||t          |d¦  «        t          ‰|z   ‰¦  «        …f<   ŒAt          ‰|f‰¦  «        } ||||||¬¦  «        \  }}t          |d¦  «         |dk    rt          ||z  |d¬¦  «         d S |dk    rt          |j        |z  |d¬¦  «         d S |dk    r.t          |j                             ¦   «         |z  |d¬¦  «         d S t#          d¦  «        ‚)Ni¼  )rS   rR   rQ   rG  r¸   rU  rP   r�   c                 ó4   •— g | ]}‰t          |¦  «        z
  ‘ŒS r¥   )rœ   )rS  rŒ   rÚ   s     €r4   rT  z2TestTbtrs.test_random_matrices.<locals>.<listcomp>F  s#   ø€ Ð8Ð8Ð8 a�q�3˜q™6œ6‘zÐ8Ð8Ð8r6   c                 ó2   •— g | ]}t          |f‰¦  «        ‘ŒS r¥   )r5   )rS  Úwidthr3   s     €r4   rT  z2TestTbtrs.test_random_matrices.<locals>.<listcomp>G  s5   ø€ ð +ð +ð +Øõ -¨e¨X°uÑ=Ô=ð +ð +ð +r6   Údia)Úformatr   )rJ  r‡   rK  r‰   r0  rR  g-Cëâ6
?rÉ   ry   r|   zInvalid trans argument)r   r'   r3  r/   r   ÚspsÚdiagsr   rÓ   Údiagonalr�   Úminr5   r   r   ry   r†   rN  )r`   r3   r‰   rK  r0  rÛ   ÚkdrG  Úis_upperÚkuÚklÚband_offsetsÚband_widthsÚbandsra   rJ  ÚrowÚkr‡   rŒ   ri   rÚ   s    `                   @r4   Útest_random_matriceszTestTbtrs.test_random_matrices1  s"  øø€ õ 	ˆT‰
Œ
ˆ
ð ‰ˆˆ4�Ý  °Ð6Ñ6Ô6ˆà˜C’KˆØ�(‰]ˆØ�"‰Wˆõ ˜R "  q¡¨"Ñ-Ô-ˆØ8Ð8Ð8Ð8¨<Ð8Ñ8Ô8ˆð+ð +ð +ð +Ø)ð+ñ +ô +ˆð �3Š;ˆ;Ýœ ¨Ð/Ñ/Ô/ˆE�"‰Iõ ŒI�e˜\°%Ð8Ñ8Ô8ˆõ ŒX�r˜A‘v˜q�k 5Ñ)Ô)ˆÝ Ñ-Ô-ð 	;ð 	;‰FˆC�Ø-.¯ZªZ¸©]¬]ˆBˆs•C˜˜1‘I”I�c ! A¡# q™kœkÐ)Ð)Ñ*Ð*õ (¨¨D¨	°5Ñ9Ô9ˆà�%˜2 ¨°UÀÐFÑFÔF‰ˆˆ4Ý�T˜1ÑÔÐà�CŠ<ˆ<Ý˜A ™E 1¨4Ð0Ñ0Ô0Ð0Ð0Ð0Ø�cŠ\ˆ\Ý˜AœC !™G Q¨TÐ2Ñ2Ô2Ð2Ð2Ð2Ø�cŠ\ˆ\Ý˜AœCŸMšM™OœO¨aÑ/°¸Ð>Ñ>Ô>Ð>Ð>Ð>åÐ5Ñ6Ô6Ð6r6   zuplo,trans,diag)rU  rR  ÚInvalid)rU  rj  rR  )rj  rR  rR  c           	      ó°   — t          dt          j        ¬¦  «        }t          dd¦  «        }t          dd¦  «        }t	          t
          ||||||¦  «         dS )z?Test if invalid values of uplo, trans and diag raise exceptionsrG  r¸   rS   rQ   N)r'   r/   r6  r   r  r  )r`   rK  r‰   r0  rG  rJ  r‡   s          r4   Ú&test_invalid_argument_raises_exceptionz0TestTbtrs.test_invalid_argument_raises_exceptiond  sR   € õ ! µ´
Ð;Ñ;Ô;ˆÝ�!�Q‰ZŒZˆÝ��A‰JŒJˆÝ•i ¨¨A¨t°U¸DÑAÔAÐAÐAÐAr6   c                 óê   — t          j        dt          ¬¦  «        }t          j        dt          ¬¦  «        }t          dt          ¬¦  «        }d|d<    |||d¬¦  «        \  }}t	          |d¦  «         d	S )
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   rG  r   )r�   rR   rU  rI  N)r/   r   Úfloatr'   r   )r`   rJ  r‡   rG  r?   ri   s         r4   Útest_zero_element_in_diagonalz'TestTbtrs.test_zero_element_in_diagonalq  sw   € õ ŒW�V¥5Ð)Ñ)Ô)ˆÝŒG�A�UÐ#Ñ#Ô#ˆÝ  µÐ6Ñ6Ô6ˆàˆˆ5‰	Ø�%˜2 ¨Ð-Ñ-Ô-‰ˆˆ4Ý�T˜1ÑÔÐÐÐr6   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
          |||¦  «         dS )z2Test ?tbtrs fails correctly if shapes are invalid.r¸   rG  N©r/   r   rn  r'   r  r  )r`   ÚldabrÚ   ÚldbrÛ   rJ  r‡   rG  s           r4   Útest_invalid_matrix_shapesz$TestTbtrs.test_invalid_matrix_shapes�  s`   € õ ŒW�d˜A�Y¥eÐ,Ñ,Ô,ˆÝŒG�S˜$�K¥uÐ-Ñ-Ô-ˆÝ  µÐ6Ñ6Ô6ˆÝ•i ¨¨AÑ.Ô.Ð.Ð.Ð.r6   N)r¢   r£   r¤   rA   ÚmarkÚparametrizerÔ   rP  ri  rl  ro  rt  r¥   r6   r4   rC  rC    s€  € € € € € à„[×Ò˜W fÑ-Ô-ð+5ð +5ñ .Ô-ð+5ðZ „[×Ò˜]ðNð NØ+1ðNñ Nô NñOô Oð „[×Ò˜V c¨3 ZÑ0Ô0Ø„[×Ò˜V c¨3 ZÑ0Ô0ð+7ð +7ñ 1Ô0ñ 1Ô0ñ	Oô Oð+7ðZ „[×ÒÐ.Ø3Ð3Ð3Ø3Ð3Ð3Ø3Ð3Ð3ð5ñ6ô 6ðBð Bñ	6ô 6ðBðð ð ð  „[×ÒÐ.Ø*Ø*ð1ñ ô ð/ð /ñ	ô ð/ð /ð /r6   rC  c                  ó  — dD �] } t          d| ¬¦  «        }t          j        d| ¦  «        }t          j        d| ¦  «        }t          j        |¦  «        r|dz  } |||¦  «        \  }}}t	          |d¦  «         t	          |d¦  «         t          j        |¦  «        rUt	          |d	¦  «         t          t          |t          ¦  «        ¦  «         t          t          |t          ¦  «        ¦  «         Œðt	          |d
¦  «         �Œd S )Nrz   Úlartgr¸   rR   rS   r-   ç333333ã?rÀ   y       €š™™™™™é¿çš™™™™™é?)	r'   r/   rƒ   Úiscomplexobjr   r   Ú
isinstanceÚcomplexrn  )r3   rx  rd   ÚgÚcsÚsnÚrs          r4   Ú
test_lartgr‚  �  s  € Øð )ñ )ˆÝ  °Ð6Ñ6Ô6ˆåŒH�Q˜ÑÔˆÝŒH�Q˜ÑÔˆåŒ?˜1ÑÔð 	Ø�‰GˆAà�E˜!˜Q‘K”K‰	ˆˆB�å˜˜GÑ$Ô$Ð$Ý˜˜3ÑÔÐåŒ?˜1ÑÔð 	)Ý˜B 	Ñ*Ô*Ð*Ý•J˜q¥'Ñ*Ô*Ñ+Ô+Ð+Ý•J˜r¥5Ñ)Ô)Ñ*Ô*Ð*Ð*å˜B Ñ(Ô(Ð(Ñ(ð')ð )r6   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¢|¬¦  «         �Œd S )Nrz   ry  rz  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)r/   ÚfullrÖ   Ú	precisionr(   r'   r   r   )
r3   rˆ   rî   Úurö   r-  r…  rd   ra   r‡   s
             r4   Útest_rotr�  ¤  s4  € ð ð $4ñ $4ˆØˆØˆåŒG�A�q˜%Ñ Ô ˆÝŒG�A�q˜%Ñ Ô ˆØ•R”X˜e‘_”_Ô.¨qÑ0Ð1Ñ1ˆà�Dˆ=ˆ=Ý  ¨eÐ4Ñ4Ô4ˆCØˆAˆAå" 5°Ð6Ñ6Ô6ˆCØ�‰HˆAØ�‰GˆAØˆAå˜˜˜A˜q ! Q™œ¨,¨,¨,Ø*6¨,¨,ð*8Ø>Bð	Dñ 	Dô 	Dð 	Då˜˜˜A˜q ! Q¨!Ð,Ñ,Ô,¨|¨|¨|Ø01°1°a¸¨|ð/=ØCGð	Iñ 	Iô 	Ið 	Iå˜˜˜A˜q ! Q¨Q°QÐ7Ñ7Ô7Ø%˜˜¨¨1¨a° |Ð4¸4ð	Añ 	Aô 	Að 	Aå˜˜˜A˜q ! Q¨Q°Q¸!Ð<Ñ<Ô<Ø%˜˜¨¨1¨a° |Ð4¸4ð	Añ 	Aô 	Að 	Aå˜˜˜A˜q ! Q¨Q°Q¸!Ð<Ñ<Ô<Ø%˜˜¨¨1¨a° |Ð4¸4ð	Añ 	Aô 	Að 	Aå˜˜˜A˜q ! Q¨Q°Q¸QÀQÈ!ÐLÑLÔLØ%˜˜¨¨1¨a° |Ð4¸4ð	Añ 	Aô 	Að 	Aå˜˜˜A˜q ! Q¨R°b¸AÐ>Ñ>Ô>Ø%˜˜¨¨1¨a° |Ð4¸4ð	Añ 	Aô 	Að 	Að ˆs�1�a˜˜A¨1¸!Ð<Ñ<Ô<‰ˆˆ1Ý��Q�‰ŒˆÝ��Q�‰ŒˆÝ˜˜<˜<˜<¨dÐ3Ñ3Ô3Ð3Ý˜˜<˜<˜<¨dÐ3Ñ3Ô3Ð3Ñ3ðI$4ð $4r6   c            
      óÌ  — t           j                             d¦  «         t           j                             d¦  «        } | j                             | ¦  «        } t           j                             d¦  «        dt           j                             d¦  «        z  z   }|j                             ¦   «                              |¦  «        }dD �]™}t          ddg|¬¦  «        \  }}|dv r|                     ¦   «         }n|                      ¦   «         } ||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 …<    ||
| 
                    ¦   «         |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¬¦  «         �Œ›d S )Nr´   )rS   rS   r-   rz   ÚlarfgÚlarfr¸   ÚFDr   rP   ©rP   r   rQ   r�   r½   ÚR©ÚsiderL  r†  )r/   r0   r   ry   r…   Úconjr'   Úcopyr2   r   r†   r   r   )Úa0Úa0jr3   r’  r“  ra   ÚalpharŒ   rs   Úexpectedrö   s              r4   Útest_larfg_larfrŸ  Î  s^  € Ý„I‡N‚N�4ÑÔÐÝ	Œ×	Ò	˜&Ñ	!Ô	!€BØ	Œ�Š�"‰Œ€Bå
Œ)×
Ò
˜6Ñ
"Ô
" R­¬	×(8Ò(8¸Ñ(@Ô(@Ñ%@Ñ
@€CØ
Œ%�*Š*‰,Œ,×
Ò
˜3Ñ
Ô
€Cð
 ð 6ñ 6ˆÝ&¨°Ð'8ÀÐFÑFÔF‰ˆˆtà�Dˆ=ˆ=Ø—’‘
”
ˆAˆAà—’‘	”	ˆAð ˜˜aœg aœj¨™l¨A¨d¬G°Q°q°r°r¸1°u´XÑ>Ô>‰ˆˆq�#õ ”=  1 1 1 a 4¤Ñ)Ô)ˆØ˜”gˆ�‰Øˆ�‰õ ŒM˜!˜A˜B˜B ˜Eœ(Ñ#Ô#ˆØˆˆ!‰Øˆˆ!ˆ"ˆ"‰ð �4˜˜3Ÿ=š=™?œ?¨A¨a¨b¨b°!°!°!¨e¬Hµb´h¸q¼wÀq¼zÑ6JÔ6JÑKÔKˆˆ!ˆ"ˆ"ˆaˆaˆaˆ%‰ð �4˜˜3  ! ! ! Q R R %¤­"¬(°1´7¸1´:Ñ*>Ô*>ÀSÐIÑIÔIˆˆ!ˆ!ˆ!ˆQˆRˆRˆ%‰å˜˜!˜!˜!˜Q˜$œ °Ð5Ñ5Ô5Ð5Ý˜˜!˜Q˜Q˜Q˜$œ °Ð5Ñ5Ô5Ð5Ñ5ð96ð 6r6   c                  óŠ   — t          dt          j        d¬¦  «        } d}t          | ||dd¬¦  «        }|dk    s|dk    sJ ‚d S d S )	NÚgesdd_lworkÚ	preferred©r3   Úilp64iA%  T)r&  r%  i`”Di€”D)r'   r/   Úfloat32r"   )Úsgesdd_lworkrÚ   rº   s      r4   Ú test_sgesdd_lwork_bug_workaroundr§  ø  sq   € õ $ M½¼Ø*5ð7ñ 7ô 7€Là€AÝ˜<¨¨AØ&*¸$ð@ñ @ô @€Eð  �IÒÐ ¨)Ò!3Ð!3Ð!3Ð!3ÐÐÐ!3Ð!3r6   c                   óà   — e Zd Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        ej                             dd¦  «        d„ ¦   «         ¦   «         ZdS )Ú	TestSytrdr3   c                 ó€   — t          j        d|¬¦  «        }t          d|f¦  «        }t          t          ||¦  «         d S )Nr�   r¸   Úsytrd©r/   r   r'   r  rN  )r`   r3   ÚAr«  s       r4   Útest_sytrd_with_zero_dim_arrayz(TestSytrd.test_sytrd_with_zero_dim_array  sA   € õ ŒH�V 5Ð)Ñ)Ô)ˆÝ  ¨1¨$Ñ/Ô/ˆÝ•j %¨Ñ+Ô+Ð+Ð+Ð+r6   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 ]|}t          j        ||¬¦  «        }|d |…|dz   f         |d |…<   d||<   t          j        |||¬¦  «        ||         t          j        ||¦  «        z  z
  }t          j        ||¦  «        }Œ}t          j        |d¦  «        }|j        |         ||<   t          j        |j        t          j        ||¦  «        ¦  «        }t          ||dt          j        |¦  «        j        z  d¬	¦  «         d S )Nr¸   )r«  Úsytrd_lworkrP   rQ   r   ©r  rº   rT   r½   r,  ç        r¹   r�   )r/   r   r'   ÚarangeÚtriu_indices_fromr   r   rÖ   r×   r0  r   r2   r   r3  Úouterr…   r   ry   )r`   r3   rÚ   r­  r«  r±  rº   ri   Údatarp   Úers   ry   rh  Úk2ÚQr?  rö   ÚHÚi_lowerÚQTAQs                        r4   Ú
test_sytrdzTestSytrd.test_sytrd  sã  € õ ŒH�a˜�V 5Ð)Ñ)Ô)ˆõ Ð5¸°tÑ<Ô<ñ 	ˆˆ{õ
 ŒI�a˜˜A˜a™C™ !™ A™¨UÐ3Ñ3Ô3ð 	
�"Ô
˜qÑ
!Ô
!Ñ"ð "�k !‘n”n‰ˆˆtÝ�T˜1ÑÔÐð !&  a¨q¸Ð >Ñ >Ô >Ñˆˆa��C˜Ý�T˜1ÑÔÐå˜˜a a­¬°©¬Ô(;Ñ&;À#ÐFÑFÔFÐFÝ˜�2œ7 1™:œ:Ñ&Ô&Ð&Ý˜˜3ÑÔÐÝ˜˜SÑ!Ô!Ð!ð !&  a¨uÐ 5Ñ 5Ô 5Ñˆˆa��C˜Ý�T˜1ÑÔÐõ
 ŒM˜! 5Ð)Ñ)Ô)ˆÝŒI�a”g˜a”jÑ!Ô!ˆØˆˆ!ˆQˆ$‰ÝŒY�q”w˜q”z !‘|Ñ$Ô$ˆØˆˆ"ˆQ‰$�ˆ(‰Øˆˆ"ˆb�‰dˆ(‰õ ŒF�1�a˜uÐ%Ñ%Ô%ˆÝ�q˜‘s‘”ð 	ð 	ˆAÝ”˜ %Ð(Ñ(Ô(ˆAØ˜˜!˜˜Q˜q™S˜”MˆAˆbˆqˆb‰EØˆAˆa‰DÝ”�q˜! 5Ð)Ñ)Ô)¨C°¬FµR´X¸aÀ±^´^Ñ,CÑCˆAÝ”�q˜!‘”ˆAˆAõ ”/ ! RÑ(Ô(ˆØ”S˜”\ˆˆ'‰
åŒv�a”c�2œ6 ! Q™<œ<Ñ(Ô(ˆõ 	˜˜a a­¬°©¬Ô(;Ñ&;À#ÐFÑFÔFÐFÐFÐFr6   N)	r¢   r£   r¤   rA   ru  rv  rÕ   r®  r¾  r¥   r6   r4   r©  r©    s�   € € € € € Ø„[×Ò˜W kÑ2Ô2ð,ð ,ñ 3Ô2ð,ð „[×Ò˜W kÑ2Ô2Ø„[×Ò˜S &Ñ)Ô)ð7Gð 7Gñ *Ô)ñ 3Ô2ð7Gð 7Gð 7Gr6   r©  c                   óô   — e Zd Zej                             de¦  «        d„ ¦   «         Zej                             d ee	e¦  «        ¦  «        ej                             dd¦  «        d„ ¦   «         ¦   «         Z
dS )Ú	TestHetrdÚcomplex_dtypec                 ó€   — t          j        d|¬¦  «        }t          d|f¦  «        }t          t          ||¦  «         d S )Nr�   r¸   Úhetrdr¬  )r`   rÁ  r­  rÃ  s       r4   Útest_hetrd_with_zero_dim_arrayz(TestHetrd.test_hetrd_with_zero_dim_arrayY  sA   € õ ŒH�V =Ð1Ñ1Ô1ˆÝ  ¨1¨$Ñ/Ô/ˆÝ•j %¨Ñ+Ô+Ð+Ð+Ð+r6   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¬¦  «         d S )Nr¸   )rÃ  Úhetrd_lworkrP   rQ   r-   )r   rP   ©r  r   r²  rT   r½   r,  r³  r¹   r�   rv   )r/   r   r'   r´  rµ  Úfill_diagonalrê   r0  r   r"   r   rÖ   r×   r   r2   ré   r   r3  r¶  r™  r…   r   ry   )r`   rÚ   Ú
real_dtyperÁ  r­  rÃ  rÆ  rŒ   r?   ri   rº   r·  rp   r¸  rs   ry   rh  r¹  rº  r?  rö   r»  r¼  ÚQHAQs                           r4   Ú
test_hetrdzTestHetrd.test_hetrd`  s¥  € õ ŒH�a˜�V =Ð1Ñ1Ô1ˆåÐ5¸°tÑ<Ô<ñ 	ˆˆ{õ
 ŒI�a˜˜A˜a™C™ !™ A™¨ZÐ8Ñ8Ô8Ø•2”9˜Q  1 Q¡3¡¨¡
¨1¡°JÐ?Ñ?Ô?Ñ?ñ@ð 	
�"Ô
˜qÑ
!Ô
!Ñ"õ 	Ô˜�BœG¥B¤G¨A¡J¤JÑ/Ô/Ñ0Ô0Ð0ð ð 	"ð 	"ˆAØ!�k !¨1Ð-Ñ-Ô-‰GˆAˆtÝ˜˜qÑ!Ô!Ð!Ð!õ ˜{¨AÑ.Ô.ˆð !&  a¨q¸Ð >Ñ >Ô >Ñˆˆa��C˜Ý�T˜1ÑÔÐå˜˜a a­¬°Ñ(<Ô(<Ô(@Ñ&@ÀsÐKÑKÔKÐKå˜�2œ7¥2¤7¨1¡:¤:Ñ.Ô.Ñ/Ô/Ð/Ý˜˜3ÑÔÐÝ˜˜SÑ!Ô!Ð!ð !&  a¨uÐ 5Ñ 5Ô 5Ñˆˆa��C˜Ý�T˜1ÑÔÐõ
 ŒM˜! :Ð.Ñ.Ô.ˆÝŒI�a”g˜a”j­Ð,Ñ,Ô,ˆØˆˆ!ˆQˆ$‰ÝŒY�q”w˜q”z !‘|­3Ð/Ñ/Ô/ˆØˆˆ"ˆQ‰$�ˆ(‰Øˆˆ"ˆb�‰dˆ(‰õ ŒF�1�a˜}Ð-Ñ-Ô-ˆÝ�q˜‘s‘”ð 	ð 	ˆAÝ”˜ -Ð0Ñ0Ô0ˆAØ˜˜!˜˜Q˜q™S˜”MˆAˆbˆqˆb‰EØˆAˆa‰DÝ”�q˜! =Ð1Ñ1Ô1Ø�a”&�2œ8 A¥r¤w¨q¡z¤zÑ2Ô2Ñ2ñ3ˆAå”�q˜!‘”ˆAˆAõ ”/ ! RÑ(Ô(ˆÝ”W˜QœS œ\Ñ*Ô*ˆˆ'‰
åŒv•b”g˜aœc‘l”l¥B¤F¨1¨a¡L¤LÑ1Ô1ˆõ 	Ø�!˜"�RœX jÑ1Ô1Ô5Ñ5¸Cð	ñ 	ô 	ð 	ð 	ð 	r6   N)r¢   r£   r¤   rA   ru  rv  r.   rÄ  ÚziprÕ   rË  r¥   r6   r4   rÀ  rÀ  X  s¤   € € € € € Ø„[×Ò˜_¨nÑ=Ô=ð,ð ,ñ >Ô=ð,ð „[×ÒÐ7Ø ˜S ¨nÑ=Ô=ñ?ô ?à„[×Ò˜S &Ñ)Ô)ðAð Añ *Ô)ñ?ô ?ðAð Að Ar6   rÀ  c            
      óð  — t          t          ¦  «        D �]_\  } }t          d|¬¦  «        \  }}t          |ddd¬¦  «        }| dk     rYt	          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¬ ¦  «         �Œad S )!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"   r/   rƒ   r   r   )rØ   r3   ÚfuncÚ
func_lworkrº   ra   rˆ   rp   r‡   r?   Úresultrž  s               r4   Ú
test_gglserÞ  §  sF  € å¥Ñ'Ô'ð ,?ñ ,?‰
ˆˆUå+Ð,DØ27ð9ñ 9ô 9Ñˆˆjå˜z¨Q°!°qÐ9Ñ9Ô9ˆà�Š7ˆ7Ý”Ð5Ð5Ð5Ø5Ð5Ð5Ø3Ð3Ð3Ø4Ð4Ð4Ø3Ð3Ð3Ø4Ð4Ð4ð6ð
 >CðDñ Dô DˆAõ ”ÐAÐAÐAÈÐOÑOÔOˆAÝ”˜"˜b˜¨Ð/Ñ/Ô/ˆAˆAõ ”ÐMÐMÐMØNÐNÐNØKÐKÐKØKÐKÐKØKÐKÐKØKÐKÐKðMñ Nô NˆAõ ”˜;˜-Ø%˜,Ø&˜-Ø%˜,Ø&˜-Ø%˜,ð(ñ )ô )ˆAõ ”˜ %Ð(Ñ(Ô(ˆAåŒHÐ'Ð'Ð'Ð):Ð):Ð):Ð;À5ÐIÑIÔIˆà!˜T ! Q¨¨1°EÐ:Ñ:Ô:Ñˆˆ1ˆa�˜Ø�Š7ˆ7Ý”xð !-ð !-ð !-ñ .ô .ˆHˆHõ
 ”xð !:ð !:ð !:ñ ;ô ;ˆHõ 	" &¨(¸AÐ>Ñ>Ô>Ð>Ñ>ðY,?ð ,?r6   c            
      óP  — t          d¦  «         t          t          t          z   ¦  «        D �]x\  } }d}| dk     rIt	          d|¬¦  «        }t	          d|¬¦  «        \  }}t          ||¦  «                             |¦  «        }n\t	          d|¬¦  «        }t	          d|¬¦  «        \  }}t          ||¦  «        t          ||¦  «        d	z  z                        |¦  «        }||                     ¦   «         j        z   d
z  d
t          j
        ||¬¦  «        z  z   }t          |d¦  «        }t          ||¦  «        } |||d¬¦  «        \  }	}
} ||	|
|d¬¦  «        \  }}t          t          d|z  t          j                             |d¬¦  «        z
  ¦  «        |z  dk     ¦  «         �Œzd S )Nr´   rv   rS   Úsytrf_lworkr¸   )ÚsyconÚsytrfÚhetrf_lwork)ÚheconÚhetrfr-   rQ   rP   )rº   r  )ra   ÚipivÚanormr  ©rc   )r   rÓ   rÔ   r.   r'   r   r1   r™  ry   r/   r   r   r"   r   rœ   ÚlinalgÚcond)rØ   r3   rÚ   rÜ  ÚfunconÚfunctrfr­  rç  rº   Úlduræ  r?   Úrconds                r4   Útest_sycon_heconrï  Ø  s«  € Ýˆ�J„J€JÝ¥¥~Ñ 5Ñ6Ô6ð Añ A‰
ˆˆUàˆà�Š7ˆ7Ý)¨-¸uÐEÑEÔEˆJÝ.Ð/AÈÐOÑOÔO‰OˆF�GÝ�a˜‘”×#Ò# EÑ*Ô*ˆAˆAõ *¨-¸uÐEÑEÔEˆJÝ.Ð/AÈÐOÑOÔO‰OˆF�GÝ�a˜‘”�d 1 a™jœj¨™mÑ+×3Ò3°EÑ:Ô:ˆAð �—’‘””‰^˜QÑ ¥2¤6¨!°5Ð#9Ñ#9Ô#9Ñ!9Ñ9ˆå�Q˜‘
”
ˆÝ˜z¨1Ñ-Ô-ˆØ�w˜q¨°QÐ7Ñ7Ô7‰ˆˆT�1Ø�6˜C d°%¸qÐAÑAÔA‰ˆˆqå•�A�e‘G�bœiŸnšn¨Q°!˜nÑ4Ô4Ñ4Ñ5Ô5°eÑ;¸aÒ?Ñ@Ô@Ð@Ñ@ð-Að Ar6   c                  ó´  — t          d¦  «         t          t          ¦  «        D �]2\  } }d}t          d|¬¦  «        \  }}}}t	          ||¦  «                             |¦  «        }||j        z   dz  }t	          ||¦  «                             |¦  «        }||j        z   dz  dt          j        ||¬¦  «        z  z   } |||¦  «        \  }	}
}t          |dk    ¦  «          ||¦  «        \  }}t          |dk    ¦  «          |||¦  «        \  }}t          |dk    ¦  «          ||¦  «        \  }}
}t          |dk    ¦  «         t          ||	d¬¦  «         �Œ4d S )	Nr´   rv   )r  ÚsygstÚsyevdÚsygvdr¸   rQ   r   giUMu?rÉ   )r   rÓ   rÕ   r'   r   r1   ry   r/   r   r   r   )rØ   r3   rÚ   r  rñ  rò  ró  r­  ÚBÚeig_gvdr?   ri   r‡   ra   Úeigs                  r4   Ú
test_sygstr÷  ó  s€  € Ýˆ�J„J€JÝ¥Ñ,Ô,ð 3ñ 3‰
ˆˆUàˆå%5ð 7Ià<Að&Cñ &Cô &CÑ"ˆˆu�e˜Uõ ��A‰JŒJ×Ò˜eÑ$Ô$ˆØ�”‰W�a‰Kˆå��A‰JŒJ×Ò˜eÑ$Ô$ˆØ�”‰W�a‰K˜!�bœf Q¨eÐ4Ñ4Ô4Ñ4Ñ4ˆð !˜5  A™;œ;Ñˆ��DÝ�˜’	ÑÔÐð �%˜‘(”(‰ˆˆ4Ý�˜’	ÑÔÐØ�%˜˜1‘+”+‰ˆˆ4Ý�˜’	ÑÔÐà�u˜Q‘x”x‰ˆˆQ�Ý�˜’	ÑÔÐÝ˜˜W¨6Ð2Ñ2Ô2Ð2Ñ2ð53ð 3r6   c                  ó˜  — t          d¦  «         t          t          ¦  «        D �]¤\  } }d}t          d|¬¦  «        \  }}}}t	          ||¦  «                             |¦  «        dt	          ||¦  «                             |¦  «        z  z   }||                     ¦   «         j        z   dz  }t	          ||¦  «                             |¦  «        dt	          ||¦  «                             |¦  «        z  z   }||                     ¦   «         j        z   dz  dt          j	        ||¬¦  «        z  z   } |||¦  «        \  }	}
}t          |dk    ¦  «          ||¦  «        \  }}t          |dk    ¦  «          |||¦  «        \  }}t          |dk    ¦  «          ||¦  «        \  }}
}t          |dk    ¦  «         t          ||	d¬	¦  «         �Œ¦d S )
Nr´   rv   )r  ÚhegstÚheevdÚhegvdr¸   r-   rQ   r   ç-Cëâ6?rÉ   )r   rÓ   r.   r'   r   r1   r™  ry   r/   r   r   r   )rØ   r3   rÚ   r  rù  rú  rû  r­  rô  rõ  r?   ri   r‡   ra   rö  s                  r4   Ú
test_hegstrý    sÒ  € Ýˆ�J„J€JÝ¥Ñ/Ô/ð 1ñ 1‰
ˆˆUàˆå%5ð 7Ià<Að&Cñ &Cô &CÑ"ˆˆu�e˜Uõ ��A‰JŒJ×Ò˜eÑ$Ô$ r­D°°A©J¬J×,=Ò,=¸eÑ,DÔ,DÑ'DÑDˆØ�—’‘””‰^˜QÑˆå��A‰JŒJ×Ò˜eÑ$Ô$ r­D°°A©J¬J×,=Ò,=¸eÑ,DÔ,DÑ'DÑDˆØ�—’‘””‰^˜QÑ ¥R¤V¨A°UÐ%;Ñ%;Ô%;Ñ!;Ñ;ˆð !˜5  A™;œ;Ñˆ��DÝ�˜’	ÑÔÐð �%˜‘(”(‰ˆˆ4Ý�˜’	ÑÔÐØ�%˜˜1‘+”+‰ˆˆ4Ý�˜’	ÑÔÐà�u˜Q‘x”x‰ˆˆQ�Ý�˜’	ÑÔÐÝ˜˜W¨4Ð0Ñ0Ô0Ð0Ñ0ð51ð 1r6   c                  ó\  ‡‡‡— t          d¦  «         d\  } }t          t          ¦  «        D �]þ\  }}t          d|¬¦  «        \  }}t	          || |¦  «        }|dk     r1t          t          | |¦  «                             |¦  «        ¦  «        }nDt          t          | |¦  «        t          | |¦  «        dz  z                        |¦  «        ¦  «        }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        ||¬¦  «        Šˆˆˆfd
„t!          | ¦  «        D ¦   «         }t#          t          j        |¦  «        }t'          |
                     |¦  «        |z
  t)          ||¬¦  «        dt          j         |d¦  «        j        ¦  «        z  d¬¦  «         �Œ d	S )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   Nc           
      ó¬   •— g | ]P}‰‰|         ‰|gd d …f         j                              ‰|gd d …f                              ¦   «         ¦  «        z  z
  ‘ŒQS ©N©ry   r…   r™  ©rS  rŒ   ÚIdÚVrs   s     €€€r4   rT  ztest_tzrzf.<locals>.<listcomp>M  s[   ø€ ÐMÐMÐM¸qˆr�#�a”&˜˜A˜3   ˜6œœŸš¨¨A¨3°°°¨6¬¯ªÑ)9Ô)9Ñ:Ô:Ñ:Ñ:ÐMÐMÐMr6   rv   r½   r³  r,  )r   rÓ   rÔ   r'   r"   r   r   r1   r  r  ry   r   r/   r.  r   r   r3  r   r…   r   r   Úspacingrê   )rÙ   rÚ   rØ   r3   r  Útzrzf_lwrº   r­  Úrzri   r–  r    ÚZr  r	  rs   s                @@@r4   Ú
test_tzrzfr  1  s/  øøø€ õ 	ˆ�J„J€JØ�D€A€qÝ¥Ñ'Ô'ð Fñ F‰
ˆˆUÝ*Ð+CØ16ð8ñ 8ô 8‰ˆˆxå˜x¨¨AÑ.Ô.ˆà�Š7ˆ7Ý•T˜!˜Q‘Z”Z×&Ò& uÑ-Ô-Ñ.Ô.ˆAˆAå•d˜1˜a‘j”j¥4¨¨1¡:¤:¨b¡=Ñ0×8Ò8¸Ñ?Ô?Ñ@Ô@ˆAõ 	•i ¨¬Ñ,Ô,Ð,Ø˜˜a uÐ-Ñ-Ô-‰ˆˆC�å�˜’	ÑÔÐõ ŒI�r˜!˜!˜!˜R˜a˜R˜%”y¥"¤(¨A¨q°©s¨8¸5Ð"AÑ"AÔ"AÐBÑCÔCˆÝŒI•r”v˜a uÐ-Ñ-Ô-¨r°!°!°!°Q°R°R°%¬yÐ9Ñ:Ô:ˆÝŒV�A˜UÐ#Ñ#Ô#ˆØMÐMÐMÐMÐMÐMÅEÈ!ÁHÄHÐMÑMÔMˆÝ•2”6˜3ÑÔˆÝ˜Ÿš˜a™œ 1™¥j°¸%Ð&@Ñ&@Ô&@Ø¥¤
¨5¨5°©:¬:¬?Ñ ;Ô ;Ñ;À"ð	Fñ 	Fô 	Fð 	Fñ 	Fð-Fð Fr6   c            	      óF  — t          d¦  «         t          t          ¦  «        D �]{\  } }d}| dk    rWt          t	          ||¦  «        t	          ||¦  «        dz  z   t          |¦  «        z   ¦  «                             |¦  «        }d}nBt          t	          ||¦  «        t          |¦  «        z   ¦  «                             |¦  «        }d}t          d|¬¦  «        \  }}} ||¦  «        \  }}	t	          |d	¦  «                             |¦  «        }
 |d
||
¦  «        }t          |t          | |
¦  «        | d	z  dk    rdnd¬¦  «          |d
||
|¬¦  «        }t          |t          | 
                    ¦   «         j         |
¦  «        | d	z  dk    rdnd¬¦  «          |d¦  «        |t          j        |¦  «        t          j        |¦  «        f<    |d
||
|d¬¦  «        }t          |t          | 
                    ¦   «         j         |
¦  «        | d	z  dk    rdnd¬¦  «         t	          d|¦  «                             |¦  «        } |d
|||dd¬¦  «        }t          |t          | |j        ¦  «         
                    ¦   «         j        | d	z  dk    rdnd¬¦  «         �Œ}dS )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½   rU  )r‰   r0  rR   r–  )r‰   r0  r˜  N)r   rÓ   rÔ   r   r   r   r1   r'   r   r   r™  ry   r/   r´  )rØ   r3   rÚ   r­  r‰   r  r  r  ÚAfpr?   rô  ÚsolnÚB2s                r4   Ú	test_tfsmr  S  sÖ  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð  Dñ  D‰
ˆˆUØˆØ�Š7ˆ7Ý•T˜!˜Q‘Z”Z¥$ q¨!¡*¤*¨R¡-Ñ/µ#°a±&´&Ñ8Ñ9Ô9×@Ò@ÀÑGÔGˆAØˆEˆEå•T˜!˜Q‘Z”Z¥# a¡&¤&Ñ(Ñ)Ô)×0Ò0°Ñ7Ô7ˆAØˆEå-Ð.HØ49ð;ñ ;ô ;Ñˆˆu�dð ��q‘”‰ˆˆQÝ��A‰JŒJ×Ò˜eÑ$Ô$ˆØˆt�B˜˜QÑÔˆÝ! $­¨q¨b°!©¬Ø/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dð ˆt�B˜˜Q eÐ,Ñ,Ô,ˆÝ! $­¨q¯vªv©x¬x¬z¨k¸1Ñ(=Ô(=Ø/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dð ).¨¨b©	¬	ˆ�"Œ)�A‰,Œ,�œ	 !™œÐ
$Ñ%Øˆt�B˜˜Q e°#Ð6Ñ6Ô6ˆÝ! $­¨q¯vªv©x¬x¬z¨k¸1Ñ(=Ô(=Ø/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dõ �!�Q‰ZŒZ×Ò˜uÑ%Ô%ˆØˆt�B˜˜R u°3¸SÐAÑAÔAˆÝ! $­¨q¨b°"´$©¬×(<Ò(<Ñ(>Ô(>Ô(@Ø/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dñ 	Dð? Dð  Dr6   c            	      ó–  ‡‡‡— t          d¦  «         d\  } }}t          t          ¦  «        D �]š\  }}t          d|¬¦  «        \  }}t	          || |¦  «        }|dk     rht          t          | |¦  «                             |¦  «        ¦  «        }t          ||¦  «                             |¦  «        }	t          d|¬¦  «        \  }
}n�t          t          | |¦  «        t          | |¦  «        dz  z                        |¦  «        ¦  «        }t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }	t          d|¬¦  «        \  }
}t	          |||¦  «        } |||¬	¦  «        \  }Š}t          j	        t          j
        | |¬¦  «        |d
d
…| d
…f         f¦  «        Št          j
        ||¬¦  «        Šˆˆˆfd„t          | ¦  «        D ¦   «         }t          t          j        |¦  «        }|dk     rdnd}dt          j         |d¦  «        j        ¦  «        z  } |
|‰|	|¬	¦  «        \  }}t!          |dk    ¦  «         t#          ||                     |	¦  «        z
  t%          |	¦  «        |d¬¦  «          |
|‰|	||¬¦  «        \  }}t!          |dk    ¦  «         t#          ||                     ¦   «         j                             |	¦  «        z
  t%          |	¦  «        |d¬¦  «          |
|‰|	d|¬¦  «        \  }}t!          |dk    ¦  «         t#          ||	                     |¦  «        z
  t%          |	¦  «        |d¬¦  «          |
|‰|	d||¬¦  «        \  }}t!          |dk    ¦  «         t#          ||	                     |                     ¦   «         j        ¦  «        z
  t%          |	¦  «        |d¬¦  «         �Œœd
S )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¹   Nc           
      ó¬   •— g | ]P}‰‰|         ‰|gd d …f         j                              ‰|gd d …f                              ¦   «         ¦  «        z  z
  ‘ŒQS r  r  r  s     €€€r4   rT  z$test_ormrz_unmrz.<locals>.<listcomp>›  s[   ø€ ÐNÐNÐN¸qˆr�#�a”&˜˜A˜3   ˜6œœŸš¨¨A¨3°°°¨6¬¯ªÑ)9Ô)9Ñ:Ô:Ñ:Ñ:ÐNÐNÐNr6   ry   r|   rv   r½   r   r³  r,  r¼   r–  )r˜  rº   )r˜  r‰   rº   )r   rÓ   rÔ   r'   r"   r   r   r1   r/   r.  r   r3  r   r…   r
  rê   r   r   r   r™  ry   )ÚqmÚqnÚcnrØ   r3   r  r  Úlwork_rzr­  r|   Úorun_mrzÚorun_mrz_lwÚ	lwork_mrzr  ri   r    rº  r‰   ÚtolÚcqr  r	  rs   s                       @@@r4   Útest_ormrz_unmrzr'  |  sÝ  øøø€ õ 	ˆ�J„J€JØ�J€BˆˆBÝ¥Ñ'Ô'ð .!ñ .!‰
ˆˆUÝ*Ð+CØ16ð8ñ 8ô 8‰ˆˆxå! (¨B°Ñ3Ô3ˆà�Š7ˆ7Ý•T˜"˜b‘\”\×(Ò(¨Ñ/Ô/Ñ0Ô0ˆAÝ�R˜‘”×#Ò# EÑ*Ô*ˆAÝ$4Ð5MØ;@ð%Bñ %Bô %BÑ!ˆH�k�kõ •d˜2˜r‘l”l¥T¨"¨b¡\¤\°"¡_Ñ4×<Ò<¸UÑCÔCÑDÔDˆAÝ�b˜"‘”¥ R¨¡¤¨R¡Ñ/×7Ò7¸Ñ>Ô>ˆAÝ$4Ð5MØ;@ð%Bñ %Bô %BÑ!ˆH�kõ # ;°°BÑ7Ô7ˆ	Ø˜˜a xÐ0Ñ0Ô0‰ˆˆC�õ ŒI•r”v˜b¨Ð.Ñ.Ô.°°1°1°1°b°c°c°6´
Ð;Ñ<Ô<ˆÝŒV�B˜eÐ$Ñ$Ô$ˆØNÐNÐNÐNÐNÐNÅEÈ"ÁIÄIÐNÑNÔNˆÝ•2”6˜3ÑÔˆð ˜Q’w�w�� CˆØ•”˜E˜E #™JœJœOÑ,Ô,Ñ,ˆà�8˜B  Q¨iÐ8Ñ8Ô8‰ˆˆDÝ�˜’	ÑÔÐÝ˜˜QŸUšU 1™XœX™¥z°!¡}¤}¸3ÀRÐHÑHÔHÐHà�8˜B  Q¨e¸9ÐEÑEÔE‰ˆˆDÝ�˜’	ÑÔÐÝ˜˜QŸVšV™XœXœZŸ^š^¨AÑ.Ô.Ñ.µ
¸1±´ÀCØð	!ñ 	!ô 	!ð 	!ð �8˜B  Q¨S¸	ÐBÑBÔB‰ˆˆDÝ�˜’	ÑÔÐÝ˜˜QŸUšU 1™XœX™¥z°!¡}¤}¸3ÀRÐHÑHÔHÐHà�8˜B  Q¨S¸ÀYÐOÑOÔO‰ˆˆDÝ�˜’	ÑÔÐÝ˜˜QŸUšU 1§6¢6¡8¤8¤:Ñ.Ô.Ñ.µ
¸1±´ÀCØð	!ñ 	!ô 	!ð 	!ñ 	!ð[.!ð .!r6   c            	      ó8  — t          d¦  «         t          t          ¦  «        D �]ô\  } }d}| dk    r:t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }d}n%t          ||¦  «                             |¦  «        }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
        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
        z  cc<   t          ||                     dd¬¦  «        ¦  «         t          |
| 	                    ¦   «         j
                             dd¬¦  «        ¦  «         t          |	|                     dd¬¦  «        ¦  «         t          || 	                    ¦   «         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          |¦  «        ¦  «         �ŒödS )úz
    Test conversion routines between the Rectengular Full Packed (RFP) format
    and Standard Triangular Array (TR)
    r´   rµ   rP   r-   r|   ry   )r  r  r¸   r   rH  ©rK  rU  )ÚtransrrK  rQ   Nr�   ÚF)Úorder)r   rÓ   rÔ   r   r1   r'   r   r   r   r™  ry   r   r   Úreshape)rØ   r3   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                     r4   Útest_tfttr_trttfr:  ¶  sm  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð 1:ñ 1:‰
ˆˆUØˆØ�Š7ˆ7Ý˜1˜a‘j”j¥4¨¨1¡:¤:¨b¡=Ñ0×8Ò8¸Ñ?Ô?ˆFØˆFˆFå˜1˜a‘j”j×(Ò(¨Ñ/Ô/ˆFØˆFå'Ð(:À%ÐHÑHÔH‰ˆˆuØ�u˜V‘}”}‰ˆ�Ý�˜’	ÑÔÐØ�u˜V¨#Ð.Ñ.Ô.‰ˆ�Ý�˜’	ÑÔÐØ˜˜v¨f¸3Ð?Ñ?Ô?‰ˆ�$Ý�˜’	ÑÔÐØ˜˜v¨f¸3Ð?Ñ?Ô?‰ˆ�$Ý�˜’	ÑÔÐõ ˜!˜A™#˜q !™t˜¨EÐ2Ñ2Ô2ˆÝ ™<œ<¨¨¨¨1¨a©4¨5¨5¨Ô1ˆ��"��a�a�a�ÑØ��A‘�a‘��˜!˜!˜!�ÐÐÔ¥ V¡¤¨U¨a°©d¨U°E°Q¸±T°E¨\Ô :× ?Ò ?Ñ AÔ AÔ CÑCÐÐÑå˜!˜A™#˜q !™t˜¨EÐ2Ñ2Ô2ˆÝ˜v™,œ, q q q¨%¨1¨a©4¨% xÔ0ˆ����Q�Q�Q�‰Ø��!�Q‘$�˜˜˜�ÐÐÔ�d 6™lœl¨1¨a©4¨5¨5°!°Q±$°%°%¨<Ô8×=Ò=Ñ?Ô?ÔAÑAÐÐÑå! &¨(×*:Ò*:¸2ÀSÐ*:Ñ*IÔ*IÑJÔJÐJÝ! (Ø"*§-¢-¡/¤/Ô"3×";Ò";¸BÀcÐ";Ñ"JÔ"Jñ	Lô 	Lð 	Lõ 	" &¨(×*:Ò*:¸2ÀSÐ*:Ñ*IÔ*IÑJÔJÐJÝ! (Ø"*§-¢-¡/¤/Ô"3×";Ò";¸BÀcÐ";Ñ"JÔ"Jñ	Lô 	Lð 	Lð �u˜Q Ñ'Ô'‰ˆ�Ý�˜’	ÑÔÐØ�u˜Q ¨SÐ1Ñ1Ô1‰ˆ�Ý�˜’	ÑÔÐØ˜˜q (°6ÀÐDÑDÔD‰ˆ�$Ý�˜’	ÑÔÐØ˜˜q (°6ÀÐDÑDÔD‰ˆ�$Ý�˜’	ÑÔÐå! &­$¨v©,¬,Ñ7Ô7Ð7Ý! (­D°©L¬LÑ9Ô9Ð9Ý! &­$¨v©,¬,Ñ7Ô7Ð7Ý! (­D°©L¬LÑ9Ô9Ð9Ñ9ðc1:ð 1:r6   c                  ó2  — t          d¦  «         t          t          ¦  «        D �]ñ\  } }d}| dk    r8t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }n#t          ||¦  «                             |¦  «        }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          |¦  «        ¦  «         �ŒódS )r)  r´   rµ   rP   r-   )ÚtrttpÚtpttrr¸   r   rH  r*  rQ   N)r   rÓ   rÔ   r   r1   r'   r   r   r   r   ry   r   r   r   )rØ   r3   rÚ   r/  r<  r=  ÚA_tp_Uri   ÚA_tp_LÚindsÚA_tp_U_mÚA_tp_L_mr6  r7  s                 r4   Útest_tpttr_trttprC  ð  s  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð  8ñ  8‰
ˆˆUØˆØ�Š7ˆ7Ý˜1˜a‘j”j¥4¨¨1¡:¤:¨b¡=Ñ0×8Ò8¸Ñ?Ô?ˆFˆFå˜1˜a‘j”j×(Ò(¨Ñ/Ô/ˆFå'Ð(:À%ÐHÑHÔH‰ˆˆuØ�u˜V‘}”}‰ˆ�Ý�˜’	ÑÔÐØ�u˜V¨#Ð.Ñ.Ô.‰ˆ�Ý�˜’	ÑÔÐõ ˜A‰ŒˆÝ˜˜A˜a™C™ !™¨5Ð1Ñ1Ô1ˆÝ˜F‘|”|”~ tÔ,ˆ���‰å˜A‰ŒˆÝ˜˜A˜a™C™ !™¨5Ð1Ñ1Ô1ˆÝ˜F‘|”|”~ tÔ,ˆ���‰å! &¨(Ñ3Ô3Ð3Ý! &¨(Ñ3Ô3Ð3ð �u˜Q Ñ'Ô'‰ˆ�Ý�˜’	ÑÔÐØ�u˜Q ¨SÐ1Ñ1Ô1‰ˆ�Ý�˜’	ÑÔÐå! &­$¨v©,¬,Ñ7Ô7Ð7Ý! &­$¨v©,¬,Ñ7Ô7Ð7Ñ7ðA 8ð  8r6   c                  ó   — t          d¦  «         t          t          ¦  «        D �](\  } }d}| dk    rgt          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }||                     ¦   «         j        z   |t          |¦  «        z  z   }n@t          ||¦  «                             |¦  «        }||j        z   |t          |¦  «        z  z   }t          d|¬¦  «        \  }}} ||¦  «        \  }} |||¦  «        \  }	}t          |dk    ¦  «          |||	¦  «        \  }
}t          |¦  «        }t          |
|¦  «         �Œ*dS )	zk
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array
    r´   rµ   rP   r-   )Úpftrfr  r  r¸   r   N)r   rÓ   rÔ   r   r1   r™  ry   r   r'   r   r   r   )rØ   r3   rÚ   r­  rE  r  r  r  ri   Ú	Achol_rfpÚA_chol_rr?   ÚAchols                r4   Ú
test_pftrfrI    sS  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð 3ñ 3‰
ˆˆUØˆØ�Š7ˆ7Ý�a˜‘”�d 1 a™jœj¨™mÑ+×3Ò3°EÑ:Ô:ˆAØ�A—F’F‘H”H”J‘ ¥3 q¡6¤6¡Ñ)ˆAˆAå�a˜‘”×#Ò# EÑ*Ô*ˆAØ�A”C‘˜!�C ™FœF™(Ñ"ˆAå.Ð/JØ5:ð<ñ <ô <Ñˆˆu�eð �E˜!‘H”H‰	ˆˆTØ˜%  3™-œ-‰ˆ	�4Ý�˜’	ÑÔÐØ�e˜A˜yÑ)Ô)‰ˆ�!Ý˜‘”ˆÝ! (¨EÑ2Ô2Ð2Ñ2ð%3ð 3r6   c                  óô  — t          d¦  «         t          t          ¦  «        D �]R\  } }d}| dk    rgt          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }||                     ¦   «         j        z   |t          |¦  «        z  z   }n@t          ||¦  «                             |¦  «        }||j        z   |t          |¦  «        z  z   }t          d|¬¦  «        \  }}}} ||¦  «        \  }}	 |||¦  «        \  }
}	 |||
¦  «        \  }}	t          |	dk    ¦  «          |||¦  «        \  }}t          |¦  «        }t          |t          |¦  «        | dz  dk    rd	nd
¬¦  «         �ŒTdS )z
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array to find its inverse
    r´   rµ   rP   r-   )ÚpftrirE  r  r  r¸   r   rQ   rS   rU   r   N)r   rÓ   rÔ   r   r1   r™  ry   r   r'   r   r   r   r   )rØ   r3   rÚ   r­  rK  rE  r  r  r  ri   Ú
A_chol_rfpÚ	A_inv_rfpÚA_inv_rr?   ÚAinvs                  r4   Ú
test_pftrirP  4  s£  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð Dñ D‰
ˆˆUØˆØ�Š7ˆ7Ý�a˜‘”�d 1 a™jœj¨™mÑ+×3Ò3°EÑ:Ô:ˆAØ�A—F’F‘H”H”J‘ ¥3 q¡6¤6¡Ñ)ˆAˆAå�a˜‘”×#Ò# EÑ*Ô*ˆAØ�A”C‘˜!�C ™FœF™(Ñ"ˆAå%5ð 7@ð =Bð	&Cñ &Cô &CÑ"ˆˆu�e˜Uð �E˜!‘H”H‰	ˆˆTØ ˜5  C™=œ=Ñˆ
�DØ˜%  :Ñ.Ô.‰ˆ	�4Ý�˜’	ÑÔÐØ�U˜1˜iÑ(Ô(‰
ˆ�Ý�1‰vŒvˆÝ! '­4°©:¬:Ø/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dñ 	Dð-Dð Dr6   c                  ó°  — t          d¦  «         t          t          ¦  «        D �]°\  } }d}| dk    rgt          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }||                     ¦   «         j        z   |t          |¦  «        z  z   }n@t          ||¦  «                             |¦  «        }||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¬¦  «         �Œ²dS )z…
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array and solve a linear system
    r´   rµ   rP   r-   rR   r¸   rQ   )ÚpftrsrE  r  r  r   rS   rU   r   N)r   rÓ   rÔ   r   r1   r™  ry   r   r   r'   r   r  r  r   r   )rØ   r3   rÚ   r­  rô  ÚBf1ÚBf2rR  rE  r  r  r  ri   rL  r  s                  r4   Ú
test_pftrsrU  T  s  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð Dñ D‰
ˆˆUØˆØ�Š7ˆ7Ý�a˜‘”�d 1 a™jœj¨™mÑ+×3Ò3°EÑ:Ô:ˆAØ�A—F’F‘H”H”J‘ ¥3 q¡6¤6¡Ñ)ˆAˆAå�a˜‘”×#Ò# EÑ*Ô*ˆAØ�A”C‘˜!�C ™FœF™(Ñ"ˆAå�!�Q�˜uÐ%Ñ%Ô%ˆÝ�A�a‘C˜�8 5Ð)Ñ)Ô)ˆÝ�A�a‘C˜�8 5Ð)Ñ)Ô)ˆÝ%5ð 7@ð =Bð	&Cñ &Cô &CÑ"ˆˆu�e˜Uð �E˜!‘H”H‰	ˆˆTØ ˜5  C™=œ=Ñˆ
�Dà�U˜1˜j¨#Ñ.Ô.‰
ˆˆdÝ�˜’	ÑÔÐÝ•i ¨¨:°sÑ;Ô;Ð;Ø�U˜1˜j¨!Ñ,Ô,‰
ˆˆdÝ�˜’	ÑÔÐÝ!¥%¨¨1¡+¤+¨tØ/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dñ 	Dð7Dð Dr6   c            
      óz  — t          d¦  «         t          t          ¦  «        D �]•\  } }d}| dk    rgt          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }||                     ¦   «         j        z   |t          |¦  «        z  z   }n@t          ||¦  «                             |¦  «        }||j        z   |t          |¦  «        z  z   }| dk     rdnd}t          dd	|› d
�f|¬¦  «        \  }}} ||¦  «        \  }}	t          j
                             |d¦  «                             |¦  «        }
 ||dd|
d|¦  «        } |||¦  «        \  }}	t          |t          |
                     |
                     ¦   «         j        ¦  «         d|z  z   ¦  «        | dz  dk    rdnd¬¦  «         �Œ—dS )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)r   rÓ   rÔ   r   r1   r™  ry   r   r'   r/   r0   r   r   r…   )rØ   r3   rÚ   r­  Úprefixr  r  Úshfrkr  r?   r|   ÚAfp_outÚA_outs                r4   Útest_sfrk_hfrkr]  y  sÏ  € õ 	ˆ�J„J€JÝ¥Ñ'Ô'ð Dñ D‰
ˆˆUØˆØ�Š7ˆ7Ý�a˜‘”�d 1 a™jœj¨™mÑ+×3Ò3°EÑ:Ô:ˆAØ�A—F’F‘H”H”J‘ ¥3 q¡6¤6¡Ñ)ˆAˆAå�a˜‘”×#Ò# EÑ*Ô*ˆAØ�A”C‘˜!�C ™FœF™(Ñ"ˆAà˜Q’w�w�� CˆÝ.°¸ÀVÀ.À.À.Ð/QØ5:ð<ñ <ô <Ñˆˆu�eð ��q‘”‰ˆˆQÝŒI�NŠN˜1˜aÑ Ô ×'Ò'¨Ñ.Ô.ˆØ�%˜˜1˜b ! Q¨Ñ,Ô,ˆØ�5˜˜GÑ$Ô$‰ˆˆqÝ! %­¨q¯uªu°Q·V²V±X´X´ZÑ/@Ô/@Ð.@À1ÀQÁ3Ñ.FÑ)GÔ)GØ/2°Q©w¸!ª|¨|¨!¨!Àð	Dñ 	Dô 	Dð 	Dñ 	Dð#Dð Dr6   c            
      ó,  — t          d¦  «         t          t          ¦  «        D �]î\  } }d}| dk    rZt          dd||f¦  «        t          dd||f¦  «        dz  z                        |¦  «        }||                     ¦   «         j        z   }nCt          dd||f¦  «                             |¦  «        }||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¬¦  «         �ŒðdS )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   )r   rÓ   rÔ   r   r1   r™  ry   r   r/   r
  rê   r'   r"   r   r   r   r   )rØ   r3   rÚ   r­  r%  r`  ÚtrfÚ	trf_lworkÚlwrH  ÚDÚpermrí  ræ  ri   ra   r¸  rU  s                     r4   Útest_syconvrg  “  sU  € õ
 	ˆ�J„J€JÝ¥Ñ'Ô'ð Lñ L‰
ˆˆUØˆà�Š7ˆ7Ý˜˜b 1 a &Ñ)Ô)Ý˜˜b 1 a &Ñ)Ô)¨"Ñ,ñ-ß.4ªf°U©m¬mð ð �A—F’F‘H”H”J‘ˆAˆAå˜˜R ! Q Ñ(Ô(×/Ò/°Ñ6Ô6ˆAØ�A”C‘˜!�C ™FœF™(Ñ"ˆAà•"”*˜U˜U 3™ZœZœ_Ñ-Ô-Ñ-ˆÝ!1ð 3BØINð"Pñ "Pô "PÑˆ��Yå˜I q°Ð2Ñ2Ô2ˆÝ˜ !¨uÐ5Ñ5Ô5‰
ˆˆ1ˆdÝ˜I q°Ð2Ñ2Ô2ˆØ˜#˜a q°Ð3Ñ3Ô3‰ˆˆT�4Ø�V˜C ¨QÐ/Ñ/Ô/‰
ˆˆ1ˆdÝ�˜Q ™œ¥d¨1¨T°1°1°1¨W¬:°rÑ&:Ô&:ÀÈ2ÐNÑNÔNÐNõ ˜ !¨uÐ5Ñ5Ô5‰
ˆˆ1ˆdØ˜#˜a q˜/™/œ/‰ˆˆT�4Ø�V˜C ¨QÐ/Ñ/Ô/‰
ˆˆ1ˆdÝ�˜Q ™
œ
¥D¨¨4°°°¨7¬°QÑ$7Ô$7¸cÈÐKÑKÔKÐKÑKð5Lð Lr6   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestBlockedQRzd
    Tests for the blocked QR factorization, namely through geqrt, gemqrt, tpqrt
    and tpmqr.
    c           
      óÊ  — t          d¦  «         t          t          ¦  «        D �]½\  }}d}|dk    r8t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }n#t          ||¦  «                             |¦  «        }dt          j         |d¦  «        j        ¦  «        z  }t          d|¬¦  «        \  }} |||¦  «        \  }}	}
|
d	k    sJ ‚t          j	        |d
¦  «        t          j
        ||¬¦  «        z   }t          j
        ||¬¦  «        ||	z  |j                             ¦   «         z  z
  }t          j        |¦  «        }t          |j                             ¦   «         |z  t          j
        ||¬¦  «        |d¬¦  «         t          ||z  ||d¬¦  «         |dk    r:t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }d}n%t          ||¦  «                             |¦  «        }d}dD ]š}d|fD ]“} |||	|||¬¦  «        \  }}
|
d	k    sJ ‚||k    r|j                             ¦   «         }n|}|dk    r||z  }n||z  }t          |||d¬¦  «         ||fdk    r( |||	|¦  «        \  }}
|
d	k    sJ ‚t          ||¦  «         Œ”Œ›t!          t"          |||	|d¬¦  «         t!          t"          |||	|d¬¦  «         �Œ¿d S )Nr´   rµ   rP   r-   r+  r½   )ÚgeqrtÚgemqrtr¸   r   r�   r³  r,  r|   ry   ©rH  r–  rR  ©r˜  r‰   rH  ©rH  rR  r­  r—  r  )r   rÓ   rÔ   r   r1   r/   r
  rê   r'   r   r   ry   r™  r   r   r   r  r  )r`   rØ   r3   rÚ   r­  r%  rk  rl  ra   Útri   rö   rº  r–  r|   Ú	transposer˜  r‰   rˆ   ÚqÚqCÚ	c_defaults                         r4   Útest_geqrt_gemqrtzTestBlockedQR.test_geqrt_gemqrt¼  s   € ÝˆT‰
Œ
ˆ
Ý#¥FÑ+Ô+ð :	Añ :	A‰JˆC�ØˆAà�QŠwˆwÝ˜!˜Q‘Z”Z¥$ q¨!¡*¤*¨R¡-Ñ/×7Ò7¸Ñ>Ô>��å˜!˜Q‘Z”Z×'Ò'¨Ñ.Ô.�à•b”j   s¡¤¤Ñ1Ô1Ñ1ˆCÝ,Ð-@ÈÐNÑNÔN‰MˆE�6à˜˜q !™œ‰JˆAˆq�$Ø˜1’9�9�9�9õ ”˜˜2‘”¥¤¨°Ð!7Ñ!7Ô!7Ñ7ˆAå”�q Ð&Ñ&Ô&¨¨Q©°´·²±´Ñ);Ñ;ˆAÝ”˜‘
”
ˆAõ ˜AœCŸHšH™JœJ¨™N­B¬F°1¸EÐ,BÑ,BÔ,BÈØ!#ð%ñ %ô %ð %å˜A ™E 1¨3°RÐ8Ñ8Ô8Ð8à�QŠwˆwÝ˜!˜Q‘Z”Z¥$ q¨!¡*¤*¨R¡-Ñ/×7Ò7¸Ñ>Ô>�Ø�	�	å˜!˜Q‘Z”Z×'Ò'¨Ñ.Ô.�Ø�	à"ð 3ð 3�Ø! 9Ð-ð 3ð 3�EØ$˜f Q¨¨1°4¸uÐEÑEÔE‘G�A�tØ 1š9˜9˜9˜9à 	Ò)Ð)ØœCŸHšH™JœJ˜˜à˜à˜s’{�{Ø ™U˜˜à ™U˜å# A r°¸"Ð=Ñ=Ô=Ð=ð ˜e�}¨
Ò2Ð2Ø*0¨&°°A°q©/¬/™˜	 4Ø# qšy˜y˜y˜yÝ$ Y°Ñ2Ô2Ð2øð)3õ. �) V¨Q°°1¸3Ð?Ñ?Ô?Ð?Ý�) V¨Q°°1¸CÐ@Ñ@Ô@Ð@Ñ@ðu:	Að :	Ar6   c                 ó>
  — t          d¦  «         t          t          ¦  «        D �]÷\  }}d}|dk    rot          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }nFt          ||¦  «                             |¦  «        }t          ||¦  «                             |¦  «        }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                             ¦   «         z  z
  }t          j        t          j        |
¦  «        t          j        |
¦  «        f¦  «        }t#          |j                             ¦   «         |z  t          j        d
|z  |¬¦  «        |d¬¦  «         t#          ||z  t          j        t          j        |¦  «        |f¦  «        |d¬¦  «         |dk    rqt          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }t          ||¦  «        t          ||¦  «        dz  z                        |¦  «        }d}nHt          ||¦  «                             |¦  «        }t          ||¦  «                             |¦  «        }d}dD �]}d|fD �]
} ||	||||||¬¦  «        \  }}}|d	k    sJ ‚||k    r|j                             ¦   «         }n|}|dk    r6t          j        ||fd	¬¦  «        }t          j        ||fd	¬¦  «        }||z  }n5t          j        ||fd¬¦  «        }t          j        ||fd¬¦  «        }||z  }t#          |||d¬¦  «         ||fdk    r; ||	||||¦  «        \  }}}|d	k    sJ ‚t          ||¦  «         t          ||¦  «         �Œ�Œt%          t&          ||	||||d¬¦  «         t%          t&          ||	||||d¬¦  «         �Œó�Œùd S )Nr´   rµ   rP   r-   r+  r½   )ÚtpqrtÚtpmqrtr¸   r   rQ   r�   r³  r,  r|   ry   rm  rR  rn  rH  r–   ro  r­  r—  r  )r   rÓ   rÔ   r   r1   r/   r
  rê   r'   r   r   r   r2  r   ry   r™  r   r   r  r  ) r`   rØ   r3   rÚ   r­  rô  r%  rw  rx  Úlra   r‡   rp  ri   ÚB_pentÚb_pentrö   rº  r–  r|   re  rq  r˜  r‰   rˆ   rp   rr  ÚcdÚCDÚqCDrt  Ú	d_defaults                                    r4   Útest_tpqrt_tpmqrtzTestBlockedQR.test_tpqrt_tpmqrtú  s:  € ÝˆT‰
Œ
ˆ
Ý#¥FÑ+Ô+ð O	Kñ O	K‰JˆC�ØˆAà�QŠwˆwÝ˜!˜Q‘Z”Z¥$ q¨!¡*¤*¨R¡-Ñ/×7Ò7¸Ñ>Ô>�Ý˜!˜Q‘Z”Z¥$ q¨!¡*¤*¨R¡-Ñ/×7Ò7¸Ñ>Ô>��å˜!˜Q‘Z”Z×'Ò'¨Ñ.Ô.�Ý˜!˜Q‘Z”Z×'Ò'¨Ñ.Ô.�à•b”j   s¡¤¤Ñ1Ô1Ñ1ˆCÝ,Ð-@ÈÐNÑNÔN‰MˆE�6ð ˜˜a™ �^ð @Kñ @K�Ø %  a¨¨A¨qÑ 1Ô 1‘��1�a˜Ø˜q’y�y�y�yõ �RœW Q¨™^œ^­R¬W°Q¸©^¬^Ñ<Ô<Ð<õ �RœW Q¨¨A©°©	Ñ2Ô2µB´G¸A¸qÀ1¹uÀq¹yÑ4IÔ4IÑJÔJÐJõ "$¤¨¨A°©EÑ!2Ô!2µB´G¸A¸qÀ1¹uÑ4EÔ4E˜�õ ”N¥B¤F¨1°EÐ$:Ñ$:Ô$:¸FÐ#CÑDÔD�å”F˜1˜q™5¨Ð.Ñ.Ô.°°Q±¸¼¿º¹¼Ñ1CÑC�Ý”N¥B¤G¨A¡J¤Jµ´¸aÑ0@Ô0@Ð#AÑBÔB�õ   ¤§¢¡
¤
¨Q¡µ´°q¸1±uÀEÐ0JÑ0JÔ0JØ%(¨rð3ñ 3ô 3ð 3å  A¡¥r¤~µr´w¸q±z´zÀ6Ð6JÑ'KÔ'KØ%(¨rð3ñ 3ô 3ð 3ð ˜’7�7Ý˜a ™œ¥d¨1¨a¡j¤j°¡mÑ3×;Ò;¸EÑBÔB�AÝ˜a ™œ¥d¨1¨a¡j¤j°¡mÑ3×;Ò;¸EÑBÔB�AØ #�I�Iå˜a ™œ×+Ò+¨EÑ2Ô2�AÝ˜a ™œ×+Ò+¨EÑ2Ô2�AØ #�Ià&ð 7ñ 7�DØ"% yÐ!1ð 7ñ 7˜Ø%+ V¨A¨q°!°Q¸ÀØ27ð&9ñ &9ô &9™
˜˜1˜dà# qšy˜y˜y˜yà  IÒ-Ð-Ø !¤§¢¡
¤
˜A˜Aà !˜Aà 3š;˜;Ý!#¤°°A°¸QÐ!?Ñ!?Ô!?˜BÝ!#¤°°A°¸QÐ!?Ñ!?Ô!?˜BØ"# b¡&˜C˜Cå!#¤°°A°¸QÐ!?Ñ!?Ô!?˜BÝ!#¤°°A°¸QÐ!?Ñ!?Ô!?˜BØ"$ q¡&˜Cå'¨¨C°cÀÐCÑCÔCÐCà  %˜=¨JÒ6Ð6Ø9?¸ÀÀ1ÀaÈÈAÑ9NÔ9NÑ6˜I y°$Ø#'¨1¢9 9 9 9Ý(¨°AÑ6Ô6Ð6Ý(¨°AÑ6Ô6Ð6ùñ37õ8 �i¨°°A°q¸!¸QÀSÐIÑIÔIÐIÝ�i¨°°A°q¸!¸QÀcÐJÑJÔJÐJÑJñA@KðO	Kð O	Kr6   N)r¢   r£   r¤   r@   ru  r€  r¥   r6   r4   ri  ri  ¶  sJ   € € € € € ðð ð
<Að <Að <Að|QKð QKð QKð QKð QKr6   ri  c                  ó,  — t          d¦  «         t          t          ¦  «        D �]n\  } }d}d}t          d|¬¦  «        }| dk    rmt	          |||z
  ¦  «                             |¦  «        dt	          |||z
  ¦  «                             |¦  «        z  z   }||                     ¦   «         j        z  }n0t	          |||z
  ¦  «                             |¦  «        }||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        |
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        z  d|¬¦  «         �Œpd S )Nr´   rv   rQ   Úpstrfr¸   rP   r-   r³  éè  ©r   rQ   rM  rÇ  ©r   rÓ   rÔ   r'   r   r1   r™  ry   r   r   r/   rÖ   r¥  r×   r6  r   r   )rØ   r3   rÚ   r�  r‚  r­  rˆ   ÚpivÚr_cri   rU  Úsingle_atolÚdouble_atolr-  rH  s                  r4   Ú
test_pstrfrŠ  N  óŽ  € Ýˆ�J„J€JÝ¥Ñ'Ô'ð #Pñ #P‰
ˆˆUàˆØˆÝ  °Ð6Ñ6Ô6ˆð �Š7ˆ7Ý�Q˜˜!™‘”×#Ò# EÑ*Ô*¨Rµ$°q¸!¸A¹#±,´,×2EÒ2EÀeÑ2LÔ2LÑ-LÑLˆAØ�A—F’F‘H”H”J‘ˆAˆAå�Q˜˜!™‘”×#Ò# EÑ*Ô*ˆAØ�A”C‘ˆAà!˜E !™HœHÑˆˆ3��TÝ�‰GŒGˆØ "ˆˆ#�‰'ˆ(ˆ(�C˜!‘G�H�HÐ
Ñå�T˜1ÑÔÐð �RœX¥b¤jÑ1Ô1Ô5Ñ5ˆØ�RœX¥b¤jÑ1Ô1Ô5Ñ5ˆØ! V˜m˜mˆ{ˆ{°ˆÝ˜˜#˜a™%œ    C¨¡E Ô*¨A¯FªF©H¬H¬J¸©NÀÈ$ÐOÑOÔOÐOà!˜E !¨1Ð-Ñ-Ô-Ñˆˆ3��TÝ�‰GŒGˆØ "ˆˆ#�‰'ˆ(ˆ(�C˜!‘G�H�HÐ
Ñå�T˜1ÑÔÐà�RœX¥b¤jÑ1Ô1Ô5Ñ5ˆØ�RœX¥b¤jÑ1Ô1Ô5Ñ5ˆØ! V˜m˜mˆ{ˆ{°ˆÝ˜˜#˜a™%œ    C¨¡E Ô*¨A°·²±´´
©NÀÈ$ÐOÑOÔOÐOÑOðG#Pð #Pr6   c                  ó,  — t          d¦  «         t          t          ¦  «        D �]n\  } }d}d}t          d|¬¦  «        }| dk    rmt	          |||z
  ¦  «                             |¦  «        dt	          |||z
  ¦  «                             |¦  «        z  z   }||                     ¦   «         j        z  }n0t	          |||z
  ¦  «                             |¦  «        }||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        |
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        z  d|¬¦  «         �Œpd S )Nr´   rv   rQ   Úpstf2r¸   rP   r-   r³  rƒ  r„  rM  rÇ  r…  )rØ   r3   rÚ   r�  r�  r­  rˆ   r†  r‡  ri   rU  rˆ  r‰  r-  rH  s                  r4   Ú
test_pstf2rŽ  v  r‹  r6   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     r6t          j        g d	¢g d
¢g d¢g d¢g¦  «        }|                     |¦  «        }nWt          j        g d¢g d¢g d¢g|¬¦  «        }|t          j        g d¢g d¢g d¢g¦  «        dz  z  }|                     |¦  «        }t          d|¬¦  «        } ||¦  «        \  }}}}	}
}|dk     r7t          |                      |¦  «        |d d …d f         |z  |z  dd¬¦  «         Œùt          |                     |¦  «        |d d …d f         |z  |z  dd¬¦  «         �Œ1d S )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Ð½rz  )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ü  rM  )r/   rƒ   rÓ   rÔ   r1   r'   r   )Údesired_realÚdesired_cplxrØ   r3   r­  r‘  r�  rˆ   ÚrowcndÚcolcndÚamaxri   s               r4   Ú
test_geequr—  ž  sZ  € Ý”8Ð>Ð>Ð>Ø@Ð@Ð@Ø@Ð@Ð@Ø@Ð@Ð@ðBñ Cô C€Lõ
 ”8ð 1ð 1ð 1ð1ð 1ð 1ð1ð 1ð 1ð2ñ 3ô 3€Lõ  ¥Ñ'Ô'ð /ñ /‰
ˆˆUØ�Š7ˆ7å”ÐCÐCÐCØEÐEÐEØEÐEÐEØEÐEÐEðGñ Hô HˆAð —’˜‘”ˆAˆAå”Ð:Ð:Ð:Ø:Ð:Ð:Ø:Ð:Ð:ð<àCHðJñ Jô JˆAð •”Ð:Ð:Ð:Ø;Ð;Ð;Ø:Ð:Ð:ð<ñ =ô =à=?ñ@ñ @ˆAð —’˜‘”ˆAå  °Ð6Ñ6Ô6ˆØ+0¨5°©8¬8Ñ(ˆˆ1ˆf�f˜d Dà�Š7ˆ7Ý˜L×/Ò/°Ñ6Ô6¸¸!¸!¸!¸T¸'¼
À1¹ÀQ¹Ø!"¨ð/ñ /ô /ð /ð /õ ˜L×/Ò/°Ñ6Ô6¸¸!¸!¸!¸T¸'¼
À1¹ÀQ¹Ø!"¨ð/ñ /ô /ð /ñ /ð3/ð /r6   c                  ó"  ‡
— t          j        g d¢¦  «        } t          t          ¦  «        D ]â\  }}t          j        d|¬¦  «        } ||dk     rdnd¦  «        Š
t          j        ˆ
fd„t          dd	¦  «        D ¦   «         |¬¦  «        }|t          j        t          j        |¦  «        ¦  «        z  }t          d
|¬¦  «        } ||¦  «        \  }}}}	t          t          j
        |¦  «                             t          ¦  «        | ¦  «         Œãd S )N)
r   r   r   r   r   r   r�   r�   r  rF  rv   r¸   rQ   r½   r-   c                 ó    •— g | ]
}‰d |z  z  ‘ŒS )r¾   r¥   )rS  rŒ   r�  s     €r4   rT  ztest_syequb.<locals>.<listcomp>Ñ  s!   ø€ Ð:Ð:Ð:¨�e˜b !™e‘mÐ:Ð:Ð:r6   éûÿÿÿrT   Úsyequb)r/   rƒ   rÓ   rÔ   r   r3  Úrot90r0  r'   r   Úlog2r1   ré   )Údesired_log2srØ   r3   r­  rp   r›  rî   Úscondr–  ri   r�  s             @r4   Útest_syequbr   Ë  s  ø€ Ý”HÐ?Ð?Ð?Ñ@Ô@€Må¥Ñ'Ô'ð 	<ð 	<‰
ˆˆUÝŒF�2˜UÐ#Ñ#Ô#ˆØ�˜C !šG˜G�b�b¨Ñ-Ô-ˆÝŒHÐ:Ð:Ð:Ð:­U°2°q©\¬\Ð:Ñ:Ô:À%ÐHÑHÔHˆØ	�RŒX•b”g˜a‘j”jÑ!Ô!Ñ!ˆå! (°%Ð8Ñ8Ô8ˆØ%˜v a™yœyÑˆˆ5�$˜å•R”W˜Q‘Z”Z×&Ò&¥sÑ+Ô+¨]Ñ;Ô;Ð;Ð;ð	<ð 	<r6   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
        |                      t           j        ¦  «        d¬¦  «        \  }}}}t          |d¦  «         t          t          j        |¦  «        g d¢¦  «         d S )NrQ   rT   iê  rX   rP   )rh  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  )r/   r0  r   r   Úzheequbr   r   r�  rœ   r´  Úcheequbr1   Ú	complex64)r­  rî   rŸ  r–  ri   s        r4   Útest_heequbr©  Ú  s@  € õ 	Œ���A‘˜˜˜q™Ñ Ñ!Ô!¥B¤G­B¬G°A©J¬J¸!Ð$<Ñ$<Ô$<¸RÑ$?Ñ?€AÝ!œ>¨!Ñ,Ô,Ñ€A€uˆd�DÝ��qÑÔÐÝ•B”G˜A‘J”J  S 	¨!¡¨r¨dÑ 2°b°T¸!±VÑ ;Ñ<Ô<Ð<å
Œ�•2”6�"œ) B¨Ñ*Ô*Ñ+Ô+Ñ+¨bÑ0Ñ1Ô1€AØ€A€d�GØ€A€d�GÝ!œ>¨!¯(ª(µ2´<Ñ*@Ô*@ÈÐJÑJÔJÑ€A€uˆd�DÝ��qÑÔÐÝ•B”G˜A‘J”JÐ IÐ IÐ IÑJÔJÐJÐJÐJr6   c                  ó  — t           j                             d¦  «         d} t           j                             | ¦  «        }t           j                             | ¦  «        t           j                             | ¦  «        dz  z   }t	          t
          ¦  «        D �]n\  }}|dk     rPt           j                             | | ¦  «        }|                     |¦  «        }||z  }|                     |¦  «        }nst           j                             | | ¦  «        t           j                             | | ¦  «        dz  z   }|                     |¦  «        }||z  }|                     |¦  «        }t          d|¬¦  «        }t          d|¬¦  «        } ||d¬	¦  «        \  }	}
}} ||	||
|d¬
¦  «        \  }}|dk     r*t          |                     |¦  «        ||z  d¬¦  «         �ŒFt          |                     |¦  «        ||z  d¬¦  «         �Œpd S )Nr  rv   r-   rQ   Úgetc2r¸   Úgesc2r   ©r'  )Úoverwrite_rhsrS   r   )	r/   r0   r   r   rÓ   rÔ   r1   r'   r   )rÚ   r’  r“  rØ   r3   r­  r‡   r«  r¬  Úluræ  Újpivri   rŒ   r\   s                  r4   Útest_getc2_gesc2r±  î  sñ  € Ý„I‡N‚N�2ÑÔÐØ
€AÝ”9—>’> !Ñ$Ô$€LÝ”9—>’> !Ñ$Ô$¥r¤y§~¢~°aÑ'8Ô'8¸Ñ';Ñ;€Lå¥Ñ'Ô'ð :ñ :‰
ˆˆUØ�Š7ˆ7Ý”	—’˜q !Ñ$Ô$ˆAØ—’˜‘”ˆAØ�LÑ ˆAØ—’˜‘”ˆAˆAå”	—’˜q !Ñ$Ô$¥r¤y§~¢~°a¸Ñ';Ô';¸BÑ'>Ñ>ˆAØ—’˜‘”ˆAØ�LÑ ˆAØ—’˜‘”ˆAå  °Ð6Ñ6Ô6ˆÝ  °Ð6Ñ6Ô6ˆØ$˜u Q°AÐ6Ñ6Ô6ÑˆˆD�$˜Ø�5˜˜Q  d¸!Ð<Ñ<Ô<‰ˆˆ5à�Š7ˆ7Ý% l×&9Ò&9¸%Ñ&@Ô&@Ø&'¨¡g°qð:ñ :ô :ð :ñ :õ & l×&9Ò&9¸%Ñ&@Ô&@Ø&'¨¡g°qð:ñ :ô :ð :ñ :ð+:ð :r6   r  )rU   rT   r¥  ÚjobarU   ÚjoburS   ÚjobvÚjobrrP   Újobpc                 ó&  — t          d¦  «         | \  }}	dt          j        |¦  «        j        z  }
t	          | |¦  «        }t          d|¬¦  «        }|dk     }|dk     }|dk    o||	k    }t          j        |¦  «        }|dk    o| o| }|dk    o|o| o|}|dk    o|o| o|}|rd}n	|s|rd}nd	}|dk    r$|dk    rt          t          ||||||||¦	  «	         dS  ||||||||¬
¦  «        \  }}}}}}t          ||¦  «         |�s‰|d	         |d         z  |d|	…         z  }t          |t          |d¬¦  «        |
¬¦  «         |dk    r|dd…d|	…f         }|rC|rAt          |t          j        |¦  «        z  |                     ¦   «         j        z  ||
¬¦  «         |r>t          |                     ¦   «         j        |z  t          j        |	¦  «        |
¬¦  «         |r>t          |                     ¦   «         j        |z  t          j        |	¦  «        |
¬¦  «         t          |d	         t          j                             |¦  «        ¦  «         t          |d         t          j        |¦  «        ¦  «         t          |d         d	¦  «         dS dS )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  rF  r   )r²  r³  r´  rµ  Újobtr¶  NF)r&  r†  )r   r/   rÖ   r×   r5   r'   r{  r  r  r   r   r   r0  r™  ry   Úidentityré  Úmatrix_rankÚcount_nonzero)r  r3   r²  r³  r´  rµ  r¶  r¹  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                               r4   Útest_gejsv_generalrÇ    s  € õB 	ˆ�H„H€Hð �D€A€qØ•”˜%‘”Ô$Ñ$€DÝ# D¨%Ñ0Ô0€AÝ˜W¨EÐ2Ñ2Ô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�yÝ•i ¨¨4°°t¸TÀ4ÈÑNÔNÐNÐNÐNà', u¨QØ26Ø26Ø26Ø26Ø26Ø26ð(8ñ (8ô (8Ñ$ˆˆQ��4˜ õ 	�T˜;Ñ'Ô'Ð'ð ñ 	&ð ˜!”W˜t AœwÑ&¨#¨b¨q¨b¬'Ñ1ˆEÝ˜E¥3 q°UÐ#;Ñ#;Ô#;À$ÐGÑGÔGÐGà�qŠyˆyð �a�a�a˜˜!˜�e”H�àð O˜ð OÝ ¥B¤G¨E¡N¤NÑ 2°Q·V²V±X´X´ZÑ ?ÀÈÐNÑNÔNÐNØð KÝ §¢¡¤¤
¨Q¡µ´¸A±´ÀTÐJÑJÔJÐJØð KÝ §¢¡¤¤
¨Q¡µ´¸A±´ÀTÐJÑJÔJÐJå˜˜qœ¥2¤9×#8Ò#8¸Ñ#;Ô#;Ñ<Ô<Ð<Ý˜˜qœ¥2Ô#3°EÑ#:Ô#:Ñ;Ô;Ð;õ ˜˜qœ 1Ñ%Ô%Ð%Ð%Ð%ð5	&ð 	&r6   c                 óV  — 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¦  «                             d	d	¦  «        ¦  «         	                    | ¦  «        }t          j
        ||j        z   ¦  «        }|                     d
¦  «        }	 ||¦  «        }
t          ||	¦  «         dS )z*Test edge arguments return expected statusr¸  r¸   r½   r   ©rP   rP   ©rP   r•  r+  rv   r­  N)r'   r   r2   r/   rƒ   r   Úsinr´  r.  r1   Úasfortranarrayry   rš  r   )r3   r¸  rÅ  r�  rö   rë   rì   ri   r­  ÚAcr?   s              r4   Útest_gejsv_edge_argumentsrÎ  y  s  € õ ˜W¨EÐ2Ñ2Ô2€Eð $) 5¨¡9¤9Ñ €CˆˆAˆt�U˜DÝ��qÑÔÐÝ�”˜&Ñ!Ô!Ð!Ý�”˜&Ñ!Ô!Ð!Ý�•b”h ˜t¨5Ð1Ñ1Ô1Ñ2Ô2Ð2õ 	Œ�˜EÐ"Ñ"Ô"€AØ#( 5¨¡8¤8Ñ €CˆˆAˆt�U˜DÝ��qÑÔÐÝ�”˜&Ñ!Ô!Ð!Ý�”˜&Ñ!Ô!Ð!Ý�•b”h ˜t¨5Ð1Ñ1Ô1Ñ2Ô2Ð2õ 	Œ�˜eÐ$Ñ$Ô$€AØ#( 5¨¡8¤8Ñ €CˆˆAˆt�U˜DÝ��qÑÔÐÝ�”˜&Ñ!Ô!Ð!Ý�”˜&Ñ!Ô!Ð!Ý�•b”h˜r¨Ð/Ñ/Ô/Ñ0Ô0Ð0õ 	Œ�rŒy˜‰~Œ~×%Ò% b¨"Ñ-Ô-Ñ.Ô.×5Ò5°eÑ<Ô<€AÝ
Ô˜!˜aœc™'Ñ"Ô"€AØ	
�Š�‰Œ€BØˆˆa‰Œ€AÝ�A�rÑÔÐÐÐr6   ÚkwargsrX   r¹  c                 ó�   — t          j        dt          ¬¦  «        }t          dt          ¬¦  «        }t	          t
          ||fi | ¤Ž dS )z-Test invalid job arguments raise an Exception)rQ   rQ   r¸   r¸  Nrq  )rÏ  r­  r¸  s      r4   Ú test_gejsv_invalid_job_argumentsrÑ  �  sJ   € õ 	Œ��eÐ$Ñ$Ô$€AÝ˜W­EÐ2Ñ2Ô2€EÝ•)˜U AÐ0Ð0¨Ð0Ð0Ð0Ð0Ð0r6   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          |||¬¦  «         dS )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'   r3   r   )r­  Ú
sva_expectÚu_expectÚv_expectr-  r¸  rÅ  r�  rö   rë   rì   ri   s               r4   Útest_gejsv_NAGrØ  ¬  s|   € ð0 €DÝ˜W¨A¬GÐ4Ñ4Ô4€Eà#( 5¨¡8¤8Ñ €CˆˆAˆt�U˜Då�J ¨$Ð/Ñ/Ô/Ð/Ý�H˜a dÐ+Ñ+Ô+Ð+Ý�H˜a dÐ+Ñ+Ô+Ð+Ð+Ð+r6   c           	      óØ  — t          d¦  «         d}dt          j        | ¦  «        j        z  }t	          |dz
  f| ¬¦  «        }t	          |f| ¬¦  «        }t	          |dz
  f| ¬¦  «        }|                     ¦   «         |                     ¦   «         |                     ¦   «         g}t          j        |¦  «        t          j        |d¦  «        z   t          j        |d¦  «        z   }t          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 ]K\  }}||         dz
  }|d d …||gf         |d d …||gf<   |d d …|fxx         |d d …|dz   f         |z  z  cc<   ŒLd|d         dz
  }}|d d …||gf         |d d …||gf<   t          |||z  |¬
¦  «         |	                     ¦   «         } |||||||	¦  «        \  }}t          |	|¦  «         t          |||¬
¦  «         | t          v rd}|j        |z  }nd}|                     ¦   «         j        |z  } ||||||||¬¦  «        \  }}t          |||¬
¦  «         t#          t$          ¦  «        5   |
|d d…         ||¦  «         d d d ¦  «         n# 1 swxY w Y   t#          t$          ¦  «        5   |
||d d…         |¦  «         d d d ¦  «         n# 1 swxY w Y   t#          t$          ¦  «        5   |
|||d d…         ¦  «         d d d ¦  «         n# 1 swxY w Y   t#          t&          ¦  «        5   |
|d         |d d…         |d         ¦  «         d d d ¦  «         n# 1 swxY w Y   d|d<   d|d<    |
|||¦  «        \  }}}}}} t          j                             ||dz
           dk    d||dz
           › d�¦  «         d S )Nr  rv   r+  rP   r¸   r�   ©ÚgttrfÚgttrsr   rQ   r†  ry   r|   r  z?gttrf: _d[info-1] is ú, not the illegal value :0.)r   r/   rÖ   r×   r5   rš  r0  r0   r   r'   r	   r   rÓ   r   rÕ   ry   r™  r  rN  r  Útestingr   )!r3   rÚ   r-  Údurp   ÚdlÚdiag_cpyr­  rŒ   r‡   rÛ  rÜ  Ú_dlÚ_dÚ_duÚdu2ræ  ri   rU  rH  r?  rÙ   r†  Úb_cpyÚx_gttrsr‰   Úb_transÚ__dlÚ__dÚ__duÚ_du2Ú_ipivÚ_infos!                                    r4   Útest_gttrf_gttrsrï  Î  s¸  € õ 	ˆ�H„H€HØ
€AØ•”˜%‘”Ô$Ñ$€Dõ 
% a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ# Q D°Ð6Ñ6Ô6€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€Bà—’‘	”	˜1Ÿ6š6™8œ8 R§W¢W¡Y¤YÐ/€Hå
Œ�‰
Œ
•R”W˜R ‘_”_Ñ$¥r¤w¨r°1¡~¤~Ñ5€AÝ
Œ	�Š�qÑÔ€AØ	ˆA‰€Aå#Ð$6¸eÐDÑDÔD�L€Eˆ5à$) E¨"¨a°Ñ$4Ô$4Ñ!€CˆˆS�#�t˜Tå�r˜8 Aœ;Ñ'Ô'Ð'Ý�q˜( 1œ+Ñ&Ô&Ð&Ý�r˜8 Aœ;Ñ'Ô'Ð'õ 	Œ��A‰Œ�œ  a™œÑ(­2¬7°3¸©?¬?Ñ:€AÝ
Œˆq˜ÐÑÔ€Aå˜#‘”ð ð ‰ˆˆ1ð �1Œg˜‰kˆà˜1˜1˜1˜s A˜h˜;œˆˆ!ˆ!ˆ!ˆa�ˆXˆ+‰à	ˆ!ˆ!ˆ!ˆQˆ$ˆˆŒ�1�Q�Q�Q˜˜!™�V”9˜Q‘;Ñˆˆ‰ˆð ��b”˜A‘€s€Aà�q�q�q˜3 ˜(�{”^€A€a€a€aˆ!ˆSˆ€k�Nõ �A�q˜1‘u 4Ð(Ñ(Ô(Ð(à�FŠF‰HŒH€EØ�E˜#˜r 3¨¨T°1Ñ5Ô5�M€GˆTå�q˜%Ñ Ô Ð å�A�w TÐ*Ñ*Ô*Ð*ð •ÐÐØˆØ”#˜‘'ˆˆàˆØ—&’&‘(”(”*˜q‘.ˆà�E˜#˜r 3¨¨T°7À%ÐHÑHÔH�M€GˆTÝ�A�w TÐ*Ñ*Ô*Ð*õ 
•zÑ	"Ô	"ð ð Øˆˆb��"�Œg�q˜"ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	•zÑ	"Ô	"ð ð Øˆˆb�!�C�R�C”&˜"ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	•zÑ	"Ô	"ð ð Øˆˆb�!�R˜˜˜”WÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
•yÑ	!Ô	!ð #ð #Øˆˆb�Œe�Q�r˜�r”U˜B˜qœEÑ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð €B€q�EØ€A€a�DØ*/¨%°°A°rÑ*:Ô*:Ñ'€Dˆ#ˆt�T˜5 %Ý„J×Ò�s˜4 !™8”}¨Ò)ð -IÀSÈÐPQÉÄ]ð -Ið -Ið -Iñ Kô Kð Kð Kð KsH   ÌL8Ì8L<Ì?L<ÍM9Í9M=Î M=ÎN:Î:N>ÏN>Ï"PÐPÐP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š™™™™™	Àry  gffffff&Àgš™™™™3@r£  rT   rV   rR   rF  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          ||¦  «         d S )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                     r4   Ú0test_gttrf_gttrs_NAG_f07cdf_f07cef_f07crf_f07csfr	  *  s½   € õd $Ð$6¸¸A¼ÀÀ1Ä¸ÑGÔG�L€Eˆ5à$) E¨"¨a°Ñ$4Ô$4Ñ!€CˆˆS�#�t˜TÝ�C˜Ñ!Ô!Ð!Ý�C˜Ñ Ô Ð Ý�B˜ DÐ)Ñ)Ô)Ð)Ý�D˜(Ñ#Ô#Ð#à�E˜#˜r 3¨¨T°1Ñ5Ô5�M€GˆTå�G˜QÑÔÐÐÐr6   ))rR   rV   )rV   rR   r   c                 ór   — t          d| ¬¦  «        }|\  }} |||¬¦  «        \  }}t          |d¦  «         d S )NÚgeqrfp_lworkr¸   r  r   r  )r3   r2   r  rÙ   rÚ   rº   ri   s          r4   Útest_geqrfp_lworkr  i  sM   € õ $ ^¸EÐBÑBÔB€LØ�D€A€qØ�,  aÐ(Ñ(Ô(�K€Eˆ4Ý��qÑÔÐÐÐr6   zddtype,dtypec                 óJ  — t          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   }|                     ¦   «         |                     ¦   «         g}t          d|¬¦  «        } |||¦  «        \  }	}
}t          ||d	         ¦  «         t          ||d         ¦  «         t          |d	d
|› d�¬¦  «         t          j        |
d¦  «        t          j        t          j        |¦  «        ¦  «        z   }t          j        |	¦  «        }t          |||z  |                     ¦   «         j        z  |¬¦  «         t	          |f|¦  «        }||z  }t          d|¬¦  «        } ||	|
                     ¦   «         |¦  «        \  }}t          |d	d|› d�¬¦  «         t          |||¬¦  «         d S )Nr  r+  rv   rS   rP   r�   Úpttrfr¸   r   zpttrf: info = z, should be 0)Úerr_msgr†  Úpttrszpttrs: info = )r   r/   rÖ   r×   r5   r0  r™  rš  r'   r	   r   r   r   r†   ry   )Úddtyper3   r-  rÚ   rp   r¸  r­  rá  r  rã  Ú_eri   rH  re  rŒ   r‡   r  Ú_xs                     r4   Útest_pttrf_pttrsr  r  s  € õ 	ˆ�H„H€Hà�rŒx˜‰ŒÔ"Ñ"€Dà
€Aõ
 	$ Q D¨&Ñ1Ô1°AÑ5€Aå# Q q¡S F¨EÑ2Ô2€Aõ 	Œ�‰
Œ
•R”W˜Q ‘^”^Ñ#¥b¤g­b¬g°a©j¬j¸!Ñ&<Ô&<Ñ<€Aà—’‘”˜!Ÿ&š&™(œ(Ð#€Hå˜W¨EÐ2Ñ2Ô2€Eà�5˜˜A‘;”;�L€BˆˆDå�q˜( 1œ+Ñ&Ô&Ð&Ý�q˜( 1œ+Ñ&Ô&Ð&Ý��qÐ"F°4Ð"FÐ"FÐ"FÐGÑGÔGÐGõ 	Œ��B‰Œ�"œ'¥"¤'¨!¡*¤*Ñ-Ô-Ñ-€AÝ
Œ�‰Œ€Aå�A�q˜‘s˜1Ÿ;š;™=œ=œ?Ñ*°Ð6Ñ6Ô6Ð6õ 	$ Q D¨%Ñ0Ô0€Aà	ˆ!‰€Aõ ˜W¨EÐ2Ñ2Ô2€EØˆu�R˜Ÿš™œ AÑ&Ô&�H€BˆÝ��qÐ"F°4Ð"FÐ"FÐ"FÐGÑGÔGÐGõ �A�r Ð%Ñ%Ô%Ð%Ð%Ð%r6   c                 óø   — d}t          d|¬¦  «        }t          |f| ¦  «        dz   }t          |dz
  f|¦  «        }t          t          ||d d…         |¦  «         t          t          |||d d…         ¦  «         d S )Nrv   r  r¸   rQ   rP   r�   )r'   r5   r  rN  )r  r3   rÚ   r  rp   r¸  s         r4   Ú*test_pttrf_pttrs_errors_incompatible_shaper  £  s„   € ð 	€AÝ˜W¨EÐ2Ñ2Ô2€EÝ# Q D¨&Ñ1Ô1°AÑ5€AÝ# Q q¡S F¨EÑ2Ô2€Aå•*˜e Q s¨ s¤V¨QÑ/Ô/Ð/Ý•*˜e Q¨¨#¨2¨#¬Ñ/Ô/Ð/Ð/Ð/r6   c                 óh  — 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k    d	¦  «         d S )
Nrv   r  r¸   rQ   rP   r   z?pttrf: _d[info-1] is rÝ  z2?pttrf should fail with non-spd matrix, but didn't)r'   r5   r   r   )	r  r3   rÚ   r  rp   r¸  rã  r  ri   s	            r4   Ú'test_pttrf_pttrs_errors_singular_nonSPDr  ¯  sç   € ð 	€AÝ˜W¨EÐ2Ñ2Ô2€EÝ# Q D¨&Ñ1Ô1°AÑ5€AÝ# Q q¡S F¨EÑ2Ô2€Aà€A€a�DØ€A€a�DØ�5˜˜A‘;”;�L€BˆˆDÝ��D˜1‘H”˜qØS¨"¨T°A©X¬,ÐSÐSÐSñUô Uð Uõ 	$ Q D¨&Ñ1Ô1€AØ�5˜˜A‘;”;�L€BˆˆDÝˆD�AŠIÐKÑLÔLÐLÐLÐLr6   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å¿ry  r×  rv   rQ   é   éA   é   g      @r�   rš  )r  é)   é.   é   )y      0@      0@y      2@      "Àù      ð?      À)r  rX   rP   rS   )r  rù  r!  y      P@      0@y      0À      @Ày     @W@      O@y     €N@     €PÀy     €S@      TÀy     ÀQ@     €RÀy      ,@      ;Ày     €A@      .@y      À       Àr  c                 óž  — d}t          d|d         ¬¦  «        } || |¦  «        \  }}	}
t          |||¬¦  «         t          |	||¬¦  «         t          d|d         ¬¦  «        } |||	                     ¦   «         |¦  «        \  }}
t          |||¬¦  «         |j        t          v r& |||	|d¬¦  «        \  }}
t          |||¬¦  «         d S d S )	Nrü  r  r   r¸   r†  r  rP   rÇ  )r'   r   r™  r3   r.   )rp   r¸  Úd_expectÚe_expectr‡   Úx_expectr-  r  rã  r  ri   r  r  s                r4   Útest_pttrf_pttrs_NAGr&  Ã  sö   € ð4 €DÝ˜W¨A¨a¬DÐ1Ñ1Ô1€EØ�5˜˜A‘;”;�L€BˆˆDÝ�B˜ tÐ,Ñ,Ô,Ð,Ý�B˜ tÐ,Ñ,Ô,Ð,å˜W¨A¨a¬DÐ1Ñ1Ô1€EØˆu�R˜Ÿš™œ AÑ&Ô&�H€BˆÝ�B˜ tÐ,Ñ,Ô,Ð,ð 	„w•.Ð Ð Ø�5˜˜R ¨!Ð,Ñ,Ô,‰ˆˆDÝ˜˜H¨4Ð0Ñ0Ô0Ð0Ð0Ð0ð !Ð r6   c                 ól  — |dk    rÿt          ||f| ¦  «        }|t          j        t          j        |¦  «        d|z  z   ¦  «        z   }||                     ¦   «         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        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 )NrP   rS   rQ   r�   )r5   r/   r0  r   r™  ry   r    )r3   ÚrealtyperÚ   Ú	compute_zÚA_eigÚvrrp   r¸  Útrir­  Úzs              r4   Úpteqr_get_d_e_A_zr.  í  sy  € ð �A‚~€~å+¨Q°¨F°EÑ:Ô:ˆØ�œ¥¤¨¡¤¨a°©cÑ 1Ñ2Ô2Ñ2ˆØ˜Ÿš™œœÑ'¨1Ñ,ˆå�%‰[Œ[˜Œ^ˆå'¨¨¨hÑ7Ô7¸!Ñ;ˆÝ'¨¨1©¨°Ñ9Ô9ˆÝŒg�a‰jŒj�2œ7 1 a™=œ=Ñ(­2¬7°1°b©>¬>Ñ9ˆà�‰H�r—w’w‘y”y”{Ñ"ˆàˆˆõ (¨¨¨hÑ7Ô7ˆÝ'¨¨1©¨°Ñ9Ô9ˆð �‰EˆÝŒG�A‰JŒJ�œ  A™œÑ&­¬°°B©¬Ñ7ˆÝŒG�A‰JŒJ�œ  B™œÑ'­"¬'°!°Q©-¬-Ñ7ˆØˆq�!�Qˆ<Ðr6   zdtype,realtyper)  c                 óš  — 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  ||¬
¦  «         dS dS )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   r/   rÖ   r×   r'   r.  r   r   Úsortr    r™  ry   rº  r0  )r3   r(  r)  r-  r0  rÚ   rp   r¸  r­  r-  Úd_pteqrÚe_pteqrÚz_pteqrri   s                 r4   Ú
test_pteqrr6  	  s_  € õ 	ˆ�H„H€HØ•”˜‘”Ô#Ñ#€DÝ˜g¨eÐ4Ñ4Ô4€Eà
€Aå" 5¨(°A°yÑAÔA�J€A€qˆ!ˆQà&+ e¨a°1¸ÀYÐ&OÑ&OÔ&OÑ#€GˆW�g˜tÝ��qÐ8 DÐ8Ð8Ð8Ñ9Ô9Ð9õ •B”G�D ™GœG AœJÑ'Ô'­¬°Ñ)9Ô)9ÀÐEÑEÔEÐEàð &å˜¥"¤'¨'Ñ"2Ô"2Ô"4Ñ4µb´kÀ!±n´nØ!ð	#ñ 	#ô 	#ð 	#õ 	˜¥"¤'¨'Ñ"2Ô"2Ñ2µR´W¸WÑ5EÔ5EÔ5GÑGØ ð	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð&ð &r6   c                 ó¶   — t          d¦  «         t          d| ¬¦  «        }d}t          | |||¦  «        \  }}}} ||dz
  |||¬¦  «        \  }	}
}}|dk    sJ ‚d S )Nr  r0  r¸   rv   rS   ©r-  r)  r   ©r   r'   r.  ©r3   r(  r)  r0  rÚ   rp   r¸  r­  r-  r3  r4  r5  ri   s                r4   Útest_pteqr_error_non_spdr;  -	  sy   € õ 	ˆ�H„H€HÝ˜g¨eÐ4Ñ4Ô4€Eà
€AÝ" 5¨(°A°yÑAÔA�J€A€qˆ!ˆQð ', e¨A°©E°1¸ÀYÐ&OÑ&OÔ&OÑ#€GˆW�g˜tØ�!Š8ˆ8ˆ8ˆ8ˆ8ˆ8r6   c           	      óL  — t          d¦  «         t          d| ¬¦  «        }d}t          | |||¦  «        \  }}}}t          t          ||d d…         |||¬¦  «         t          t          |||d d…         ||¬¦  «         |r$t          t          ||||d d…         |¬¦  «         d S d S )Nr  r0  r¸   rv   r�   r8  )r   r'   r.  r  rN  )	r3   r(  r)  r0  rÚ   rp   r¸  r­  r-  s	            r4   Ú"test_pteqr_raise_error_wrong_shaper=  <	  sÅ   € õ 	ˆ�H„H€HÝ˜g¨eÐ4Ñ4Ô4€EØ
€AÝ" 5¨(°A°yÑAÔA�J€A€qˆ!ˆQå•*˜e Q s¨ s¤V¨Q°!¸yÐIÑIÔIÐIÝ•*˜e Q¨¨#¨2¨#¬°!¸yÐIÑIÔIÐIØð NÝ•j %¨¨A°°3°B°3´À9ÐMÑMÔMÐMÐMÐMðNð Nr6   c                 óÄ   — t          d¦  «         t          d| ¬¦  «        }d}t          | |||¦  «        \  }}}}d|d<   d|d<    |||||¬¦  «        \  }	}
}}|dk    sJ ‚d S )Nr  r0  r¸   rv   r   r8  r9  r:  s                r4   Útest_pteqr_error_singularr?  K	  s…   € õ 	ˆ�H„H€HÝ˜g¨eÐ4Ñ4Ô4€EØ
€AÝ" 5¨(°A°yÑAÔA�J€A€qˆ!ˆQà€A€a�DØ€A€a�DØ&+ e¨A¨q°AÀÐ&KÑ&KÔ&KÑ#€GˆW�g˜tØ�!Š8ˆ8ˆ8ˆ8ˆ8ˆ8r6   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                 ón  — d}t          d|j        ¬¦  «        }t          j        |¦  «        t          j        |d¦  «        z   t          j        |d¦  «        z   } ||||| ¬¦  «        \  }}	}
}t	          |||¬¦  «         t	          t          j        |
¦  «        t          j        |¦  «        |¬¦  «         dS )	zb
    Implements real (f08jgf) example from NAG Manual Mark 26.
    Tests for correct outputs.
    rü  r0  r¸   rP   r�   r1  r†  N)r'   r3   r/   r0  r   rœ   )r)  rp   r¸  r#  Úz_expectr-  r0  r-  rã  r  Ú_zri   s               r4   Útest_pteqr_NAG_f08jgfrC  Z	  s«   € ð  €DÝ˜g¨a¬gÐ6Ñ6Ô6€Eå
Œ�‰
Œ
•R”W˜Q ‘]”]Ñ"¥R¤W¨Q°¡^¤^Ñ3€AØ�u˜q A¨°iÐ@Ñ@Ô@Ñ€BˆˆB�Ý�B˜ tÐ,Ñ,Ô,Ð,Ý•B”F˜2‘J”J¥¤ xÑ 0Ô 0°tÐ<Ñ<Ô<Ð<Ð<Ð<r6   Úmatrix_size)rÿ   )rV   rU   ©rU   rU   c                 óV  — t           j                             d¦  «         dt          j        | ¦  «        j        z  }dt          j        | ¦  «        j        z  }t          d| ¬¦  «        }t          d| ¬¦  «        }|\  }}t          ||f| ¬¦  «        } ||¦  «        \  }	}
}t          j        |	¦  «        }||k    r8t          j        ||f| ¬¦  «        }|	|d d …d |…f<    |||
|¬¦  «        d         }n  ||	d d …d |…f         |
|¬¦  «        d         }t          ||z  ||¬	¦  «         t          t          j
        |j        d         ¦  «        ||                     ¦   «         j        z  ||¬
¦  «         t          |t          j        |¦  «        |¬	¦  «         t          t          j        t          j        |¦  «        t          j        t#          t          j        |¦  «        ¦  «        ¦  «        k    ¦  «        ¦  «         t          |dk    ¦  «         t          ||f| ¬¦  «        dz  }t%          |¦  «        \  }} ||¦  «        \  }}}t          t          j        t          j        |¦  «        dk     ¦  «        o)t          j        t          j        |¦  «        dk    ¦  «        ¦  «         d S )Nr  éú   r+  Úgeqrfpr¸   Úorgqr)rs   rº   r   rÉ   rM  r�   )r/   r0   r   rÖ   r×   r'   r5   r   r   r   r   r2   r™  ry   r   Úallr0  r_   r   r4  )r3   rD  rÊ   r-  rH  ÚgqrrÙ   rÚ   r­  Úqr_Ars   ri   r�  Úqqrrr  Ú
A_negativeÚr_rq_negÚq_rq_negÚrq_A_negÚtau_negÚinfo_negs                        r4   Útest_geqrfprT  s	  sŽ  € õ „I‡N‚N�2ÑÔÐØ�rŒx˜‰ŒÔ"Ñ"€DØ�rŒx˜‰ŒÔ"Ñ"€Då˜x°Ð6Ñ6Ô6€FÝ
˜G¨EÐ
2Ñ
2Ô
2€Cà�D€A€qõ 	$ Q¨ F°%Ð8Ñ8Ô8€Aà�f˜Q‘i”i�O€Dˆ#ˆtõ 	Œ�‰Œ€Að
 	ˆ1‚u€uõ Œh˜˜1�v UÐ+Ñ+Ô+ˆàˆˆAˆAˆAˆr�ˆrˆE‰
ð ˆC�˜ AÐ&Ñ&Ô& qÔ)ˆˆàˆC��Q�Q�Q˜˜˜�U” ¨AÐ.Ñ.Ô.¨qÔ1ˆõ �A�a‘C˜ Ð&Ñ&Ô&Ð&å•B”F˜1œ7 1œ:Ñ&Ô&¨¨1¯6ª6©8¬8¬:©¸TØðñ ô ð õ �A•r”w˜q‘z”z¨Ð-Ñ-Ô-Ð-å�BŒF•2”7˜1‘:”:¥¤­­R¬W°Q©Z¬Z©¬Ñ 9Ô 9Ò9Ñ:Ô:Ñ;Ô;Ð;åˆD�AŠIÑÔÐõ -¨a°¨V¸5ÐAÑAÔAÀBÑF€JÝ˜J™œÑ€HˆhØ"( &¨Ñ"4Ô"4Ñ€Hˆg�xõ �BŒF•2”7˜8Ñ$Ô$ qÒ(Ñ)Ô)ð #ÝŒF•2”7˜1‘:”: ’>Ñ"Ô"ñ$ô $ð $ð $ð $r6   c                  ó†   — t          j        g ¦  «        } t          d| j        ¬¦  «        }t	          t
          || ¦  «         d S )NrH  r¸   )r/   rƒ   r'   r3   r  r  )ÚA_emptyrH  s     r4   Ú#test_geqrfp_errors_with_empty_arrayrW  µ	  s;   € åŒh�r‰lŒl€GÝ˜h¨g¬mÐ<Ñ<Ô<€FÝ•)˜V WÑ-Ô-Ð-Ð-Ð-r6   Údriver)ÚevÚevdÚevrÚevxÚpfxÚsyÚhec                 óX  — d}| dk    rt           nt          }t          | |z   dz   |d         ¬¦  «        }t          | |z   dz   |d         ¬¦  «        }	 t          ||d¬¦  «         t          ||d¬¦  «         d S # t          $ r'}t          j        | |z   › d|› �¦  «         Y d }~d S d }~ww xY w)	Né°  r^  Ú_lworkr   r¸   rP   rÇ  ú$_lwork raised unexpected exception: ©rÕ   r.   r'   r"   r  rA   Úfail©r]  rX  rÚ   r3   Úsc_dlwÚdz_dlwr¸  s          r4   Útest_standard_eigh_lworksri  ¼	  så   € ð 	€AØ $š;˜;�KˆK­N€EÝ˜c &™j¨Ñ1¸¸q¼ÐBÑBÔB€FÝ˜c &™j¨Ñ1¸¸q¼ÐBÑBÔB€FðLÝ�v˜q¨Ð*Ñ*Ô*Ð*Ý�v˜q¨Ð*Ñ*Ô*Ð*Ð*Ð*øÝð Lð Lð LÝŒ�s˜6‘zÐJÐJÀqÐJÐJÑKÔKÐKÐKÐKÐKÐKÐKÐKøøøøðLøøøó   Á$A8 Á8
B)ÂB$Â$B)ÚgvÚgvxc                 óX  — d}| dk    rt           nt          }t          | |z   dz   |d         ¬¦  «        }t          | |z   dz   |d         ¬¦  «        }	 t          ||d¬¦  «         t          ||d¬¦  «         d S # t          $ r'}t          j        | |z   › d	|› �¦  «         Y d }~d S d }~ww xY w)
Nra  r^  rb  r   r¸   rP   rH  r*  rc  rd  rf  s          r4   Útest_generalized_eigh_lworksrn  Ê	  så   € ð 	€AØ $š;˜;�KˆK­N€EÝ˜c &™j¨Ñ1¸¸q¼ÐBÑBÔB€FÝ˜c &™j¨Ñ1¸¸q¼ÐBÑBÔB€FðLÝ�v˜q sÐ+Ñ+Ô+Ð+Ý�v˜q sÐ+Ñ+Ô+Ð+Ð+Ð+øÝð Lð Lð LÝŒ�s˜6‘zÐJÐJÀqÐJÐJÑKÔKÐKÐKÐKÐKÐKÐKÐKøøøøðLøøørj  Ú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„ |D ¦   «         ¦  «        sJ ‚d S )Nr´   r   ÚorÚunÚ	csd_lworkr¸   c                 ó   — g | ]}|d k    ‘Œ	S r)  r¥   )rS  rŒ   s     r4   rT  z*test_orcsd_uncsd_lwork.<locals>.<listcomp>ä	  s   € Ð%Ð%Ð%˜!��A’Ð%Ð%Ð%r6   )r   r   rÕ   r'   r"   rJ  )ro  rÙ   rc   rr  r]  Údlwrd  Úlwvals           r4   Útest_orcsd_uncsd_lworkrw  Ù	  s£   € õ 	ˆ�J„J€JÝ��1‰Œ€AØ	ˆA‰€AØ�KÐ'Ð'ˆ$ˆ$¨T€CØ
�Ñ
€CÝ	˜# VÐ	,Ñ	,Ô	,€BÝ˜2˜q ! QÑ'Ô'€EØ˜D’[�[ˆEˆE u h€EÝÐ%Ð%˜uÐ%Ñ%Ô%Ñ&Ô&Ð&Ð&Ð&Ð&Ð&r6   c           
      ón  — 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  ¬¦  «         d S )N)rG  éP   éª   rq  rr  Úcsdrs  r¸   rº   Úlrworkr   r½   r³  g     ˆÃ@rM  )rÕ   r#   Úrvsr$   r'   r"   ÚdictrÌ  r   r_  r/   r   r3  ÚcosrË  r   rÖ   r×   )ro  rÙ   rc   rr  r]  ÚXÚdrvru  rv  ÚlwvalsÚcs11Úcs12Úcs21Úcs22ÚthetaÚu1Úu2Úv1tÚv2tri   rU  ÚVHr�  Ún11Ún12Ún21Ún22ÚSÚoner?  ÚXcs                                  r4   Útest_orcsd_uncsdr”  ç	  sÖ  € à�G€A€qˆ!à�KÐ'Ð'ˆ$ˆ$¨T€CØ! Tšk˜k�Œ˜ÑÔÐ­}Ô/@ÀÑ/CÔ/C€Aå  u¡¨c°KÑ.?Ð @ÈÐOÑOÔO�H€CˆÝ˜3  1 aÑ(Ô(€EØ!$¨¢ ˆg�uÐÐµ$µs¸GØ<Dð<FØGLñ8Nô 8Nñ 3Oô 3O€Fð 	ˆˆAˆbˆqˆb�"�1�"ˆfŒI�q˜˜!˜˜Q˜R˜R˜”y ! A B B¨¨¨ F¤)¨Q¨q¨r¨r°1°2°2¨v¬YÐAÐA¸&ÐAÐAñ :€Dˆ$��d˜E 2 r¨3°°Tð �1Š9ˆ9ˆ9ˆ9å�2�rÑÔ€AÝ	�C˜Ñ	Ô	€BÝ�C��1‰IŒ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ŒZð ð ˆØˆˆ!ˆQˆ$‰ˆÝ�3‰ZŒZð ð ˆØˆˆ!ˆA‰#ˆq�‰sˆ(‰ˆÝ�3‰ZŒZð -ð -ˆØ),¨ˆˆ!ˆC‰%�‰'�1�S‘5˜‘7˜3‘;˜s‘? 1Ñ$Ð
$Ñ%Ð%Ý�3‰ZŒZð $ð $ˆØ #ˆˆ!ˆC‰%�‰'�!‰)�S˜‘U˜1‘WÐ
ÑÐå�1‰XŒXð -ð -ˆÝœ&  q¤Ñ*Ô*ˆˆ!ˆC‰%��3‘ˆ,‰Ý"$¤&¨¨q¬Ñ"2Ô"2ˆˆ!ˆC‰%�‰'�1�Q‘3�s‘7˜3‘;Ð
Ñå%'¤V¨E°!¬HÑ%5Ô%5Ð$5ˆˆ!ˆC‰%��3‘�s‘˜3‘˜q‘Ð
 Ñ!ÝœF 5¨¤8Ñ,Ô,ˆˆ!ˆC‰%�‰'�1�S‘5ˆ.ÑÐà	
ˆQ‰�‰€BÝ�A�r ¨­R¬X°fÑ-=Ô-=Ô-AÑ)AÐBÑBÔBÐBÐBÐBr6   Ú
trans_boolFÚfactr,  rR  c                 óŒ  — t          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	        n|
|z  }| 
                    ¦   «         | 
                    ¦   «         |	 
                    ¦   «         | 
                    ¦   «         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         › �¦  «         dS )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�   rQ   ry   r|   rR  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 )r   r/   rÖ   r×   r'   r5   r0  rÕ   r™  ry   rš  r   r	   r   r«   r2   ) r3   r•  r–  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                                    r4   Ú
test_gtsvxr®  
  s  € õ 	ˆ�H„H€Hà•”˜%‘”Ô$Ñ$€Då#Ð$6¸eÐDÑDÔD�L€Eˆ5à
€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ# Q D°Ð6Ñ6Ô6€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ
Œ��B‰Œ�"œ' !™*œ*Ñ$¥r¤w¨r°1¡~¤~Ñ5€Aå# Q¨ F°%Ð8Ñ8Ô8€Aà6@ÐI�E�[Ð(Ð(ˆSˆS¨c¨cÀc€EØ!Ð	(ˆ�Š‰ŒŒˆ q¨AÑ-€Að —'’'‘)”)˜QŸVšV™XœX r§w¢w¡y¤y°!·&²&±(´(Ð;€Jð ! CšK˜Kˆˆˆb�!�RÑÔÐ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ð ��b˜!˜R ¨°UÀÈØ E°ð7ñ 7ô 7€Ià@IÑ=€CˆˆS�$˜˜f e¨T°4¸ÝˆD�AŠIÐ>¨Ð>Ð>Ð>Ñ?Ô?Ð?õ �r˜: aœ=Ñ)Ô)Ð)Ý�q˜* Qœ-Ñ(Ô(Ð(Ý�r˜: aœ=Ñ)Ô)Ð)Ý�q˜* Qœ-Ñ(Ô(Ð(õ �A�v DÐ)Ñ)Ô)Ð)õ �G�E˜9Ñ%Ô%¨TÐ1Ø4¨UÐ4Ð4ñ6ô 6ð 6õ ˆDŒJ�qŒM˜QœW QœZÒ'ð +>¸4¼:Àa¼=ð +>ð +>Ø12´¸´ð+>ð +>ñ @ô @ð @õ ˆDŒJ�qŒM˜QœW QœZÒ'ð +>¸4¼:Àa¼=ð +>ð +>Ø12´¸´ð+>ð +>ñ @ô @ð @ð @ð @r6   c                 óZ  — t          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        n|	|
z  }|d
k    r ||||¦  «        nd gdz  \  }}}}}} ||||||||||||¬¦  «        }|\
  }}}}}}}}}}|dk    r7d|d<   d|d<    |||||¦  «        }|\
  }}}}}}}}}}|dk    s
J d¦   «         ‚d S |d
k    rAd|d<   d|d<   d|d<    |||||||||||¬¦
  «
        }|\
  }}}}}}}}}}|dk    sJ d¦   «         ‚d S d S )Nr  r˜  r¸   rv   rP   r�   rQ   ry   r|   r,  rU   rš  rR  r   z&info should be > 0 for singular matrix)r–  r›  rœ  r�  rå  ræ  )r   r'   r5   r/   r0  rÕ   r™  ry   )r3   r•  r–  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                                 r4   Útest_gtsvx_error_singularr°  S
  sO  € õ 	ˆ�H„H€Hå#Ð$6¸eÐDÑDÔD�L€Eˆ5à
€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ# Q D°Ð6Ñ6Ô6€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ
Œ��B‰Œ�"œ' !™*œ*Ñ$¥r¤w¨r°1¡~¤~Ñ5€Aå# Q¨ F°%Ð8Ñ8Ô8€Aà�KÐ'Ð'ˆCˆC¨S€EØ!Ð	(ˆ�Š‰ŒŒˆ q¨AÑ-€Að ! CšK˜Kˆˆˆb�!�RÑÔÐ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ð ��b˜!˜R ¨°UÀÈØ E°ð7ñ 7ô 7€Ià@IÑ=€CˆˆS�$˜˜f e¨T°4¸ð ˆs‚{€{àˆˆ"‰Øˆˆ2‰à�E˜"˜a  QÑ'Ô'ˆ	ØDMÑAˆˆR��d˜D &¨%°°t¸Tà�aŠxˆxˆxÐA‰xŒxˆxˆxˆxà	�ŠˆàˆˆB‰ØˆˆR‰Øˆˆb‰	à�E˜"˜a  Q¨T°tÀÈØ#¨%ð1ñ 1ô 1ˆ	àDMÑAˆˆR��d˜D &¨%°°t¸Tà�aŠxˆxˆxÐA‰xŒxˆxð 
ˆð ˆxr6   c                 ó¨  — t          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        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…         |||||||¬¦  «         d S t          t          ||||||||d d…         ||||¬¦  «         t          t          |||||||||d d…         |||¬¦  «         t          t          ||||||||||d d…         ||¬¦  «         t          t          |||||||||||d d…         |¬¦  «         d S )Nr  r˜  r¸   rv   rP   r�   rQ   ry   r|   r,  rU   rR  rš  )r   r'   r5   r/   r0  rÕ   r™  ry   r  rN  r  )r3   r•  r–  r™  rÛ  rÚ   rà  rp   rß  r­  rŒ   r‰   r‡   r£  r¤  r¥  r¦  r§  r¨  s                      r4   Ú"test_gtsvx_error_incompatible_sizer²  †
  s  € õ 	ˆ�H„H€Hå#Ð$6¸eÐDÑDÔD�L€Eˆ5à
€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ# Q D°Ð6Ñ6Ô6€AÝ	$ a¨¡c V°5Ð	9Ñ	9Ô	9€BÝ
Œ��B‰Œ�"œ' !™*œ*Ñ$¥r¤w¨r°1¡~¤~Ñ5€Aå# Q¨ F°%Ð8Ñ8Ô8€Aà�KÐ'Ð'ˆCˆC¨S€EØ!Ð	(ˆ�Š‰ŒŒˆ q¨AÑ-€Að ! CšK˜Kˆˆˆb�!�RÑÔÐ¨d¨V°A©Xñ )€Dˆ#ˆt�U˜E 5ð ˆs‚{€{Ý•j %¨¨C¨R¨C¬°!°R¸Ø u°$¸3Ø E°ð	7ñ 	7ô 	7ð 	7õ 	•j %¨¨Q¨s°¨s¬V°R¸Ø u°$¸3Ø E°ð	7ñ 	7ô 	7ð 	7õ 	•j %¨¨Q°°3°B°3´¸Ø u°$¸3Ø E°ð	7ñ 	7ô 	7ð 	7õ 	•i ¨¨A¨r°1°S°b°S´6Ø u°$¸3Ø E°ð	7ñ 	7ô 	7ð 	7ð 	7ð 	7õ 	•j %¨¨Q°°AØ u°$°s¸°s´)ÀØ E°ð	7ñ 	7ô 	7ð 	7õ 	•j %¨¨Q°°AØ u°$¸3¸sÀ¸s¼8Ø E°ð	7ñ 	7ô 	7ð 	7õ 	•j %¨¨Q°°AØ u°$¸3Ø˜s ˜sœ)¨°Uð	<ñ 	<ô 	<ð 	<õ 	•j %¨¨Q°°AØ u°$¸3Ø E¨#¨2¨#¤J°Uð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r6   zdu,d,dl,b,xc           
      óˆ   — t          d|j        ¬¦  «        } |||| |¦  «        }|\
  }}}	}
}}}}}}t          ||¦  «         d S )Nr™  r¸   ©r'   r3   r   )rß  rp   rà  r‡   rŒ   r™  r©  r›  rœ  r�  rª  ræ  r«  rî  r¬  r­  ri   s                    r4   Útest_gtsvx_NAGrµ  ¹
  s]   € õ. ˜W¨A¬GÐ4Ñ4Ô4€Eà��b˜!˜R Ñ#Ô#€IØ@IÑ=€CˆˆS�$˜˜f e¨T°4¸å˜a Ñ(Ô(Ð(Ð(Ð(r6   zfact,df_de_lambdac                 óB   —  t          d|j        ¬¦  «        | |¦  «        S ©Nr  r¸   ©r'   r3   ©rp   r¸  s     r4   ú<lambda>rº  Ü
  ó7   € ð )HÕ(8¸Ø?@¼wð)Hñ )Hô )HØHIÈ1ñ)Nô )N€ r6   c                 ó   — dS ©N)NNNr¥   r¹  s     r4   rº  rº  Þ
  ó   € Ð-?€ r6   c                 ó  — t          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  } |||¦  «        \  }}}|                     ¦   «         |                     ¦   «         |                     ¦   «         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�¦  «         dS )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œ  Úefr   zinfo should be 0 but is ú.r†  rž  rŸ  )rQ   r   z# but should be ({x_soln.shape[1]},)r¡  N)r   r/   rÖ   r×   r'   r5   r0  r™  rš  r	   r   r   r   r   ry   r«   r2   )r3   r(  r–  Údf_de_lambdar-  rÀ  rÚ   rp   r¸  r­  r«  r‡   rœ  rÂ  ri   rá  rŒ   rî  r¬  r­  rH  re  s                         r4   Ú
test_ptsvxrÅ  Ø
  sŸ  € õ 	ˆ�H„H€Hà•”˜%‘”Ô$Ñ$€DÝ˜W¨EÐ2Ñ2Ô2€EØ	€Aå# Q D¨(Ñ3Ô3°aÑ7€AÝ# Q q¡S F¨EÑ2Ô2€AÝ
Œ�‰
Œ
•R”W˜Q ‘^”^Ñ#¥b¤g­b¬g°a©j¬j¸!Ñ&<Ô&<Ñ<€AÝ(¨!¨Q¨°uÐ=Ñ=Ô=€FØ	ˆF‰
€Að  �<  1Ñ%Ô%�L€BˆˆDð —’‘”˜!Ÿ&š&™(œ( A§F¢F¡H¤HÐ-€Hð */¨¨q°!°Q¸TØ24¸ð*=ñ *=ô *=Ñ&€BˆˆAˆu�d˜D $õ �q˜( 1œ+Ñ&Ô&Ð&Ý�q˜( 1œ+Ñ&Ô&Ð&Ý�q˜( 1œ+Ñ&Ô&Ð&ÝˆD�AŠIÐ9°$Ð9Ð9Ð9Ñ:Ô:Ð:Ý˜f aÑ(Ô(Ð(õ 	Œ��B‰Œ�"œ'¥"¤'¨!¡*¤*Ñ-Ô-Ñ-€AÝ
Œ�‰Œ€AÝ�A�q˜‘s�BœG A™JœJœLÑ)°Ð5Ñ5Ô5Ð5õ �u˜iÑ(Ô(ð 1ð 1Ø0¨Ð0Ð0ñ1ô 1ð 1õ ˆDŒJ˜$Òð "8°$´*ð "8ð "8ð "8ñ :ô :ð :õ ˆDŒJ˜$Òð "8°$´*ð "8ð "8ð "8ñ :ô :ð :ð :ð :r6   c                 óB   —  t          d|j        ¬¦  «        | |¦  «        S r·  r¸  r¹  s     r4   rº  rº    r»  r6   c                 ó   — dS r½  r¥   r¹  s     r4   rº  rº    r¾  r6   c           
      óf  — t          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…         |||¬	¦  «         d S )
Nr  rÀ  r¸   rT   rS   rP   r�   rQ   rÁ  )	r   r'   r5   r/   r0  r™  r  rN  r  )r3   r(  r–  rÄ  rÀ  rÚ   rp   r¸  r­  r«  r‡   rœ  rÂ  ri   s                 r4   Útest_ptsvx_error_raise_errorsrÉ    s;  € õ 	ˆ�H„H€HÝ˜W¨EÐ2Ñ2Ô2€EØ	€Aå# Q D¨(Ñ3Ô3°aÑ7€AÝ# Q q¡S F¨EÑ2Ô2€AÝ
Œ�‰
Œ
•R”W˜Q ‘^”^Ñ#¥b¤g­b¬g°a©j¬j¸!Ñ&<Ô&<Ñ<€AÝ(¨!¨Q¨°uÐ=Ñ=Ô=€FØ	ˆF‰
€Að  �<  1Ñ%Ô%�L€BˆˆDõ •*˜e Q s¨ s¤V¨Q°¸ÀÈÐKÑKÔKÐKÝ•*˜e Q¨¨#¨2¨#¬°¸ÀÈÐKÑKÔKÐKÝ•)˜U A q¨!¨C¨R¨C¬&°tÀÀrÐJÑJÔJÐJÐJÐJr6   c                 óB   —  t          d|j        ¬¦  «        | |¦  «        S r·  r¸  r¹  s     r4   rº  rº  2  r»  r6   c                 ó   — dS r½  r¥   r¹  s     r4   rº  rº  4  r¾  r6   c                 óì  — t          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    rnd
|d<    |||¦  «        \  }}} ||||
¦  «        \  }}}}}}}|d
k    r||k    sJ ‚t          |f|¦  «        } ||||
¦  «        \  }}}}}}}|d
k    r||k    sJ ‚d S  |||¦  «        \  }}}d
|d
<   d
|d
<    ||||
|||¬¦  «        \  }}}}}}}|d
k    sJ ‚d S )Nr  rÀ  r¸   rT   rS   rP   r�   rQ   rR  r   rR   rÁ  )r   r'   r5   r/   r0  r™  )r3   r(  r–  rÄ  rÀ  rÚ   rp   r¸  r­  r«  r‡   rœ  rÂ  ri   rŒ   rî  r¬  r­  s                     r4   Útest_ptsvx_non_SPD_singularrÍ  .  sÙ  € õ 	ˆ�H„H€HÝ˜W¨EÐ2Ñ2Ô2€EØ	€Aå# Q D¨(Ñ3Ô3°aÑ7€AÝ# Q q¡S F¨EÑ2Ô2€AÝ
Œ�‰
Œ
•R”W˜Q ‘^”^Ñ#¥b¤g­b¬g°a©j¬j¸!Ñ&<Ô&<Ñ<€AÝ(¨!¨Q¨°uÐ=Ñ=Ô=€FØ	ˆF‰
€Að  �<  1Ñ%Ô%�L€BˆˆDàˆs‚{€{Øˆˆ!‰à#�| A qÑ)Ô)‰ˆˆB�à-2¨U°1°a¸©^¬^Ñ*ˆˆB��5˜$  dà�aŠxˆx˜D AšI˜I˜I˜Iõ (¨¨¨hÑ7Ô7ˆØ-2¨U°1°a¸©^¬^Ñ*ˆˆB��5˜$  dØ�aŠxˆx˜D AšI˜I˜I˜I˜I˜Ið $�| A qÑ)Ô)‰ˆˆB�Øˆˆ1‰Øˆˆ1‰Ø-2¨U°1°a¸ÀØ68¸Rð.Añ .Aô .AÑ*ˆˆB��5˜$  dà�aŠxˆxˆxˆxˆxˆxr6   zd,e,b,xc                 ó|   — t          d|j        ¬¦  «        } || ||¦  «        \  }}}}}	}
}t          ||¦  «         d S )NrÀ  r¸   r´  )rp   r¸  r‡   rŒ   rÀ  rœ  rÂ  Úx_ptsvxrî  r¬  r­  ri   s               r4   Útest_ptsvx_NAGrÐ  Z  sN   € õ. ˜W¨A¬GÐ4Ñ4Ô4€Eà/4¨u°Q¸¸1©~¬~Ñ,€BˆˆG�U˜D $¨å˜a Ñ)Ô)Ð)Ð)Ð)r6   r  c           	      óˆ  ‡— t          d¦  «         t          j        | ¦  «        j        dz  }d\  Š}t	          ‰‰g| ¬¦  «        }t	          ‰|g| ¬¦  «        }|                     ¦   «         j        |z   t          j        ‰| ¬¦  «         | d¦  «        z  z   }|r7ˆfd„t          ‰¦  «        D ¦   «         ˆfd„t          ‰¦  «        D ¦   «         f}n:d„ t          d	‰d	z   ¦  «        D ¦   «         d
„ t          d	‰d	z   ¦  «        D ¦   «         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                             |d	¦  «        } |‰|||¬¦  «        \  }}t          |d¦  «         t#          t%          d	|z  t          j                             |d	¬¦  «        z
  ¦  «        |z  d	k     ¦  «         d S )Nr´   r+  )rv   rS   r¸   rÀ   c                 ó:   •— g | ]}t          |‰¦  «        D ]}|‘ŒŒS r¥   ©r3  ©rS  ÚyrŒ   rÚ   s      €r4   rT  z5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>„  ó.   ø€ Ð:Ð:Ð:�q­e°A°q©k¬kÐ:Ð:¨�Ð:Ð:Ð:Ð:r6   c                 ó:   •— g | ]}t          |‰¦  «        D ]}|‘ŒŒS r¥   rÓ  rÔ  s      €r4   rT  z5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>…  rÖ  r6   c                 ó6   — g | ]}t          |¦  «        D ]}|‘ŒŒS r¥   rÓ  ©rS  rÕ  rŒ   s      r4   rT  z5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>‡  s+   € Ð<Ð<Ð<�qµ5¸±8´8Ð<Ð<¨a�Ð<Ð<Ð<Ð<r6   rP   c                 ó<   — g | ]}t          |¦  «        D ]}|d z
  ‘ŒŒS rÊ  rÓ  rÙ  s      r4   rT  z5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>ˆ  s/   € Ð>Ð>Ð>˜µU¸1±X´XÐ>Ð>°��1‘Ð>Ð>Ð>Ð>r6   )ÚppsvÚpptrfÚpptrsÚpptriÚppconr¢  r£  rÇ  r   rM  )rç  r  rè  )r   r/   rÖ   r×   r5   r™  ry   r   r3  r'   r   r   r   r   r   ré  r   r   rœ   rê  )r3   r  r-  rÛ   ra   r‡   r@  ÚaprÛ  rÜ  rÝ  rÞ  rß  Úulri   ÚaulÚuliÚaulirŒ   ÚbxÚxvrç  rî  rÚ   s                          @r4   Ú!test_pptrs_pptri_pptrf_ppsv_ppconrç  x  s  ø€ õ 	ˆ�J„J€JÝŒ8�E‰?Œ?Ô˜sÑ"€Dà�G€A€tÝ# Q¨ F°%Ð8Ñ8Ô8€AÝ# Q¨ I°UÐ;Ñ;Ô;€Aà	�Š‰ŒŒ
�Q‰�œ ¨Ð/Ñ/Ô/°%°%¸±)´)Ñ;Ñ;€AØð @Ø:Ð:Ð:Ð:�E !™HœHÐ:Ñ:Ô:Ø:Ð:Ð:Ð:�E !™HœHÐ:Ñ:Ô:ð<ˆˆð =Ð<�E ! Q q¡S™MœMÐ<Ñ<Ô<Ø>Ð>�e A q¨¡s™mœmÐ>Ñ>Ô>ð@ˆà	
ˆ4Œ€BÝ'7Ø4ØØð(ñ (ô (Ñ$€Dˆ%�˜˜uð
 ˆu�Q˜ %Ð(Ñ(Ô(�H€BˆÝ��qÑÔÐÝ
�1˜EÐ
"Ñ
"Ô
" 4Ô
(€CÝ�B˜ !¨$Ð/Ñ/Ô/Ð/à��a˜ 5Ð)Ñ)Ô)�I€CˆÝ��qÑÔÐÝˆq‰6Œ6�$Œ<€DÝ�C˜ A¨DÐ1Ñ1Ô1Ð1àˆe�A�r˜1 EÐ*Ñ*Ô*�G€A€tÝ��qÑÔÐÝ	ˆq�!‰Œ€BÝ�A�r ¨Ð-Ñ-Ô-Ð-àˆt�A�r˜1 EÐ*Ñ*Ô*�H€BˆÝ��qÑÔÐÝ�B˜ ¨Ð.Ñ.Ô.Ð.åŒI�NŠN˜1˜aÑ Ô €EØ�%˜˜2 U°%Ð8Ñ8Ô8�K€Eˆ4Ý��qÑÔÐÝ�C��%‘�"œ)Ÿ.š.¨¨a˜.Ñ0Ô0Ñ0Ñ1Ô1°%Ñ7¸!Ò;Ñ<Ô<Ð<Ð<Ð<r6   c                 ó:  — t          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        z  |d
|¬¦  «          |||dd¦  «        }t          |d	         d
¦  «         |d
         }|d         }| t          v r%t          |t          j	        |¦  «        d
|¬¦  «         t          ||z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          |d         |	d
|¬¦  «         d S )Nr´   r+  rv   r¸   )ÚgeesÚtrexcc                 ó   — d S r  r¥   ©rŒ   s    r4   rº  z!test_gees_trexc.<locals>.<lambda>²  ó   € ˜D€ r6   Fr­  r�   r   rF  rE  rM  rV   rP   r  r�   ©r   r/   rÖ   r×   r5   r'   r   r.   r   r   r™  ry   )
r3   r-  rÚ   ra   ré  rê  rÝ  rp  r-  Úd2s
             r4   Útest_gees_trexcrð  ¨  sŸ  € åˆ�J„J€JÝŒ8�E‰?Œ?Ô˜sÑ"€Dà
€AÝ# Q¨ F°%Ð8Ñ8Ô8€Aå"Ð#4¸EÐBÑBÔB�K€Dˆ%àˆT�.�. !°Ð7Ñ7Ô7€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆrŒ
€Aà	
ˆ4Œ€Bà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=àˆU�1�a˜˜AÑÔ€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆrŒ
€Aà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=å�A�d”G˜R a¨dÐ3Ñ3Ô3Ð3Ð3Ð3r6   zt, expect, ifst, ilst)rz  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³  rz  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          || |¬¦  «         dS )	zg
    This test implements the example found in the NAG manual,
    f08qfc, f08qtc, f08qgc, f08quc.
    rü  rê  r¸   r   )Úwantqr�   r†  N)r'   r3   r   r   )rp  ÚifstÚilstÚexpectr-  rê  rÝ  s          r4   Útest_trexc_NAGrþ  Í  so   € ð< €DÝ˜W¨A¬GÐ4Ñ4Ô4€EàˆU�1�a˜˜t¨1Ð-Ñ-Ô-€FÝ�˜”˜QÑÔÐàˆqŒ	€AÝ�F˜A DÐ)Ñ)Ô)Ð)Ð)Ð)r6   c                 ó†  — t          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 rJt          |t          j	        |¦  «        d
|¬¦  «         t          |	t          j	        |	¦  «        d
|¬¦  «         t          |
|z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          |
|	z  | 
                    ¦   «         j        z  |d
|¬¦  «          |||	|
|dd¦  «        }t          |d	         d
¦  «         |d
         }|d         }	|d         }
|d         }| t          v rJt          |t          j	        |¦  «        d
|¬¦  «         t          |	t          j	        |	¦  «        d
|¬¦  «         t          |
|z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          |
|	z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          |d         |	d         z  |d
|¬¦  «         t          |d         |	d         z  |d
|¬¦  «         d S )Nr´   r+  rv   r¸   )ÚggesÚtgexcc                 ó   — d S r  r¥   rì  s    r4   rº  z!test_gges_tgexc.<locals>.<lambda>   rí  r6   F©r'  Úoverwrite_br�   r   rP   r£  rF  r�   rE  rM  rV   rQ   rR   rÉ  rî  )r3   r-  rÚ   ra   r‡   r   r  rÝ  rî   rp  rr  r-  Úd1rï  s                 r4   Útest_gges_tgexcr  õ  s»  € åˆ�J„J€JÝŒ8�E‰?Œ?Ô˜sÑ"€Dà
€AÝ# Q¨ F°%Ð8Ñ8Ô8€AÝ# Q¨ F°%Ð8Ñ8Ô8€Aå"Ð#4¸EÐBÑBÔB�K€Dˆ%àˆT�.�. ! Q°EÀuÐMÑMÔM€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€AØˆrŒ
€AØˆrŒ
€Aà	
ˆ4Œ�1�T”7Ñ	€BØ	
ˆ4Œ�1�T”7Ñ	€Bà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9Ý˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=Ý�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=àˆU�1�a˜˜A˜q !Ñ$Ô$€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€AØˆqŒ	€AØˆqŒ	€Aà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9Ý˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=Ý�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=å�A�d”G˜a œgÑ% r°¸Ð=Ñ=Ô=Ð=Ý�A�d”G˜a œgÑ% r°¸Ð=Ñ=Ô=Ð=Ð=Ð=r6   c                 óÒ  — t          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        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        z  |d
|¬¦  «         t          |d         |
d
|¬¦  «         d S )Nr´   r+  rv   r¸   )ré  ÚtrsenÚtrsen_lworkc                 ó   — d S r  r¥   rì  s    r4   rº  z!test_gees_trsen.<locals>.<lambda>0  rí  r6   Fr­  r�   r   rF  rE  rM  rP   rU   r¹   ©rº   Úliworkr�   ©r   r/   rÖ   r×   r5   r'   r   r.   r   r   r™  ry   r   r"   )r3   r-  rÚ   ra   ré  r  r	  rÝ  rp  r-  rï  Úselectrº   s                r4   Útest_gees_trsenr  %  sÿ  € åˆ�J„J€JÝŒ8�E‰?Œ?Ô˜sÑ"€Dà
€AÝ# Q¨ F°%Ð8Ñ8Ô8€Aå/Ø(°ð 7ñ  7ô  7Ñ€Dˆ%�ð ˆT�.�. !°Ð7Ñ7Ô7€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆrŒ
€Aà	
ˆ4Œ€Bà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=åŒX�a‰[Œ[€FØ€Fˆ1�Iå˜;¨°Ñ2Ô2€Eà•ÐÐØ��v˜q !¨5Ð1Ñ1Ô1ˆˆà��v˜q !¨5¸¸q¼ÐBÑBÔBˆÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€Aà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=å�A�d”G˜R a¨dÐ3Ñ3Ô3Ð3Ð3Ð3r6   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        z  |¬¦  «         t          |d|z  |¬¦  «         t          |d|z  |¬¦  «         dS )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'   r3   r"   r.   r   r   r™  ry   )rp  rr  r  rý  Úexpect_sÚ
expect_sepr-  Úatol2r  r	  rº   rÝ  rî   Úseps                 r4   Útest_trsen_NAGr  S  s@  € ð` €DØ€EÝ)Ø ¨¬ð1ñ 1ô 1Ñ€Eˆ;õ ˜;¨°Ñ2Ô2€Eà„w•.Ð Ð Ø��v˜q !¨5Ð1Ñ1Ô1ˆˆà��v˜q !¨5¸¸q¼ÐBÑBÔBˆÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€AØ„w•.Ð Ð Ø�1ŒIˆØ�QŒiˆˆà�1ŒIˆØ�QŒiˆå�F˜A ™E A§F¢F¡H¤H¤JÑ.°TÐ:Ñ:Ô:Ð:Ý�H˜a !™e¨%Ð0Ñ0Ô0Ð0Ý�J  C¡¨eÐ4Ñ4Ô4Ð4Ð4Ð4r6   c                 ó  — t          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 rJt          |	t          j	        |	¦  «        d
|¬¦  «         t          |
t          j	        |
¦  «        d
|¬¦  «         t          ||	z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          ||
z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          j        |¦  «        }d|d<   t          |||	|
¦  «        }|d
         dz   |d         f} |||	|
|||¬¦  «        }t          |d	         d
¦  «         |d
         }	|d         }
|d         }|d         }| t          v rJt          |	t          j	        |	¦  «        d
|¬¦  «         t          |
t          j	        |
¦  «        d
|¬¦  «         t          ||	z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          ||
z  | 
                    ¦   «         j        z  |d
|¬¦  «         t          |	d         |
d         z  |d
|¬¦  «         t          |	d         |
d         z  |d
|¬¦  «         d S )Nr´   r+  rv   r¸   )r   ÚtgsenÚtgsen_lworkc                 ó   — d S r  r¥   rì  s    r4   rº  z!test_gges_tgsen.<locals>.<lambda>ª  rí  r6   Fr  r�   r   rP   r£  rF  r�   rE  rM  rU   r¹   iùÿÿÿr÷  rÉ  r  )r3   r-  rÚ   ra   r‡   r   r  r  rÝ  rî   rp  rr  r-  r  rï  r  rº   s                    r4   Útest_gges_tgsenr  ž  s
  € åˆ�J„J€JÝŒ8�E‰?Œ?Ô˜sÑ"€Dà
€AÝ# Q¨ F°%Ð8Ñ8Ô8€AÝ# Q¨ F°%Ð8Ñ8Ô8€Aå/Ø(°ð 7ñ  7ô  7Ñ€Dˆ%�ð ˆT�.�. ! Q°EÀuÐMÑMÔM€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€AØˆrŒ
€AØˆrŒ
€Aà	
ˆ4Œ�1�T”7Ñ	€BØ	
ˆ4Œ�1�T”7Ñ	€Bà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9Ý˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=Ý�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=åŒX�a‰[Œ[€FØ€Fˆ1�Iå˜;¨°°1Ñ5Ô5€Eð �1ŒX�a‰Z˜˜qœÐ"€EàˆU�6˜1˜a  A¨UÐ3Ñ3Ô3€FÝ�˜”˜QÑÔÐàˆqŒ	€AØˆqŒ	€AØˆrŒ
€AØˆrŒ
€Aà•ÐÐÝ˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9Ý˜�2œ7 1™:œ:¨A°DÐ9Ñ9Ô9Ð9å�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=Ý�A˜‘E˜AŸFšF™HœHœJÑ&¨°¸Ð=Ñ=Ô=Ð=å�A�d”G˜a œgÑ% r°¸Ð=Ñ=Ô=Ð=Ý�A�d”G˜a œgÑ% r°¸Ð=Ñ=Ô=Ð=Ð=Ð=r6   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¬¦  «         d S )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   r/   rÖ   r×   )ra   r‡   rˆ   rp   r¸  rd   ÚransÚlansr3   r-  r!  ÚroutÚloutr\   Údifri   s                   r4   Útest_tgsyl_NAGr(  ×  sþ   € ðH €Då˜g¨eÐ4Ñ4Ô4€EØ#( 5¨¨A¨q°!°Q¸Ñ#:Ô#:Ñ €Dˆ$��s˜Då��qÑÔÐÝ�E˜3 Q­R¬X°e©_¬_Ô-@ÀÑ-DØ/ð1ñ 1ô 1ð 1å�C˜ 1­2¬8°E©?¬?Ô+>¸sÑ+BØ2ð4ñ 4ô 4ð 4å�D˜$ TØ9ð;ñ ;ô ;ð ;å�D˜$ TØ9ð;ñ ;ô ;ð ;ð ;ð ;r6   r‰   )rR  ry   Úijob)r   rP   rQ   rR   rS   c           
      óx  — | t           j        k    rdnd}t           j                             d¦  «        }d\  }}t	          |                     dd||g¦  «                             | ¦  «        |                     dd||g¦  «                             | ¦  «        d¬¦  «        ^}}}	t	          |                     dd||g¦  «                             | ¦  «        |                     dd||g¦  «                             | ¦  «        d¬¦  «        ^}
}}	|                     d	d
||g¦  «                             | ¦  «        }|                     d	d
||g¦  «                             | ¦  «        }t          d| ¬¦  «        } |||
||||||¬¦  «        \  }}}}}|dk    s
J d¦   «         ‚|dk    s
J d¦   «         ‚|dk    r/t          |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  }nq|dk    rkt          j        |¦  «        |z  t          j        |¦  «        |z  z   }||z  }|t          j        |
¦  «        z  |t          j        |¦  «        z  z   }d|z  |z  }t          |||dd¬¦  «         t          |||dd¬¦  «         d S d S )Ngü©ñÒMbP?g»½×Ùß|Û=l   OElÔt/ rÿ  iöÿÿÿrv   rê   )Úoutputr  rQ   r!  r¸   )r‰   r)  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-negativerR  ry   rØ  zlhs1 and rhs1 do not match)r-  rÊ   r  zlhs2 and rhs2 do not match)r/   r¥  r0   Údefault_rngr!   Úuniformr1   r'   r   rÖ   r×   rq  )r3   r‰   r)  r-  ÚrngrÙ   rÚ   ra   rp   r?   r‡   r¸  rˆ   rd   r!  r%  r&  r\   r'  ri   Úlhs1Úrhs1Úlhs2Úrhs2s                           r4   Ú
test_tgsylr3    s%  € ð
 �BœJÒ&Ð&ˆ4ˆ4¨E€DÝ
Œ)×
Ò
Ð 0Ñ
1Ô
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Ô0€AØ�Š�B˜˜A˜q˜6Ñ"Ô"×)Ò)¨%Ñ0Ô0€Aå˜g¨eÐ4Ñ4Ô4€EØ#( 5¨¨A¨q°!°Q¸Ø/4¸4ð$Añ $Aô $AÑ €Dˆ$��s˜Dð �1Š9ˆ9ˆ9Ð(‰9Œ9ˆ9Ø�CŠ<ˆ<ˆ<Ð5‰<Œ<ˆ<Øˆq‚y€yÝ˜˜S q­r¬x¸©¬Ô/BÀ3Ñ/FØ ;ð	=ñ 	=ô 	=ð 	=ð 	=ð �cŠzˆzˆzÐ5‰zŒzˆzð ˆq‚y€yØ�CŠ<ˆ<Ø�t‘8˜d Q™hÑ&ˆDØ˜‘7ˆDØ�t‘8˜d Q™hÑ&ˆDØ˜‘7ˆDˆDØ�cŠ\ˆ\Ý”< ‘?”? TÑ)­B¬L¸©O¬O¸dÑ,BÑBˆDØ˜‘7ˆDØ�"œ, q™/œ/Ñ)¨Dµ2´<À±?´?Ñ,BÑBˆDØ˜‘:˜a‘<ˆDå˜˜d¨°BØ <ð	>ñ 	>ô 	>ð 	>å˜˜d¨°BØ <ð	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð €yr6   r)  )”Ú	functoolsr   Únumpy.testingr   r   r   r   r   r	   rA   r
   r  Únumpyr/   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Úsparser\  Úscipy.__config__r%   ÚImportErrorr&   r8   r'   Úscipy.linalg.blasr(   r¥  r6  rÕ   r¨  Ú
complex128r.   rÔ   Úblas_providerÚblas_versionr5   rL   rN   r§   r²   ru  rv  r  r  r  r!  rC  r‚  r�  rŸ  r§  r©  rÀ  rÞ  rï  r÷  rý  r  r  r'  r:  rC  rI  rP  rU  r]  rg  ri  rŠ  rŽ  r—  r   Úskipifr©  r±  r3  rÇ  rÎ  rÑ  rƒ   rØ  rï  r	  r  rÌ  r  r  r  r&  r.  r6  r;  r=  r?  rC  rT  rW  ri  rn  rw  r”  r®  r°  r²  rµ  rÅ  rÉ  rÍ  rÐ  rç  rð  rþ  r  r  r  r  r(  r3  r¥   r6   r4   ú<module>rD     sY!  ðð
 Ð Ð Ð Ð Ð ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð €€€Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðFð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð /Ð .Ð .Ð .Ð .Ð .Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð ðØ'Ð'Ð'Ð'Ð'Ð'Ð'øØð ð ð Ø€F€F€FðøøøðØ0Ð0Ð0Ð0Ð0Ð0Ð0øØð ð ð Ø€G€G€Gðøøøà 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,àŒz˜2œ:Ð&€Ø”, ¤Ð.€Ø	�~Ñ	%€à#Ð #€�Ø	ÐØÐ/Ô0°Ô8¸Ô@€MØÐ.Ô/°Ô7¸	ÔB€Lð0ð 0ð 0ðOð Oð Oð.]-ð ]-ð ]-ð ]-ð ]-ñ ]-ô ]-ð ]-ð@
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðp9ð p9ð p9ð p9ð p9ñ p9ô p9ð p9ðf „×Ò˜ &Ñ)Ô)Ø„×Ò˜Ð"BÐ"BÐ"BÑCÔCðð ñ DÔCñ *Ô)ðð-ð -ð -ð -ð -ñ -ô -ð -ð*Cð Cð Cð Cð Cñ Cô Cð Cð(;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð@I/ð I/ð I/ð I/ð I/ñ I/ô I/ð I/ðX)ð )ð )ð.'4ð '4ð '4ðT'6ð '6ð '6ðT4ð 4ð 4ð8AGð AGð AGð AGð AGñ AGô AGð AGðHLð Lð Lð Lð Lñ Lô Lð Lð^.?ð .?ð .?ðbAð Að Að63ð 3ð 3ð>1ð 1ð 1ð>Fð Fð FðD&Dð &Dð &DðR7!ð 7!ð 7!ðt7:ð 7:ð 7:ðt&8ð &8ð &8ðR3ð 3ð 3ð6Dð Dð Dð@"Dð "Dð "DðJDð Dð Dð4 Lð  Lð  LðFUKð UKð UKð UKð UKñ UKô UKð UKðp%Pð %Pð %PðP%Pð %Pð %PðP*/ð */ð */ðZ<ð <ð <ð „×Ò�DØKð ñ Mô MðKð KñMô MðKð$:ð :ð :ð> „×Ò˜ &¨&Ð!1Ñ2Ô2Ø„×Ò˜ +Ñ.Ô.Ø„×Ò˜   q¡¤Ñ*Ô*Ø„×Ò˜   q¡¤Ñ*Ô*Ø„×Ò˜   q¡¤Ñ*Ô*Ø„×Ò˜ ! Q Ñ(Ô(Ø„×Ò˜ ! Q Ñ(Ô(ñb&ð b&ð b&ñ )Ô(ñ )Ô(ñ +Ô*ñ +Ô*ñ +Ô*ñ /Ô.ñ 3Ô2ðb&ðJ „×Ò˜ +Ñ.Ô.ð ð  ñ /Ô.ð ðF „×Ò˜(Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+Ø! 1˜+ð'ñô ð1ð 1ñô ð1ð „×ÒÐ9Ø#˜2œ8Ð%?Ð%?Ð%?Ø%?Ð%?Ð%?Ø%@Ð%@Ð%@Ø%=Ð%=Ð%=Ø%?Ð%?Ð%?Ø%?Ð%?Ð%?ð%Añ Bô Bð $˜2œ8Ð$DÐ$DÐ$DÑEÔEØ#˜2œ8Ð%GÐ%GÐ%GØ%FÐ%FÐ%FØ%EÐ%EÐ%EØ%HÐ%HÐ%HØ%GÐ%GÐ%GØ%GÐ%GÐ%Gð%Iñ Jô Jð $˜2œ8Ð%GÐ%GÐ%GØ%HÐ%HÐ%HØ%FÐ%FÐ%FØ%GÐ%GÐ%Gð%Iñ Jô JðKð LñMô Mð$,ð ,ñ%Mô Mð$,ð  „×Ò˜ &Ñ)Ô)ðXKð XKñ *Ô)ðXKðv „×ÒÐLØ#˜2œ8Ð$9Ð$9Ð$9Ñ:Ô:Ø%˜RœXÐ&@Ð&@Ð&@ÑAÔAØ%˜RœXÐ&;Ð&;Ð&;Ñ<Ô<Ø%˜RœXÐ&9Ð&9Ð&9Ñ:Ô:Ø%˜RœXÐ&BÐ&BÐ&BÑCÔCØ%˜RœX l l lÑ3Ô3Ø%˜RœX o o oÑ6Ô6Ø%˜RœX¨¨S zØ(,¨d |Ø(+¨T {Ø(+¨U |Ø(+¨T {ð	')ñ *ô *ð &˜RœX¨¨A wØ()¨2 wØ()¨2 wØ(*¨B xØ(*¨A wð	'0ñ 1ô 1ð2ð& &˜RœXÐ&GÐ&GÐ&GÑHÔHØ%˜RœXð '4ð '4ð '4ñ 5ô 5ð &˜RœXÐ&FÐ&FÐ&FÑGÔGà%˜RœXð 'Að 'Að 'Añ Bô Bà%˜RœXð ':ð ':ð ':ñ ;ô ;à%˜RœXÐ&?Ð&?Ð&?Ñ@Ô@Ø%˜RœX o o oÑ6Ô6Ø%˜RœX¨°*Ð'=Ø(3°\Ð'BØ(4°iÐ'@Ø(3°[Ð'AØ(1°:Ð'>ð	'@ñ Aô Að
 &˜RœX¨°Ð'7Ø(.°Ð'7Ø(.°Ð'8Ø(/°Ð'8Ø(.°Ð'7ð	'9ñ :ô :ð%ð%)ñ* ô * ðV ð  ñW* ô * ðV ð( „×Ò˜ &Ñ)Ô)Ø„×Ò˜Ð"BÐ"BÐ"BÑCÔCðð ñ DÔCñ *Ô)ðð „×Ò˜Ø˜˜[¨;Ñ6¸Ñ?Ô?ñAô Að,&ð ,&ñAô Að,&ð^ „×Ò˜Ø˜˜[¨;Ñ6¸Ñ?Ô?ñAô Að0ð 0ñAô Að0ð „×Ò˜Ø˜˜[¨;Ñ6¸Ñ?Ô?ñAô AðMð MñAô AðMð$ „×ÒÐAØ"˜"œ(Ð#5Ð#5Ð#5Ñ6Ô6Ø"˜"œ( ? ? ?Ñ3Ô3Ø"˜"œ(Ð#4Ð#4Ð#4Ñ5Ô5Ø"˜"œ(Ð#8Ð#8Ð#8Ñ9Ô9Ø"˜"œ( Q¨ G¨a°¨V°a¸°V¸bÀ"¸XØ%&¨ Gð$-ñ .ô .à"˜"œ( S¨! H¨q°"¨g¸¸2°wÀÀQÀØ%&¨ Gð$-ñ .ô .ðð #˜"œ(Ð#3Ð#3Ð#3Ñ4Ô4Ø"˜"œ(Ð#>Ð#>Ð#>Ñ?Ô?Ø"˜"œ( = = =Ñ1Ô1Ø"˜"œ(Ð#5Ð#5Ð#5Ñ6Ô6Ø"˜"œ( V¨WÐ$5¸ÀÐ7GØ%+¨VÐ$4°v¸vÐ6Fð$Hñ Iô Ià"˜"œ( T¨5 M°D¸$°<À$ÈÀØ%)¨4 Lð$2ñ 3ô 3ð	ðEñ ô ð&1ð 1ñ'ô ð&1ð.ð ð ð> „×ÒÐ)Ø˜˜V [°;Ñ%>Ñ?Ô?ñAô Aà„×Ò˜ e e¨A¡h¤hÑ/Ô/ð&ð &ñ 0Ô/ñAô Að&ð< „×ÒÐ)Ø˜˜V [°;Ñ%>Ñ?Ô?ñAô Aà„×Ò˜ e e¨A¡h¤hÑ/Ô/ð	ð 	ñ 0Ô/ñAô Að	ð „×ÒÐ)Ø˜˜V [°;Ñ%>Ñ?Ô?ñAô Aà„×Ò˜ e e¨A¡h¤hÑ/Ô/ð	Nð 	Nñ 0Ô/ñAô Að	Nð „×ÒÐ)Ø˜˜V [°;Ñ%>Ñ?Ô?ñAô Aà„×Ò˜ e e¨A¡h¤hÑ/Ô/ð	ð 	ñ 0Ô/ñAô Að	ð „×ÒÐ:ØØ#˜2œ8Ð$;Ð$;Ð$;Ñ<Ô<Ø#˜2œ8Ð$5Ð$5Ð$5Ñ6Ô6Ø#˜2œ8Ð$DÐ$DÐ$DÑEÔEØ#˜2œ8Ð%FÐ%FÐ%FØ%GÐ%GÐ%GØ%GÐ%GÐ%GØ%FÐ%FÐ%Fð%Hñ Iô Ið	Jð ñ	ô 	ð=ð =ñ	ô 	ð=ð „×Ò˜ &Ñ)Ô)Ø„×Ò˜Ð(@Ð(@Ð(@ÑAÔAð=$ð =$ñ BÔAñ *Ô)ð=$ð@.ð .ð .ð „×Ò˜Ð#>Ð#>Ð#>Ñ?Ô?Ø„×Ò˜  t Ñ-Ô-ð	Lð 	Lñ .Ô-ñ @Ô?ð	Lð „×Ò˜ D¨% =Ñ1Ô1Ø„×Ò˜  t Ñ-Ô-ð
Lð 
Lñ .Ô-ñ 2Ô1ð
Lð „×Ò˜ 6Ñ*Ô*Ø„×Ò˜Ð0Ð0Ð0Ñ1Ô1ð	'ð 	'ñ 2Ô1ñ +Ô*ð	'ð „×Ò˜ 6Ñ*Ô*ð+Cð +Cñ +Ô*ð+Cð\ „×Ò˜ &Ñ)Ô)Ø„×Ò˜¨¨t }Ñ5Ô5Ø„×Ò˜ # s Ñ,Ô,ð7@ð 7@ñ -Ô,ñ 6Ô5ñ *Ô)ð7@ðt „×Ò˜ &Ñ)Ô)Ø„×Ò˜¨¨1 vÑ.Ô.Ø„×Ò˜ # s Ñ,Ô,ð-Bð -Bñ -Ô,ñ /Ô.ñ *Ô)ð-Bð` „×Ò˜ &¨¡(Ñ+Ô+Ø„×Ò˜¨¨t }Ñ5Ô5Ø„×Ò˜ # s Ñ,Ô,ð-<ð -<ñ -Ô,ñ 6Ô5ñ ,Ô+ð-<ð` „×Ò˜Ø#˜2œ8Ð$9Ð$9Ð$9Ñ:Ô:Ø#˜2œ8Ð$?Ð$?Ð$?Ñ@Ô@Ø#˜2œ8Ð$9Ð$9Ð$9Ñ:Ô:Ø#˜2œ8 c¨3 Z°#°t°¸sÀD¸kØ&(¨% [°3¸°+ð%?ñ @ô @à#˜2œ8 b¨! W¨q°"¨g¸¸2°wÀÀRÀØ&(¨! Wð%.ñ /ô /ð0ð $˜2œ8Ð$EÐ$EÐ$EÑFÔFØ#˜2œ8ð %>ð %>ð %>ñ ?ô ?à#˜2œ8Ð$DÐ$DÐ$DÑEÔEØ#˜2œ8 h°
Ð%;Ø&1°;Ð%?Ø&2°HÐ%=Ø&1°;Ð%?Ø&/°Ð%<ð	%>ñ ?ô ?ð
 $˜2œ8 f¨fÐ%5¸ÀÐ7GØ&,¨gÐ%6¸À&Ð8IØ&,¨fÐ%5ð%7ñ 8ô 8ð9ð:ñ;ô ;ð()ð )ñ);ô ;ð()ð „×ÒÐ)¨3¨3¨v°{Ø1<ñ8=ñ ,>ô ,>ñ ?ô ?à„×ÒÐ,ØðNð NðOð Ð ?Ð ?Ð@ðBñCô Cð
1:ð 1:ñCô Cñ?ô ?ð1:ðh „×ÒÐ)¨3¨3¨v°{Ø1<ñ8=ñ ,>ô ,>ñ ?ô ?à„×ÒÐ,ØðNð NðOð Ð ?Ð ?Ð@ðBñCô Cð
Kð KñCô Cñ?ô ?ðKð( „×ÒÐ)¨3¨3¨v°{Ø1<ñ8=ñ ,>ô ,>ñ ?ô ?à„×ÒÐ,ØðNð NðOð Ð ?Ð ?Ð@ðBñCô Cð
"ð "ñCô Cñ?ô ?ð"ðJ „×Ò˜Ø#˜2œ8Ð$6Ð$6Ð$6Ñ7Ô7Ø#˜2œ8 O O OÑ4Ô4Ø#˜2œ8 a¨ W¨q°!¨f°q¸!°f¸rÀ2¸hØ&'¨ Wð%.ñ /ô /à#˜2œ8 c¨1 X°°2¨w¸¸B¸Ø&(¨! W¨q°"¨gð%7ñ 8ô 8ð	9ð $˜2œ8Ð$4Ð$4Ð$4Ñ5Ô5Ø#˜2œ8Ð$?Ð$?Ð$?Ñ@Ô@Ø#˜2œ8 h°	Ð%:Ø&.°Ð%9Ø&.°Ð%9Ø&.°Ð%9ð%;ñ <ô <ð $˜2œ8 f¨gÐ%6Ø&,¨fÐ%5Ø&,¨fÐ%5Ø&,¨fÐ%5ð%7ñ 8ô 8ð	9ð:ñ;ô ;ð"
*ð 
*ñ#;ô ;ð"
*ð „×Ò˜ 5¨$ -Ñ0Ô0Ø„×Ò˜ &Ñ)Ô)ð+=ð +=ñ *Ô)ñ 1Ô0ð+=ð\ „×Ò˜ &Ñ)Ô)ð!4ð !4ñ *Ô)ð!4ðH „×ÒØØ€b„hÐ)Ð)Ð)Ø)Ð)Ð)Ø*Ð*Ð*Ø)Ð)Ð)ð+ñ ,ô ,ð €b„hÐ2Ñ2Ð2Ø1Ñ1Ð1Ø1Ñ1Ð1Ø1Ð1Ð1ð3ñ 4ô 4ð ˆðð €b„hÐJÑJÐJØKÑKÐKØHÑHÐHØHÑHÐHðJñ Kô Kð €b„hð 5ñ 5ð 5ð5ñ 5ð 5ð5ñ 5ð 5ð6ñ 6ð 6ð7ñ 8ô 8ð ˆððñô ñ0*ð *ñ1ô ð0*ð  „×Ò˜ &Ñ)Ô)ñ,>ð ,>ñ *Ô)ð,>ð^ „×Ò˜ &Ñ)Ô)ñ*4ð *4ñ *Ô)ð*4ðZ „×ÒÙ0Ø€b„hÐ1Ñ1Ð1Ø1Ñ1Ð1Ø2Ñ2Ð2Ø1Ñ1Ð1ð3ñ 4ô 4ð €b„hÐ0Ñ0Ð0Ø3Ñ3Ð3Ø3Ñ3Ð3Ø1Ñ1Ð1ð3ñ 4ô 4ð €b„hÐ2Ñ2Ð2Ø1Ñ1Ð1Ø3Ñ3Ð3Ø2Ñ2Ð2ð4ñ 5ô 5ð €b„hˆ|‰|ˆ|ÑÔÙ‘ðð €b„hð 6ñ 6ð 6ð7ñ 7ð 7ð5ñ 5ð 5ð5ñ 5ð 5ð6ñ 7ô 7ð €b„hð 5ñ 5ð 5ð6ñ 6ð 6ð5ñ 5ð 5ð6ñ 6ð 6ð7ñ 8ô 8ð €b„hð 6ñ 6ð 6ð5ñ 5ð 5ð5ñ 5ð 5ð5ñ 5ð 5ð6ñ 7ô 7ð €b„hˆ|‰|ˆ|ÑÔÙ‘ð3ð'ñ)ô )ñT5ð 5ñU)ô )ðT5ðB „×Ò˜ &Ñ)Ô)ñ5>ð 5>ñ *Ô)ð5>ðp „×ÒÙ"Ø€b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð €b„hÐ(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(Ø(Ñ(Ð(ð*ñ +ô +ð9,ð -ñ!.ô !.ðD „×Ò˜ +Ñ.Ô.ñ;ð ;ñ /Ô.ñE!.ô !.ðF;ð" „×Ò˜ +Ñ.Ô.Ø„×Ò™¡*Ñ-Ô-Ø„×Ò™ ¡ Ñ1Ô1ñ->ð ->ñ 2Ô1ñ .Ô-ñ /Ô.ð->ð ->ð ->s$   Á4A; Á;BÂBÂ	B ÂBÂB