Ë
    âQ(h°  ã                   ó˜  — d dl Z d dlZd dlmZ d dlZd dl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mZmZ d dlmZ d dlmZ d d„Z G d„ d	«      Z  G d
„ d«      Z! G d„ d«      Z" G d„ d«      Z# G d„ d«      Z$ G d„ d«      Z% G d„ d«      Z& G d„ d«      Z' G d„ d«      Z( G d„ d«      Z) G d„ d«      Z* G d„ d«      Z+y)!é    N)Úsuppress_warnings)Úraises)Úassert_almost_equalÚxp_assert_equalÚxp_assert_close)Úss2tfÚtf2ssÚltiÚdltiÚbodeÚfreqrespÚlsimÚimpulseÚstepÚabcd_normalizeÚplace_polesÚTransferFunctionÚ
StateSpaceÚZerosPolesGain)ÚBadCoefficientsc           
      óÐ  — |j                  «       }| D ]Ñ  }d}t        |j                  d   «      D ]Š  }t        j                  t        j
                  |«      t        j                  |«      gt        j
                  ||   «      t        j                  ||   «      g||«      sŒrd}t        j                  ||«        n |rŒ­t        dt        |«      z   dz   t        |«      z   «      ‚ y)a  
    Check each pole in P1 is close to a pole in P2 with a 1e-8
    relative tolerance or 1e-8 absolute tolerance (useful for zero poles).
    These tolerances are very strict but the systems tested are known to
    accept these poles so we should not be far from what is requested.
    Fr   TzCan't find pole z in N)
ÚcopyÚrangeÚshapeÚnpÚallcloseÚrealÚimagÚdeleteÚ
ValueErrorÚstr)ÚP1ÚP2ÚrtolÚatolÚp1ÚfoundÚp2_idxs          ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/signal/tests/test_ltisys.pyÚ_assert_poles_closer*      sË   € ð 
�‰‹€BØò 
NˆØˆÜ˜BŸH™H Q™KÓ(ò 	ˆFÜ�{‰{œBŸG™G B›K¬¯©°«Ð5ÜŸG™G B v¡JÓ/´·±¸¸F¹Ó1DÐEØ õ'ð �Ü—	‘	˜"˜fÔ%Ùð	ò ÜÐ/´#°b³'Ñ9¸FÑBÄSÈÃWÑLÓMÐMñ
Nó    c                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  d„ «       Z
y)ÚTestPlacePolesc                 ó,  — t        |||fi |¤Ž}t        j                  j                  |t        j                  ||j
                  «      z
  «      \  }}t        ||j                  «       t        ||j                  «       t        ||j                  «       |S )z“
        Perform the most common tests on the poles computed by place_poles
        and return the Bunch object for further specific tests
        )	r   r   ÚlinalgÚeigÚdotÚgain_matrixr*   Úrequested_polesÚcomputed_poles)ÚselfÚAÚBÚPÚkwargsÚfsfÚexpectedÚ_s           r)   Ú_checkzTestPlacePoles._check*   sv   € ô
 ˜!˜Q Ñ, VÑ,ˆÜ—i‘i—m‘m A¬¯©¨q°#·/±/Ó(BÑ$BÓC‰ˆ�!Ü˜H c×&9Ñ&9Ô:Ü˜H c×&8Ñ&8Ô9Ü˜A˜c×1Ñ1Ô2Øˆ
r+   c                 óž  — t        j                  g d¢«      j                  dd«      }t        j                  g d¢«      j                  dd«      }t        j                  g d¢«      }| j                  |||d¬«       | j                  |||d¬«       t        j                  d	¬
«      5  | j                  ||d«       d d d «       y # 1 sw Y   y xY w)N©g®Gázö?g ‰°áé•Ê¿g\�Âõ(Ü@gNbX9´Àgíž<,Ôšâ¿g)\�Âõ(Àr   gš™™™™™å?gßO�—nñ?çd;ßO�@gV-²�ÀgßO�—n’@gú~j¼t“¨?r@   g°rh‘í|õ?g¢E¶óýÔ Àé   )r   çžï§ÆK·@ç“V-ò?rC   r   r   ç^ºI+	Àr   é   ©çš™™™™™É¿ç      à¿g}Ð³Yõ9ÀgÐDØðT!ÀÚKNV0©ÚmethodÚYTÚignore)Úinvalid)rE   rE   é   rO   )r   ÚarrayÚreshaper=   Úerrstate)r5   r6   r7   r8   s       r)   Ú	test_realzTestPlacePoles.test_real6   s¯   € ô �H‰Hò %ó &ç&-¡g¨a°£mð 	
ô �H‰HÒ=Ó>×FÑFÀqÈ!ÓLˆÜ�H‰HÒ3Ó4ˆð 	�‰�A�q˜! FˆÔ+Ø�‰�A�q˜! DˆÔ)ô �[‰[ Ô*ñ 	)Ø�K‰K˜˜1˜iÔ(÷	)÷ 	)ñ 	)ús   Â&CÃCc                 ó”  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  ddgddgddgddgg«      }t        j                  g d¢«      }t        j                  dd¬«      5  | j                  |||«       d d d «       g d	¢}t        j                  dd¬«      5  | j                  |||d
¬«       d d d «       t        j                  g d¢«      j	                  dd«      }t        j                  g d¢«      j	                  dd«      }g d¢}| j                  |||«       t        j
                  d«      t        j                  d«      z
  }t        j
                  d«      t        j                  dgdz  d«      d d …dd …f   z
  }||d d…d d…f<   ||d d…d d…f<   g d¢}t        j                  dd¬«      5  | j                  |||«       d d d «       g d¢}| j                  |d d…d d…f   |d d…d d…f   |«       g d¢}| j                  |d d…d d…f   |d d…d d…f   |«       t        j                  g d¢«      j	                  dd«      }t        j                  g d¢«      j	                  dd«      }t        j                  g d¢«      }t        j                  dd¬«      5  t        |||«       d d d «       t        j                  g d¢«      }t        j                  dd¬«      5  | j                  |||«       d d d «       y # 1 sw Y   �ŒˆxY w# 1 sw Y   �Œ\xY w# 1 sw Y   �ŒSxY w# 1 sw Y   Œ{xY w# 1 sw Y   y xY w)N)r   é   r   r   )r   r   r   ç«ªªªªª@)r   r   r   r   r   é   )éýÿÿÿéÿÿÿÿù       À      ð¿ù       À      ð?rM   )ÚdividerN   )y        �íµ ÷Æ°¾y        �íµ ÷Æ°>éöÿÿÿé
   iè  ©Úmaxiter)$iœ÷ÿÿiªôÿÿi%÷ÿÿiªýÿÿiFùÿÿiÛøÿÿi[ÿÿÿiåþÿÿiöÿÿiYÿÿÿiýÿÿi÷ÿÿiáýÿÿi\ùÿÿi¸ýÿÿi^ôÿÿicüÿÿiìúÿÿiÑùÿÿi(üÿÿi~þÿÿi¦õÿÿiýÿÿiüÿÿiûýÿÿiÂùÿÿrE   iSùÿÿiÝþÿÿi®þÿÿigÿÿÿiôøÿÿi®ûÿÿipûÿÿi�üÿÿi÷ÿÿé   )i”ÿÿÿiŠþÿÿiôýÿÿiûúÿÿi0ûÿÿi_ÿÿÿiLûÿÿi`ýÿÿiƒýÿÿiñÿÿÿiþÿÿiéÿÿÿi]üÿÿiôüÿÿi#ûÿÿi—ûÿÿiöúÿÿi"úÿÿiHüÿÿi¢úÿÿiÂÿÿÿi<üÿÿi^üÿÿiUüÿÿièüÿÿiýÿÿicúÿÿiþÿÿiùùÿÿiRýÿÿé   )y      9À      =Ày      9À      =@y      ?@      EÀy      ?@      E@y     €@@     €DÀy     €@@     €D@)é   rc   rc   )rc   r^   r^   )r]   éìÿÿÿéâÿÿÿé(   é2   é<   éF   y      4À      Ày      4À      @y      @      @y      @      À)
r]   rd   re   éØÿÿÿiÎÿÿÿéÄÿÿÿéºÿÿÿi°ÿÿÿi¦ÿÿÿiœÿÿÿrY   )
y      $À      $@y      4À      4@y      >À      >@y      DÀ      D@y      IÀ      I@y      $À      $Ày      4À      4Ày      >À      >Ày      DÀ      DÀy      IÀ      IÀ)r   rU   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   r   r   é	   )
r   r   r   r   rW   r   r   rW   rE   rO   rE   )éþÿÿÿy      À      ð?y      À      ð¿ù      ð¿      ð?ù      ð¿      ð¿)rn   rX   éüÿÿÿro   rp   )	r   rP   rR   r=   rQ   ÚonesÚeyeÚdiagr   )r5   r6   r7   r8   Úbig_AÚbig_Bs         r)   Útest_complexzTestPlacePoles.test_complexL   s  € ô �H‰H’lÚ%Ú"Ú"ð$ó %ˆô �H‰H�q˜!�fØ˜!�fØ˜!�fØ˜!�fðó ˆô
 �H‰HÒ+Ó,ˆô �[‰[ °(Ô;ñ 	!Ø�K‰K˜˜1˜aÔ ÷	!ò %ˆÜ�[‰[ °(Ô;ñ 	/Ø�K‰K˜˜1˜a¨ˆKÔ.÷	/ô �H‰HòGó÷
 ‘W˜Q˜q“\ð 	
ô �H‰Hò(ó÷
 ‘w˜q “|ð 	
ò KˆØ�‰�A�q˜!Ôô
 —‘˜Ó ¤§¡¨£Ñ+ˆÜ—‘˜Ó ¤§¡¨!¨¨R©°Ó!2²1°Q±R°4Ñ!8Ñ8ˆØˆˆbˆqˆb��!�ˆe‰Øˆˆbˆqˆb��!�ˆe‰â=ˆÜ�[‰[ °(Ô;ñ 	)Ø�K‰K˜˜u aÔ(÷	)ò 7ˆØ�‰�E˜#˜2˜#˜c˜r˜c˜'‘N E¨#¨2¨#¨c¨r¨c¨'¡N°AÔ6ò6ˆà�‰�E˜#˜2˜#˜c˜r˜c˜'‘N E¨#¨2¨#¨c¨r¨c¨'¡N°AÔ6ô �H‰Hò )ó *ß*1©'°!°A«,ð 	
ä�H‰HÒ*Ó+×3Ñ3°A°aÓ8ˆÜ�H‰HÒ5Ó6ˆÜ�[‰[ °(Ô;ñ 	!Ü˜˜1˜aÔ ÷	!ô
 �H‰HÒ/Ó0ˆÜ�[‰[ °(Ô;ñ 	!Ø�K‰K˜˜1˜aÔ ÷	!ð 	!÷{	!ñ 	!ú÷	/ñ 	/ú÷>	)ñ 	)ú÷ 	!ð 	!ú÷	!ð 	!ús<   Á1LÂ(LÇ L%Ê*L2Ë.L>ÌLÌL"Ì%L/Ì2L;Ì>Mc                 ó  — t        j                  g d¢«      j                  dd«      }t        j                  g d¢«      j                  dd«      }t        j                  g d¢«      }| j                  |||«      }t        j                  |j
                  «      sJ ‚t        j                  |j                  «      sJ ‚t        j                  d«      }| j                  |||«      }t        j                  |j
                  «      sJ ‚t        j                  |j                  «      sJ ‚|d d …df   j                  dd«      }t        j                  d«      }| j                  |||«      }|j
                  dk(  sJ ‚|j                  dk(  sJ ‚y )Nr?   rA   )r   rB   rC   rC   r   r   rD   r   rW   rE   rO   rA   rb   ra   rU   é   rF   )r[   rZ   rX   rn   r   rW   )r   rP   rQ   r=   Úisnanr$   Únb_iter)r5   r6   r7   r8   r:   s        r)   Útest_tricky_BzTestPlacePoles.test_tricky_Bœ   sG  € ô �H‰Hò %ó &ç&-¡g¨a°£mð 	
ô �H‰Hò "ó #ß#*¡7¨1¨a£=ð 	
ô
 �H‰HÒ3Ó4ˆØ�k‰k˜!˜Q Ó"ˆô �x‰x˜Ÿ™Ô!Ð!Ð!Ü�x‰x˜Ÿ™Ô$Ð$Ð$ô �H‰HÐ(Ó)ˆØ�k‰k˜!˜Q Ó"ˆÜ�x‰x˜Ÿ™Ô!Ð!Ð!Ü�x‰x˜Ÿ™Ô$Ð$Ð$ð Ša�ˆc‰F�N‰N˜1˜QÓˆÜ�H‰HÐ(Ó)ˆØ�k‰k˜!˜Q Ó"ˆð �x‰x˜1Š}Ðˆ}Ø�{‰{˜aÒÐÑr+   c           
      ó¤  — t        j                  g d¢«      j                  dd«      }t        j                  g d¢«      j                  dd«      }t        t        t
        ||dd¬«       t        t        t
        ||t        j                  d«      j                  dd«      «       t        t        t
        |d d …d d …t         j                  f   |d«       t        t        t
        ||d d …d d …t         j                  f   d«       t        t        t
        ||d	«       t        t        t
        ||d
«       t        t        t
        ||dd¬«       t        t        t
        ||dd¬«       t        t        t
        ||d«       t        t        t
        t        j                  d«      t        j                  d«      d«       t        j                  d¬«      5 }t        j                  d«       t        ||ddd¬«      }t        |«      dk(  sJ ‚t        |d   j                  t        «      sJ ‚dt        |d   j                   «      v sJ ‚|j"                  dk(  sJ ‚	 d d d «       t        t        t
        ||d«       t        t        t
        |d d …d d…f   |d«       t        t        t
        ||d d…d d …f   d«       t        t        t
        ||dd¬«       y # 1 sw Y   ŒzxY w) N)r   rU   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   rA   )r   r   r   r   rW   r   r   rW   rE   )çÍÌÌÌÌÌ Àçš™™™™™ÀçffffffÀç333333ÀÚfoorJ   rW   )r~   r   r€   r�   rX   )r~   r   r€   é*   ©r$   iÖÿÿÿr_   )rn   rn   rn   rn   )rA   rA   )rA   rE   ©rW   rE   rO   rA   T)ÚrecordÚalways)rY   rn   rX   rq   g¼‰Ø—²Òœ<)r$   r`   rY   z4Convergence was not reached after maxiter iterations)r[   rZ   ù       À      @rn   rO   )rn   rX   rq   éûÿÿÿ)r[   rZ   rˆ   y       À      ÀrI   )r   rP   rQ   Úassert_raisesr    r   Únewaxisrr   ÚwarningsÚcatch_warningsÚsimplefilterÚlenÚ
