Ë
    qwj&‡  ã                   óB  — d dl Z d dlZd dlmZmZ d dlZd dlmZ d dl	m
Z
 d dl	mZmZ d dl	mZmZ d dl	mZmZmZ d dlmZ d d	lmZ eeej0                  eej4                  gZd
„ Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z d„ Z!d„ Z"d„ Z# G d„ d«      Z$y)é    N)Úassert_array_almost_equalÚassert_allclose)Úraises)Úsolve_sylvester)Úsolve_continuous_lyapunovÚsolve_discrete_lyapunov)Úsolve_continuous_areÚsolve_discrete_are)Ú
block_diagÚsolveÚLinAlgError)Úmatrix)Úskip_xp_invalid_argc                 óH  — t         j                  j                  t         j                  j                  t         j                  j	                  t
        «      «      d| «      }t        j                  |«      5 }t        |j                  «       «      cddd«       S # 1 sw Y   yxY w)zo
    Load npz data file under data/
    Returns a copy of the data, rather than keeping the npz file open.
    ÚdataN)
ÚosÚpathÚjoinÚabspathÚdirnameÚ__file__ÚnpÚloadÚdictÚitems)ÚnameÚfilenameÚfs      úd/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_solvers.pyÚ
_load_datar       s^   € ô
 �w‰w�|‰|œBŸG™GŸO™O¬B¯G©G¯O©O¼HÓ,EÓFØ" Dó*€Hä	�‰�Ô	˜aÜ�A—G‘G“I‹÷ 
×	Ò	ús   Á5BÂB!c                   óž  — e Zd Z ej                  d«       ej                  d«      f ej
                  ddgddgg«       ej
                  ddgdd	gg«      f ej
                  d
dgddgg«       ej
                  ddgddgg«      f ej
                  ddgddgg«       ej
                  ddgddgg«      f ej
                  d
dgddgg«       ej
                  ddgddgg«      f ej
                  g d¢g d¢g d¢g d¢g d¢g«       ej
                  g d¢g d¢g d¢g d¢g d¢g«      f ej
                  g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g«       ej                  d«      f ed)dgd*d+gg«       ed)dg«      j                   ed)dg«      j                  j                  z  f ed)dgd*d+gg«       ej
                   ed)dg«      j                   ed)dg«      j                  j                  z  «      fg	Z	d,„ Z
d-„ Zd4d/„Zed0„ «       Zej                   j#                  d1e«      ej                   j#                  d2e«      d3„ «       «       Zy.)5ÚTestSolveLyapunov©r   r   é   é   é   é   é	   é
   é   é   ù      ð?      ð?ç       @ù      @      Àç      @ù       @       Àù       @       @ù      ð¿      ð¿ç      ð?ç      @ç      ð¿)r&   r(   é   r$   r'   )r$   r%   r&   é   r'   )r'   é   r8   r8   r&   )r$   r6   r%   r   é   )r6   r&   r&   r$   r6   )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'   )yš™™™™™¹?        y²�ï§ÆK·?        yË¡E¶óý´?        yã¥›Ä °²?        yü©ñÒMb°?        y)\�Âõ(¬?        yZd;ßO�§?        y‹lçû©ñ¢?        yyé&1¬œ?        yÛù~j¼t“?        y{®Gáz„?        )ù      ð?        ù                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;   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;   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;   r   g      à¿éÿÿÿÿc                 ó  — t        j                  d«      }t        j                  d«      }t        t        t
        ||«       t        t        t
        ||«       t        t        t
        |t        j                  d«      «       y )N©r&   r%   r&   r%   )r   ÚonesÚeyeÚassert_raisesÚ
