Ë
    çÿæi?T  ã                   ó  — d dl Z d dlZd dlmZ d dlmZ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  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)Úraises)Úassert_array_almost_equalÚassert_almost_equalÚxp_assert_closeÚxp_assert_equal)ÚdlsimÚdstepÚdimpulseÚtf2zpkÚltiÚdltiÚ
StateSpaceÚTransferFunctionÚZerosPolesGainÚ	dfreqrespÚdbodeÚBadCoefficientsc                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestDLTIc                 ó$  — t        j                  ddgddgg«      }t        j                  g d¢g d¢g«      }t        j                  ddgg«      }t        j                  g d¢g«      }d}t        j                  t        j                  d	d
d¬«      d d …t         j                  f   t        j
                  dd«      t        j
                  dd«      f«      }t        j                  d	dd¬«      }t        j                  g d¢g«      j                  }t        j                  d	d	gddgddgddgddgg«      }	t        |||||f||«      \  }
}}t        ||«       t        |	|«       t        ||
«       t        dd«       |d	dgd d …f   }t        j                  ddg«      }t        |||||f||«      \  }
}}t        ||«       t        |	|«       t        |
«      t        |«      k(  sJ ‚t        j                  ddg«      }t        j                  g d¢«      }t        j                  g d ¢g«      j                  }t        ||df|d d …d	f   |«      \  }
}t        ||«       t        ||
«       t        j                  |d d …d	f   «      }|j                  d!«      }t        ||df||«      \  }
}t        ||«       t        ||
«       t        j                  dd"g«      }t        j                  d#t        j                  d$«      z  d%t        j                  d$«      z  g«      }d}t        j                  g d&¢g«      j                  }t        |||df|d d …d	f   |«      \  }
}t        ||«       t        ||
«       t        d'gd'd'g«      }t        t        t        ||«       y )(NçÍÌÌÌÌÌì?çš™™™™™¹?çš™™™™™É¿©gš™™™™™Ù?r   çš™™™™™¹¿©ç        çš™™™™™©?r   ç333333Ó?©r   r   r   ç      à?r   g      @é   )Únum)r"   é   g{®Gáz„?gü©ñÒMb`¿ç       @)gü©ñÒMbP¿g²c#¯ëG¿g�êD2¤?gºÑŠo·?g#£YäÀ?ga2U0*©S?gü©ñÒMb@?g�ÇTÆ¿Ù?gkHÜcéCG?g'h“Ã'�ò?g5–°6ÆN´¿g9¶ž!ì@g°b§¨mÓ¿)r$   é   é   é   r   ç      ð?r   )r   r)   çš™™™™™É?)r   r   g£ªªªªª
@gÊqÇqÀg�Ð^B{	7@)r"   ç      à¿ù              ð?r&   y       €      ð¿)r   r)   r%   g      @g      @r$   )ÚnpÚasarrayÚhstackÚlinspaceÚnewaxisÚfullÚarrayÚTr   r   ÚlenÚreshapeÚsqrtr   Úassert_raisesÚAttributeError)ÚselfÚaÚbÚcÚdÚdtÚuÚt_inÚ
yout_truthÚ
xout_truthÚtoutÚyoutÚxoutÚu_sparseÚt_sparser#   ÚdenÚuflatÚzdÚpdÚkÚsystems                         út/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/signal/tests/test_dltisys.pyÚ
test_dlsimzTestDLTI.test_dlsim   s[  € ä�J‰J˜˜c˜
 T¨3 KÐ0Ó1ˆÜ�J‰JÒ(Ò*:Ð;Ó<ˆÜ�J‰J˜˜c˜
�|Ó$ˆÜ�J‰JÒ(Ð)Ó*ˆØˆô �I‰I”r—{‘{ 1 c¨qÔ1²!´R·Z±Z°-Ñ@Ü—w‘w˜v tÓ,Ü—w‘w˜v vÓ.ð0ó 1ˆô �{‰{˜1˜c qÔ)ˆô —X‘Xò  ,ð -ó .÷ /0©að	 	ô
 —Z‘Z ! Q Ø"(¨&Ð!1Ø")¨7Ð!3Ø"*¨IÐ!6Ø"+¨ZÐ!8ð	!:ó ;ˆ
ô ! ! Q¨¨1¨bÐ!1°1°dÓ;Ñˆˆd�Dä! *¨dÔ3Ü! *¨dÔ3Ü! $¨Ô-ô 	ˆi˜Ôð �a˜�VšQ�Y‘<ˆÜ—:‘:˜s C˜jÓ)ˆä  ! Q¨¨1¨bÐ!1°8¸XÓFÑˆˆd�Dä! *¨dÔ3Ü! *¨dÔ3Ü�4‹yœC ›IÒ%Ð%Ð%ô �j‰j˜#˜t˜Ó%ˆÜ�j‰jšÓ)ˆÜ—X‘Xò  2ð 3ó 4÷ 56±Að	 	ô ˜C  c˜?¨Aªa°¨d©G°TÓ:‰
ˆˆdä! $¨
Ô3Ü! $¨Ô-ô —
‘
˜1šQ ˜T™7Ó#ˆØ—‘˜dÓ#ˆÜ˜C  c˜?¨E°4Ó8‰
ˆˆdä! $¨
Ô3Ü! $¨Ô-ô �X‰X�s˜D�kÓ"ˆÜ�X‰X�sœRŸW™W Q›ZÑ'¨´·±¸³
Ñ):Ð;Ó<ˆØˆÜ—X‘XÒ9Ð:Ó;×=Ñ=ˆ
ä˜B  A sÐ+¨Qªq°!¨t©W°dÓ;‰
ˆˆdä! $¨
Ô3Ü! $¨Ô-ô �a�S˜1˜a˜&Ó!ˆÜ”n¤e¨V°QÕ7ó    c                 óì  — t        j                  ddgddgg«      }t        j                  g d¢g d¢g«      }t        j                  ddgg«      }t        j                  g d¢g«      }d}t        j                  g d	¢«      t        j                  g d
¢«      t        j                  g d¢«      f}t        |||||fd¬«      \  }}t        |«      dk(  sJ ‚t	        dt        |«      «      D ]9  }	||	   j
                  d   dk(  sJ ‚t        ||	   j                  «       ||	   «       Œ; dgddgdf}