issubclassÚcategoryÚUserWarningr!   Úmessager{   )r5   r6   r7   Úwr:   s        r)   Útest_errorszTestPlacePoles.test_errors¾   s`  € ô �H‰HÒ9Ó:×BÑBÀ1ÀQÓGˆÜ�H‰HÒ&Ó'×/Ñ/°°!Ó4ˆô 	”j¤+¨q°!Ð5JØ"õ	$ô 	”j¤+¨q°!Ü—h‘hÐ4Ó5×=Ñ=¸aÀÓBô	Dô 	”j¤+¨q²²1´R·Z±Z°Ñ/@À!Ø+ô	-ô 	”j¤+¨q°!²A²a¼¿
¹
°NÑ2CØ+ô	-ô 	”j¤+¨q°!Ð5MÔNô 	”j¤+¨q°!Ð5EÔFô 	”j¤+¨q°!Ð5JØõ	ô 	”j¤+¨q°!Ð5JØ!õ	#ô 	”j¤+¨q°!°]ÔCô 	”j¤+¬r¯w©w°u«~Ü—g‘g˜e“n iô	1ô
 ×$Ñ$¨DÔ1ð 	%°QÜ×!Ñ! (Ô+Ü˜a  M¸ÀrÔJˆCÜ�q“6˜Q’;Ð�;Ü˜a ™eŸn™n¬kÔ:Ð:Ð:ØJÜ˜1˜R™5Ÿ=™=Ó)ñ*ð +ð *à—;‘; "Ò$Ð$Ñ$÷	%ô 	”j¤+¨q°!Ð5KÔLô 	”j¤+¨q²°2°A°2°©w¸¸=ÔIô 	”j¤+¨q°!°B°Q°B²q°D±'¸=ÔIô 	”j¤+¨q°!Ø/¸ö	@÷'	%ð 	%ús   Ç
BKËKN)Ú__name__Ú
__module__Ú__qualname__r=   rS   rw   r|   ÚpytestÚmarkÚthread_unsafer•   © r+   r)   r-   r-   (   s;   „ ò
ò)ò,N!ò`  ðD ‡[�[×Ññ@@ó ñ@@r+   r-   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú	TestSS2TFc           	      óÊ   — t        t        j                  ||f«      t        j                  ||f«      t        j                  ||f«      t        j                  ||f«      d«       y )Nr   )r   r   Úzeros©r5   ÚpÚqÚrs       r)   Úcheck_matrix_shapeszTestSS2TF.check_matrix_shapes  sK   € ÜŒb�h‰h˜˜1�vÓÜ�h‰h˜˜1�vÓÜ�h‰h˜˜1�vÓÜ�h‰h˜˜1�vÓ õ	#r+   c                 ó@   — dD ]  \  }}}| j                  |||«       Œ y )N))rO   rO   rO   )rW   rO   rO   ©rW   rW   rW   )r¥   r¡   s       r)   Útest_shapeszTestSS2TF.test_shapes
  s+   € ð 9ò 	.‰GˆAˆq�!Ø×$Ñ$ Q¨¨1Õ-ñ	.r+   c                 óp  — t        j                  g d¢«      }t        j                  g d¢«      }t        ||«      \  }}}}t        |ddgddggd¬«       t        |d	gdggd¬«       t        |d	d