ValueErrorr   )ÚselfÚnsqÚsqs      r   Ú$test_continuous_squareness_and_shapez6TestSolveLyapunov.test_continuous_squareness_and_shape`   sQ   € Ü�g‰g�f‹oˆÜ�V‰V�A‹YˆÜ”jÔ";¸SÀ"ÔEÜ”jÔ";¸RÀÔEÜ”jÔ";¸RÄÇÁÈÃÕKó    c                 óÂ   — t        ||«      }t        t        j                  ||«      t        j                  ||j	                  «       j                  «       «      z   |«       y ©N)r   r   r   ÚdotÚconjÚ	transpose)rC   ÚaÚqÚxs       r   Úcheck_continuous_casez'TestSolveLyapunov.check_continuous_caseg   sE   € Ü% a¨Ó+ˆÜ!ÜŸ&™&  A›,¬¯©°°1·6±6³8×3EÑ3EÓ3GÓ)HÑHÈ!õ	MrG   Nc                 óÌ   — t        |||¬«      }t        t        j                  t        j                  ||«      |j	                  «       j                  «       «      |z
  d|z  «       y )N©Úmethodr5   )r   r   r   rJ   rK   rL   )rC   rM   rN   rS   rO   s        r   Úcheck_discrete_casez%TestSolveLyapunov.check_discrete_casel   sK   € Ü# A q°Ô8ˆÜ!Ü—f‘fœRŸV™V A q›\¨1¯6©6«8×+=Ñ+=Ó+?Ó@À1ÑDÀdÈ1Áfõ	NrG   c                 óî   — | j                   D ]f  }| j                  |d   |d   «       | j                  |d   |d   «       | j                  |d   |d   d¬«       | j                  |d   |d   d¬«       Œh y )Nr   r$   ÚdirectrR   Úbilinear)ÚcasesrP   rT   ©rC   Úcases     r   Ú
test_caseszTestSolveLyapunov.test_casesq   sz   € à—J”JˆDØ×&Ñ& t¨A¡w°°Q±Ô8Ø×$Ñ$ T¨!¡W¨d°1©gÔ6Ø×$Ñ$ T¨!¡W¨d°1©g¸hÐ$ÔGØ×$Ñ$ T¨!¡W¨d°1©g¸jÐ$ÕIñ	 rG   Údtype_aÚdtype_qc                 ó²  — t         j                  j                  d«      }t        j                  d|¬«      }t        j                  d|¬«      }t	        ||«      }|j                  d«      dz  j                  |«      }|j                  d«      dz  j                  |«      }t	        ||«      }|j                  dk(  sJ ‚|j                  |j                  k(  sJ ‚y )Ni[¯ûr#   ©Údtype©r6   r6   éd   )r   ÚrandomÚdefault_rngÚzerosr   ÚastypeÚshaper`   )rC   r\   r]   ÚrngrM   rN   ÚresÚrefs           r   Útest_size_0zTestSolveLyapunov.test_size_0y   s´   € ô �i‰i×#Ñ# IÓ.ˆä�H‰H�V 7Ô+ˆÜ�H‰H�V 7Ô+ˆÜ'¨¨1Ó-ˆà�Z‰Z˜Ó Ñ#×+Ñ+¨GÓ4ˆØ�Z‰Z˜Ó Ñ#×+Ñ+¨GÓ4ˆÜ'¨¨1Ó-ˆà�y‰y˜FÒ"Ð"Ð"Ø�y‰y˜CŸI™IÒ%Ð%Ñ%rG   rI   )Ú__name__Ú
__module__Ú__qualname__r   ÚemptyÚarrayr@   r   ÚTrX   rF   rP   rT   r   r[   ÚpytestÚmarkÚparametrizeÚdtypesrk   © rG   r   r"   r"      sÅ  „ ð 
ˆ�‰�&Ó	Ø	ˆ�‰�&Ó	ð	à	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�r�7˜R ˜HÐ%Ó	&ð	(ð 
ˆ�‰�F˜C�= 8¨S /Ð2Ó	3Ø	ˆ�‰�F˜FÐ# g¨s ^Ð4Ó	5ð	7ð 
ˆ�‰�C˜�:  S˜zÐ*Ó	+Ø	ˆ�‰�F˜FÐ# g¨s ^Ð4Ó	5ð	7ð 
ˆ�‰�F˜C�= 8¨S /Ð2Ó	3Ø	ˆ�‰�C˜�:  c˜{Ð+Ó	,ð	.ð 
ˆ�‰’?¢O²_Ú"¢Oð5ó 
6à	ˆ�‰’?¢O²_Ú"¢Oð5ó 
6ð	7ð
 
ˆ�‰ò òòòòòòòòòòð=  ó  
!ðB 
ˆ�‰�‹ðC!	ñF 
�!�Q�˜$ ˜Ð$Ó	%Ù
�!�Q�‹.×
Ñ
™V Q¨ F›^×-Ñ-×/Ñ/Ñ
/ð	2ñ 
�!�Q�˜$ ˜Ð$Ó	%Ø
ˆ"�(‰(‘6˜1˜a˜&“>×#Ñ#¡f¨a°¨V£n×&6Ñ&6×&8Ñ&8Ñ8Ó
9ð	<ðw=
€Eò~LòMó
Nð
 ñJó ðJð ‡[�[×Ñ˜Y¨Ó/Ø‡[�[×Ñ˜Y¨Ó/ñ&ó 0ó 0ñ&rG   r"   c                   ó¬  — e Zd Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z e	j                  dgd«       e	j                  dgdgg«       edd	«      dd
f e	j                  ddgddgg«       e	j                  dgdgg«       e	j                  ddgddgg«      dd
f e	j                  g d¢g d¢g d¢g d¢g«       e	j                  ddgddgddgddgg«       e	j                  g d¢g d¢g d¢g d¢g«       e	j                  d «      d
f e	j                  g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g«       e	j                  g d)¢g d*¢g«      j                  d+z   e	j                  g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g«       e	j                  d «      d
f e	j                  g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢g d:¢g d;¢g d<¢g	«       e	j                  g d=¢g d>¢g d?¢g d@¢g dA¢g dB¢g dB¢g dB¢g dB¢g	«       e	j                  d«       e	j                  d«      d
fedC   edD   edE   edF   d
f e	j                  ddgddGgg«       e	j                  dHgdgg«       e	j                  dI«      ddJf edKdL«       e	j                  dMdNgd+dOgg«       e	j                  dPdQgdQdRgg«       e	j                  dI«       edHd«      z   d
f e	j                  ddSgddgg«       e	j                  dgdgg«       e	j                  d «      dd
f e	j                  dTdgddTgg«       e	j                  d «       e	j                  d «       e	j                  d «      d
f e	j                  ddgdd gg«       e	j                  dgdgg«       e	j                  dUdVgdVdGgg«      dd
f e	j                  g dW¢g dX¢g dY¢g«      dz   e	j                  d«       e	j                  g dZ¢g d[¢g d\¢g«      j!                   e	j                  g d]¢«      «      j!                   e	j                  g dZ¢g d[¢g d\¢g«      «      dz   e	j                  d«      dSz  d^f e	j                  g d_¢g d`¢g da¢g db¢g«       e	j                  g dc¢g«      j                   e	j                  g dd¢«      dd
f e	j                  g de¢g df¢g dg¢g dh¢g«       e	j                  di«       e	j                  dj«      dd
fedC   edD   edE   edF   d
f e	j                  dkdkd¬l«       e	j                  dkdk«      dGz  z    e	j"                   ed e	j$                  dm«      d«      «      z    e	j                  dkdkd¬l«      z    e	j                  dk«       e	j                  dk«       e	j                  dk«      d
f e	j                   e	j                  dn«      d«       e	j&                   e	j                  dod«      «       e	j                  dod«       e	j                  dod«      j                  z  dd^fedC   edD   edE   edF   d
fedC   edD   edE   edF   d^fedC   edD   edE   edF   d^fgZdpZej.                  j1                  dq ee«      «      dr„ «       Zy
)sÚTestSolveContinuousArezcarex_6_data.npzzcarex_15_data.npzzcarex_18_data.npzzcarex_19_data.npzzcarex_20_data.npzr3   r$   r   r-   Nr'   r&   ç      Àç      Àr<   r(   r8   ç      @©r   r$   r   r   )r   g=
×£p=þ¿gö(\�ÂõØ?g…ëQ¸À)r   gœÄ °rh¡¿g×£p=
×Àgq=
×£p@)gœÄ °rh¡?g/n£¼R¿g®Gáz®ï¿gáz®GáÊ¿g
×£p=
×?gš™™™™™ù¿gffffffî¿gü©ñÒMb ¿g¸…ëQ¸ž?)g/Ý$�@ç7‰A`åÐ@çj¼t“æ?çZd;ßO�—?)r}   g/Ý$�@ç‘í|?5^ò?çyé&1¬Ô?)r~   r€   gÕxé&1Ô?çé&1¬º?)r   r�   r‚   gsh‘í|?µ?r%   )gƒÀÊ¡E¶ï¿g!°rh‘íà?r   r   r   r   r   r   )çNbX9´à?g7‰A`åÐð¿çßO�—nã?r   r   r   r   r   )r   rƒ   gÙÎ÷Sãñ¿r„   r   r   r   r   )r   r   rƒ   gøSã¥›Äø¿g`åÐ"Ûùæ?r   r   r   )r   r   r   ç/Ý$�í?g=
×£p=ú¿gÅ °rh‘é?r   r   )r   r   r   r   r…   gð§ÆK7‰û¿g¢E¶óýÔì?r   )r   r   r   r   r   r…   g^ºI+ý¿g¼t“Vð?)r   r   r   r   r   r   r…   gJ+‡ÿ¿)g¸…ëQ¸@r{   gÍÌÌÌÌÌB@ç¤p=
×£@gáz®Gá@g
×£p=
@r†   r4   )g
×£p=
ÀgR¸…ëQÀgffffffÀg�Âõ(\�Àg�Âõ(\�
Àg�Âõ(\�Àg{®GázÀg®Gáz®Àçü©ñÒMbP?)r3   ç        rˆ   rˆ   ç      à?rˆ   rˆ   çš™™™™™¹?)rˆ   r3   rˆ   rˆ   rŠ   rˆ   rˆ   rˆ   )rˆ   rˆ   r3   rˆ   rˆ   r‰   rˆ   rˆ   )rˆ   rˆ   rˆ   r3   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Š   )	gú~j¼tÀg{®Gáz@rˆ   rˆ   g-²�ï§ Àrˆ   rˆ   rˆ   g×£p=
×ë?)	g¾Ÿ/Ý$Ö¿gZd;ßO�ï?rˆ   rˆ   g¸…ëQ¸Àrˆ   rˆ   rˆ   g
×£p=
ï?)	g‰A`åÐ¢ÀgªñÒMbÐ.@g-²�ï§FÀrˆ   gÍÌÌÌÌÌÀrˆ   rˆ   rˆ   gq=
×£p@)	g7‰A`åÐ5Àg!°rh‘ÍA@gV-²Õ¿gö(\�ÂõÀgÍÌÌÌÌÌ1Àrˆ   rˆ   rˆ   g�Âõ(\�@)	g+‡NÀgyé&1ŒX@gTã¥›Ä ÀgÃõ(\�ÂÕ?g/Ý$�JÀrˆ   rˆ   rˆ   gffffff4@)	r   r   r   r   ç     €W@çffffffbÀrˆ   gš™™™™™J@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ÍÌÌÌÌÌ2@rŽ   )ç{®Gáz„?gºI+‡†¿g‡ÙÎ÷SÃ¿)gú~j¼t“h?g/Ý$�•¿rˆ   )g;ßO�—n‚?gh‘í|?5®¿rˆ   )gú~j¼t“˜?g#Ûù~j¼Ä¿rˆ   )gœÄ °rh±?g{®GázÜ¿rˆ   )rˆ   rˆ   rˆ   ÚAÚBÚQÚRç       Àç�íµ ÷Æ°>©r%   r%   zBad residual accuracygš™™™™™¹¿g{®Gáz”¿rŠ   rˆ   r�   rb   iè  i'  ç    €„.Ag›ò×  ð?iõÿÿÿéûÿÿÿ)g    ð³ZAç    €„>Ag       €)r™   g    `ãVAç    €„>Á)rˆ   rš   g    ÐSA)r3   r”   r”   )r”   r3   r”   )r”   r”   r3   )r•   r$   r—   zBad Residual Accuracy)r   gš™™™™™Ù?r   r   )r   r   g®GázÖ?r   )r   g    €ûÁg     aÁg    €ûA)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'   é@   ©Úk)é>   rŸ   )é   é   )é   r+   é   r¢   r*   r8   Nr6   r9   r¢   r¢   Nr(   r¢   r£   r¢   Nr+   NNúj, casec                 ó�  — |\  }}}}}|rt        j                  |¬«       | j                  |   }t        ||||«      }	|	|z  |j	                  «       j
                  |	z  z   |z   }
