Ë
    âQ(hŸ„  ã                   ó"  — 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 eeej,                  eej0                  gZ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)Úmatrixc                 ó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      ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_solvers.pyÚ
_load_datar      sg   € ô
 �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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&   é   r7   r7   r%   )r#   r5   r$   r   é   )r5   r%   r%   r#   r5   )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:   r9   r:   r:   r:   r:   r:   r:   r:   r:   r:   )r:   r:   r9   r:   r:   r:   r:   r:   r:   r:   r:   )r:   r:   r:   r9   r:   r:   r:   r:   r:   r:   r:   )r:   r:   r:   r:   r9   r:   r:   r:   r:   r:   r:   )r:   r:   r:   r:   r:   r9   r:   r:   r:   r:   r:   )r:   r:   r:   r:   r:   r:   r9   r:   r:   r:   r:   )r:   r:   r:   r:   r:   r:   r:   r9   r:   r:   r:   )r:   r:   r:   r:   r:   r:   r:   r:   r9   r:   r:   )r:   r:   r:   r:   r:   r:   r:   r:   r:   r9   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)rB   ÚaÚqÚxs       r   Úcheck_continuous_casez'TestSolveLyapunov.check_continuous_casef   sE   € Ü% a¨Ó+ˆÜ!ÜŸ&™&  A›,¬¯©°°1·6±6³8×3EÑ3EÓ3GÓ)HÑHÈ!õ	MrF   Nc                 óÌ   — t        |||¬«      }t        t        j                  t        j                  ||«      |j	                  «       j                  «       «      |z
  d|z  «       y )N©Úmethodr4   )r   r   r   rI   rJ   rK   )rB   rL   rM   rR   rN   s        r   Úcheck_discrete_casez%TestSolveLyapunov.check_discrete_casek   sK   € Ü# A q°Ô8ˆÜ!Ü—f‘fœRŸV™V A q›\¨1¯6©6«8×+=Ñ+=Ó+?Ó@À1ÑDÀdÈ1Áfõ	NrF   c                 óî   — | j                   D ]f  }| j                  |d   |d   «       | j                  |d   |d   «       | j                  |d   |d   d¬«       | j                  |d   |d   d¬«       Œh y )Nr   r#   ÚdirectrQ   Úbilinear)ÚcasesrO   rS   ©rB   Úcases     r   Ú
test_caseszTestSolveLyapunov.test_casesp   s�   € Ø—J‘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ñ		JrF   Ú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©r5   r5   éd   )r   ÚrandomÚdefault_rngÚzerosr   ÚastypeÚshaper_   )rB   r[   r\   ÚrngrL   rM   ÚresÚrefs           r   Útest_size_0zTestSolveLyapunov.test_size_0w   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Ò%Ð%Ñ%rF   rH   )Ú__name__Ú
__module__Ú__qualname__r   ÚemptyÚarrayr?   r   ÚTrW   rE   rO   rS   rZ   ÚpytestÚmarkÚparametrizeÚdtypesrj   © rF   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ð ‡[�[×Ñ˜Y¨Ó/Ø‡[�[×Ñ˜Y¨Ó/ñ&ó 0ó 0ñ&rF   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.npzr2   r#   r   r,   Nr&   r%   ç      Àç      Àr;   r'   r7   ç      @©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¸@rz   gÍÌÌÌÌÌB@ç¤p=
×£@gáz®Gá@g
×£p=
@r…   r3   )g
×£p=
ÀgR¸…ëQÀgffffffÀg�Âõ(\�Àg�Âõ(\�
Àg�Âõ(\�Àg{®GázÀg®Gáz®Àçü©ñÒMbP?)r2   ç        r‡   r‡   ç      à?r‡   r‡   çš™™™™™¹?)r‡   r2   r‡   r‡   r‰   r‡   r‡   r‡   )r‡   r‡   r2   r‡   r‡   rˆ   r‡   r‡   )r‡   r‡   r‡   r2   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Ž   ra   iè  i'  ç    €„.Ag›ò×  ð?iõÿÿÿéûÿÿÿ)g    ð³ZAç    €„>Ag       €)r˜   g    `ãVAç    €„>Á)r‡   r™   g    ÐSA)r2   r“   r“   )r“   r2   r“   )r“   r“   r2   )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)   r7   Nr5   r8   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)rq   ÚxfailÚmin_decimalr	   rJ   rp   r   r   Ú
atleast_2dr   Ú
zeros_like)rB   ÚjrY   rL   ÚbrM   ÚrÚknownfailureÚdecrN   rh   Ú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ÖGrF   )rk   rl   rm   r   Úmat6Úmat15Úmat18Úmat19Úmat20r   Údiagro   r   r?   rp   r>   rI   Úrot90rd   ÚflipudrW   rª   rq   rr   rs   Ú	enumerater³   ru   rF   r   rw   rw   ˆ   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rF   rw   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&   rx   ry   r'   r7   g ‘~û:pî?g2w-!ôì?g5^ºI‚@gÕxé&1ó¿gZd;ßO�@g{®Gázt?g{®Gáz”?gUUUUUUÕ?éüÿÿÿr8   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ž™À)r2   g333333ã?gš™™™™™é?gÍèGÃ)3@)r‡   r2   gÍÌÌÌÌÌü?g {ö\f@)r‡   r‡   r‡   ggÖR@Úÿï¿)r2   r4   r4   r4   )r‡   r2   r4   r4   )r‡   r‡   r2   r4   )r‡   r‡   r‡   r2   )r$   r#   r%   r7   )r#   r$   r$   r5   )r%   r$   r7   r)   )r7   r5   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í¿r5   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É   r8   gÇqÇq¼?)gGœ¡úÿÿï?r   r   r   )r#   r   r   r   r{   )r   r   r#   r   g:Œ0âŽyE>)r   r   r   r#   g      Ð?ra   )r*   r¡   r¢   r¡   r¢   rÇ   é   r¡   r¡   r¢   r¡   r¢   r¢   r¡   r*   r$   r&   r7   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)
rq   r©   Úmax_tolr
   rJ   rp   r   r   r   r¬   )rB   r­   rY   rL   r®   rM   r¯   r°   rÏ   rN   ÚbHÚxaÚxbrh   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Ö;rF   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È   )r6   r;   gffffffþ¿iöÿÿÿr‰   )