ggd¬«       t        |d	ggd¬«       t	        ||||«      \  }}t        |d   |d¬«       t        ||d¬«       y )N)ç      ð?ç      @ç      @)rª   ç       @r«   ç       ÀrX   rW   r   ç‚vIhÂ%<=r„   rª   rE   ç›+¡†›„=)r   rP   r	   r   r   )	r5   ÚbÚar6   r7   ÚCÚDÚbbÚaas	            r)   Ú
test_basiczTestSS2TF.test_basic  s°   € ä�H‰H’_Ó%ˆÜ�H‰H’_Ó%ˆä˜1˜a“[‰
ˆˆ1ˆa�Ü˜˜S "˜I¨¨1 vÐ.°UÕ;Ü˜˜R˜D 1 #˜;¨UÕ3Ü˜˜R ˜G˜9¨5Õ1Ü˜˜R˜D˜6¨Õ.ä�q˜!˜Q Ó"‰ˆˆBÜ˜˜1™˜q uÕ-Ü˜˜A EÖ*r+   c                 ó"  — d}t        |Ž \  }}}}t        |dggd¬«       t        |dggd¬«       t        |dggd¬«       t        |dggd¬«       t        ||||«      \  }}t        |ddggd¬«       t        |ddgd¬«       dgd	ggd
f}t        |Ž \  }}}}t        |dggd¬«       t        |dggd¬«       t        |dgdggd¬«       t        |dgd	ggd¬«       t        ||||«      \  }}t        |ddgd	dggd¬«       t        |ddgd¬«       y )N)rE   rW   ç        r¯   r„   r­   r   rª   rb   rE   rW   r¬   )r	   r   r   ©r5   Útfr6   r7   r³   r´   ÚnumÚdens           r)   Útest_zero_order_round_tripz$TestSS2TF.test_zero_order_round_trip  s5  € àˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D˜6¨Õ.ä˜˜A˜q !Ó$‰ˆˆSÜ˜˜r 1˜g˜Y¨UÕ3Ü˜˜b !˜W¨5Õ1àˆs�Q�Cˆj˜!ˆ_ˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D 1 #˜;¨UÕ3Ü˜˜R˜D 1 #˜;¨UÕ3ä˜˜A˜q !Ó$‰ˆˆSÜ˜˜r 1˜g¨¨1 vÐ.°UÕ;Ü˜˜b !˜W¨5Ö1r+   c                 óR  — ddgddggddgf}t        |Ž \  }}}}t        |dggd¬«       t        |dggd¬«       t        |dgdggd¬«       t        |dgdggd¬«       t        ||||«      \  }}t        |dd	gddggd¬«       t        |dd	gd¬«       g d
¢g d¢gg d¢f}t        |Ž \  }}}}t        |ddgddggd¬«       t        |dgdggd¬«       t        |ddgddggd¬«       t        |dgdggd¬«       t        ||||«      \  }}t        |g d¢g d¢gd¬«       t        |g d¢d¬«       g d¢g d¢gg d¢f}t        |Ž \  }}}}t        |g d¢g d¢g d¢gd¬«       t        |dgdgdggd¬«       t        |g d¢g d¢gd¬«       t        |dgdggd¬«       t        ||||«      \  }}t        |g d¢g d¢gd¬«       t        |g d¢d¬«       t        j                  dddggt
        ¬«      ddgf}t        |Ž \  }}}}t        |dggd¬«       t        |dggd¬«       t        |dgdggd¬«       t        |dgdggd¬«       t        ||||«      \  }}t        |ddgddggd¬«       t        |ddgd¬«       t        j                  ddgg d¢gt
        ¬«      g d¢f}t        |Ž \  }}}}t        |dd gddggd¬«       t        |dgdggd¬«       t        |ddgd!d"ggd¬«       t        |dgdggd¬«       t        ||||«      \  }}t        |g d#¢g d¢gd¬«       t        |g d$¢d¬«       y )%NrW   rE   r®   r¯   r„   rª   r¹   ç      ð¿r­   )rW   r   rW   r§   )rª   r¹   rª   )rª   rª   rª   )rW   rE   rO   r…   )r®   rX   rq   )rW   r   r   ©r   rW   r   r   )rª   rE   rO   )r¹   rW   rE   rO   )r   rW   rE   rO   )rª   rE   rO   rA   rO   )Údtypera   g      Àg€h‰eÖ9€9i÷ÿÿÿrX   )rW   ra   rb   r‰   rq   rn   )r¹   rW   rX   )rª   ra   rb   )r	   r   r   r   rP   Úobjectrº   s           r)   Útest_simo_round_tripzTestSS2TF.test_simo_round_trip7  sq  € à�1ˆv˜˜1�vÐ  A Ð'ˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜S˜E˜7¨Õ/Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D 3 %˜=¨uÕ5Ü˜˜R˜D 2 $˜<¨eÕ4ä˜˜A˜q !Ó$‰ˆˆSÜ˜˜r 2˜h¨¨R¨Ð1¸Õ>Ü˜˜b "˜X¨EÕ2âš)Ð$¢iÐ0ˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜S #˜J¨¨R¨Ð1¸Õ>Ü˜˜R˜D 2 $˜<¨eÕ4Ü˜˜S "˜I¨¨B xÐ0°uÕ=Ü˜˜R˜D 2 $˜<¨eÕ4ä˜˜A˜q !Ó$‰ˆˆSÜ˜šlªLÐ9ÀÕFÜ˜š\°Õ6âš)Ð$¢lÐ3ˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜šMª9²iÐ@ÀuÕMÜ˜˜R˜D 1 #¨ sÐ+°%Õ8Ü˜šJª	Ð2¸Õ?Ü˜˜R˜D 1 #˜;¨UÕ3ä˜˜A˜q !Ó$‰ˆˆSÜ˜šmª\Ð:ÀÕGÜ˜š]°Õ7ä�h‰h˜˜A˜q˜6�{¬&Ô1°A°q°6Ð:ˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜S˜E˜7¨Õ/Ü˜˜R˜D˜6¨Õ.Ü˜˜R˜D 2 $˜<¨eÕ4Ü˜˜R˜D 1 #˜;¨UÕ3ä˜˜A˜q !Ó$‰ˆˆSÜ˜˜r 1˜g¨¨1 vÐ.°UÕ;Ü˜˜b !˜W¨5Õ1ä�h‰h˜˜B˜¢Ð+´6Ô:ºIÐFˆÜ˜B�Z‰
ˆˆ1ˆa�Ü˜˜S "˜I¨¨1 vÐ.°UÕ;Ü˜˜R˜D 1 #˜;¨UÕ3Ü˜˜R ˜H r¨2 hÐ/°eÕ<Ü˜˜R˜D 1 #˜;¨UÕ3ä˜˜A˜q !Ó$‰ˆˆSÜ˜škª9Ð5¸EÕBÜ˜šZ¨eÖ4r+   c                 ó¢   — g d¢g d¢g d¢g}dgdgdgg}g d¢g}dgg}t        ||||«      \  }}t        |g d¢gdd	¬
«       t        |g d¢d¬«       y )NrÁ   )r   r   rW   )rX   rq   rn   r   rW   )rb   rW   r   )r¹   r¹   rª   r¬   r¯   r°   ©r$   r%   )rª   r­   ç      @r«   r„   )r   r   )r5   r6   r7   r³   r´   r¼   r½   s          r)   Útest_all_int_arrayszTestSS2TF.test_all_int_arraysp  sb   € Úš	¢<Ð0ˆØˆS�1�#˜�sˆOˆÚˆKˆØˆSˆEˆÜ˜˜A˜q !Ó$‰ˆˆSÜ˜Ò2Ð3¸%ÀeÕLÜ˜Ò1¸Ö>r+   c                 ó<  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  dgdgdgdgg«      }t        j                  g d¢g d	¢g d
¢g«      }t        j                  dgdgdgg«      }t        ||||«      \  }}t        |||d   |d   «      \  }}t        |||d   |d   «      \  }	}
t        |||d   |d   «      \  }}t        ||d¬«       t        |
|d¬«       t        ||d¬«       t        |t        j                  ||	|f«      dd¬«       y )N)rÀ   r¹   rª   r¹   )rÀ   r¹   r­   r¹   )g      Àr¹   r«   r¹   )g       Àç       @r¹   rÇ   ç333333Ó?r¹   g      @)r¹   rª   r¹   r¹   )r¹   r¹   r¹   rª   )rÊ   rÊ   r¹   r¹   rª   r   rW   rE   r¯   r„   r°   rÆ   )r   rP   r   r   Úvstack)r5   r6   r7   r³   r´   Úb_allr²   Úb0Úa0Úb1Úa1Úb2Úa2s                r)   Útest_multioutputzTestSS2TF.test_multioutputy  s;  € ô �H‰HÒ+Ú+Ú+Ú+ð-ó .ˆô �H‰H�s�eØ�eØ�eØ�eðó ˆô �H‰HÒ*Ú*Ú*ð,ó -ˆô �H‰H�s�eØ�eØ�eðó ˆô
 ˜˜A˜q !Ó$‰ˆˆqô �q˜!˜Q˜q™T 1 Q¡4Ó(‰ˆˆBÜ�q˜!˜Q˜q™T 1 Q¡4Ó(‰ˆˆBÜ�q˜!˜Q˜q™T 1 Q¡4Ó(‰ˆˆBô 	˜˜A EÕ*Ü˜˜A EÕ*Ü˜˜A EÕ*Ü˜œrŸy™y¨"¨b°"¨Ó6¸UÈÖOr+   N)
r–   r—   r˜   r¥   r¨   r·   r¾   rÄ   rÈ   rÔ   rœ   r+   r)   rž   rž     s'   „ ò#ò.ò+ò2ò075òr?ó$Pr+   rž   c                   óL   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚTestLsimrU   c                 ó€   — t        «       5 }|j                  t        «       t        |Ž }d d d «       |S # 1 sw Y   S xY w©N)r   Úfilterr   r
   )r5   ÚargsÚsupÚsystems       r)   Ú
lti_nowarnzTestLsim.lti_nowarn£  s=   € ÜÓ ð 	  CØ�J‰J”Ô'Ü˜$�ZˆF÷	 ð ˆ÷	 ð ˆús   ‹3³=c                 ó  — | j                  dddd«      }t        j                  dd«      }t        j                  |«      }t	        |||dg¬«      \  }}}t        j
                  | «      }t        ||«       t        ||«       y ©NrÀ   rª   r¹   r   rb   ©ÚX0©rÝ   r   ÚlinspaceÚ
zeros_liker   Úexpr   ©r5   rÜ   ÚtÚuÚtoutÚyÚxÚ
expected_xs           r)   Útest_first_orderzTestLsim.test_first_order©  sq   € ð —‘  R¨¨2Ó.ˆÜ�K‰K˜˜!ÓˆÜ�M‰M˜!ÓˆÜ˜& ! Q¨C¨5Ô1‰
ˆˆa�Ü—V‘V˜T˜E“]ˆ
Ü˜A˜zÔ*Ü˜A˜zÕ*r+   c                 ó  — t        j                  ddd«      }t        j                  |«      }| j                  dgg d¢«      }t	        |||ddg¬«      \  }}}d|z
  t        j
                  | «      z  }t        |d d …df   |«       y )Nr   r^   ié  rª   ©rª   r­   rª   r¹   rà   )r   rã   rä   rÝ   r   rå   r   )r5   rç   rè   rÜ   ré   rê   rë   rì   s           r)   Útest_second_orderzTestLsim.test_second_order´  sz   € Ü�K‰K˜˜2˜tÓ$ˆÜ�M‰M˜!Óˆð —‘ # ªÓ8ˆÜ˜& ! Q¨C°¨:Ô6‰
ˆˆa�Ø˜D‘j¤B§F¡F¨D¨5£MÑ1ˆ
Ü˜Aša ˜d™G ZÕ0r+   c                 óî   — | j                  dddd«      }t        j                  dd«      }|}t        |||«      \  }}}d|dz  z  }t	        ||| j
                  ¬«       t	        ||| j
                  ¬«       y )Nr¹   rª   r   rb   ç      à?rE   ©Údecimal)rÝ   r   rã   r   r   Údigits_accuracyræ   s           r)   Útest_integratorzTestLsim.test_integrator¿  sp   € à—‘  R¨¨RÓ0ˆÜ�K‰K˜˜!ÓˆØˆÜ˜& ! QÓ'‰