t        j                  g d¢«      }t        |
d¬«      \  }}t        |«      dk(  sJ ‚t        |d   j                  «       |«       t        |
d   |
d   «      dz   }t        |d¬«      \  }}t        |«      dk(  sJ ‚t        |d   j                  «       |«       t        dgddg«      }t        t        t        |«       y )Nr   r   r   r   r   r   r    r!   )
r   ç{®Gáz¤?g9´Èv¾Ÿª?gM„O¯¤?gùNÌz1”ƒ?g½«0™¢¿gÿÌ >°ã·¿gW	’N�3Ä¿g€±ö+(Í¿g¢ÑGÓ¿)
r   g333333³¿gV-²­¿g,Ôšæ§¨¿g»aÛ¢Ì¦¿g±QÖo&¦§¿g*œî†~·ª¿gIØ·“ˆ¯¿gŽ‡p,%Ô²¿g’ [W¶¿)
r   ç{®Gáz„¿g9´Èv¾ŸŠ¿gM„O¯„¿gùNÌz1”c¿g½«0™‚?gÿÌ >°ã—?gW	’N�3¤?g€±ö+(­?g¢ÑG³?é
   ©Únr'   r   r)   )r   r)   r   r$   ©r!   )r-   r.   r	   r5   ÚrangeÚshaper   Úflattenr   r   r8   r9   )r:   r;   r<   r=   r>   r?   Úyout_step_truthrD   rE   ÚiÚtfinÚyout_tfstepÚzpkinrN   s                 rO   Ú
test_dstepzTestDLTI.test_dstepg   sÞ  € ä�J‰J˜˜c˜
 T¨3 KÐ0Ó1ˆÜ�J‰JÒ(Ò*:Ð;Ó<ˆÜ�J‰J˜˜c˜
�|Ó$ˆÜ�J‰JÒ(Ð)Ó*ˆØˆô Ÿ:™:ò 'Dó Eô Ÿ:™:ò '7ó 8ô Ÿ:™:ò 'Bó Cð	Dˆô ˜A˜q ! Q¨Ð+¨rÔ2‰
ˆˆdä�4‹y˜AŠ~Ðˆ~ä�qœ#˜d›)Ö$ˆAØ˜‘7—=‘= Ñ# rÒ)Ð)Ð)Ü% d¨1¡g§o¡oÓ&7¸ÈÑ9KÕLð %ð
 �˜˜S�z 3Ð'ˆÜ—j‘j¢Ó1ˆÜ˜4 1Ô%‰
ˆˆdÜ�4‹y˜AŠ~Ðˆ~Ü! $ q¡'§/¡/Ó"3°[ÔAä�t˜A‘w  Q¡Ó(¨6Ñ1ˆÜ˜5 AÔ&‰
ˆˆdÜ�4‹y˜AŠ~Ðˆ~Ü! $ q¡'§/¡/Ó"3°[ÔAô �a�S˜1˜a˜&Ó!ˆÜ”n¤e¨VÕ4rQ   c                 óì  — t        j                  ddgddgg«      }t        j                  g d¢g d¢g«      }t        j                  ddgg«      }t        j                  g d¢g«      }d}t        j                  g d	¢«      t        j                  g d
¢«      t        j                  g d¢«      f}t        |||||fd¬«      \  }}t        |«      dk(  sJ ‚t	        dt        |«      «      D ]9  }	||	   j
                  d   dk(  sJ ‚t        ||	   j                  «       ||	   «       Œ; dgddgdf}