|	|z  }|
|t        t        j                  |«      |j	                  «       j
                  «      z  z  }
t        |
t        j                  |
«      |¬«       y)z3Checks if 0 = XA + A'X - XB(R)^{-1} B'X + Q is true©Úreason©ÚdecimalN)rr   ÚxfailÚmin_decimalr	   rK   rq   r   r   Ú
atleast_2dr   Ú
zeros_like)rC   ÚjrZ   rM   ÚbrN   ÚrÚknownfailureÚdecrO   ri   Úout_facts               r   Útest_solve_continuous_arez0TestSolveContinuousAre.test_solve_continuous_are?  s­   € ð $(Ñ ˆˆ1ˆa��LÙÜ�L‰L Õ-à×Ñ˜qÑ!ˆÜ   A q¨!Ó,ˆØ�!‰e�a—f‘f“h—j‘j 1‘nÑ$ qÑ(ˆØ�q‘5ˆØˆxœ%¤§¡¨aÓ 0°(·-±-³/×2CÑ2CÓDÑDÑDˆÜ! #¤r§}¡}°SÓ'9À3ÖGrG   )rl   rm   rn   r    Úmat6Úmat15Úmat18Úmat19Úmat20r   Údiagrp   r   r@   rq   r?   rJ   Úrot90re   ÚflipudrX   r«   rr   rs   rt   Ú	enumerater´   rv   rG   r   rx   rx   Š   s*  „ ÙÐ(Ó)€DÙÐ*Ó+€EÙÐ*Ó+€EÙÐ*Ó+€EÙÐ*Ó+€Eð 
ˆ�‰�"��qÓ	Ø	ˆ�‰�A�3˜˜�*Ó	Ù	�B˜Ó	Ø	
Ø	ð		ð 
ˆ�‰�A�q�6˜D $˜<Ð(Ó	)Ø	ˆ�‰�A�3˜˜�+Ó	Ø	ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$Ø	
Ø	ð		ð 
ˆ�‰’<Ú*Ú+Ú1ð3ó 
4ð 
ˆ�‰�A�q�6˜D $˜<¨%°¨¸4À¸)ÐDÓ	EØ	ˆ�‰Ò/Ú/Ú/Ú/ð1ó 
2ð 
ˆ�‰�‹Ø	ð
	ð 
ˆ�‰Ò4Ú8Ú8Ú8Ú7Ú8Ú8Ú4ð6ó 
7ð 
ˆ�‰ÒDÚKðMó 
ç‘A˜ñ
ð 
ˆ�‰Ò;Ú;Ú;Ú;Ú;Ú;Ú;Ú;ð=ó 
>ð 
ˆ�‰�‹Ø	ð)	ð, 
ˆ�‰Ú=Ú=ÚBÚHÚHÚ9Ú2Ú5Ú>ð@ó	
Að 
ˆ�‰Ò*Ú)Ú)Ú)Ú)Ú(Ú(Ú(Ú(ð*ó 
+ð 
ˆ�‰�‹Ø	ˆ�‰�‹Ø	ð+	ð. 
ˆc‰�D˜‘I˜t C™y¨$¨s©)°TÐ:à	ˆ�‰�A�q�6˜A˜s˜8Ð$Ó	%Ø	ˆ�‰�D�6˜A˜3�-Ó	 Ø	ˆ�‰�‹Ø	Ø	 ð		"ñ 
�D˜%Ó	 Ø	ˆ�‰�E˜5�> E¨5 >Ð2Ó	3Ø	ˆ�‰�C˜�;  u Ð.Ó	/Ø	ˆ�‰�‹™: d¨AÓ.Ñ	.Ø	ð		ð 
ˆ�‰�A�s�8˜a ˜VÐ$Ó	%Ø	ˆ�‰�A�3˜˜�+Ó	Ø	ˆ�‰�‹Ø	Ø	ð		ð 
ˆ�‰�I˜q�> B¨	 ?Ð3Ó	4Ø	ˆ�‰�‹Ø	ˆ�‰�‹Ø	ˆ�‰�‹Ø	ð		ð 
ˆ�‰�A�r�7˜Q ˜FÐ#Ó	$Ø	ˆ�‰�A�3˜˜�*Ó	Ø	ˆ�‰�C˜�9˜r 3˜iÐ(Ó	)Ø	Ø	ð		ð 
ˆ�‰Ò,Ú2Ú,ð.ó 
/à12ñ
3ð 
ˆ�‰�‹Ø	ˆ�‰’>¢>²>ÐBÓ	C×	GÑ	GØ�—‘šÓ'ó
)ß),©ØˆB�H‰H’n¢n²nÐEÓFó*HØJKñ
Lð 
ˆ�‰�‹�S‰Ø	 ð	"ð 
ˆ�‰’>Ú#Ú3Ú"ð$ó 
%ð 
ˆ�‰’>Ð"Ó	#×	%Ñ	%Ø	ˆ�‰’Ó	Ø	Ø	ð	ð 
ˆ�‰Ò#Ú$Ú"Ú#ð%ó 
&ð 
ˆ�‰�‹Ø	ˆ�‰�‹Ø	Ø	ð	ð 
ˆs‰�U˜3‘Z  s¡¨U°3©Z¸Ð>à	ˆ�‰��B˜"Ô	  §¡ r¨2£°Ñ 4Ñ	4°x°r·x±xÙ˜A˜x˜rŸx™x¨Ó1°1Ó5ó87ñ 
7Ø9?¸¿¹ÀÀBÈ!Ô9Lñ
Mà	ˆ�‰�‹Ø	ˆ�‰�‹Ø	ˆ�‰�‹Ø	ð	ð 
ˆ�‰��—‘˜“ !Ó	$Ø	ˆ�‰�6�2—6‘6˜"˜a“=Ó	!Ø	ˆ�‰��A‹˜˜Ÿ™  A›Ÿ™Ñ	(Ø	
Ø	 ð		"ð 
ˆs‰�U˜3‘Z  s¡¨U°3©Z¸Ð>à	ˆs‰�U˜3‘Z  s¡¨U°3©ZØ	 ð	"ð 
ˆs‰�U˜3‘Z  s¡¨U°3©ZØ	 ð	"ðCc
€EðX>€Kð ‡[�[×Ñ˜Y©	°%Ó(8Ó9ñHó :ñHrG   rx   c                   óz  — e Zd Z ej                  ddgddgg«       ej                  dgdgg«       ej                  ddgddgg«       ej                  dgg«      df ej                  ddgddgg«       ej                  dgd	gg«       ej                  ddgddgg«       ej                  dgg«      df ej                  d
dgddgg«       ej                  ddgdd
gg«       ej                  ddgddgg«       ej                  ddgdd
gg«      df ej                  g d¢g d¢g d¢g«       ej                  dgdgdgg«       ej
                  d
«       ej
                  d«      df ej                  dd
gddgg«       ej                  dgdgg«       ej                  ddgddgg«       ej                  dgg«      df ej                  ddgddgg«       ej                  ddgddgg«       ej                  ddgddgg«       ej                  d dgdd
gg«      df ej                  ddgddgg«       ej                  dgdgg«       ej                  ddgddgg«       ej                  dgg«      df ej                  ddgddgg«       ej                  ddgddgg«       ej                  d!d!gd!d"gg«      d#z   ej                  dd
gd
dgg«      df ej                  ddgddgg«       ej                  dgdgg«       ej                  ddgddgg«       ej                  dgg«      df ej                  g d$¢g d%¢g d&¢g d'¢g«       ej                  d(dgd)d*gd+d,gd-d)gg«       ej                  g d.¢g d/¢g d0¢g d1¢g«       ej
                  d«      df ej                  g d2¢g d3¢g d4¢g d5¢g«       ej                  d6d7gd8d9gd:d;gd<d=gg«       ej
                  d«      d>z   ej
                  d«      df ej                  g d?¢g d@¢g dA¢g dB¢g«       ej                  g dC¢g dD¢g dE¢g dF¢g«       ej                  g dG¢g dH¢g dI¢g dJ¢g«       ej
                  d«      df ej                  g dK¢g dL¢g dM¢g dN¢g dO¢g«      d>z   ej                  dPdQgdRdSgdTdUgdVdWgdXdYgg«      d>z   ej
                  dZ«       ej
                  d«      df ej                   ej
                  d«       ej                  ddgd¬[«      «       ej                   ej
                  d«       ej                  dgdgdgg«      «       ej                  g d\¢g d\¢g d]¢g d^¢g d_¢g d]¢g«       ej                  d
dgddgg«      dfd` ej                  g da¢g db¢g dc¢g dd¢g de¢g df¢g dg¢g dh¢g di¢g	«      z   ej                  g dj¢g dk¢g dl¢g dm¢g dn¢g do¢g dp¢g dq¢g dr¢g	«      d`z   ej                  g ds¢«       ej
                  d
«      df ej                  ddtgddgg«       ej                  dgdgg«       ej
                  d«       ej                  dgg«      df ej                  g du¢g dv¢g dw¢g«      dxz   ej
                  d
«      dt ej
                  d
«      z  dt ej
                  d
«      z  df ej                  g dy¢g dz¢g d{¢g d|¢g«       ej                  d}gdgdgdgg«       ej                  g d~¢«       ej                  dgg«      df ej
                  d€d¬[«       ej                   ej
                  d€d«      «       ej
                  d€«       ej                  dgg«      dfgZ	d�Z
e
D � �cg c]  }d‚dƒ| z  z  ‘Œ c}} Zd„ed…<   ded†<   d‡edˆ<   ej                  j                  d‰ ee	«      «      dŠ„ «       Zd‹„ Zyc c}} w )ŒÚTestSolveDiscreteArer%   y      ð?       Àr   y       €      Àr$   Nr<   y       €       Àù              ð?r&   r,   y      ð?      ð¿ù               @)gÑX=X­Iä?gPÂŽ÷‘á?g¿'9Ô­fè?)gú»Ò�Ká?gõèhÚ2á?g¸N¯Ö�Z¶?)gSÒŠ�Ñ?gè½s Ò,ë?g^LŽ–^öÝ?g•=Sùèþî?gÃþ>%ßS¬?gˆåòFBé?r'   ry   rz   r(   r8   g ‘~û:pî?g2w-!ôì?g5^ºI‚@gÕxé&1ó¿gZd;ßO�@g{®Gázt?g{®Gáz”?gUUUUUUÕ?éüÿÿÿr9   gF]tÑE·?)çV-²�ïï?gôýÔxé&±?r   r   )gôýÔxé&±¿rÃ   r   r   )r   r   rÃ   g/Ý$�•Ã?)r   r   g/Ý$�•Ã¿rÃ   gF%ušk?rŠ   gÇº¸�ðF¿g{®Gáz¤?gŸ<,Ôšæ}?gÇº¸�ðf¿)gìQ¸…ëý?r   r   ç¬Zd;Ï¿)r   g+‡ÙÎç?ç=
×£p=Ê?r   )r   rÅ   g+‡Ùâ?r   )rÄ   r   r   gøSã¥›Äð?)gP�—nƒï?gŒ/Úã…t´¿gúéä±«M?g[AÓ+£Q¿)g†åÏ·K¥?gHþ`à¹÷ï?g$ÑË(–[¢¿g°¯u©ú‰?)gYÝê9é}á¿g¦_"Þ:ÿ¦?g!å'Õ>Õ¿gCâKºÈ?)g”ö_˜L@geâX·¹¿g ‰°áé•í¿g+‡ÙÐ¿gÅ Tófn?g`[š¶ÚH?gQ‡nùH¶¿g	v÷–ã>gé}ãkÏ,ó¿gÒUW‘;¿g{ƒ/L¦Š	ÀgOšaþeRN?r�   )g333333ã¿gš™™™™™ÀgÍÌÌÌÌÌÀgÍ>�Qž™À)r3   g333333ã?gš™™™™™é?gÍèGÃ)3@)rˆ   r3   gÍÌÌÌÌÌü?g {ö\f@)rˆ   rˆ   rˆ   ggÖR@Úÿï¿)r3   r5   r5   r5   )rˆ   r3   r5   r5   )rˆ   rˆ   r3   r5   )rˆ   rˆ   rˆ   r3   )r%   r$   r&   r8   )r$   r%   r%   r6   )r&   r%   r8   r*   )r8   r6   r*   é   )g5^ºIÚW@gY†8ÖÅmÿ?g¾Á&S×?g&S£’:±?gÛù~j¼t“?)gé&1¬lD@gj¼t“¨D@g/Ý$�0@g�1w-!ß@geª`TR'ó?)gÉv¾Ÿo(@gú~j¼tS:@gP�—nB@g\�Âõ(Ü/@gj¼t“Ä(@)gmÅþ²{r@gžï§ÆK·)@g/Ý$�5;@gþÔxé&q5@g°rh‘í|D@)gNbX9´À?g ‰°áé•â?g      þ?g’\þCúí@gR¸…ë‘W@gñôJY†8¦?gðHPüˆ¿g›æ§èH@g$(~Œ¹ð¿g /Ý$@g
×£p=
Àg•eˆc]Ü@gffffffÀgx$(~ŒÝ?gƒ/L¦
Fí¿r6   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ÍÌÌÌÌ0‹@g     à`@g®Gáz.'@g]ÜFxà?g\�Âõ(œBÀg#J{ƒ/LÖ?r   g+‡ÙÎ÷@gåÐ"Ûùþ@)	g33333#S@g33333Œ@gq=
×£p)@g"ýöuàœá?g®GázDÀg£#¹ü‡ô×?r   g…ëQ¸@gåÐ"Ûùþ@)	gÍÌÌÌÌÌ_Àg     Xv@i1  gHáz®G÷?g33333³YÀg/Ý$�•ï?r   g33333³'@g¸…ëQ¸2@)	g     ¸vÀg33333Ïƒ@g
×£p=ºR@gÍÌÌÌÌäˆ@g     qÀgÓMbX9@r   g¸…ëQ¸?@g)\�ÂõhH@)	i@üÿÿgš™™™™·™@gÍÌÌÌÌ`ÀgÙÎ÷ScÀg{®GáÚQ@g;ßO�—n@r   gáz®G!U@gš™™™™y_@)	g33333Ã„Àg=
×£p=\@g)\�Âõ8VÀg¢E¶óýÔÀg®GázU@g333333+@r   gš™™™™	b@gffffffY@)	g33333£yÀiµ  g{®GáZKÀg+‡ÙÎ÷Àg�Âõ(\ŸP@g{®Gáú(@g¼–�z6»?g®GázþX@g{®GájQ@)	gÍÌÌÌÌ|fÀg33333Ûr@g®Gázî7Àg�Âõ(\�ð¿gìQ¸…KN@g)\�Âõ(6@r   gÍÌÌÌÌ¼j@g…ëQ¸ÅA@)	gš™™™™‘uÀg33333#‚@g{®GáúFÀgmçû©ñÒÿ¿gffffffZ@g\�Âõ(Ü3@r   g33333ck@gfffffæj@)g
×£p=
@g cîZB>â¿gìQ¸…ëTÀ)gTã¥›Ä ì?gd;ßO�Àg×£p=
×À)gƒÀÊ¡E¶÷?g=
×£p=*Àg�—nƒÀ!@)g‰A`åÐ"@gq=
×£�AÀgÍÌÌÌÌÌ8@)g®Gáz®$@g     0WÀg33333³P@)gZd;ßÏ@gìQ¸…ËNÀgìQ¸…+C@)g7‰A`åÐ@g
×£p=jBÀg
×£p=J4@)gð§ÆK7‰ÿ?g®Gáz/Àgsh‘í|¿@)gÉv¾Ÿ/@gHáz®G>Àgáz®Ga-@)	é2   r   r   r   rÇ   r   r   r   r   r—   )é   r)   éþÿÿÿ)r)   r£   éøÿÿÿ)rÉ   rÊ   r9   gÇqÇq¼?)gGœ¡úÿÿï?r   r   r   )r$   r   r   r   r|   )r   r   r$   r   g:Œ0âŽyE>)r   r   r   r$   ç      Ð?rb   )r+   r¢   r£   r¢   r£   rÈ   é   r¢   r¢   r£   r¢   r£   r£   r¢   r+   r%   r'   r8   r)   g      ø?r)   gê-�™—Q=r*   é   g-Cëâ6*?rÈ   r¤   c                 óº  — |\  }}}}}|rt        j                  |¬«       | j                  |   }t        ||||«      }	|j	                  «       j
                  }
|	|z  |	|z  }}|j	                  «       j
                  |z  |	z
  |z   }||j	                  «       j
                  |z  t        ||
|z  z   |
«      |z  z  z  }t        |t        j                  |«      |¬«       y)ú5Checks if X = A'XA-(A'XB)(R+B'XB)^-1(B'XA)+Q) is truer¦   ©ÚatolN)
rr   rª   Úmax_tolr
   rK   rq   r   r   r   r­   )rC   r®   rZ   rM   r¯   rN   r°   r±   rÑ   rO   ÚbHÚxaÚxbri   s                 r   Útest_solve_discrete_arez,TestSolveDiscreteAre.test_solve_discrete_are$  sÅ   € ð $(Ñ ˆˆ1ˆa��LÙÜ�L‰L Õ-à�|‰|˜A‰ˆä˜q ! Q¨Ó*ˆØ�V‰V‹X�Z‰ZˆØ�Q‘˜˜A™ˆBˆà�f‰f‹h�j‰j˜2‰o Ñ! AÑ%ˆØˆq�v‰v‹x�z‰z˜B‰¤%¨¨B°©G©°RÓ"8¸2Ñ"=Ñ>Ñ>ˆô 	˜œRŸ]™]¨3Ó/°dÖ;rG   c                 ób  — t        j                  t        j                  d«      «      }d|d<   t        j                  g d¢g d¢g«      j                  }t        j
                  |d«      t        j                  g d¢«      z   }t        j                  dd	g«      }t        t        t        ||||«       y )
N©r&   r&   r<   )r   r$   )r$   r$   r   )r   r   r$   rÉ   )r7   r<   gffffffþ¿iöÿÿÿrŠ   )
r   Útriur?   rp   rq   Ú	full_likerº   rA   r   r	   )rC   r�   r‘   r’   r“   s        r   Útest_infeasiblez$TestSolveDiscreteAre.test_infeasible:  s}   € ä�G‰G”B—G‘G˜F“OÓ$ˆØˆˆ$‰Ü�H‰H’i¢Ð+Ó,×.Ñ.ˆÜ�L‰L˜˜BÓ¤"§'¡'ª-Ó"8Ñ8ˆÜ�G‰G�S˜#�JÓˆÜ”kÔ#7¸¸A¸qÀ!ÕDrG   )rl   rm   rn   r   rp   r@   Úkronrº   r¼   rX   r«   rÒ   rr   rs   rt   r½   rÖ   rÛ   )Ú.0Úinds   00r   r¿   r¿   N  s"	  „ ð  
ˆ�‰�A�t�9˜q #˜hÐ'Ó	(Ø	ˆ�‰�A�3˜˜�*Ó	Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3�%‹Ø	ð		ð 
ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$Ø	ˆ�‰�C�5˜2˜$�-Ó	 Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3�%‹Ø	ð		ð 
ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�t�9˜t Q˜iÐ(Ó	)Ø	ˆ�‰�A�s�8˜b !˜WÐ%Ó	&Ø	ð		ð 
ˆ�‰Ò7Ú6Ú6ð8ó 
9ð 
ˆ�‰�J�< * °
¨|Ð<Ó	=Ø	ˆ�‰�‹Ø	ˆ�‰�‹Ø	ð	ð 
ˆ�‰�A�q�6˜D $˜<Ð(Ó	)Ø	ˆ�‰�A�3˜˜�+Ó	Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3�%‹Ø	ð		ð 
ˆ�‰�F˜A�;  F Ð,Ó	-Ø	ˆ�‰�E˜5�> G¨UÐ#3Ð4Ó	5Ø	ˆ�‰�E˜1�:  4˜yÐ)Ó	*Ø	ˆ�‰�C˜�8˜a ˜VÐ$Ó	%Ø	ð		ð 
ˆ�‰�A�r�7˜Q ˜FÐ#Ó	$Ø	ˆ�‰�A�3˜˜�*Ó	Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3�%‹Ø	ð		ð 
ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�B˜�8˜b !˜WÐ%Ó	&¨$Ñ	/Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ð		ð 
ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3˜˜�*Ó	Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�3�%‹Ø	ð		ð 
ˆ�‰Ò'Ú'Ú'Ú'ð)ó 
*ð 
ˆ�‰�F˜FÐ#Ø˜FÐ#Ø˜FÐ#Ø˜FÐ#ð%ó 
&ð 
ˆ�‰Ò'Ú'Ú'Ú(ð*ó 
+ð 
ˆ�‰�‹Ø	ð	ð 
ˆ�‰Ò=Ú=Ú=Ú=ð?ó 
@ð 
ˆ�‰�I˜yÐ)Ø˜yÐ)Ø˜zÐ*Ø˜yÐ)ð+ó 
,ð 
ˆ�‰�‹�4‰Ø	ˆ�‰�‹Ø	ð
	ð 
ˆ�‰ÒCÚ?Ú?Ú@ðBó 
Cð 
ˆ�‰Ò*Ú)Ú(Ú'ð)ó 
*ð 
ˆ�‰’<ÚÚ Ú!ð#ó 
$ð 
ˆ�‰�‹Ø	ð	ð 
ˆ�‰Ò<Ú>Ú@Ú?Ú<ð	>ó 
?ð BFñ	
Fð
 
ˆ�‰�F˜GÐ$Ø˜GÐ$Ø˜GÐ$Ø˜GÐ$Ø˜GÐ$ð	&ó 
'ð *.ñ	
.ð
 
ˆ�‰�‹Ø	ˆ�‰�‹Ø	ð	ð 
ˆ�‰��—‘˜“˜G˜BŸG™G Q¨ F¨aÔ0Ó	1Ø	ˆ�‰��—‘˜“˜H˜BŸH™H q c¨A¨3°° _Ó5Ó	6Ø	ˆ�‰Ò%Ú%Ú%Ú&Ú&Ú%ð'ó 
(ð 
ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ð		ð 
��—‘Ú
FÚ
FÚ
DÚ
GÚ
GÚ
HÚ
JÚ
HÚ
Hð
Jó	Kñ 	
Kð 
ˆ�‰Ò.Ú-Ú-Ú.Ú/Ú.Ú.Ú-Ú.ð0ó 
1ð 49ñ
9ð 
ˆ�‰Ò.Ó	/Ø	ˆ�‰�‹Ø	ð+	ð. 
ˆ�‰�A�s�8˜a ˜VÐ$Ó	%Ø	ˆ�‰�A�3˜˜�*Ó	Ø	ˆ�‰�‹Ø	ˆ�‰�A�3�%‹Øð		ð 
ˆ�‰’<ÚÚðó 
 à#&ñ
(ð 
ˆ�‰�‹Ø	ˆvˆr�v‰v�a‹y‰Ø	ˆvˆr�v‰v�a‹y‰Øð	ð 
ˆ�‰Ò'ÚÚÚð ó 
!ð 
ˆ�‰�E�7˜Q˜C !  q cÐ*Ó	+Ø	ˆ�‰’Ó	Ø	ˆ�‰�D�6�(Ó	Ø	ð	ð 
ˆ�‰��qÔ	Ø	ˆ�‰�6�2—6‘6˜#˜q“>Ó	"Ø	ˆ�‰�‹Ø	ˆ�‰�A�3�%‹Ø	ð		ðq}
€EðN4€Ká)4Ô5© #ˆs�R˜#˜‘X‹~¨Ò5€Gà€GˆB�Kð €GˆB�Kð €GˆB�Kà‡[�[×Ñ˜Y©	°%Ó(8Ó9ñ<ó :ð<ó*EùóE 6s   Ý(^7r¿   c                   óT   — e Zd Zej                  j                  deeg«      d„ «       Zy)ÚTestSolveCommonAreÚsolverc                 ó�  — t        j                  ddgddgg«      }t        j                  dgdgg«      }t        j                  d«      }t        j                  d«      }t        j                  d«      }t        j                  dgd	gg«      } ||||||¬
«      } |||||||«      }	t         j                  j                  ||	«       y )NgÍÌÌÌÌÌì¿rË   r   gš™™™™™ñ¿gq=
×£pÍ?gÍÌÌÌÌÌÜ?r%   rŠ   gš™™™™™É?)Ús)r   rp   r@   r¬   Útestingr   )
rC   rá   r�   r‘   r’   r“   ÚEÚSri   rj   s
             r   Ú(test_with_skipped_array_argument_gh23336z;TestSolveCommonAre.test_with_skipped_array_argument_gh23336E  s®   € ô �H‰H�t˜T�l Q¨ IÐ.Ó/ˆÜ�H‰H�t�f˜t˜fÐ%Ó&ˆÜ�F‰F�1‹IˆÜ�M‰M˜$ÓˆÜ�F‰F�1‹IˆÜ�H‰H�s�e˜c˜U�^Ó$ˆá�Q˜˜1˜a 1Ô%ˆÙ�Q˜˜1˜a  AÓ&ˆÜ
�
‰
×"Ñ" 3¨Õ,rG   N)	rl   rm   rn   rr   rs   rt   r	   r
   rç   rv   rG   r   rà   rà   D  s-   „ Ø‡[�[×Ñ˜XÐ(<Ð>PÐ'QÓRñ-ó Sñ-rG   rà   c                  ó¤  — t        j                  g d¢g d¢g d¢g«      t        j                  ddgddgdd	gg«      t        j                  d
«      t        j                  d«      t        j                  g d¢g d¢g d¢g«      t        j                  d«      d ft        j                  g d¢g d¢g d¢g«      t        j                  ddgddgdd	gg«      t        j                  d
«      t        j                  d«      t        j                  g d¢g d¢g d¢g«      t        j                  d«      d fg} d}d„ }t        | «      D ]  \  }} ||||   «       Œ y )N©g?§ ?¹Ñ?g[,ÄYê?g¾÷7hî?©g;)ÄÆ£§?g7j*0	<æ?gÉš&¦ê¢¡?©g�”€Ú Ý¸?g*ý„³[KÔ?g¯fSdcÜ?ç6±ÀWtkØ?çÞ]ÂüpëÇ?çý;‘è?ç¯/ÈLXß?çÿ	‰Gré?çm!#û{„Ü?r&   r%   ©gGY¿™˜®ä?g X.eªÑ?g6¹ÎuÐÄ?©gåßÏ³æ?gÀpàÀå?g¡™Ì¢v¾?©g»<ç¸d&è?gª™µ�öä?gÂÀ‰2åß?r>   )r)   r)   c                 óš  — | \  }}}}}}}|rt        j                  |¬«       t        ||||||«      }	|j                  «       j                  j                  |	j                  |«      «      |j                  «       j                  j                  |	j                  |«      «      z   |z   }
|j                  «       j                  j                  |	«      j                  |«      |z   }|
|j                  t        t        j                  |«      |j                  «       j                  «      «      z  }
t        |
t        j                  |
«      |¬«       y)rÏ   r¦   r¨   N)rr   rª   r	   rK   rq   rJ   r   r   r¬   r   r­   )rZ   r²   rM   r¯   rN   r°   Úerã   r±   rO   ri   r³   s               r   Ú_test_factoryz<test_solve_generalized_continuous_are.<locals>._test_factoryv  sê   € à)-Ñ&ˆˆ1ˆa��A�q˜,ÙÜ�L‰L Õ-ä   A q¨!¨Q°Ó2ˆØ�f‰f‹h�j‰j�n‰n˜QŸU™U 1›XÓ&¨¯©«¯©¯©¸¿¹¸a»Ó)AÑAÀAÑEˆØ—6‘6“8—:‘:—>‘> !Ó$×(Ñ(¨Ó+¨aÑ/ˆØˆx�|‰|œE¤"§-¡-°Ó"2°H·M±M³O×4EÑ4EÓFÓGÑGˆÜ! #¤r§}¡}°SÓ'9À3ÖGrG   )r   rp   r@   re   r?   r½   )rX   r«   r÷   rÞ   rZ   s        r   Ú%test_solve_generalized_continuous_arerø   T  sY  € ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�&Ó	Ø	ð	ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�‹Ø	ð	ð!
€Eð> €Kò
Hô ˜uÖ%‰	ˆˆTÙ�d˜K¨Ñ,Õ-ñ &rG   c                  óè  — t        d«      } t        j                  g d¢g d¢g d¢g«      t        j                  ddgddgd	d
gg«      t        j                  d«      t        j                  d«      t        j                  g d¢g d¢g d¢g«      t        j                  d«      d ft        j                  g d¢g d¢g d¢g«      t        j                  ddgddgd	d
gg«      t        j                  d«      t        j                  d«      t        j                  g d¢g d¢g d¢g«      t        j
                  d«      d f| d   | d   | d   | d   d | d   d fg}d}d„ }t        |«      D ]  \  }} ||||   «       Œ y )Nzgendare_20170120_data.npzré   rê   rë   rì   rí   rî   rï   rð   rñ   r&   r%   rò   ró   rô   r>   r�   r‘   r’   r“   ræ   )çpé~°=rú   g…xÝD\8¹<c                 óÊ  — | \  }}}}}}}|rt        j                  |¬«       t        ||||||«      }	|€"t        j                  |j
                  d   «      }|€t        j                  |«      }|j                  «       j                  j                  |	j                  |«      «      |j                  «       j                  j                  |	j                  |«      «      z
  |z   }
|
|j                  «       j                  j                  |	j                  |«      «      |z   j                  t        ||j                  «       j                  j                  |	j                  |«      «      z   |j                  «       j                  j                  |	j                  |«      «      |j                  «       j                  z   «      «      z  }
t        |
t        j                  |
«      |¬«       y)rÏ   r¦   Nr   rÐ   )rr   rª   r
   r   r@   rg   r­   rK   rq   rJ   r   r   )rZ   rÑ   rM   r¯   rN   r°   rö   rã   r±   rO   ri   s              r   r÷   z:test_solve_generalized_discrete_are.<locals>._test_factory³  sQ  € à)-Ñ&ˆˆ1ˆa��A�q˜,ÙÜ�L‰L Õ-ä˜q ! Q¨¨1¨aÓ0ˆØˆ9Ü—‘�q—w‘w˜q‘zÓ"ˆAØˆ9Ü—‘˜aÓ ˆAØ�f‰f‹h�j‰j�n‰n˜QŸU™U 1›XÓ&¨¯©«¯©¯©¸¿¹¸a»Ó)AÑAÀAÑEˆØ�—‘“—
‘
—‘˜qŸu™u Q›xÓ(¨1Ñ,×1Ñ1Ü˜!˜AŸF™F›HŸJ™JŸN™N¨1¯5©5°«8Ó4Ñ4ØŸ6™6›8Ÿ:™:Ÿ>™>¨!¯%©%°«(Ó3°a·f±f³h·j±jÑ@óóñ 	ˆô 	˜œRŸ]™]¨3Ó/°dÖ;rG   )r    r   rp   r@   re   r?   r½   )Úmat20170120rX   Úmax_atolr÷   rÞ   rZ   s         r   Ú#test_solve_generalized_discrete_arerþ   †  s˜  € ÜÐ8Ó9€Kô
 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�&Ó	Ø	ð	ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�‹Ø	ð	ð 
�SÑ	Ø	�SÑ	Ø	�SÑ	Ø	�SÑ	Ø	Ø	�SÑ	Ø	ð	ð?&
€EðP +€Hò<ô, ˜uÖ%‰	ˆˆTÙ�d˜H S™MÕ*ñ &rG   c                  ó"   — d„ } d„ }d„ }d„ }d„ }y )Nc            
      ó  — t        j                  d«      } t        j                  d«      }t        t        fD ]S  }t        t        || ddd«       t        t        |||| d«       t        t        ||||| «       t        t        |||||| «       ŒU y )Nr>   r&   r$   ©r   r?   r@   r	   r
   rA   rB   ©rD   rE   rO   s      r   Útest_square_shapez1test_are_validate_args.<locals>.test_square_shapeÏ  sv   € Ü�g‰g�f‹oˆÜ�V‰V�A‹YˆÜ&Ô(:Ó;ˆAÜœ* a¨¨a°°AÔ6Üœ* a¨¨R°°aÔ8Üœ* a¨¨R°°SÔ9Üœ* a¨¨R°°R¸Õ=ñ	 <rG   c                  óº  — t        j                  d«      } t        j                  d«      }t        t        fD ]¢  }t        t        ||| dd«       t        t        ||||||| «       t        t        |||t        j                  d«      |«       t        t        ||||t        j                  d«      «       t        t        |||||t        j                  d«      «       Œ¤ y )Nr>   r'   r$   r&   r  r  s      r   Útest_compatible_sizesz5test_are_validate_args.<locals>.test_compatible_sizesØ  s¤   € Ü�g‰g�f‹oˆÜ�V‰V�A‹YˆÜ&Ô(:Ó;ˆAÜœ* a¨¨S°!°QÔ7Üœ* a¨¨R°°R¸¸SÔAÜœ* a¨¨R´·±¸³¸BÔ?Üœ* a¨¨R°´R·V±V¸A³YÔ?Üœ* a¨¨R°°R¼¿¹À»ÕCñ <rG   c            	      óê   — t        j                  d«      j                  dd«      } t        j                  d«      }t        t
        fD ]*  }t        t        |||| |«       t        t        ||||| «       Œ, y )Nr(   r&   )r   ÚarangeÚreshaper@   r	   r
   rA   rB   )ÚnsymÚsymrO   s      r   Útest_symmetryz-test_are_validate_args.<locals>.test_symmetryâ  s]   € Ü�y‰y˜‹|×#Ñ# A qÓ)ˆÜ�f‰f�Q‹iˆÜ&Ô(:Ó;ˆAÜœ* a¨¨c°4¸Ô=Üœ* a¨¨c°3¸Õ=ñ <rG   c            
      óð   — t        j                  dd«      } | dxx   dz  cc<   t        j                  d«      }t        t        fD ]  }t        t        |||||| «       Œ t        t        t        |||| «       y )NrØ   g   ¢”mBr–   r$   r&   )r   Úfullr@   r	   r
   rA   rB   )ÚsingrE   rO   s      r   Útest_singularityz0test_are_validate_args.<locals>.test_singularityé  se   € Ü�w‰w�v˜tÓ$ˆØˆT‹
�a‰‹
Ü�V‰V�A‹YˆÜ&Ô(:Ó;ˆAÜœ* a¨¨R°°R¸Õ>ð <ô 	”jÔ"6¸¸BÀÀDÕIrG   c                  óŽ  — t        j                  dt         j                  «      } t        j                  d«      }t        t
        fD ]}  }t        t        || |||«       t        t        ||| ||«       t        t        |||| |«       t        t        ||||| «       t        t        |||||| «       t        t        ||||||| «       Œ y )Nr–   r%   )r   r  Únanr@   r	   r
   rA   rB   )ÚnmrE   rO   s      r   Útest_finitenessz/test_are_validate_args.<locals>.test_finitenessò  s¥   € Ü�W‰W�VœRŸV™VÓ$ˆÜ�V‰V�A‹YˆÜ&Ô(:Ó;ˆAÜœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°R¸Ô<Üœ* a¨¨R°°R¸¸RÕ@ñ <rG   rv   )r  r  r  r  r  s        r   Útest_are_validate_argsr  Í  s   € ò>òDò>òJó	ArG   c                   ó:  — e Zd Z ej                  d«       ej                  d«       ej                  d«      f ej                  d«       ej                  d«       ej                  d«      f ej                  d«       ej                  d«       ej                  d«      f ej
                  ddgddgg«       ej
                  d	d
gddgg«       ej
                  ddgddgg«      f ej
                  g d¢g d¢g d¢g d¢g«       ej
                  g d¢g d¢g d¢g d¢g«       ej
                  g d¢g d¢g d¢g d¢g«      f ej
                  ddgddgg«       ej
                  dd gd!d"gg«       ej
                  d#d$gd%dgg«      f ej
                  d&dgd!dgg«       ej
                  ddgd!d"gg«       ej
                  d#d$gd%dgg«      f ej
                  ddgddgg«       ej
                  ddgd!d"gg«       ej
                  d#d$gd%dgg«      f ej
                  ddgddgg«       ej
                  ddgd!d"gg«       ej
                  ddgddgg«      f ej
                  g d'¢g d(¢g d)¢g«       ej
                  dd*gdd	gg«       ej
                  ddgd*dgd	d
gg«      f ej
                  g d+¢g d(¢g d)¢g«       ej
                  dd*gdd,gg«       ej
                  dd gd*d-gd.d/gg«      fgZd0„ Zd1„ Zd2„ Z	e
j                  j                  d3e«      e
j                  j                  d4e«      e
j                  j                  d5e«      e
j                  j                  d6dd*g«      e
j                  j                  d7dd*g«      d8„ «       «       «       «       «       Zy9):ÚTestSolveSylvesterr#   r–   )r   r%   )r%   r   r$   r%   r   r'   r6   r8   r7   r(   r)   r*   r+   )r3   r   r   r   )r   r3   r-   rˆ   )r   r   r4   rÂ   )r   r   r%   r6   )r-   r   r   r3   )r   r3   rˆ   rˆ   )r   r   r3   r<   )r   r   r$   r$   )r   r3   r   r   )r   r   r3   r   )r   r   r   r3   r,   r-   r.   r/   r5   rÁ   r4   r{   r0   r1   r2   r3   )r7   r$   r8   )r&   r6   r9   )r'   r(   r%   r&   )r7   rÀ   y      @       @y      @      ð¿y              @y              @y      @      @c                 óŒ   — t        |||«      }t        t        j                  ||«      t        j                  ||«      z   |«       y rI   )r   r   r   rJ   ©rC   rM   r¯   ÚcrO   s        r   Ú
check_casezTestSolveSylvester.check_case6  s3   € Ü˜A˜q !Ó$ˆÜ!¤"§&¡&¨¨A£,´·±¸¸1³Ñ"=¸qÕArG   c                 ó^   — | j                   D ]  }| j                  |d   |d   |d   «       Œ  y )Nr   r$   r%   )rX   r  rY   s     r   r[   zTestSolveSylvester.test_cases:  s,   € Ø—J”JˆDØ�O‰O˜D ™G T¨!¡W¨d°1©gÕ6ñ rG   c                 ó2  — t        j                  ddgddgg«      }t        j                  dgg«      }t        j                  ddg«      j                  dd«      }t        |||«      }t	        |t        j                  ddg«      j                  dd«      «       y )Nr3   rˆ   r-   r<   r$   )r   rp   r  r   r   r  s        r   Útest_trivialzTestSolveSylvester.test_trivial>  s€   € Ü�H‰H�s˜C�j 3¨ *Ð-Ó.ˆÜ�H‰H�s�e�WÓˆÜ�H‰H�c˜3�ZÓ ×(Ñ(¨¨QÓ/ˆÜ˜A˜q !Ó$ˆÜ! !¤R§X¡X¨s°C¨jÓ%9×%AÑ%AÀ"ÀaÓ%HÕIrG   r\   Údtype_br]   ÚmÚnc                 ó€  — ||cxk(  rdk7  rn nt        j                  d«       t        j                  j	                  d«      }t        j
                  ||f|¬«      }t        j
                  ||f|¬«      }t        j
                  ||f|¬«      }	t        |||	«      }
|j                  d«      dz  j                  |«      }|j                  d«      dz  j                  |«      }|j                  d«      dz  j                  |«      }	t        |||	«      }|
j                  ||fk(  sJ ‚|
j                  |j                  k(  sJ ‚y )	Nr   z6m = n != 0 is not a case that needs to be tested here.l   >¿& r_   ra   rb   )r8   r8   )r6   r8   )
rr   Úskipr   rc   rd   re   r   rf   rg   r`   )rC   r  r   r\   r  r]   rh   rM   r¯   rN   ri   rj   s               r   rk   zTestSolveSylvester.test_size_0H  s  € ð �Œ;�Q�;Ü�K‰KÐPÔQä�i‰i×#Ñ# OÓ4ˆä�H‰H�a˜�V 7Ô+ˆÜ�H‰H�a˜�V 7Ô+ˆÜ�H‰H�a˜�V 7Ô+ˆÜ˜a  AÓ&ˆà�Z‰Z˜Ó Ñ#×+Ñ+¨GÓ4ˆØ�Z‰Z˜Ó Ñ#×+Ñ+¨GÓ4ˆØ�Z‰Z˜Ó Ñ#×+Ñ+¨GÓ4ˆÜ˜a  AÓ&ˆà�y‰y˜Q ˜FÒ"Ð"Ð"Ø�y‰y˜CŸI™IÒ%Ð%Ñ%rG   N)rl   rm   rn   r   ro   rp   rX   r  r[   r  rr   rs   rt   ru   rk   rv   rG   r   r  r  þ  s  „ ð 
ˆ�‰�&Ó	Ø	ˆ�‰�&Ó	Ø	ˆ�‰�&Ó	ð	ð ˆ"�(‰(�6Ó
Ø	ˆ�‰�&Ó	Ø	ˆ�‰�&Ó	ð
ð ˆ"�(‰(�6Ó
Ø	ˆ�‰�&Ó	Ø	ˆ�‰�&Ó	ð
ð 
ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�r�7˜R ˜HÐ%Ó	&ð	(ð
 
ˆ�‰’>Ú%Ú"Úð!ó 
"ð 
ˆ�‰Ò#Ú%Ú"Úð!ó 
"ð 
ˆ�‰’>Ú!Ú!Ú!ð#ó 
$ð	%ð 
ˆ�‰�F˜C�= 8¨S /Ð2Ó	3Ø	ˆ�‰�D˜"�:  S˜zÐ*Ó	+Ø	ˆ�‰�F˜FÐ# g¨s ^Ð4Ó	5ð	7ð 
ˆ�‰�C˜�:  S˜zÐ*Ó	+Ø	ˆ�‰�D˜!�9˜s C˜jÐ)Ó	*Ø	ˆ�‰�F˜FÐ# g¨s ^Ð4Ó	5ð	7ð 
ˆ�‰�F˜C�= 8¨S /Ð2Ó	3Ø	ˆ�‰�D˜!�9˜s C˜jÐ)Ó	*Ø	ˆ�‰�F˜FÐ# g¨s ^Ð4Ó	5ð	7ð 
ˆ�‰�F˜C�= 8¨S /Ð2Ó	3Ø	ˆ�‰�D˜!�9˜s C˜jÐ)Ó	*Ø	ˆ�‰�C˜�:  c˜{Ð+Ó	,ð	.ð 
ˆ�‰’9šiªÐ3Ó	4Ø	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	#Ø	ˆ�‰�A�q�6˜A˜q˜6 A q 6Ð*Ó	+ð	-ð 
ˆ�‰’=¢)ªYÐ7Ó	8Ø	ˆ�‰�A�q�6˜A˜t˜9Ð%Ó	&Ø	ˆ�‰�A�r�7˜Q ˜G b¨$ ZÐ0Ó	1ð	3ðe5€EònBò7òJð ‡[�[×Ñ˜Y¨Ó/Ø‡[�[×Ñ˜Y¨Ó/Ø‡[�[×Ñ˜Y¨Ó/Ø‡[�[×Ñ˜S 1 a &Ó)Ø‡[�[×Ñ˜S 1 a &Ó)ñ&ó *ó *ó 0ó 0ó 0ñ
&rG   r  )%r   Únumpyr   Únumpy.testingr   r   rr   r   rA   Úscipy.linalgr   r   r   r	   r
   r   r   r   Úscipy.sparse._sputilsr   Úscipy.conftestr   ÚintÚfloatÚfloat32ÚcomplexÚ	complex64ru   r    r"   rx   r¿   rà   rø   rþ   r  r  rv   rG   r   Ú<module>r-     s�   ðÛ 	Û ç DÛ Ý *å (ß Kß Aß 7Ñ 7Ý (Ý .ð ˆu�b—j‘j '¨2¯<©<Ð	8€ò÷h&ñ h&÷VAHñ AH÷HsEñ sE÷l-ñ -ò /.òdD+òN.A÷b`&ò `&rG   