ˆˆa�Ø˜4 ™7‘]ˆ
Ü˜A˜z°4×3GÑ3GÕHÜ˜A˜z°4×3GÑ3GÖHr+   c                 ót  — t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  ddg«      }t        j                  d«      }| j                  ||||«      }t        j                  ddd«      }t        j                  t        |«      d	f«      }t        |||ddg¬
«      \  }}	}
t        j                  | «      }t        j                  | «      }t        j                  d|z  «      }t        |	|«       t        |
d d …df   |«       t        |
d d …df   |«       y )NrÀ   r¹   r®   rª   ©rW   rE   r   g      $@é   rE   )ÚUÚTrá   rW   ©	r   rP   r    rÝ   rã   r�   r   rå   r   ©r5   r6   r7   r³   r´   rÜ   rç   rè   ré   rê   rë   Ú
expected_yÚexpected_x0Úexpected_x1s                 r)   Útest_two_stateszTestLsim.test_two_statesÉ  s  € ä�H‰H�t˜S�k C¨ ;Ð/Ó0ˆÜ�H‰H�s˜C�j 3¨ *Ð-Ó.ˆÜ�H‰H�c˜3�ZÓ ˆÜ�H‰H�VÓˆà—‘  A q¨!Ó,ˆä�K‰K˜˜4 Ó$ˆÜ�H‰H”c˜!“f˜a�[Ó!ˆÜ˜& A¨°°S¨zÔ:‰
ˆˆa�Ü—V‘V˜T˜E“]ˆ
Ü—f‘f˜d˜U“mˆÜ—f‘f˜T D™[Ó)ˆÜ˜A˜zÔ*Ü˜Aša ˜d™G [Ô1Ü˜Aša ˜d™G [Õ1r+   c                 ó  — t        j                  ddgddgg«      }t        j                  dgdgg«      }t        j                  ddgg«      }| j                  |||d«      }t        j                  dd«      }t        j                  |«      }t        |||«      \  }}}	t        j                  t        j                  d|dz  z  |g«      «      }
|dz  }t        |	|
| j                  ¬«       t        ||| j                  ¬«       y )	Nr¹   rª   r­   r   rb   rò   rE   ró   )	r   rP   rÝ   rã   Ú	ones_liker   Ú	transposer   rõ   )r5   r6   r7   r³   rÜ   rç   rè   ré   rê   rë   rì   rþ   s               r)   Útest_double_integratorzTestLsim.test_double_integratorÜ  sÝ   € ä�H‰H�r˜2�h  R Ð)Ó*ˆÜ�H‰H�r�d˜R˜D�\Ó"ˆÜ�H‰H�r˜2�h�ZÓ ˆØ—‘  A q¨"Ó-ˆÜ�K‰K˜˜!ÓˆÜ�L‰L˜‹OˆÜ˜& ! QÓ'‰
ˆˆa�Ü—\‘\¤"§(¡(¨C°$¸±'©M¸4Ð+@Ó"AÓBˆ
Ø˜1‘Wˆ
Ü˜A˜z°4×3GÑ3GÕHÜ˜A˜z°4×3GÑ3GÖHr+   c                 óŽ  — t        j                  ddgddgg«      }t        j                  dgdgg«      }t        j                  ddgg«      }| j                  |||d«      }t        j                  dd«      }t        j                  |«      }t        |||ddg¬«      \  }}}	|t        j                  | «      z  }
t        ||
«       y rß   )r   rP   rÝ   rã   rä   r   rå   r   )r5   r6   r7   r³   rÜ   rç   rè   ré   rê   rë   rþ   s              r)   Útest_jordan_blockzTestLsim.test_jordan_blockê  s³   € ô �H‰H�s˜B�i " c Ð+Ó,ˆÜ�H‰H�r�d˜R˜D�\Ó"ˆÜ�H‰H�r˜2�h�ZÓ ˆØ—‘  A q¨"Ó-ˆÜ�K‰K˜˜!ÓˆÜ�M‰M˜!ÓˆÜ˜& ! Q¨C°¨:Ô6‰
ˆˆa�ØœBŸF™F D 5›MÑ)ˆ
Ü˜A˜zÕ*r+   c                 ót  — t        j                  ddgddgg«      }t        j                  ddgddgg«      }t        j                  ddg«      }t        j                  d«      }| j                  ||||«      }t        j                  ddd«      }t        j                  t        |«      d	f«      }t        |||ddg¬
«      \  }}	}
t        j                  | «      }t        j                  | «      }t        j                  d|z  «      }t        |	|«       t        |
d d …df   |«       t        |
d d …df   |«       y )NrÀ   r¹   r®   rª   rø   r   r¬   ée   rE   rà   rW   rü   rý   s                 r)   Ú	test_misozTestLsim.test_misoú  s  € ä�H‰H�t˜S�k C¨ ;Ð/Ó0ˆÜ�H‰H�s˜C�j 3¨ *Ð-Ó.ˆÜ�H‰H�c˜3�ZÓ ˆÜ�H‰H�U‹OˆØ—‘  A q¨!Ó,ˆä�K‰K˜˜3 Ó$ˆÜ�H‰H”c˜!“f˜a�[Ó!ˆÜ˜& ! Q¨C°¨:Ô6‰
ˆˆa�Ü—V‘V˜T˜E“]ˆ
Ü—f‘f˜d˜U“mˆÜ—f‘f˜T $™YÓ'ˆÜ˜A˜zÔ*Ü˜Aša ˜c™F KÔ0Ü˜Aša ˜c™F KÕ0r+   c                 óî   — | j                  dddd«      }t        j                  dd«      }t        j                  |«      }t	        |||dg¬«      \  }}}t        j
                  | «      }t        ||«       y )NrÀ   rª   r¹   rW   rE   rà   râ   )r5   rÜ   rç   rè   ré   rê   rë   rþ   s           r)   Útest_nonzero_initial_timez"TestLsim.test_nonzero_initial_time  se   € Ø—‘  R¨¨2Ó.ˆÜ�K‰K˜˜!ÓˆÜ�M‰M˜!ÓˆÜ˜& ! Q¨C¨5Ô1‰
ˆˆa�Ü—V‘V˜T˜E“]ˆ
Ü˜A˜zÕ*r+   c                 óâ   — t        j                  g d¢«      }t        j                  g d¢«      }dgddgf}t        t        d¬«      5  t	        |||dg¬«      \  }}}d d d «       y # 1 sw Y   y xY w)N)r¹   rª   rª   r«   )r¹   r¹   rª   rª   rª   r¹   z"Time steps are not equally spaced.)Úmatchrà   )r   rP   rŠ   r    r   )r5   rç   rè   rÜ   ré   rê   rë   s          r)   Útest_nonequal_timestepsz TestLsim.test_nonequal_timesteps  sk   € Ü�H‰HÒ)Ó*ˆÜ�H‰HÒ)Ó*ˆà�%˜#˜s˜Ð$ˆÜœ:Ø!EôGñ 	6ä˜f a¨°¨uÔ5‰JˆD�!�Q÷	6÷ 	6ñ 	6ús   ÁA%Á%A.N)r–   r—   r˜   rõ   rÝ   rí   rð   rö   r  r  r  r
  r  r  rœ   r+   r)   rÖ   rÖ      s;   „ Ø€Oòò	+ò	1òIò2ò&Iò+ò 1ò$+ó6r+   rÖ   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestImpulsec                 ór   — dgddgf}t        |«      \  }}t        j                  | «      }t        ||«       y ©Nrª   ©r   r   rå   r   ©r5   rÜ   ré   rê   rþ   s        r)   rí   zTestImpulse.test_first_order  s:   € ð �%˜#˜c˜Ð#ˆÜ˜&“/‰ˆˆaÜ—V‘V˜T˜E“]ˆ
Ü˜A˜zÕ*r+   c                 óä   — dgddgf}d}t        j                  dd|«      }t        ||¬«      \  }}|j                  |fk(  sJ ‚t	        ||«       t        j
                  | «      }t	        ||«       y )Nrª   rù   r   r­   ©rû   )r   rã   r   r   r   rå   ©r5   rÜ   Únrç   ré   rê   rþ   s          r)   Útest_first_order_fixed_timez'TestImpulse.test_first_order_fixed_time'  sr   € ð
 �%˜#˜c˜Ð#ˆØˆÜ�K‰K˜˜3 Ó"ˆÜ˜& AÔ&‰ˆˆaØ�z‰z˜a˜TÒ!Ð!Ð!Ü˜D !Ô$Ü—V‘V˜Q˜B“Zˆ
Ü˜A˜zÕ*r+   c                 ó|   — dgddgf}t        |d¬«      \  }}dt        j                  | «      z  }t        ||«       y ©Nrª   r«   rà   rÇ   r  r  s        r)   Útest_first_order_initialz$TestImpulse.test_first_order_initial5  sB   € ð
 �%˜#˜c˜Ð#ˆÜ˜& SÔ)‰ˆˆaØœ2Ÿ6™6 4 %›=Ñ(ˆ
Ü˜A˜zÕ*r+   c                 ó~   — dgddgf}t        |dg¬«      \  }}dt        j                  | «      z  }t        ||«       y r  r  r  s        r)   Útest_first_order_initial_listz)TestImpulse.test_first_order_initial_list?  sD   € ð
 �%˜#˜c˜Ð#ˆÜ˜& c UÔ+‰ˆˆaØœ2Ÿ6™6 4 %›=Ñ(ˆ
Ü˜A˜zÕ*r+   c                 óp   — dgddgf}t        |«      \  }}t        j                  |«      }t        ||«       y ©Nrª   r¹   )r   r   r  r   r  s        r)   rö   zTestImpulse.test_integratorI  s7   € à�%˜#˜c˜Ð#ˆÜ˜&“/‰ˆˆaÜ—\‘\ $Ó'ˆ
Ü˜A˜zÕ*r+   c                 óx   — dgg d¢f}t        |«      \  }}|t        j                  | «      z  }t        ||«       y )Nrª   rï   r  r  s        r)   rð   zTestImpulse.test_second_orderP  s;   € ð �%šÐ)ˆÜ˜&“/‰ˆˆaØœBŸF™F D 5›MÑ)ˆ
Ü˜A˜zÕ*r+   c                 ó`   — dgg d¢f}t        |dgddg¬«      \  }}t        |dgdg¬«      \  }}y )Nrª   rï   rO   rb   ra   ©rá   rû   ©r   ©r5   rÜ   ré   rê   s       r)   Útest_array_likezTestImpulse.test_array_likeY  s<   € à�%šÐ)ˆä˜& a S¨Q°¨FÔ3‰ˆˆaÜ˜& a S¨Q¨CÔ0‰ˆ‰ar+   c                 ó4   — dgg d¢f}t        |dd¬«      \  }}y )Nrª   rï   rO   rb   r$  r%  r&  s       r)   Útest_array_like2zTestImpulse.test_array_like2`  s    € Ø�%šÐ)ˆÜ˜& Q¨!Ô,‰ˆ‰ar+   N)r–   r—   r˜   rí   r  r  r  rö   rð   r'  r)  rœ   r+   r)   r  r    s*   „ ò+ò+ò+ò+ò+ò+ò1ó-r+   r  c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestStepc                 óx   — dgddgf}t        |«      \  }}dt        j                  | «      z
  }t        ||«       y r  ©r   r   rå   r   r  s        r)   rí   zTestStep.test_first_orderf  s?   € ð �%˜#˜c˜Ð#ˆÜ�v“,‰ˆˆaØœ2Ÿ6™6 4 %›=Ñ(ˆ