t        j                  g d¢«      }t        |
d¬«      \  }}t        |«      dk(  sJ ‚t        |d   j                  «       |«       t        |
d   |
d   «      dz   }t        |d¬«      \  }}t        |«      dk(  sJ ‚t        |d   j                  «       |«       t        dgddg«      }t        t        t        |«       y )Nr   r   r   r   r   r   r    r!   )
r   rS   gú~j¼t“ˆ?gàœ¥½Á‡¿g†r¢]…”Ÿ¿g{¿ÑŽ~§¿gBî"LQ.­¿g°E_nƒ°¿gRPÉº1�±¿g‰ã1%Èÿ±¿)
r   gš™™™™™™?gœÄ °rh‘?g±¿ìž<,„?gd’‘³°§m?gZÕ’Žr0[¿gÍSÂ¸ÀŠx¿g^³¦ÃTDƒ¿gg#„Ú~ˆ¿g}T`�³Œ¿)
r   rT   gú~j¼t“h¿gàœ¥½Ág?g†r¢]…”?g{¿ÑŽ~‡?gBî"LQ.�?g°E_nƒ�?gRPÉº1�‘?g‰ã1%Èÿ‘?rU   rV   r'   r   r)   )r   r)   g      ð¿r$   rX   )r-   r.   r
   r5   rY   rZ   r   r[   r   r   r8   r9   )r:   r;   r<   r=   r>   r?   Úyout_imp_truthrD   rE   r]   r^   Úyout_tfimpulser`   rN   s                 rO   Útest_dimpulsezTestDLTI.test_dimpulse”   sá  € ä�J‰J˜˜c˜
 T¨3 KÐ0Ó1ˆÜ�J‰JÒ(Ò*:Ð;Ó<ˆÜ�J‰J˜˜c˜
�|Ó$ˆÜ�J‰JÒ(Ð)Ó*ˆØˆô Ÿ*™*ò &Có Dô Ÿ*™*ò &Dó Eô Ÿ*™*ò &Aó BðCˆô ˜q ! Q¨¨2Ð.°"Ô5‰
ˆˆdä�4‹y˜AŠ~Ðˆ~ä�qœ#˜d›)Ö$ˆAØ˜‘7—=‘= Ñ# rÒ)Ð)Ð)Ü% d¨1¡g§o¡oÓ&7¸ÈÑ9JÕKð %ð
 �˜˜S�z 3Ð'ˆÜŸ™Ò$4Ó5ˆÜ˜d aÔ(‰
ˆˆdÜ�4‹y˜AŠ~Ðˆ~Ü! $ q¡'§/¡/Ó"3°^ÔDä�t˜A‘w  Q¡Ó(¨6Ñ1ˆÜ˜e qÔ)‰
ˆˆdÜ�4‹y˜AŠ~Ðˆ~Ü! $ q¡'§/¡/Ó"3°^ÔDô �a�S˜1˜a˜&Ó!ˆÜ”n¤h°Õ7rQ   c                 ó  — t        j                  dgg«      }t        j                  dgg«      }t        j                  dgg«      }t        j                  dgg«      }d}t        j                  |«      j                  dd«      }t	        ||||df|«      \  }}}	t        |t        j                  t        |«      «      «       t        |t        j                  |df«      «       t        |	t        j                  |df«      «       y )Nr   r"   éÿÿÿÿr$   ©r-   r3   Úzerosr6   r   r   ÚarangeÚfloat)
r:   r;   r<   r=   r>   rW   r@   rD   rE   rF   s
             rO   Útest_dlsim_trivialzTestDLTI.test_dlsim_trivialÀ   sË   € Ü�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆØˆÜ�H‰H�Q‹K×Ñ  AÓ&ˆÜ  ! Q¨¨1¨a °!Ó4Ñˆˆd�DÜ˜œbŸi™i¬¨a«Ó1Ô2Ü˜œbŸh™h¨¨1 vÓ.Ô/Ü˜œbŸh™h¨¨1 vÓ.Õ/rQ   c                 ó  — t        j                  dgg«      }t        j                  dgg«      }t        j                  dgg«      }t        j                  dgg«      }d}t        j                  |«      j                  dd«      }t	        ||||df|d¬«      \  }}}	t        |t        j                  t        |«      «      «       dt        j                  t        |«      «      z  j                  dd«      }
t        ||
«       t        |	|
«       y )Nr!   r   r)   r"   rg   r$   ©Úx0rh   )r:   r;   r<   r=   r>   rW   r@   rD   rE   rF   Úexpecteds              rO   Útest_dlsim_simple1dzTestDLTI.test_dlsim_simple1dÌ   s×   € Ü�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆÜ�H‰H�s�e�WÓˆØˆÜ�H‰H�Q‹K×Ñ  AÓ&ˆÜ  ! Q¨¨1¨a °!¸Ô:Ñˆˆd�DÜ˜œbŸi™i¬¨a«Ó1Ô2Øœ2Ÿ9™9¤U¨1£XÓ.Ñ.×7Ñ7¸¸AÓ>ˆÜ˜˜hÔ'Ü˜˜hÕ'rQ   c                 ód  — d}d}t        j                  |dgd|gg«      }t        j                  dgdgg«      }t        j                  ddgddgg«      }t        j                  dgdgg«      }d}t        j                  |«      j                  dd«      }t	        ||||df|d¬«      \  }	}
}t        |	t        j                  t        |«      «      «       t        j                  ||g«      t        j                  t        |«      «      j                  dd«      z  }t        |
|«       t        ||«       y )	Nr!   g      Ð?r   r)   r"   rg   r$   rn   rh   )r:   Úlambda1Úlambda2r;   r<   r=   r>   rW   r@   rD   rE   rF   rp   s                rO   Útest_dlsim_simple2dzTestDLTI.test_dlsim_simple2dÙ   s#  € ØˆØˆÜ�H‰H�w �nØ˜G�nð&ó 'ˆä�H‰H�s�eØ�eðó ˆä�H‰H�s˜C�jØ˜C�jð"ó #ˆä�H‰H�s�eØ�eðó ˆàˆÜ�H‰H�Q‹K×Ñ  AÓ&ˆÜ  ! Q¨¨1¨a °!¸Ô:Ñˆˆd�DÜ˜œbŸi™i¬¨a«Ó1Ô2ä—H‘H˜g wÐ/Ó0Ü "§	¡	¬%°«(Ó 3× ;Ñ ;¸BÀÓ BñCˆä˜˜hÔ'Ü˜˜hÕ'rQ   c                 óØ  — d}d}t        j                  |dgd|gg«      }t        j                  ddgddgg«      }t        j                  ddgg«      }t        j                  ddgg«      }d}t        ||||df|¬«      \  }}	dd|z
  z  d|t        j                  |«      z  z
  z  }
dd|z
  z  d|t        j                  |«      z  z
  z  }t	        |	d   d d …df   |
«       t	        |	d   d d …df   |«       t        j                  ddg«      }t        ||||df||¬	«      \  }}t        j                  ||g«      t        j                  d
|dz   «      j                  d
d«      z  }d|dd d …f<   |d |…df   t        j                  |d|dz   …d d …f   |«      z   }|d |…df   t        j                  |d|dz   …d d …f   |«      z   }t	        |d   d d …df   |«       t	        |d   d d …df   |«       dgddgdf}t        |d¬«      \  }\  }t	        |g d¢«       t        |j                  g d¢g«       t        |d¬«      \  }\  }t	        |g d¢«       t        |j                  g d¢g«       y )Nr!   g      è?r   r)   rU   r$   rV   r   )rW   ro   rg   r+   r   r'   )r   r   r*   )r   r)   g      ø?)r   r$   r!   )
r-   r3   r	   rj   r   r
   r6   Údotr   r4   )r:   rs   rt   r;   r<   r=   r>   rW   ÚtsÚysÚstp0Ústp1ro   ÚtiÚyiÚimpÚy0Úy1rN   ÚtÚys                        rO   Útest_more_step_and_impulsez#TestDLTI.test_more_step_and_impulseî   s~  € ØˆØˆÜ�H‰H�w �nØ˜G�nð&ó 'ˆä�H‰H�s˜C�jØ˜C�jð"ó #ˆä�H‰H�s˜C�j�\Ó"ˆÜ�H‰H�s˜C�j�\Ó"ˆàˆô ˜˜1˜a  A�¨!Ô,‰ˆˆBð �q˜7‘{Ñ#¨¨g¼¿¹À1»Ñ.EÑ(EÑFˆØ�q˜7‘{Ñ#¨¨g¼¿¹À1»Ñ.EÑ(EÑFˆä˜˜1™ša ˜d™ TÔ*Ü˜˜1™ša ˜d™ TÔ*ô �X‰X�s˜C�jÓ!ˆÜ˜1˜a  A q˜/¨Q°2Ô6‰ˆˆBô �x‰x˜ 'Ð*Ó+ÜŸI™I b¨!¨a©%Ó0×8Ñ8¸¸QÓ?ñ@ˆàˆˆAŠqˆD‰	à��!��Q�‰Zœ"Ÿ&™&  Q q¨1¡u Wªa Z¡°"Ó5Ñ5ˆØ��!��Q�‰Zœ"Ÿ&™&  Q q¨1¡u Wªa Z¡°"Ó5Ñ5ˆä˜˜1™ša ˜d™ RÔ(Ü˜˜1™ša ˜d™ RÔ(ð �%˜#˜t˜ cÐ*ˆÜ˜ !Ô$‰ˆ‰4ˆAÜ˜š=Ô)Ü˜Ÿ™šm˜_Ô-Ü˜6 QÔ'‰ˆ‰4ˆAÜ˜š=Ô)Ü˜Ÿ™šk˜]Õ+rQ   N)
Ú__name__Ú
__module__Ú__qualname__rP   ra   re   rl   rq   ru   rƒ   © rQ   rO   r   r      s)   „ òS8òj+5òZ*8òX
0ò(ò(ó*,,rQ   r   c                   ó   — e Zd Zd„ Zy)ÚTestDltic           	      ó¾  — d}t        dgdg|¬«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  |k(  sJ ‚t        t        j                  g «      t        j                  dg«      d|¬«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  |k(  sJ ‚t        dgdgdd|¬«      }t        |t        «      sJ ‚t        |t         «      sJ ‚t        |t        «      rJ ‚|j                  |k(  sJ ‚t        t        t         d«       t        t        t         ddddd«       y )Nr   r$   rg   ©r?   r'   )r   Ú
isinstancer   r   r?   r-   r3   r   r   r8   Ú
ValueError)r:   r?   Úss      rO   Útest_dlti_instantiationz TestDlti.test_dlti_instantiation  s:  € ð ˆä�!��r�d˜rÔ"ˆÜ˜!Ô-Ô.Ð.Ð.Ü˜!œTÔ"Ð"Ð"Ü˜a¤Ô%Ð%Ð%Ø�t‰t�rŠzÐˆzô ”—‘˜"“œrŸx™x¨¨›~¨q°RÔ8ˆÜ˜!œ^Ô,Ð,Ð,Ü˜!œTÔ"Ð"Ð"Ü˜a¤Ô%Ð%Ð%Ø�t‰t�rŠzÐˆzô �!��r�d˜A˜q RÔ(ˆÜ˜!œZÔ(Ð(Ð(Ü˜!œTÔ"Ð"Ð"Ü˜a¤Ô%Ð%Ð%Ø�t‰t�rŠzÐˆzô 	”j¤$¨Ô*Ü”j¤$¨¨1¨a°°AÕ6rQ   N)r„   r…   r†   r�   r‡   rQ   rO   r‰   r‰     s   „ ó7rQ   r‰   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestStateSpaceDiscc                 óF  — d}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«      |¬«       t        ddddd¬«       y )	Nr   r$   r‹   r&   r'   r(   r   T)r   r-   r3   ©r:   r?   s     rO   Útest_initializationz&TestStateSpaceDisc.test_initialization=  s”   € àˆÜ�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°!°°£¸2õ	?ä�1�a˜˜A $Ö'rQ   c                 ó*  — t        d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 )Nr$   r&   r'   r(   r   r‹   )r   rŒ   Úto_ssÚto_tfr   Úto_zpkr   ©r:   rŽ   s     rO   Útest_conversionz"TestStateSpaceDisc.test_conversionF  s   € ä�q˜!˜Q  dÔ+ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô ˜!‹} AÑ%Ð%Ð%Ø�w‰w‹y Ñ!Ð!Ñ!rQ   c                 ó€   — t        ddddd¬«      }t        |j                  dg«       t        |j                  dg«       y )Nr$   r   r‹   r)   r   )r   r   Úpolesri   r™   s     rO   Útest_propertiesz"TestStateSpaceDisc.test_propertiesQ  s6   € ô
 �q˜!˜Q  dÔ+ˆÜ˜Ÿ™ " Ô&Ü˜Ÿ™ " Õ&rQ   N©r„   r…   r†   r”   rš   r�   r‡   rQ   rO   r‘   r‘   <  s   „ ò(ò	"ó'rQ   r‘   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestTransferFunctionc                 óÌ   — d}t        dd|¬«       t        dgdg|¬«       t        t        j                  dg«      t        j                  dg«      |¬«       t        ddd¬«       y ©Nr   r$   r‹   r&   T)r   r-   r3   r“   s     rO   r”   z(TestTransferFunction.test_initialization\  sO   € àˆÜ˜˜A "Õ%Ü˜!˜˜q˜c bÕ)ÜœŸ™ 1 #›¬¯©°!°«¸"Õ=Ü˜˜A $Ö'rQ   c                 ó.  — t        ddgddg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 )Nr$   r   rg   r   r‹   )r   rŒ   r–   r   r—   r˜   r   r™   s     rO   rš   z$TestTransferFunction.test_conversiond  s„   € ä˜a ˜V a¨ W°Ô6ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô   Ó"¨!Ñ+Ð+Ð+Ø�w‰w‹y Ñ!Ð!Ñ!rQ   c                 ó„   — t        ddgddgd¬«      }t        |j                  dg«       t        |j                  dg«       y )Nr$   r   rg   r   r‹   r)   r   )r   r   rœ   ri   r™   s     rO   r�   z$TestTransferFunction.test_propertieso  s:   € ô
 ˜a ˜V a¨ W°Ô6ˆÜ˜Ÿ™ " Ô&Ü˜Ÿ™ " Õ&rQ   Nrž   r‡   rQ   rO   r    r    [  s   „ ò(ò	"ó'rQ   r    c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestZerosPolesGainc                 óÔ   — d}t        ddd|¬«       t        dgdgd|¬«       t        t        j                  dg«      t        j                  dg«      d|¬«       t        dddd¬«       y r¢   )r   r-   r3   r“   s     rO   r”   z&TestZerosPolesGain.test_initializationz  sW   € àˆÜ�q˜!˜Q 2Õ&Ü˜�s˜Q˜C  rÕ*Ü”r—x‘x  “}¤b§h¡h°¨s£m°Q¸2Õ>Ü�q˜!˜Q 4Ö(rQ   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 )Nr$   r&   r'   r   r‹   )r   rŒ   r–   r   r—   r   r˜   r™   s     rO   rš   z"TestZerosPolesGain.test_conversion‚  s~   € ä˜1˜a  tÔ,ˆÜ˜!Ÿ'™'›)¤ZÔ0Ð0Ð0Ü˜!Ÿ'™'›)Ô%5Ô6Ð6Ð6Ü˜!Ÿ(™(›*¤nÔ5Ð5Ð5ô ˜aÓ ¨Ñ)Ð)Ð)Ø�x‰x‹z Ñ"Ð"Ñ"rQ   N)r„   r…   r†   r”   rš   r‡   rQ   rO   r¦   r¦   y  s   „ ò)ó	#rQ   r¦   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTest_dfreqrespc                 ó¼   — t        dddgd¬«      }g d¢}t        ||¬«      \  }}g d¢}t        |j                  |d¬	«       g d
¢}t        |j                  |d¬	«       y )Nr$   r   r   r‹   )r   r$   rU   ©Úw)gU0*©Ðó?g;ßO�—nÚ?gÏfÕçj+è¿r(   ©Údecimal)g�•C‹lçÃ¿g�&Â†§Wð¿gZd;ßOÙ?)r   r   r   ÚrealÚimag)r:   rN   r­   ÚHÚexpected_reÚexpected_ims         rO   Útest_manualzTest_dfreqresp.test_manual�  sY   € ô " ! a¨ Y°3Ô7ˆÚˆÜ˜ 1Ô%‰ˆˆ1ò 0ˆÜ˜AŸF™F K¸Õ;ò 1ˆÜ˜AŸF™F K¸Ö;rQ   c                 ó†  — t        dddgd¬«      }g d¢}t        ||¬«      \  }}t        j                  |dz  «      }t        j                  |j
                  |«      t        j                  |j                  |«      z  }|j                  }t        |j                  |«       |j                  }t        |j                  |«       y )Nr$   r   r   r‹   ©r   r$   rU   éd   r¬   r,   )
r   r   r-   ÚexpÚpolyvalr#   rI   r°   r   r±   )r:   rN   r­   r²   Újwr‚   r³   r´   s           rO   Ú	test_autozTest_dfreqresp.test_autoŸ  s–   € ô " ! a¨ Y°3Ô7ˆÚˆÜ˜ 1Ô%‰ˆˆ1Ü�V‰V�A˜‘F‹^ˆÜ�J‰J�v—z‘z 2Ó&¬¯©°F·J±JÀÓ)CÑCˆð —f‘fˆÜ˜AŸF™F KÔ0ð —f‘fˆÜ˜AŸF™F KÕ0rQ   c                 ó®   — t        dddgd¬«      }d}t        j                  dt        j                  dd¬«      }t	        ||¬	«      \  }}t        ||«       y )
Nr$   r   r   r‹   rU   r   F©ÚendpointrV   )r   r-   r0   Úpir   r   )r:   rN   rW   Ú
expected_wr­   r²   s         rO   Útest_freq_rangezTest_dfreqresp.test_freq_range°  sM   € ô " ! a¨ Y°3Ô7ˆØˆÜ—[‘[ ¤B§E¡E¨2¸Ô>ˆ
Ü˜ 1Ô%‰ˆˆ1Ü˜A˜zÕ*rQ   c                 ó  — t        dgddgd¬«      }t        j                  «       5  t        j                  ddt        «       t        j                  ddt        «       t        |d¬	«      \  }}d d d «       d
   dk(  sJ ‚y # 1 sw Y   ŒxY w©Nr$   rg   r   r‹   Úignorezdivide by zerozinvalid value encounteredr&   rV   r   r   )r   ÚwarningsÚcatch_warningsÚfilterwarningsÚRuntimeWarningr   )r:   rN   r­   r²   s       rO   Útest_pole_onezTest_dfreqresp.test_pole_oneº  s~   € ô " 1 #¨¨2 w°3Ô7ˆä×$Ñ$Õ&Ü×#Ñ# HÐ.>ÄÔOÜ×#Ñ#ØÐ5´~ôGä˜V qÔ)‰DˆAˆq÷	 'ð
 �‰t�rŠzÐ‰z÷ 'Ð&ús   ¦AB Â B	c                 óL   — t        dgddg«      }t        t        t        |«       y ©Nr$   )r   r8   r9   r   ©r:   rN   s     rO   Ú
test_errorzTest_dfreqresp.test_errorÆ  s    € ä�a�S˜1˜a˜&Ó!ˆÜ”n¤i°Õ8rQ   c                 ó  — t        dgg d¢«      }t        j                  g d¢g d¢g d¢g«      }t        j                  g d¢g«      j                  }t        j                  g d¢g«      }d}t        ||||«      }dt        j                  d	dd
«      z  }t        j                  «       5  t        j                  dt        «       t        ||¬«      \  }}	t        ||¬«      \  }
}d d d «       t        	«       y # 1 sw Y   ŒxY w)Nr&   )r$   r+   r   r   )r!   r   r   )r$   r   r   )r   r$   r   )r   r   r&   r   g      $@éýÿÿÿr!   rÅ   r¬   )r   r-   r3   r4   rj   rÆ   rÇ   Úsimplefilterr   r   r   )r:   Ú	system_TFÚAÚBÚCÚDÚ	system_SSr­   Úw1ÚH1Úw2ÚH2s               rO   Útest_from_state_spacez$Test_dfreqresp.test_from_state_spaceË  s×   € ô ˜!˜šoÓ.ˆ	ä�H‰H’kÚÚð!ó "ˆô �H‰H’i�[Ó!×#Ñ#ˆÜ�H‰H’i�[Ó!ˆØˆä˜˜A˜q !Ó$ˆ	Ø”"—)‘)˜B˜q Ó$Ñ$ˆÜ×$Ñ$Õ&Ü×!Ñ! (¬OÔ<Ü˜y¨AÔ.‰FˆB�Ü˜y¨AÔ.‰FˆB�÷ 'ô
 	˜B Õ#÷ 'Ð&ús   Â&;C6Ã6C?c                 óœ   — t        g dgd«      }t        dddg«      }g d¢}t        ||¬«      \  }}t        ||¬«      \  }}t        ||«       y )Nr*   r   r$   r   r·   r¬   )r   r   r   )r:   Ú
system_ZPKrÒ   r­   rØ   rÙ   rÚ   rÛ   s           rO   Útest_from_zpkzTest_dfreqresp.test_from_zpkà  sQ   € ä˜"˜c˜U 3Ó'ˆ
Ü˜˜q $˜iÓ(ˆ	ÚˆÜ˜:¨Ô+‰ˆˆBÜ˜9¨Ô*‰ˆˆBÜ˜B Õ#rQ   N)
r„   r…   r†   rµ   r¼   rÂ   rÊ   rÎ   rÜ   rß   r‡   rQ   rO   rª   rª   Ž  s%   „ ò<ò1ò"+ò
ò9ò
$ó*$rQ   rª   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	Test_bodec                 óþ   — d}t        dddg|¬«      }dddt        j                  g}t        ||¬«      \  }}}g d¢}t	        ||d	¬
«       g d¢}t	        ||d	¬
«       t        t        j                  |«      |z  |«       y )Nr   r   r$   r   r‹   r!   r¬   )g©ÐDØ!Àgvqà­!Àg$—ÿ�~;#Àg¾0™*(Àr(   r®   )gáz®G¡ÀgŒJê¤AÀg_)ËÇþPÀg     €fÀ)r   r-   rÀ   r   r   r   r3   )	r:   r?   rN   r­   rÚ   ÚmagÚphaseÚexpected_magÚexpected_phases	            rO   rµ   zTest_bode.test_manualì  s   € ð ˆÜ! #¨¨4 y°RÔ8ˆØ�#�qœ"Ÿ%™%Ð ˆÜ˜v¨Ô+‰ˆˆC�ò =ˆÜ˜C °qÕ9ò BˆÜ˜E >¸1Õ=ô 	œŸ™ › bÑ(¨"Õ-rQ   c                 ó  — t        dddgd¬«      }t        j                  dddt        j                  g«      }t	        ||¬«      \  }}}t        j
                  |dz  «      }t        j                  |j                  |«      t        j                  |j                  |«      z  }d	t        j                  t        |«      «      z  }t        ||«       t        j                  t        j                  |«      «      }	t        ||	«       y )
Nr   r$   r   r   r‹   r!   r¬   r,   g      4@)r   r-   r3   rÀ   r   r¹   rº   r#   rI   Úlog10Úabsr   Úrad2degÚangle)
r:   rN   r­   rÚ   rã   rä   r»   r‚   rå   ræ   s
             rO   r¼   zTest_bode.test_autoÿ  sÁ   € ô " #¨¨4 y°SÔ9ˆÜ�H‰H�c˜3 ¤2§5¡5Ð)Ó*ˆÜ˜v¨Ô+‰ˆˆC�Ü�V‰V�A˜‘F‹^ˆÜ�J‰J�v—z‘z 2Ó&¬¯©°F·J±JÀÓ)CÑCˆð œbŸh™h¤s¨1£vÓ.Ñ.ˆÜ˜C Ô.ô Ÿ™¤B§H¡H¨Q£KÓ0ˆÜ˜E >Õ2rQ   c                 óº   — d}t        dddgd¬«      }d}t        j                  dt        j                  |d¬	«      |z  }t	        ||¬
«      \  }}}t        ||«       y )Nr   r   r$   r   r‹   rU   r   Fr¾   rV   )r   r-   r0   rÀ   r   r   )r:   r?   rN   rW   rÁ   r­   rã   rä   s           rO   Ú
test_rangezTest_bode.test_range  sY   € ð ˆÜ! #¨¨4 y°SÔ9ˆØˆä—[‘[ ¤B§E¡E¨1°uÔ=ÀÑBˆ
Ü˜f¨Ô*‰ˆˆ3�Ü˜A˜zÕ*rQ   c                 ó  — t        dgddgd¬«      }t        j                  «       5  t        j                  ddt        «       t        j                  ddt        «       t        |d¬	«      \  }}}d d d «       d
   dk(  sJ ‚y # 1 sw Y   ŒxY wrÄ   )r   rÆ   rÇ   rÈ   rÉ   r   )r:   rN   r­   rã   rä   s        rO   rÊ   zTest_bode.test_pole_one  s€   € ô " 1 #¨¨2 w°3Ô7ˆä×$Ñ$Õ&Ü×#Ñ# HÐ.>ÄÔOÜ×#Ñ#ØÐ5´~ôGä! &¨AÔ.‰MˆAˆs�E÷	 'ð
 �‰t�rŠzÐ‰z÷ 'Ð&ús   ¦ABÂB
c                 ó@   — t        dgg d¢d¬«      }t        |d¬«       y )Nr$   )r$   r   r¸   r   r‹   r&   rV   )r   r   rÍ   s     rO   Útest_imaginaryzTest_bode.test_imaginary'  s   € ô " 1 #¢{°sÔ;ˆÜˆf˜ÖrQ   c                 óL   — t        dgddg«      }t        t        t        |«       y rÌ   )r   r8   r9   r   rÍ   s     rO   rÎ   zTest_bode.test_error-  s    € ä�a�S˜1˜a˜&Ó!ˆÜ”n¤e¨VÕ4rQ   N)	r„   r…   r†   rµ   r¼   rí   rÊ   rð   rÎ   r‡   rQ   rO   rá   rá   ê  s    „ ò.ò&3ò"	+ò
òó5rQ   rá   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTestTransferFunctionZConversionz=Test private conversions between 'z' and 'z**-1' polynomials.c                 ó$  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  ||«      \  }}t	        ||«       t	        ||«       t        j
                  ||«      \  }}t	        ||«       t	        ||«       y )N©r%   r'   r(   )ç      @é   é   ©r-   r.   r   Ú
_z_to_zinvr   Ú
_zinv_to_z©r:   r#   rI   Únum2Úden2s        rO   Ú	test_fullz)TestTransferFunctionZConversion.test_full6  sr   € ä�j‰jšÓ%ˆÜ�j‰jšÓ%ˆÜ%×0Ñ0°°cÓ:‰
ˆˆdÜ˜˜TÔ"Ü˜˜TÔ"ä%×0Ñ0°°cÓ:‰
ˆˆdÜ˜˜TÔ"Ü˜˜TÕ"rQ   c                 ó,  — t        j                  ddg«      }t        j                  g d¢«      }t        j                  ||«      \  }}t	        g d¢|«       t	        ||«       t        j
                  ||«      \  }}t	        g d¢|«       t	        ||«       y )Nr%   r'   )é2   r÷   rø   )r   r&   r'   )r%   r'   r   rù   rü   s        rO   Útest_numeratorz.TestTransferFunctionZConversion.test_numeratorB  sv   € ä�j‰j˜#˜q˜Ó"ˆÜ�j‰jšÓ$ˆÜ%×0Ñ0°°cÓ:‰
ˆˆdÜš TÔ*Ü˜˜TÔ"ä%×0Ñ0°°cÓ:‰
ˆˆdÜš TÔ*Ü˜˜TÕ"rQ   c                 ó,  — t        j                  g d¢«      }t        j                  ddg«      }t        j                  ||«      \  }}t	        ||«       t	        g d¢|«       t        j
                  ||«      \  }}t	        ||«       t	        g d¢|«       y )Nrõ   rö   r÷   )r   r"   r÷   )rö   r÷   r   rù   rü   s        rO   Útest_denominatorz0TestTransferFunctionZConversion.test_denominatorN  sv   € ä�j‰jšÓ$ˆÜ�j‰j˜#˜q˜Ó"ˆÜ%×0Ñ0°°cÓ:‰
ˆˆdÜ˜˜TÔ"Üš TÔ*ä%×0Ñ0°°cÓ:‰
ˆˆdÜ˜˜TÔ"Üš TÕ*rQ   N)r„   r…   r†   Ú__doc__rÿ   r  r  r‡   rQ   rO   ró   ró   3  s   „ ÙGò
#ò
#ó
+rQ   ró   ) rÆ   Únumpyr-   Úpytestr   r8   Úscipy._lib._array_apir   r   r   r   Úscipy.signalr   r	   r
   r   r   r   r   r   r   r   r   r   r   r‰   r‘   r    r¦   rª   rá   ró   r‡   rQ   rO   Ú<module>r
     s‡   ðó ã Ý *÷ó ÷=÷ =÷ =ó =÷
J,ñ J,÷Z7ñ 7÷>'ñ '÷>'ñ '÷<#ñ #÷*Y$ñ Y$÷xF5ñ F5÷R%+ò %+rQ   