r   Útriur>   ro   rp   Ú	full_liker¹   r@   r   r	   )rB   r�   r�   r‘   r’   s        r   Útest_infeasiblez$TestSolveDiscreteAre.test_infeasible8  s}   € ä�G‰G”B—G‘G˜F“OÓ$ˆØˆˆ$‰Ü�H‰H’i¢Ð+Ó,×.Ñ.ˆÜ�L‰L˜˜BÓ¤"§'¡'ª-Ó"8Ñ8ˆÜ�G‰G�S˜#�JÓˆÜ”kÔ#7¸¸A¸qÀ!ÕDrF   )rk   rl   rm   r   ro   r?   Úkronr¹   r»   rW   rª   rÐ   rq   rr   rs   r¼   rÔ   rÙ   )Ú.0Úinds   00r   r¾   r¾   L  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        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)rq   r©   r	   rJ   rp   rI   r   r   r«   r   r¬   )rY   r±   rL   r®   rM   r¯   ÚeÚsr°   rN   rh   r²   s               r   Ú_test_factoryz<test_solve_generalized_continuous_are.<locals>._test_factoryd  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ÖGrF   )r   ro   r?   rd   r>   r¼   )rW   rª   rí   rÜ   rY   s        r   Ú%test_solve_generalized_continuous_arerî   B  s^  € ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�&Ó	Ø	ð	ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�‹Ø	ð	ð!
€Eð> €Kò
Hô ˜uÓ%ò .‰	ˆˆTÙ�d˜K¨Ñ,Õ-ñ.rF   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’   ÚS)ç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Î   )rq   r©   r
   r   r?   rf   r¬   rJ   rp   rI   r   r   )rY   rÏ   rL   r®   rM   r¯   rë   rì   r°   rN   rh   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Ö;rF   )r   r   ro   r?   rd   r>   r¼   )Úmat20170120rW   Úmax_atolrí   rÜ   rY   s         r   Ú#test_solve_generalized_discrete_arerõ   t  s�  € ÜÐ8Ó9€Kô
 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�&Ó	Ø	ð	ô 
�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�L ,Ð/Ø  ,Ð/Ø  ,Ð/ð1ó 
2ô 
�‰�‹Ü	�‰�‹Ü	�‰Ò=Ú=Ú=ð?ó 
@ô 
�‰�‹Ø	ð	ð 
�SÑ	Ø	�SÑ	Ø	�SÑ	Ø	�SÑ	Ø	Ø	�SÑ	Ø	ð	ð?&
€EðP +€Hò<ô, ˜uÓ%ò +‰	ˆˆTÙ�d˜H S™MÕ*ñ+rF   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
   r@   rA   ©rC   rD   rN   s      r   Útest_square_shapez1test_are_validate_args.<locals>.test_square_shape½  s{   € Ü�g‰g�f‹oˆÜ�V‰V�A‹YˆÜ&Ô(:Ð;ò 	>ˆAÜœ* a¨¨a°°AÔ6Üœ* a¨¨R°°aÔ8Üœ* a¨¨R°°SÔ9Üœ* a¨¨R°°R¸Õ=ñ		>rF   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ˆÜ&Ô(:Ð;ò 	DˆAÜœ* a¨¨S°!°QÔ7Üœ* a¨¨R°°R¸¸SÔAÜœ* a¨¨R´·±¸³¸BÔ?Üœ* a¨¨R°´R·V±V¸A³YÔ?Üœ* a¨¨R°°R¼¿¹À»ÕCñ	DrF   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
   r@   rA   )ÚnsymÚsymrN   s      r   Útest_symmetryz-test_are_validate_args.<locals>.test_symmetryÐ  sb   € Ü�y‰y˜‹|×#Ñ# A qÓ)ˆÜ�f‰f�Q‹iˆÜ&Ô(:Ð;ò 	>ˆAÜœ* a¨¨c°4¸Ô=Üœ* a¨¨c°3¸Õ=ñ	>rF   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
   r@   rA   )ÚsingrD   rN   s      r   Útest_singularityz0test_are_validate_args.<locals>.test_singularity×  sj   € Ü�w‰w�v˜tÓ$ˆØˆT‹
�a‰‹
Ü�V‰V�A‹YˆÜ&Ô(:Ð;ò 	?ˆAÜœ* a¨¨R°°R¸Õ>ð	?ô 	”jÔ"6¸¸BÀÀDÕIrF   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
   r@   rA   )ÚnmrD   rN   s      r   Útest_finitenessz/test_are_validate_args.<locals>.test_finitenessà  s¬   € Ü�W‰W�VœRŸV™VÓ$ˆÜ�V‰V�A‹YˆÜ&Ô(:Ð;ò 	AˆAÜœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°RÔ8Üœ* a¨¨R°°R¸Ô<Üœ* a¨¨R°°R¸¸RÕ@ñ	ArF   ru   )rú   rü   r  r  r
  s        r   Útest_are_validate_argsr  »  s   € ò>òDò>òJó	ArF   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&   r5   r7   r6   r'   r(   r)   r*   )r2   r   r   r   )r   r2   r,   r‡   )r   r   r3   rÁ   )r   r   r$   r5   )r,   r   r   r2   )r   r2   r‡   r‡   )r   r   r2   r;   )r   r   r#   r#   )r   r2   r   r   )r   r   r2   r   )r   r   r   r2   r+   r,   r-   r.   r4   rÀ   r3   rz   r/   r0   r1   r2   )r6   r#   r7   )r%   r5   r8   )r&   r'   r$   r%   )r6   r¿   y      @       @y      @      ð¿y              @y              @y      @      @c                 óŒ   — t        |||«      }t        t        j                  ||«      t        j                  ||«      z   |«       y rH   )r   r   r   rI   ©rB   rL   r®   ÚcrN   s        r   Ú
check_casezTestSolveSylvester.check_case$  s3   € Ü˜A˜q !Ó$ˆÜ!¤"§&¡&¨¨A£,´·±¸¸1³Ñ"=¸qÕArF   c                 ó^   — | j                   D ]  }| j                  |d   |d   |d   «       Œ  y )Nr   r#   r$   )rW   r  rX   s     r   rZ   zTestSolveSylvester.test_cases(  s1   € Ø—J‘Jò 	7ˆDØ�O‰O˜D ™G T¨!¡W¨d°1©gÕ6ñ	7rF   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 )Nr2   r‡   r,   r;   r#   )r   ro   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ÕIrF   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^   r`   ra   )r7   r7   )r5   r7   )
rq   Úskipr   rb   rc   rd   r   re   rf   r_   )rB   r  r  r[   r  r\   rg   rL   r®   rM   rh   ri   s               r   rj   zTestSolveSylvester.test_size_06  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Ò%Ð%Ñ%rF   N)rk   rl   rm   r   rn   ro   rW   r  rZ   r  rq   rr   rs   rt   rj   ru   rF   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ñ
&rF   r  )"r   Únumpyr   Únumpy.testingr   r   rq   r   r@   Úscipy.linalgr   r   r   r	   r
   r   r   r   Úscipy.sparse._sputilsr   ÚintÚfloatÚfloat32ÚcomplexÚ	complex64rt   r   r!   rw   r¾   rî   rõ   r  r  ru   rF   r   ú<module>r#     s�   ðÛ 	Û ç DÛ Ý *å (ß Kß Aß 7Ñ 7Ý (ð ˆu�b—j‘j '¨2¯<©<Ð	8€ò÷g&ñ g&÷TAHñ AH÷HsEñ sEòl/.òdD+òN.A÷b`&ò `&rF   