Ü˜A˜zÕ*r+   c                 óê   — dgddgf}d}t        j                  dd|«      }t        ||¬«      \  }}|j                  |fk(  sJ ‚t	        ||«       dt        j
                  | «      z
  }t	        ||«       y )Nrª   rù   r   r­   r  rW   )r   rã   r   r   r   rå   r  s          r)   r  z$TestStep.test_first_order_fixed_timen  sv   € ð
 �%˜#˜c˜Ð#ˆØˆÜ�K‰K˜˜3 Ó"ˆÜ�v Ô#‰ˆˆaØ�z‰z˜a˜TÒ!Ð!Ð!Ü˜D !Ô$ØœŸ™  ›‘^ˆ
Ü˜A˜zÕ*r+   c                 ó‚   — dgddgf}t        |d¬«      \  }}ddt        j                  | «      z  z   }t        ||«       y ©Nrª   r«   rà   rW   r­   r-  r  s        r)   r  z!TestStep.test_first_order_initial|  sG   € ð
 �%˜#˜c˜Ð#ˆÜ�v #Ô&‰ˆˆaØ˜œRŸV™V T E›]Ñ*Ñ*ˆ
Ü˜A˜zÕ*r+   c                 ó„   — dgddgf}t        |dg¬«      \  }}ddt        j                  | «      z  z   }t        ||«       y r0  r-  r  s        r)   r  z&TestStep.test_first_order_initial_list†  sI   € ð
 �%˜#˜c˜Ð#ˆÜ�v 3 %Ô(‰ˆˆaØ˜œRŸV™V T E›]Ñ*Ñ*ˆ
Ü˜A˜zÕ*r+   c                 óJ   — dgddgf}t        |«      \  }}|}t        ||«       y r!  )r   r   r  s        r)   rö   zTestStep.test_integrator�  s0   € ð �%˜˜S˜	Ð"ˆÜ�v“,‰ˆˆaØˆ
Ü˜A˜zÕ*r+   c                 ó„   — dgg d¢f}t        |«      \  }}dd|z   t        j                  | «      z  z
  }t        ||«       y )Nrª   rï   rW   r-  r  s        r)   rð   zTestStep.test_second_order˜  sD   € ð �%šÐ)ˆÜ�v“,‰ˆˆaØ˜!˜d™(¤b§f¡f¨d¨U£mÑ3Ñ3ˆ
Ü˜A˜zÕ*r+   c                 ó6   — dgg d¢f}t        |ddg¬«      \  }}y )Nrª   rï   rb   ra   r  ©r   r&  s       r)   r'  zTestStep.test_array_like¡  s"   € à�%šÐ)ˆä�v ! Q Ô(‰ˆ‰ar+   c                 ó"   — t        g dgdf«       y )NrY   y      ð?        r5  ©r5   s    r)   Útest_complex_inputzTestStep.test_complex_input§  s   € ô 	ˆb�2�$˜ÐÕr+   N)r–   r—   r˜   rí   r  r  r  rö   rð   r'  r8  rœ   r+   r)   r+  r+  e  s*   „ ò+ò+ò+ò+ò+ò+ò)ór+   r+  c                   ó   — e Zd Zd„ Zy)ÚTestLtic                 ó\  — t        dgdg«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  �J ‚t        t        j                  g «      t        j                  dg«      d«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  �J ‚t        g dgd«      }t        dgdgdd«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  �J ‚y )NrW   rY   rO   )	r
   Ú
isinstancer   r   Údtr   rP   r   r   ©r5   Úss     r)   Útest_lti_instantiationzTestLti.test_lti_instantiation¯  s  € ô
 ���b�T‹NˆÜ˜!Ô-Ô.Ð.Ð.Ü˜!œSÔ!Ð!Ð!Ü˜a¤Ô&Ð&Ð&Ø�t‰tˆ|Ðˆ|ô ”—‘˜“œbŸh™h¨ t›n¨aÓ0ˆÜ˜!œ^Ô,Ð,Ð,Ü˜!œSÔ!Ð!Ð!Ü˜a¤Ô&Ð&Ð&Ø�t‰tˆ|Ðˆ|ô ��R�D˜!ÓˆÜ���b�T˜1˜aÓ ˆÜ˜!œZÔ(Ð(Ð(Ü˜!œSÔ!Ð!Ð!Ü˜a¤Ô&Ð&Ð&Ø�t‰tˆ|Ð‰|r+   N)r–   r—   r˜   r@  rœ   r+   r)   r:  r:  ®  s   „ ór+   r:  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestStateSpacec                 ó  — t        dddd«       t        dgdgdgdg«       t        t        j                  ddgddgg«      t        j                  dgdgg«      t        j                  ddgg«      t        j                  dgg«      «       y )NrW   rE   rO   rA   r   )r   r   rP   r7  s    r)   Útest_initializationz"TestStateSpace.test_initializationË  sy   € ä�1�a˜˜AÔÜ�A�3˜˜˜a˜S 1 #Ô&Ü”2—8‘8˜a ˜V a¨ VÐ,Ó-¬r¯x©x¸!¸¸q¸c¸
Ó/CÜ—8‘8˜a ˜V˜HÓ%¤r§x¡x°!°°£õ	8r+   c                 ó&  — t        dddd«      }t        |j                  «       t         «      sJ ‚t        |j                  «       t        «      sJ ‚t        |j                  «       t        «      sJ ‚t        |«      |usJ ‚|j                  «       |usJ ‚y )NrW   rE   rO   rA   )r   r<  Úto_ssÚto_tfr   Úto_zpkr   r>  s     r)   Útest_conversionzTestStateSpace.test_conversionÒ  s}   € ä�q˜!˜Q Ó"ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô ˜!‹} AÑ%Ð%Ð%Ø�w‰w‹y Ñ!Ð!Ñ!r+   c                 ó˜   — t        dddd«      }t        |j                  dg«       t        |j                  dg«       |j                  �J ‚y )NrW   rª   r¹   )r   r   Úpolesr    r=  r>  s     r)   Útest_propertieszTestStateSpace.test_propertiesÝ  sB   € ô
 �q˜!˜Q Ó"ˆÜ˜Ÿ™ " Ô&Ü˜Ÿ™ " Ô&Ø�t‰tˆ|Ð‰|r+   c                 ó   —  G d„ d«      }t        t        j                  ddgddgg«      t        j                  dgdgg«      t        j                  ddgg«      t        j                  dgg«      «      }t        t        j                  d	d
gdd
gg«      t        j                  dgdgg«      t        j                  ddgg«      t        j                  dgg«      «      }|j                  d«      }|j                  d«      }|j                  d«      }t        j                  ddd«      }t        j
                  |«      }d|d<   t        t        t        t        j                  t        j                  t        j                  fD ]Ù  }	t        t         |	d«      |z  ||¬«      d    |	d«      t        |||¬«      d   z  «       t        t        | |	d«      z  ||¬«      d   t        |||¬«      d    |	d«      z  «       t        t        | |	d«      z  ||¬«      d   t        |||¬«      d    |	d«      z  «       t        t        «      5   |	d«      |z   d d d «       ŒÛ t        t        |dz  ||¬«      d   t        |d|z  |¬«      d   «       t        t        ||z  ||¬«      d   t        |t        |||¬«      d   |¬«      d   d¬«       t        t        «      5  ||z   d d d «       t        t        «      5  ||z   d d d «       t        t        «      5  ||z   d d d «       t        t        «      5  | |«       z   d d d «       t        t        «      5   |«       |z   d d d «       t        t        «      5  | |«       z   d d d «       t        t        «      5   |«       |z   d d d «       t        t        |dz   ||¬«      d   d|z  t        |||¬«      d   z   «       t        t        «      5  |t        j                  ddg«      z    d d d «       t        t        «      5  t        j                  ddg«      |z    d d d «       t        t        «      5  ||z    d d d «       t        t        «      5  |t        j                  ddgddgg«      z   d d d «       t        t        «      5  ||z    d d d «       t        t        «      5  | |«       z    d d d «       t        t        «      5   |«       |z    d d d «       t        t        ||z   ||¬«      d   t        |||¬«      d   t        |||¬«      d   z   «       t        t        |dz
  ||¬«      d   d|z  t        |||¬«      d   z   «       t        t        d|z
  ||¬«      d   d|z  t        | ||¬«      d   z   «       t        t        ||z
  ||¬«      d   t        |||¬«      d   t        |||¬«      d   z
  «       t        t        «      5  | |«       z
   d d d «       t        t        «      5   |«       |z
   d d d «       ||z   }
|
j                   dk(  sJ ‚||z  }
|
j                   dk(  sJ ‚d|z  }
|
j                   dk(  sJ ‚| }
|
j                   dk(  sJ ‚y # 1 sw Y   �ŒþxY w# 1 sw Y   �Œ¤xY w# 1 sw Y   �Œ”xY w# 1 sw Y   �Œ„xY w# 1 sw Y   �ŒoxY w# 1 sw Y   �ŒZxY w# 1 sw Y   �ŒExY w# 1 sw Y   �Œ0xY w# 1 sw Y   �ŒØxY w# 1 sw Y   �Œ³xY w# 1 sw Y   �Œ£xY w# 1 sw Y   �ŒzxY w# 1 sw Y   �ŒjxY w# 1 sw Y   �ŒUxY w# 1 sw Y   �Œ@xY w# 1 sw Y   �ŒFxY w# 1 sw Y   �Œ1xY w)Nc                   ó   — e Zd Zy)ú.TestStateSpace.test_operators.<locals>.BadTypeN)r–   r—   r˜   rœ   r+   r)   ÚBadTyperO  ê  s   „ Ør+   rP  rH   gffffffæ?rË   gš™™™™™é¿rW   r   rG   gš™™™™™¹¿gš™™™™™Ù?çš™™™™™¹?gš™™™™™É?éd   rE   )rú   rû   gñhãˆµøä>)r%   rO   rA   rn   )r   r   rP   Úto_discreterã   rä   ÚintÚfloatÚcomplexÚfloat32Ú
complex128r   r   rŠ   Ú	TypeErrorr    r=  )r5   rP  Ús1Ús2Ú
s_discreteÚs2_discreteÚs3_discreterç   rè   Útypr?  s              r)   Útest_operatorszTestStateSpace.test_operatorsç  sÏ  € ÷	ñ 	ô œŸ™ 4¨ +°°T¨{Ð!;Ó<ÜŸ™ 1 #¨ s Ó,ÜŸ™ 1 a & Ó*ÜŸ™ 1 # ›óˆô œŸ™ 4¨ ,°°d°Ð!<Ó=ÜŸ™ 1 #¨ s Ó,ÜŸ™ 1 a & Ó*ÜŸ™ 1 # ›óˆð —^‘^ CÓ(ˆ
Ø—n‘n SÓ)ˆØ—n‘n SÓ)ˆô �K‰K˜˜1˜cÓ"ˆÜ�M‰M˜!ÓˆØˆˆ!‰ô œ¤¬¯©´R·]±]ÄBÇHÁHÐMò 	ˆCÜœD¡ Q£¨"¡°°QÔ7¸Ñ:Ù ›F¤T¨"°°QÔ%7¸Ñ%:Ñ:ô<ô œD ¡c¨!£f¡°°QÔ7¸Ñ:Ü   q¨AÔ.¨qÑ1±C¸³FÑ:ô<ô œD ¡c¨!£f¡°°QÔ7¸Ñ:Ü   q¨AÔ.¨qÑ1±C¸³FÑ:ô<ô œyÓ)ñ Ù�A“˜’÷ð ð	ô 	œ˜R !™V q¨AÔ.¨qÑ1Ü˜R 1 q¡5¨AÔ.¨qÑ1ô	3ô 	œ˜R "™W¨¨QÔ/°Ñ2Ü˜R¤4¨¨a°1Ô#5°aÑ#8¸AÔ>¸qÑAØ!õ	#ô œ9Ó%ñ 	Ø�ŠG÷	ô œ9Ó%ñ 	Ø�ŠO÷	ô œ9Ó%ñ 	%à˜Ò$÷	%ô œ9Ó%ñ 	Ø‘“ŠN÷	ô œ9Ó%ñ 	Ù‹I˜ŠN÷	ô œ9Ó%ñ 	Ø‘“ŠN÷	ô œ9Ó%ñ 	Ù‹I˜ŠN÷	ô 	œ˜R !™V q¨AÔ.¨qÑ1Ø˜A™¤ R¨1°Ô 2°1Ñ 5Ñ5ô	7ô œ:Ó&ñ 	"Ø”—‘˜1˜a˜&Ó!Ò!÷	"ô œ:Ó&ñ 	"Ü�H‰H�a˜�VÓ˜rÒ!÷	"ô œ9Ó%ñ 	Ø�ŠO÷	ô œ:Ó&ñ 	,Ø”—‘˜A˜q˜6 A q 6Ð*Ó+Ò+÷	,ô œ9Ó%ñ 	%à˜Ò$÷	%ô œ9Ó%ñ 	Ø‘“ŠN÷	ô œ9Ó%ñ 	Ù‹I˜ŠN÷	ô 	œ˜R "™W¨¨QÔ/°Ñ2Ü˜R 1¨Ô*¨1Ñ-´°R¸1ÀÔ0BÀ1Ñ0EÑEô	Gô 	œ˜R !™V q¨AÔ.¨qÑ1Ø˜Q™¤ b¨A°Ô!3°AÑ!6Ñ6ô	8ô 	œ˜Q ™V q¨AÔ.¨qÑ1Ø˜A™¤ b S¨A°Ô 3°AÑ 6Ñ6ô	8ô 	œ˜R "™W¨¨QÔ/°Ñ2Ü˜R 1¨Ô*¨1Ñ-´°R¸1ÀÔ0BÀ1Ñ0EÑEô	Gô œ9Ó%ñ 	Ø‘“ŠN÷	ô œ9Ó%ñ 	Ù‹I˜ŠN÷	ð ˜Ñ$ˆØ�t‰t�sŠ{Ðˆ{à˜Ñ$ˆØ�t‰t�sŠ{Ðˆ{à�
‰NˆØ�t‰t�sŠ{Ðˆ{àˆKˆØ�t‰t�sŠ{Ð‰{÷qñ ú÷	ñ 	ú÷	ñ 	ú÷	%ñ 	%ú÷	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	"ñ 	"ú÷	"ñ 	"ú÷	ñ 	ú÷	,ñ 	,ú÷	%ñ 	%ú÷	ñ 	ú÷	ñ 	ú÷ 	ñ 	ú÷	ñ 	úsÌ   ÉY3ËZ Ë5ZÌZÌ/Z'ÍZ4Í3[Î[Ï*[Ð[(Ñ[5Ñ+\Ò!\Ò>\Ó \)×'\6Ø	]Ù3Y=	Ú Z
ÚZÚZ$Ú'Z1Ú4Z>Û[Û[Û[%Û([2Û5[?Ü\Ü\Ü\&Ü)\3Ü6] Ý]N)r–   r—   r˜   rD  rI  rL  r`  rœ   r+   r)   rB  rB  Ê  s   „ ò8ò	"òó~r+   rB  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestTransferFunctionc                 ó    — t        dd«       t        dgdg«       t        t        j                  dg«      t        j                  dg«      «       y ©NrW   rE   )r   r   rP   r7  s    r)   rD  z(TestTransferFunction.test_initializationh  s8   € ä˜˜AÔÜ˜!˜˜q˜cÔ"ÜœŸ™ 1 #›¬¯©°!°«Õ6r+   c                 ó*  — t        ddgddg«      }t        |j                  «       t        «      sJ ‚t        |j	                  «       t         «      sJ ‚t        |j                  «       t        «      sJ ‚t        |«      |usJ ‚|j	                  «       |usJ ‚y )NrW   r   rY   )r   r<  rF  r   rG  rH  r   r>  s     r)   rI  z$TestTransferFunction.test_conversionn  s‚   € ä˜a ˜V a¨ WÓ-ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô   Ó"¨!Ñ+Ð+Ð+Ø�w‰w‹y Ñ!Ð!Ñ!r+   c                 ó€   — t        ddgddg«      }t        |j                  dg«       t        |j                  dg«       y )NrW   r   rY   rª   r¹   )r   r   rK  r    r>  s     r)   rL  z$TestTransferFunction.test_propertiesy  s8   € ô
 ˜a ˜V a¨ WÓ-ˆÜ˜Ÿ™ " Ô&Ü˜Ÿ™ " Õ&r+   N)r–   r—   r˜   rD  rI  rL  rœ   r+   r)   rb  rb  g  s   „ ò7ò	"ó'r+   rb  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestZerosPolesGainc                 ó¦   — t        ddd«       t        dgdgd«       t        t        j                  dg«      t        j                  dg«      d«       y rd  )r   r   rP   r7  s    r)   rD  z&TestZerosPolesGain.test_initialization„  s>   € ä�q˜!˜QÔÜ˜�s˜Q˜C Ô#Ü”r—x‘x  “}¤b§h¡h°¨s£m°QÕ7r+   c                 ó$  — t        ddd«      }t        |j                  «       t        «      sJ ‚t        |j	                  «       t
        «      sJ ‚t        |j                  «       t         «      sJ ‚t        |«      |usJ ‚|j                  «       |usJ ‚y )NrW   rE   rO   )r   r<  rF  r   rG  r   rH  r>  s     r)   rI  z"TestZerosPolesGain.test_conversionŠ  s|   € ä˜1˜a Ó#ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô ˜aÓ ¨Ñ)Ð)Ð)Ø�x‰x‹z Ñ"Ð"Ñ"r+   N)r–   r—   r˜   rD  rI  rœ   r+   r)   rh  rh  ƒ  s   „ ò8ó	#r+   rh  c                   ó�   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTest_abcd_normalizec                 óò   — t        j                  ddgddgg«      | _        t        j                  dgdgg«      | _        t        j                  ddgg«      | _        t        j                  dgg«      | _        y )Nrª   r­   r«   rÇ   rÀ   r¬   ç      @)r   rP   r6   r7   r³   r´   r7  s    r)   Úsetup_methodz Test_abcd_normalize.setup_method—  sa   € Ü—‘˜C ˜:¨¨S zÐ2Ó3ˆŒÜ—‘˜D˜6 C 5˜/Ó*ˆŒÜ—‘˜C ˜:˜,Ó'ˆŒÜ—‘˜C˜5˜'Ó"ˆ�r+   c                 ó,   — t        t        t        «       y rØ   )rŠ   r    r   r7  s    r)   Útest_no_matrix_failsz(Test_abcd_normalize.test_no_matrix_fails�  s   € Ü”j¤.Õ1r+   c                 ót   — t        t        t        ddg| j                  | j                  | j
                  «       y )NrW   rY   )rŠ   r    r   r7   r³   r´   r7  s    r)   Útest_A_nosquare_failsz)Test_abcd_normalize.test_A_nosquare_fails   s'   € Ü”j¤.°1°b°'Ø—f‘f˜dŸf™f d§f¡fõ	.r+   c                 ót   — t        t        t        | j                  ddg| j                  | j
                  «       y ©NrY   rb   ©rŠ   r    r   r6   r³   r´   r7  s    r)   Útest_AB_mismatch_failsz*Test_abcd_normalize.test_AB_mismatch_fails¤  ó'   € Ü”j¤.°$·&±&¸2¸q¸'Ø—f‘f˜dŸf™fõ	&r+   c                 óx   — t        t        t        | j                  | j                  dgdgg| j
                  «       y )NrÇ   r¬   )rŠ   r    r   r6   r7   r´   r7  s    r)   Útest_AC_mismatch_failsz*Test_abcd_normalize.test_AC_mismatch_fails¨  s+   € Ü”j¤.°$·&±&¸$¿&¹&Ø�u˜s˜e�n d§f¡fõ	.r+   c           	      ót   — t        t        t        | j                  | j                  | j
                  ddg«       y )Nrn  r   )rŠ   r    r   r6   r7   r³   r7  s    r)   Útest_CD_mismatch_failsz*Test_abcd_normalize.test_CD_mismatch_fails¬  s'   € Ü”j¤.°$·&±&¸$¿&¹&Ø—f‘f˜s A˜hõ	(r+   c                 ót   — t        t        t        | j                  ddg| j                  | j
                  «       y ru  rv  r7  s    r)   Útest_BD_mismatch_failsz*Test_abcd_normalize.test_BD_mismatch_fails°  rx  r+   c                 ó*  — t        | j                  | j                  | j                  | j                  «      \  }}}}t        || j                  «       t        || j                  «       t        || j                  «       t        || j                  «       y rØ   )r   r6   r7   r³   r´   r   ©r5   r6   r7   r³   r´   s        r)   Ú"test_normalized_matrices_unchangedz6Test_abcd_normalize.test_normalized_matrices_unchanged´  sb   € Ü# D§F¡F¨D¯F©F°D·F±F¸D¿F¹FÓC‰
ˆˆ1ˆa�Ü˜˜4Ÿ6™6Ô"Ü˜˜4Ÿ6™6Ô"Ü˜˜4Ÿ6™6Ô"Ü˜˜4Ÿ6™6Õ"r+   c                 óÒ  — t        | j                  | j                  ddgd«      \  }}}}t        |j                  d   |j                  d   «       t        |j                  d   |j                  d   «       t        |j                  d   |j                  d   «       t        |j                  d   |j                  d   «       t        |j                  d   |j                  d   «       y )NrW   r   )r   r6   r7   r   r   r€  s        r)   r¨   zTest_abcd_normalize.test_shapes»  s¨   € Ü# D§F¡F¨D¯F©F°Q¸°F¸AÓ>‰
ˆˆ1ˆa�Ü˜Ÿ™ ™
 A§G¡G¨A¡JÔ/Ü˜Ÿ™ ™
 A§G¡G¨A¡JÔ/Ü˜Ÿ™ ™
 A§G¡G¨A¡JÔ/Ü˜Ÿ™ ™
 A§G¡G¨A¡JÔ/Ü˜Ÿ™ ™
 A§G¡G¨A¡JÕ/r+   c                 ó†  — t        j                  d«      }t        j                  d«      }t        | j                  ||¬«      \  }}}}t	        || j                  «       t	        ||«       t	        ||«       |j
                  d   |j
                  d   k(  sJ ‚|j
                  d   | j                  j
                  d   k(  sJ ‚y )N©rE   r   )r   r   ©r6   r7   r´   r   rW   ©r   r    r   r6   r   r   )r5   ÚB_ÚD_r6   r7   r³   r´   s          r)   Ú test_zero_dimension_is_not_none1z4Test_abcd_normalize.test_zero_dimension_is_not_none1Ã  sš   € Ü�X‰X�fÓˆÜ�X‰X�fÓˆÜ# d§f¡f°°bÔ9‰
ˆˆ1ˆa�Ü˜˜4Ÿ6™6Ô"Ü˜˜2ÔÜ˜˜2ÔØ�w‰w�q‰z˜RŸX™X a™[Ò(Ð(Ð(Ø�w‰w�q‰z˜TŸV™VŸ\™\¨!™_Ò,Ð,Ñ,r+   c                 ór  — t        j                  d«      }t        j                  d«      }t        | j                  ||¬«      \  }}}}t	        || j                  «       t	        ||«       t	        ||«       |j
                  d   |j
                  d   k(  sJ ‚|j
                  d   |j
                  d   k(  sJ ‚y )Nr„  )r   rE   ©r6   r7   r³   r   rW   r†  )r5   r‡  ÚC_r6   r7   r³   r´   s          r)   Ú test_zero_dimension_is_not_none2z4Test_abcd_normalize.test_zero_dimension_is_not_none2Í  s–   € Ü�X‰X�fÓˆÜ�X‰X�fÓˆÜ# d§f¡f°°bÔ9‰
ˆˆ1ˆa�Ü˜˜4Ÿ6™6Ô"Ü˜˜2ÔÜ˜˜2ÔØ�w‰w�q‰z˜RŸX™X a™[Ò(Ð(Ð(Ø�w‰w�q‰z˜RŸX™X a™[Ò(Ð(Ñ(r+   c                 ól  — t        | j                  | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r7   r³   r´   r   rW   )r   r7   r³   r´   r   r€  s        r)   Útest_missing_Az"Test_abcd_normalize.test_missing_A×  ó�   € Ü# d§f¡f°·±¸$¿&¹&ÔA‰
ˆˆ1ˆa�Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ñ<r+   c                 ól  — t        | j                  | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r6   r³   r´   r   rW   )r   r6   r³   r´   r   r€  s        r)   Útest_missing_Bz"Test_abcd_normalize.test_missing_BÝ  r�  r+   c                 ól  — t        | j                  | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )Nr…  r   rW   )r   r6   r7   r´   r   r€  s        r)   Útest_missing_Cz"Test_abcd_normalize.test_missing_Cã  r�  r+   c                 ól  — t        | j                  | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )Nr‹  r   rW   )r   r6   r7   r³   r   r€  s        r)   Útest_missing_Dz"Test_abcd_normalize.test_missing_Dé  r�  r+   c                 ó  — t        | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r³   r´   r   rW   )r   r³   r´   r   r€  s        r)   Útest_missing_ABz#Test_abcd_normalize.test_missing_ABï  sÖ   € Ü# d§f¡f°·±Ô7‰
ˆˆ1ˆa�Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ð<Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ñ<r+   c                 ó\  — t        | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r7   r´   r   rW   )r   r7   r´   r   r€  s        r)   Útest_missing_ACz#Test_abcd_normalize.test_missing_AC÷  óô   € Ü# d§f¡f°·±Ô7‰
ˆˆ1ˆa�Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ð<Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ñ<r+   c                 ó\  — t        | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r7   r³   r   rW   )r   r7   r³   r   r€  s        r)   Útest_missing_ADz#Test_abcd_normalize.test_missing_AD   r›  r+   c                 ó`  — t        | j                  | j                  ¬«      \  }}}}|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚|j                  d   sJ |j                  d   «       ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚|j                  | j                  j                  d   | j                  j                  d   fk(  sJ ‚y )N)r6   r´   r   rW   )r   r6   r´   r   r€  s        r)   Útest_missing_BCz#Test_abcd_normalize.test_missing_BC	  só   € Ü# d§f¡f°·±Ô7‰
ˆˆ1ˆa�Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�q‰z˜QŸW™W Q™ZÒ'Ð'Ð'Ø�w‰w�qŠzÐ%˜1Ÿ7™7 1™:Ó%ˆzØ�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ð<Ø�w‰w˜4Ÿ6™6Ÿ<™<¨™?¨D¯F©F¯L©L¸©OÐ<Ò<Ð<Ñ<r+   c                 óD   — t        t        t        | j                  ¬«       y )N)r´   )rŠ   r    r   r´   r7  s    r)   Útest_missing_ABC_failsz*Test_abcd_normalize.test_missing_ABC_fails  s   € Ü”j¤.°D·F±FÖ;r+   c                 óZ   — t        t        t        | j                  | j                  ¬«       y )N)r6   r³   )rŠ   r    r   r6   r³   r7  s    r)   Útest_missing_BD_failsz)Test_abcd_normalize.test_missing_BD_fails  ó   € Ü”j¤.°D·F±F¸d¿f¹fÖEr+   c                 óZ   — t        t        t        | j                  | j                  ¬«       y )N)r6   r7   )rŠ   r    r   r6   r7   r7  s    r)   Útest_missing_CD_failsz)Test_abcd_normalize.test_missing_CD_fails  r¤  r+   N)r–   r—   r˜   ro  rq  rs  rw  rz  r|  r~  r�  r¨   r‰  r�  r�  r’  r”  r–  r˜  rš  r�  rŸ  r¡  r£  r¦  rœ   r+   r)   rl  rl  –  sr   „ ò#ò2ò.ò&ò.ò(ò&ò#ò0ò-ò)ò=ò=ò=ò=ò=ò=ò=ò=ò<òFóFr+   rl  c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Ú	Test_bodec                 óp   — t        dgddg«      }g d¢}t        ||¬«      \  }}}g d¢}t        ||d¬«       y )NrW   ©rQ  rW   r^   rR  ©r”   )r   rX   rd   rj   ró   ©r
   r   r   )r5   rÜ   r”   ÚmagÚphaseÚexpected_mags         r)   Útest_01zTest_bode.test_01  s>   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜V qÔ)‰ˆˆ3�Ú(ˆÜ˜C °qÖ9r+   c                 óp   — t        dgddg«      }g d¢}t        ||¬«      \  }}}g d¢}t        ||d¬«       y )NrW   ©rQ  rW   r^   r«  )gÍÌÌÌÌÌÀiÓÿÿÿg33333UÀró   r¬  )r5   rÜ   r”   r­  r®  Úexpected_phases         r)   Útest_02zTest_bode.test_02,  s>   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜V qÔ)‰ˆˆ3�Ú+ˆÜ˜E >¸1Ö=r+   c                 ó2  — t        dgddg«      }g d¢}t        ||¬«      \  }}}|dz  }t        j                  |j                  |«      t        j                  |j
                  |«      z  }dt        j                  t        |«      «      z  }t        ||«       y )NrW   rª  r«  ù              ð?g      4@)	r
   r   r   Úpolyvalr¼   r½   Úlog10Úabsr   )r5   rÜ   r”   r­  r®  Újwrê   r¯  s           r)   Útest_03zTest_bode.test_038  s   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜V qÔ)‰ˆˆ3�Ø�‰VˆÜ�J‰J�v—z‘z 2Ó&¬¯©°F·J±JÀÓ)CÑCˆØœbŸh™h¤s¨1£vÓ.Ñ.ˆÜ˜C Õ.r+   c                 ól  — t        dgddg«      }g d¢}t        ||¬«      \  }}}|dz  }t        j                  |j                  |«      t        j                  |j
                  |«      z  }t        j                  |j                  |j                  «      dz  t        j                  z  }t        ||«       y )NrW   rª  r«  r¶  g     €f@)r
   r   r   r·  r¼   r½   Úarctan2r   r   Úpir   )r5   rÜ   r”   r­  r®  rº  rê   r³  s           r)   Útest_04zTest_bode.test_04C  sŽ   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜V qÔ)‰ˆˆ3�Ø�‰VˆÜ�J‰J�v—z‘z 2Ó&¬¯©°F·J±JÀÓ)CÑCˆÜŸ™ A§F¡F¨A¯F©FÓ3°eÑ;¼b¿e¹eÑCˆÜ˜E >Õ2r+   c                 óŽ   — t        dgddg«      }d}t        j                  dd|«      }t        ||¬«      \  }}}t	        ||«       y ©NrW   r^   rn   ©r  )r
   r   Úlogspacer   r   )r5   rÜ   r  Ú
expected_wr”   r­  r®  s          r)   Útest_05zTest_bode.test_05N  sI   € ô �a�S˜1˜a˜&Ó!ˆØˆä—[‘[  Q¨Ó*ˆ
Ü˜V qÔ)‰ˆˆ3�Ü˜A˜zÕ*r+   c                 óX   — t        dgddg«      }t        |d¬«      \  }}}|d   dk(  sJ ‚y ©NrW   r   rE   rÂ  g{®Gáz„?©r
   r   ©r5   rÜ   r”   r­  r®  s        r)   Útest_06zTest_bode.test_06X  s8   € ô �a�S˜1˜a˜&Ó!ˆÜ˜V qÔ)‰ˆˆ3�Ø�‰t�tŠ|Ð‰|r+   c                 óD   — t        dgg d¢«      }t        |d¬«      \  }}}y )NrW   )rW   r   rR  rE   rÂ  rÈ  rÉ  s        r)   Útest_07zTest_bode.test_07_  s$   € ô �a�Sš+Ó&ˆÜ˜V qÔ)‰ˆˆ3‘r+   c                 ó¦   — t        g g d¢d«      }|j                  t        j                  ddd«      ¬«      \  }}}t	        t        |«      dd¬	«       y )
N)r]   re   rj   rk   rl   rW   rX   rf   rR  r«  i>þÿÿé   ró   )r
   r   r   rÃ  r   ÚminrÉ  s        r)   Útest_08zTest_bode.test_08e  sD   € ä�RÒ2°AÓ6ˆØŸ™¤b§k¡k°"°b¸#Ó&>˜Ó?‰ˆˆ3�ÜœC ›J¨°bÖ9r+   c           	      ó*  — t        j                  g d¢«      }t        j                  |«      j                  }t        j                  dgdgdgg«      }t        j                  g d¢g«      }t        j                  dgg«      }t        «       5 }|j                  t        «       t        ||||«      }t        |d¬«      \  }}	}
d d d «       dt        j                  t        j                  dddz  z   z  «      «      z  }t        	|«       y # 1 sw Y   ŒJxY w)	N©rª   r­   r­   rª   r¹   rª   ©rª   r¹   r¹   rR  rÂ  é   ra   )r   rP   r/   Ú	companionrû   r   rÙ   r   r
   r   r¸  Úsqrtr   )r5   r²   r6   r7   r³   r´   rÛ   rÜ   r”   r­  r®  Úexpected_magnitudes               r)   Útest_from_state_spacezTest_bode.test_from_state_spacek  sè   € ô �H‰HÒ)Ó*ˆÜ×Ñ˜QÓ×!Ñ!ˆÜ�H‰H�s�e˜c˜U S EÐ*Ó+ˆÜ�H‰H’oÐ&Ó'ˆÜ�H‰H�s�e�WÓˆÜÓ ð 	0 CØ�J‰J”Ô'Ü˜˜A˜q !“_ˆFÜ  ¨3Ô/‰MˆAˆs�E÷	0ð
  ¤"§(¡(¬2¯7©7°3¸#ÀÀ1Á¹*Ñ3EÓ+FÓ"GÑGÐÜ˜CÐ!3Õ4÷	0ð 	0ús   Â5D	Ä	DN)r–   r—   r˜   r°  r´  r»  r¿  rÅ  rÊ  rÌ  rÐ  rØ  rœ   r+   r)   r¨  r¨    s/   „ ò:ò
>ò	/ò	3ò+òò*ò:ó5r+   r¨  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTest_freqrespc                 óº   — t        dgddg«      }g d¢}t        ||¬«      \  }}g d¢}g d¢}t        |j                  |d¬«       t        |j                  |d¬«       y )NrW   r²  r«  )g®Gáz®ï?rò   gõÛ×�sF„?)çòÒMbX¹¿rH   rÜ  ró   ©r
   r   r   r   r   )r5   rÜ   r”   ÚHÚexpected_reÚexpected_ims         r)   Útest_output_manualz Test_freqresp.test_output_manual‚  sU   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜ !Ô$‰ˆˆ1Ú)ˆÚ,ˆÜ˜AŸF™F K¸Õ;Ü˜AŸF™F K¸Ö;r+   c                 óV  — t        dgddg«      }g d¢}t        ||¬«      \  }}|dz  }t        j                  |j                  |«      t        j                  |j
                  |«      z  }t        |j                  |j                  «       t        |j                  |j                  «       y )NrW   rª  r«  r¶  )	r
   r   r   r·  r¼   r½   r   r   r   ©r5   rÜ   r”   rÞ  r?  r;   s         r)   Útest_outputzTest_freqresp.test_output�  s€   € ô �a�S˜1˜a˜&Ó!ˆÚˆÜ˜ !Ô$‰ˆˆ1Ø�‰FˆÜ—:‘:˜fŸj™j¨!Ó,¬r¯z©z¸&¿*¹*ÀaÓ/HÑHˆÜ˜AŸF™F H§M¡MÔ2Ü˜AŸF™F H§M¡MÕ2r+   c                 óŒ   — t        dgddg«      }d}t        j                  dd|«      }t        ||¬«      \  }}t	        ||«       y rÁ  )r
   r   rÃ  r   r   )r5   rÜ   r  rÄ  r”   rÞ  s         r)   Útest_freq_rangezTest_freqresp.test_freq_range›  sG   € ô �a�S˜1˜a˜&Ó!ˆØˆÜ—[‘[  Q¨Ó*ˆ
Ü˜ !Ô$‰ˆˆ1Ü˜A˜zÕ*r+   c                 óV   — t        dgddg«      }t        |d¬«      \  }}|d   dk(  sJ ‚y rÇ  )r
   r   )r5   rÜ   r”   rÞ  s       r)   Útest_pole_zerozTest_freqresp.test_pole_zero¥  s6   € ô �a�S˜1˜a˜&Ó!ˆÜ˜ !Ô$‰ˆˆ1Ø�‰t�tŠ|Ð‰|r+   c                 óf  — t        j                  g d¢«      }t        j                  |«      j                  }t        j                  dgdgdgg«      }t        j                  g d¢g«      }t        j                  dgg«      }t        «       5 }|j                  t        «       t        ||||«      }t        |d¬«      \  }}	d d d «       dz  }
ddd|
z  z   d|
dz  z  z   |
d	z  z   z  }t        	j                  |j                  «       t        |	j                  |j                  «       y # 1 sw Y   ŒixY w)
NrÒ  r¹   rª   rÓ  rR  rÂ  r¶  rE   rO   )r   rP   r/   rÕ  rû   r   rÙ   r   r
   r   r   r   r   )r5   r²   r6   r7   r³   r´   rÛ   rÜ   r”   rÞ  r?  r;   s               r)   rØ  z#Test_freqresp.test_from_state_space¬  s  € ô �H‰HÒ)Ó*ˆÜ×Ñ˜QÓ×!Ñ!ˆÜ�H‰H�s�e˜S˜E 3 %Ð(Ó)ˆÜ�H‰H’oÐ&Ó'ˆÜ�H‰H�s�e�WÓˆÜÓ ð 	+ CØ�J‰J”Ô'Ü˜˜A˜q !“_ˆFÜ˜F cÔ*‰DˆAˆq÷	+ð �‰FˆØ˜3  1¡™9 q¨¨A©¡vÑ-°°1±Ñ4Ñ5ˆÜ˜AŸF™F H§M¡MÔ2Ü˜AŸF™F H§M¡MÕ2÷	+ð 	+ús   Â4D'Ä'D0c                 óð   — t        g dgdz  dg«      }g d¢}t        ||¬«      \  }}|dz  }d|dz   dz  z  }t        |j                  |j                  «       t        |j                  |j                  «       y )NrY   rA   rW   rª  r«  r¶  rÝ  rã  s         r)   Útest_from_zpkzTest_freqresp.test_from_zpkÁ  sk   € ä�R˜˜˜Q™ ˜sÓ#ˆÚˆÜ˜ !Ô$‰ˆˆ1Ø�‰FˆØ˜˜A™ ‘z‘>ˆÜ˜AŸF™F H§M¡MÔ2Ü˜AŸF™F H§M¡MÕ2r+   N)	r–   r—   r˜   rá  rä  ræ  rè  rØ  rë  rœ   r+   r)   rÚ  rÚ  €  s    „ ò<ò	3ò+òò3ó*3r+   rÚ  )ç:Œ0âŽyE>rì  ),rŒ   Únumpyr   Únumpy.testingr   r™   r   rŠ   Úscipy._lib._array_apir   r   r   Úscipy.signalr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úscipy.signal._filter_designr   Úscipy.linalgr/   r*   r-   rž   rÖ   r  r+  r:  rB  rb  rh  rl  r¨  rÚ  rœ   r+   r)   ú<module>ró     sÜ   ðÛ ã Ý +Û Ý *÷ñ ÷H÷ H÷ H÷ Hõ 8Ý óN÷*W@ñ W@÷t[Pñ [P÷|{6ñ {6÷|D-ñ D-÷NFñ F÷Rñ ÷8[ñ [÷z'ñ '÷8#ñ #÷&CFñ CF÷La5ñ a5÷HI3ò I3r+   