+
    nDjY                        ^ RI t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIH	t	H
t
HtHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIH t  R"R lt! ! R R	4      t" ! R
 R4      t# ! R R4      t$ ! R R4      t% ! R R4      t& ! R R4      t' ! R R4      t( ! R R4      t) ! R R4      t*]! ]4       ! R R4      4       t+ ! R R4      t, ! R R4      t-]P\                  P_                  R ]]]]].4      R! 4       t0R# )#    N)GenericAlias)raises)assert_almost_equalxp_assert_equalxp_assert_closemake_xp_test_casexp_result_type)ss2tftf2ssltidltibodefreqresplsimimpulsestepabcd_normalizeplace_polesTransferFunction
StateSpaceZerosPolesGain)BadCoefficientsc           
     &   VP                  4       pV  F  pRp\        VP                  ^ ,          4       F  p\        P                  ! \        P
                  ! V4      \        P                  ! V4      .\        P
                  ! W,          4      \        P                  ! W,          4      .W#4      '       g   K  Rp\        P                  ! W4        M	  V'       d   K  \        R\        V4      ,           R,           \        V4      ,           4      h	  R# )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.
FTz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   &&&&   X/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/signal/tests/test_ltisys.py_assert_poles_closer,      s     
BBHHQK(F{{BGGBK5GGBJ/1DE' ' 		"% ) u/#b'9FBSWLMM     c                   >   a  ] tR t^*t o R tR tR tR tR tRt	V t
R# )TestPlacePolesc                *   \        WV3/ VB p\        P                  P                  V\        P                  ! W%P
                  4      ,
          4      w  rg\        WeP                  4       \        WeP                  4       \        W5P                  4       V# )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+   _checkTestPlacePoles._check,   sj    
 !,V,iimmAq//(B$BCH&9&9:H&8&89A112
r-   c                   \         P                  ! . RO4      P                  ^^4      p\         P                  ! . RO4      P                  ^^4      p\         P                  ! . R	O4      pV P                  WVRR7       V P                  WVRR7       \         P                  ! RR7      ;_uu_ 4        V P                  WR
4       RRR4       R#   + '       g   i     R# ; i)Gz?KNV0methodYTignore)invalidNrB   gʿg\(@gNbX9g<,Ԛg)\(r   g?gOn?d;O@gV-gOn@g~jt?rJ   grh|?gE )r   K@V-?rL   r   r   ^I+	r   皙ɿ      g}гY9gDT!)   rQ      rR   )r   arrayreshaper?   errstate)r7   r8   r9   r:   s   &   r+   	test_realTestPlacePoles.test_real8   s     HH % &&-gam 	
 HH=>FFq!LHH34 	A!F+A!D) [[**KKi( +***s   0CC	c           	        \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! ^ ^ .^ ^ .^^ .^ ^..4      p\         P                  ! . R
O4      p\         P                  ! RRR7      ;_uu_ 4        V P                  WV4       RRR4       . ROp\         P                  ! RRR7      ;_uu_ 4        V P                  WVRR7       RRR4       \         P                  ! . RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%N^NR&NR'NR(NR)NR*NR+NR,NR-NR.N4      P	                  ^^4      p\         P                  ! . R/O4      P	                  ^^4      p. R0OpV P                  WV4       \         P
                  ! R14      \         P                  ! ^4      ,
          p\         P
                  ! R24      \         P                  ! ^.^
,          ^4      R3,          ,
          pWR4&   W%R5&   . R6Op\         P                  ! RRR7      ;_uu_ 4        V P                  WEV4       RRR4       . R7OpV P                  VRR	1RR	13,          VRR	1RR	13,          V4       . R8OpV P                  VRR	1RR	13,          VRR	1RR	13,          V4       \         P                  ! . R9O4      P	                  ^^4      p\         P                  ! . R:O4      P	                  ^^4      p\         P                  ! . R;O4      p\         P                  ! RRR7      ;_uu_ 4        \        WV4       RRR4       \         P                  ! . R<O4      p\         P                  ! RRR7      ;_uu_ 4        V P                  WV4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)=r   rG   )dividerH   Ni  maxiter)r      r   r   )r   r   r   竪@)r   r   r   r   )r^                             ?)y        ưy        ư>
   iii%iiFii[iiiYiiii\ii^iciii(i~iiiiiiSiiigiiipii)iiiii0i_iLi`iiiii]ii#iii"iHiii<i^iUiiiciiiR)y      9      =y      9      =@y      ?@      Ey      ?@      E@y     @@     Dy     @@     D@)   rd   )rd   rc   )NNN:   NN)N   Nrg   )rg   :N   N)rb   (   2   <   F   y      4      y      4      @y      @      @y      @      )
rb   rj   rk   iiii)
y      $      $@y      4      4@y      >      >@y      D      D@y      I      I@y      $      $y      4      4y      >      >y      D      Dy      I      I)r   r\   r   r   r   r   r   r]   r   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   	   )
r   r   r   r   rf   r   r   rf   rQ   rR   )y            ?y                        ?            )rt   r_   ru   rv   )	r   rS   rU   r?   rT   oneseyediagr   )r7   r8   r9   r:   big_Abig_Bs   &     r+   test_complexTestPlacePoles.test_complexN   s1    HHl%""$ % HHq!f!f!f!f 
 HH+, [[(;;KKa  < %[[(;;KKaK. < HHGU G5 G% G Gu Ge GT G4 G GGG$G&*G,1G37G9>G@DGFKGGG $G&+G-1G37G9=G?DGFGGING G G  $G &+G -2G 49G ;?G AFG
 WQq\ 	
 HH(
 wq| 	
 KA!
  + !R!24!88ee=[[(;;KKa( < 7E#2#crc'NE#2#crc'NA66E#2#crc'NE#2#crc'NA6 HH ) **1'!A, 	
HH*+33Aa8HH56[[(;;a  <
 HH/0[[(;;KKa  <;{ <;; <;;> <;;  <; <;;s<   =N<N&#N:(O5O!N#	&N7	:O	O	!O2	c                X   \         P                  ! . RO4      P                  ^^4      p\         P                  ! . RO4      P                  ^^4      p\         P                  ! . RO4      pV P                  WV4      p\         P                  ! VP
                  4      '       g   Q h\         P                  ! VP                  4      '       g   Q h\         P                  ! R4      pV P                  WV4      p\         P                  ! VP
                  4      '       g   Q h\         P                  ! VP                  4      '       g   Q hVR,          P                  ^^4      p\         P                  ! R4      pV P                  WV4      pVP
                  ^ 8X  g   Q hVP                  ^ 8X  g   Q hR# )rB   NrI   )r   rK   rL   rL   r   r   rM   r   rf   rQ   rR      ri   rh   r\      rN   )ra   r`   r_   rt   re   r   )r   rS   rT   r?   isnanr&   nb_iter)r7   r8   r9   r:   r<   s   &    r+   test_tricky_BTestPlacePoles.test_tricky_B   sI    HH % &&-gam 	
 HH " ##*71a= 	

 HH34kk!" xx!!!!xx$$$$ HH()kk!"xx!!!!xx$$$$ cFNN1QHH()kk!" xx1}}{{ar-   c           
        \         P                  ! . RO4      P                  ^^4      p\         P                  ! . RO4      P                  ^^4      p\        \        \
        WRRR7       \        \        \
        W\         P                  ! R4      P                  ^^4      4       \        \        \
        VRR\         P                  3,          VR4       \        \        \
        WRR\         P                  3,          R4       \        \        \
        WR4       \        \        \
        WR4       \        \        \
        WR^*R7       \        \        \
        WRRR7       \        \        \
        WR4       \        \        \
        \         P                  ! R4      \         P                  ! R4      R4       \        P                  ! RR7      ;_uu_ 4       p\        P                  ! R4       \        WRR	^*R
7      p\        V4      ^8X  g   Q h\        VR,          P                  \        4      '       g   Q hR\        VR,          P                   4      9   g   Q hVP"                  ^*8X  g   Q h RRR4       \        \        \
        WR4       \        \        \
        VR,          VR4       \        \        \
        WR,          R4       \        \        \
        WRRR7       R#   + '       g   i     L{; i)r   foorD   re   r&   rZ   T)recordalwaysgؗҜ<)r&   r[   z4Convergence was not reached after maxiter iterationsNrC   )r   r\   r   r   r   r   r   r]   r   r   r   r   r   r   r   r   )r   r   r   r   rf   r   r   rf   ) 皙ffffff333333)r   r   r   r   r_   )r   r   r   i)rt   rt   rt   rt   )r   r   )r   rQ   rf   rQ   rR   r   r^   )r^   rt   r_   rw   )ra   r`                @rt   )re   NrR   N)rt   r_   rw   )r   re   )ra   r`   r   y             )r   rS   rT   assert_raisesr"   r   newaxisrx   warningscatch_warningssimplefilterlen
issubclasscategoryUserWarningr#   messager   )r7   r8   r9   wr<   s   &    r+   test_errorsTestPlacePoles.test_errors   s5   HH9:BB1QGHH&'//!4 	j+q5J"	$ 	j+qhh45==aB	D 	j+q1RZZ/@!+	- 	j+qAa

N2C+	- 	j+q5MN 	j+q5EF 	j+q5J	 	j+q5J!	# 	j+q]C 	j+rwwu~ggeni	1
 $$D11Q!!(+aMrJCq6Q;;aennk::::J1R5==)* + *;;"$$$ 2 	j+q5KL 	j+qw=I 	j+qD'=I 	j+q/	@' 21s   BKK+	 N)__name__
__module____qualname____firstlineno__r?   rV   r}   r   r   __static_attributes____classdictcell____classdict__s   @r+   r/   r/   *   s*     
),N!`  D@@ @@r-   r/   c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )	TestSS2TFi  c           	         \        \        P                  ! W34      \        P                  ! W34      \        P                  ! W134      \        P                  ! W234      ^ 4       R# )r   N)r
   r   zerosr7   pqrs   &&&&r+   check_matrix_shapesTestSS2TF.check_matrix_shapes  sC    bhhvhhvhhvhhv	#r-   c                B    R F  w  rpV P                  WV4       K  	  R# )rR   N))rR   rR   rR   )rf   rR   rR   rf   rf   rf   )r   r   s   &   r+   test_shapesTestSS2TF.test_shapes  s"     9GA!$$Q1- 9r-   c                p   \         P                  ! . RO4      p\         P                  ! . RO4      p\        W4      w  r4rV\        VRR.^^ ..RR7       \        VR .^ ..RR7       \        VR ^..RR7       \        VR ..RR7       \	        W4WV4      w  rx\        V^ ,          VRR7       \        WRR7       R# )	      ?vIh%<=r   +=N)r         @      @)r          @r          r_   )r   rS   r   r   r
   )	r7   bar8   r9   CDbbaas	   &        r+   
test_basicTestSS2TF.test_basic  s    HH_%HH_%1[
aS"I1v.U;RD1#;U3RG951RD6.qQ"1qu-E*r-   c                   Rp\        V!  w  r#rE\        VR..RR7       \        VR..RR7       \        VR..RR7       \        VR..RR7       \        W#WE4      w  rg\        VR^ ..RR7       \        VR^ .RR7       ^.^..^3p\        V!  w  r#rE\        VR..RR7       \        VR..RR7       \        VR.^ ..RR7       \        VR.^..RR7       \        W#WE4      w  rg\        VR^ .^^ ..RR7       \        VR^ .RR7       R# )	rQ           r   r   r   r   r   N)rQ   rf   )r   r   r
   r7   tfr8   r9   r   r   numdens   &       r+   test_zero_order_round_trip$TestSS2TF.test_zero_order_round_trip   s!   BZ
aRD6.RD6.RD6.RD6.q$r1gYU3b!W51sQCj!_BZ
aRD6.RD6.RD1#;U3RD1#;U3q$r1g1v.U;b!W51r-   c                0   ^^.^^..^^.3p\        V!  w  r#rE\        VR	..RR7       \        VR..RR7       \        VR.R
..RR7       \        VR.R..RR7       \        W#WE4      w  rg\        VRR.RR..RR7       \        VRR.RR7       . RO. RO.. RO3p\        V!  w  r#rE\        VR
R
.RR..RR7       \        VR.R..RR7       \        VR
R.RR..RR7       \        VR.R..RR7       \        W#WE4      w  rg\        V. RO. RO.RR7       \        V. RORR7       . RO. RO.. RO3p\        V!  w  r#rE\        V. RO. RO. RO.RR7       \        VR.^ .^ ..RR7       \        V. RO. RO.RR7       \        VR.^ ..RR7       \        W#WE4      w  rg\        V. RO. RO.RR7       \        V. RORR7       \        P                  ! ^^^..\
        R7      ^^.3p\        V!  w  r#rE\        VR..RR7       \        VR..RR7       \        VR.R..RR7       \        VR.^..RR7       \        W#WE4      w  rg\        VR^.^^..RR7       \        VR^.RR7       \        P                  ! ^R.. RO.\
        R7      . RO3p\        V!  w  r#rE\        VRR.^^ ..RR7       \        VR.^ ..RR7       \        VRR.RR..RR7       \        VR.^..RR7       \        W#WE4      w  rg\        V. RO. RO.RR7       \        V. R ORR7       R# )!rf   r   r   r   r   r   dtypeghe99Nr         )rf   r   rf   r   )r   r   r   )r   r   r   )rf   rQ   rR   r   r_   rw   )r   r_   rw   )rf   r   r   r   rf   r   )r   rQ   rR   )r   rf   rQ   rR   )r   rf   rQ   rR   )r   rQ   rR   r   g      i)rf   rh   ri   r   rt   )r   rf   r_   )r   rh   ri   )r   r   r
   r   rS   objectr   s   &       r+   test_simo_round_tripTestSS2TF.test_simo_round_trip8  s?   1v1vA'BZ
aSE7/RD6.RD3%=u5RD2$<e4q$r2hR1>b"XE2)$i0BZ
aS#JR1>RD2$<e4S"IBx0u=RD2$<e4q$lL9F\6)$l3BZ
aM9i@uMRD1#s+%8J	2?RD1#;U3q$m\:G]7hhAq6{&1Aq6:BZ
aSE7/RD6.RD2$<e4RD1#;U3q$r1g1v.U;b!W51hhB+6:IFBZ
aS"I1v.U;RD1#;U3RHr2h/e<RD1#;U3q$k95EBZe4r-   c                    . RO. RO. RO.p^ .^ .^..p. R	O.p^ ..p\        WW44      w  rV\        V. R
O.RRR7       \        V. RORR7       R# )r   r   r   r&   r'   r   Nr   )r   r   rf   )r_   rw   rt   )ri   rf   r   )r   r   r   r   )r   r         @r   )r
   r   )r7   r8   r9   r   r   r   r   s   &      r+   test_all_int_arraysTestSS2TF.test_all_int_arraysq  s\    	<0S1#sOKSEq$23%eL1>r-   c                ^   \         P                  ! . R	O. R
O. RO. RO.4      p\         P                  ! R.R.R.R..4      p\         P                  ! . RO. RO. RO.4      p\         P                  ! R.R.R ..4      p\        WW44      w  rV\        WV^ ,          V^ ,          4      w  rx\        WV^,          V^,          4      w  r\        WV^,          V^,          4      w  r\        WRR7       \        WRR7       \        WRR7       \        V\         P                  ! WyV34      RRR7       R# )r   r   333333?g      @r   r   r   r   N)r   r   r   r   )r   r   r   r   )g      r   r   r   )g              @r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rS   r
   r   vstack)r7   r8   r9   r   r   b_allr   b0a0b1a1b2a2s   &            r+   test_multioutputTestSS2TF.test_multioutputz  s!    HH++++- . HHseeee  HH***, - HHseee 
 q$ qQqT1Q4(qQqT1Q4(qQqT1Q4( 	E*E*E*ryy""6UOr-   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r+   r   r     s0     #.+2075r?$P $Pr-   r   c                   `   a  ] tR tRt o ^tR tR tR tR tR t	R t
R tR	 tR
 tR tRtV tR# )TestLsimi  c                    \         P                  ! 4       ;_uu_ 4        \         P                  ! R \        4       \	        V!  pRRR4       V#   + '       g   i     X# ; i)rG   N)r   r   r   r   r   )r7   argssystems   &* r+   
lti_nowarnTestLsim.lti_nowarn  sF    $$&&!!(O<$ZF '  '& s   %AA	c                   V P                  RR R R4      p\        P                  ! ^ ^4      p\        P                  ! V4      p\	        WVR .R7      w  rEp\        P
                  ! V) 4      p\        Wg4       \        WW4       R# r   r   X0Nr   r   r   linspace
zeros_liker   expr   r7   r   tutoutyx
expected_xs   &       r+   test_first_orderTestLsim.test_first_order  si     R2.KK!MM!&QC51
VVTE]
A*A*r-   c                "   \         P                  ! ^ ^
R4      p\         P                  ! V4      pV P                  R.. RO4      p\	        W2VRR.R7      w  rEpRV,
          \         P
                  ! V) 4      ,          p\        VR,          V4       R# )r   i  r   r   r   Nr   r   r   r   )r   r   r   r   r   r   r   )r7   r   r   r   r   r   r   r   s   &       r+   test_second_orderTestLsim.test_second_order  sr    KK2t$MM! #8&QC:6
DjBFFD5M1
AdGZ0r-   c                    V P                  R RRR 4      p\        P                  ! ^ ^4      pTp\        WV4      w  rEpRV^,          ,          p\	        WgV P
                  R7       \	        WWV P
                  R7       R# )r   r         ?decimalN)r   r   r   r   r   digits_accuracyr   s   &       r+   test_integratorTestLsim.test_integrator  sh    RR0KK!&Q'
47]
A43G3GHA43G3GHr-   c                   \         P                  ! RR.RR..4      p\         P                  ! R R.RR ..4      p\         P                  ! R R.4      p\         P                  ! R4      pV P                  WW44      p\         P                  ! ^ R^4      p\         P                  ! \        V4      ^34      p\        WWVR R .R7      w  rp
\         P                  ! V) 4      p\         P                  ! V) 4      p\         P                  ! RV,          4      p\        W4       \        V
R,          V4       \        V
R	,          V4       R# )
r   r   g      $@)UTr   Nr   r   rf   rQ   r   re   rf   	r   rS   r   r   r   r   r   r   r   r7   r8   r9   r   r   r   r   r   r   r   r   
expected_yexpected_x0expected_x1s   &             r+   test_two_statesTestLsim.test_two_states  s    HHtSkC;/0HHsCj3*-.HHc3Z HHVq,KK4$HHc!fa[!&Sz:
VVTE]
ffdUmffTD[)A*AdG[1AdG[1r-   c                $   \         P                  ! R R.R R ..4      p\         P                  ! R .R..4      p\         P                  ! RR ..4      pV P                  WVR 4      p\         P                  ! ^ ^4      p\         P                  ! V4      p\        WFV4      w  rxp	\         P                  ! \         P                  ! RV^,          ,          V.4      4      p
V^,          p\        WV P                  R7       \        WV P                  R7       R# )r   r   r   r  r  N)	r   rS   r   r   	ones_liker   	transposer   r
  )r7   r8   r9   r   r   r   r   r   r   r   r   r  s   &           r+   test_double_integratorTestLsim.test_double_integrator  s    HHr2hR)*HHrdRD\"HHr2hZ q"-KK!LLO&Q'
\\"((C$'M4+@"AB
1W
A43G3GHA43G3GHr-   c                   \         P                  ! RR .RR..4      p\         P                  ! R.R ..4      p\         P                  ! R R..4      pV P                  WVR4      p\         P                  ! ^ ^4      p\         P                  ! V4      p\        WFVRR .R7      w  rxp	V\         P                  ! V) 4      ,          p
\        W4       R# r   )r   rS   r   r   r   r   r   r   )r7   r8   r9   r   r   r   r   r   r   r   r  s   &          r+   test_jordan_blockTestLsim.test_jordan_block  s     HHsBi"c+,HHrdRD\"HHr2hZ q"-KK!MM!&QC:6
BFFD5M)
A*r-   c                   \         P                  ! RR.RR..4      p\         P                  ! R R.RR ..4      p\         P                  ! R R.4      p\         P                  ! R4      pV P                  WW44      p\         P                  ! ^ R^e4      p\         P                  ! \        V4      ^34      p\        WWVR R .R7      w  rp
\         P                  ! V) 4      p\         P                  ! V) 4      p\         P                  ! RV,          4      p\        W4       \        V
R,          V4       \        V
R	,          V4       R# )
r   r   r   r   Nr   r   r  r   r  r  r  s   &             r+   	test_misoTestLsim.test_miso  s    HHtSkC;/0HHsCj3*-.HHc3Z HHUOq,KK3$HHc!fa[!&QC:6
VVTE]
ffdUmffT$Y'A*AcFK0AcFK0r-   c                    V P                  RR R R4      p\        P                  ! ^^4      p\        P                  ! V4      p\	        WVR .R7      w  rEp\        P
                  ! V) 4      p\        WW4       R# r   r   )r7   r   r   r   r   r   r   r  s   &       r+   test_nonzero_initial_time"TestLsim.test_nonzero_initial_time  s_    R2.KK!MM!&QC51
VVTE]
A*r-   c           	        \         P                  ! . RO4      p\         P                  ! . RO4      pR.RR .3p\        \        RR7      ;_uu_ 4        \	        W2VR.R7      w  rEpRRR4       R#   + '       g   i     R# ; i)r   r   z"Time steps are not equally spaced.)matchr   N)r   r   r   r   )r   r   r   r   )r   rS   r   r"   r   )r7   r   r   r   r   r   r   s   &      r+   test_nonequal_timesteps TestLsim.test_nonequal_timesteps  sq    HH)*HH)*%#s$:!EG Gfu5JDQG G G Gs   A..A?	r   N)r   r   r   r   r
  r   r   r  r  r  r  r  r"  r%  r)  r   r   r   s   @r+   r   r     sC     O	+	1I2&I+ 1$+6 6r-   r   c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )TestImpulsei  c                r    R .R R .3p\        V4      w  r#\        P                  ! V) 4      p\        W44       R# r   Nr   r   r   r   r7   r   r   r   r  s   &    r+   r   TestImpulse.test_first_order   s6     %#c#&/VVTE]
A*r-   c                    R .R R .3p^p\         P                  ! ^ RV4      p\        WR7      w  rEVP                  V38X  g   Q h\	        WC4       \         P
                  ! V) 4      p\	        WV4       R# r   r   r  N)r   r   r   r   r   r   r7   r   nr   r   r   r  s   &      r+   test_first_order_fixed_time'TestImpulse.test_first_order_fixed_time(  sj    
 %#c#KK3"&&zzaT!!!D$VVQBZ
A*r-   c                    R .R R .3p\        VRR7      w  r#R\        P                  ! V) 4      ,          p\        W44       R# r   r   r   r   Nr/  r0  s   &    r+   test_first_order_initial$TestImpulse.test_first_order_initial6  s>    
 %#c#&S)2664%=(
A*r-   c                    R .R R .3p\        VR.R7      w  r#R\        P                  ! V) 4      ,          p\        W44       R# r:  r/  r0  s   &    r+   test_first_order_initial_list)TestImpulse.test_first_order_initial_list@  s@    
 %#c#&cU+2664%=(
A*r-   c                p    R .R R.3p\        V4      w  r#\        P                  ! V4      p\        W44       R# r   r   N)r   r   r  r   r0  s   &    r+   r  TestImpulse.test_integratorJ  s3    %#c#&/\\$'
A*r-   c                    R .. RO3p\        V4      w  r#V\        P                  ! V) 4      ,          p\        W44       R# r   Nr  r/  r0  s   &    r+   r  TestImpulse.test_second_orderQ  s7     %)&/BFFD5M)
A*r-   c                ^    R .. RO3p\        V^.^^.R7      w  r#\        V^.^.R7      w  r#R# r   )r   r  Nr  r   r7   r   r   r   s   &   r+   test_array_likeTestImpulse.test_array_likeZ  s:    %)&aSQF3&aSQC0ar-   c                4    R .. RO3p\        V^^R7      w  r#R# rG  rH  rI  s   &   r+   test_array_like2TestImpulse.test_array_like2a  s     %)&Q!,ar-   r   N)r   r   r   r   r   r7  r;  r>  r  r  rJ  rM  r   r   r   s   @r+   r,  r,    s2     ++++++1- -r-   r,  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )TestStepif  c                    R .R R .3p\        V4      w  r#R \        P                  ! V) 4      ,
          p\        W44       R# r.  r   r   r   r   r0  s   &    r+   r   TestStep.test_first_orderg  s;     %#c#v,2664%=(
A*r-   c                    R .R R .3p^p\         P                  ! ^ RV4      p\        WR7      w  rEVP                  V38X  g   Q h\	        WC4       ^\         P
                  ! V) 4      ,
          p\	        WV4       R# r3  )r   r   r   r   r   r   r5  s   &      r+   r7  $TestStep.test_first_order_fixed_timeo  sn    
 %#c#KK3"v#zzaT!!!D$^
A*r-   c                    R .R R .3p\        VRR7      w  r#^R\        P                  ! V) 4      ,          ,           p\        W44       R# r   r   r   r   NrR  r0  s   &    r+   r;  !TestStep.test_first_order_initial}  sC    
 %#c#v#&RVVTE]**
A*r-   c                    R .R R .3p\        VR.R7      w  r#^R\        P                  ! V) 4      ,          ,           p\        W44       R# rW  rR  r0  s   &    r+   r>  &TestStep.test_first_order_initial_list  sE    
 %#c#v3%(RVVTE]**
A*r-   c                H    R .R R.3p\        V4      w  r#Tp\        W44       R# rA  )r   r   r0  s   &    r+   r  TestStep.test_integrator  s,     %S	"v,
A*r-   c                    R .. RO3p\        V4      w  r#^^V,           \        P                  ! V) 4      ,          ,
          p\        W44       R# rD  rR  r0  s   &    r+   r  TestStep.test_second_order  s@     %)v,!d(bffdUm33
A*r-   c                6    R .. RO3p\        V^^.R7      w  r#R# )r   r4  Nr  r   rI  s   &   r+   rJ  TestStep.test_array_like  s"    %)v!Q(ar-   c                $    \        . R.R34       R# )rf   Nr^   y      ?        r`  r7   s   &r+   test_complex_inputTestStep.test_complex_input  s     	b2$r-   r   N)r   r   r   r   r   r7  r;  r>  r  r  rJ  rd  r   r   r   s   @r+   rP  rP  f  s2     ++++++) r-   rP  c                   &   a  ] tR tRt o R tRtV tR# )TestLtii  c                   \        ^.R.4      p\        V\        4      '       g   Q h\        V\         4      '       g   Q h\        V\        4      '       d   Q hVP                  e   Q h\        \
        P                  ! . 4      \
        P                  ! R.4      ^4      p\        V\        4      '       g   Q h\        V\         4      '       g   Q h\        V\        4      '       d   Q hVP                  e   Q h\        . R.^4      p\        ^.R.^^4      p\        V\        4      '       g   Q h\        V\         4      '       g   Q h\        V\        4      '       d   Q hVP                  e   Q hR# rf   Nr^   )	r   
isinstancer   r   dtr   rS   r   r   r7   ss   & r+   test_lti_instantiationTestLti.test_lti_instantiation  s1   
 bTN!-....!S!!!!a&&&&tt|| bhhtna0!^,,,,!S!!!!a&&&&tt|| RD!bT1a !Z((((!S!!!!a&&&&tt||r-   r   N)r   r   r   r   rn  r   r   r   s   @r+   rg  rg    s      r-   rg  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestStateSpacei  c                   \        ^^^^4       \        ^.^.^.^.4       \        \        P                  ! ^^.^^..4      \        P                  ! ^.^..4      \        P                  ! ^^ ..4      \        P                  ! ^ ..4      4       \        P                  ! ^.\        P                  R7      p\        V^^^4      pVP                  P
                  VP                  P
                  u;8X  dO   VP                  P
                  u;8X  d3   VP                  P
                  u;8X  d   \        P                  8X  g   Q h Q h\        V^^R4      pVP                  P
                  VP                  P
                  u;8X  dO   VP                  P
                  u;8X  d3   VP                  P
                  u;8X  d   \        P                  8X  g   Q h Q hR# )rf   r   Ny      ?      ?)r   r   rS   int64r8   r   r9   r   r   float64
complex128)r7   AAss0ss1s   &   r+   test_initialization"TestStateSpace.test_initialization  s?   1aAA3aS1#&288aVaV,-rxx!qc
/C88aVH%rxx!	8 XXqc*Q1%uu{{ceekkUSUU[[UCEEKKU2::UUUUUQ4(uu{{ceekkXSUU[[XCEEKKX2==XXXXXr-   c                T   \        ^^^^4      p\        VP                  4       \         4      '       g   Q h\        VP                  4       \        4      '       g   Q h\        VP                  4       \        4      '       g   Q h\        V4      VJg   Q hVP                  4       VJg   Q hR# rf   N)r   rj  to_ssto_tfr   to_zpkr   rl  s   & r+   test_conversionTestStateSpace.test_conversion  s    q!Q"!'')Z0000!'')%56666!((*n5555 !}A%%%wwy!!!r-   c                    \        ^^^^4      p\        VP                  R.4       \        VP                  R.4       VP                  e   Q hR# )rf   r   r   N)r   r   polesr   rk  rl  s   & r+   test_propertiesTestStateSpace.test_properties  sB    
 q!Q""&"&tt||r-   c                    ! R  R4      p\        \        P                  ! RR.RR..4      \        P                  ! ^.^ ..4      \        P                  ! ^^ ..4      \        P                  ! ^ ..4      4      p\        \        P                  ! RR.RR..4      \        P                  ! ^.^ ..4      \        P                  ! ^^ ..4      \        P                  ! ^ ..4      4      pVP                  R4      pVP                  R4      pVP                  R4      p\        P                  ! ^ ^^d4      p\        P
                  ! V4      p^V^ &   \        \        \        \        P                  \        P                  \        P                  3 EF  p	\        \        V	! ^4      V,          WR7      ^,          V	! ^4      \        W(VR7      ^,          ,          4       \        \        W)! ^4      ,          WR7      ^,          \        W(VR7      ^,          V	! ^4      ,          4       \        \        W)! ^4      ,          WR7      ^,          \        W(VR7      ^,          V	! ^4      ,          4       \        \        4      ;_uu_ 4        V	! ^4      V,           RRR4       EK  	  \        \        V^,          WR7      ^,          \        V^V,          VR7      ^,          4       \        \        W#,          WR7      ^,          \        V\        W8VR7      ^,          VR7      ^,          R	R
7       \        \        4      ;_uu_ 4        W",           RRR4       \        \        4      ;_uu_ 4        W$,           RRR4       \        \        4      ;_uu_ 4        WE,           RRR4       \        \        4      ;_uu_ 4        W!! 4       ,           RRR4       \        \        4      ;_uu_ 4        V! 4       V,           RRR4       \        \        4      ;_uu_ 4        W!! 4       ,           RRR4       \        \        4      ;_uu_ 4        V! 4       V,           RRR4       \        \        V^,           WR7      ^,          ^V,          \        W(VR7      ^,          ,           4       \        \        4      ;_uu_ 4        V\        P                  ! ^^.4      ,            RRR4       \        \        4      ;_uu_ 4        \        P                  ! ^^.4      V,            RRR4       \        \        4      ;_uu_ 4        W$,            RRR4       \        \        4      ;_uu_ 4        V\        P                  ! ^^.^^..4      ,           RRR4       \        \        4      ;_uu_ 4        WE,            RRR4       \        \        4      ;_uu_ 4        W!! 4       ,            RRR4       \        \        4      ;_uu_ 4        V! 4       V,            RRR4       \        \        W#,           WR7      ^,          \        W(VR7      ^,          \        W8VR7      ^,          ,           4       \        \        V^,
          WR7      ^,          RV,          \        W(VR7      ^,          ,           4       \        \        ^V,
          WR7      ^,          ^V,          \        V) WR7      ^,          ,           4       \        \        W#,
          WR7      ^,          \        W(VR7      ^,          \        W8VR7      ^,          ,
          4       \        \        4      ;_uu_ 4        W!! 4       ,
           RRR4       \        \        4      ;_uu_ 4        V! 4       V,
           RRR4       WF,           p
V
P                   R8X  g   Q hWF,          p
V
P                   R8X  g   Q h^V,          p
V
P                   R8X  g   Q hV) p
V
P                   R8X  g   Q hR#   + '       g   i     EK}  ; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELp; i  + '       g   i     ELW; i  + '       g   i     EL=; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL_; i  + '       g   i     ELK; i  + '       g   i     EL2; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i)c                       ] tR tRtRtR# ).TestStateSpace.test_operators.<locals>.BadTypei  r   N)r   r   r   r   r   r   r-   r+   BadTyper    s    r-   r  gffffff?r   g?皙?g?)r  r  Ngh㈵>)r'   rP   grO   grt   )r   r   rS   to_discreter   r   intfloatcomplexfloat32ru  r   r   r   	TypeErrorr"   rk  )r7   r  s1s2
s_discretes2_discretes3_discreter   r   typrm  s   &          r+   test_operatorsTestStateSpace.test_operators  sz   	 	 4+T{!;<1#s,1a&*1# 4,d!<=1#s,1a&*1# ^^C(
nnS)nnS) KK1c"MM!! R]]BHHMCDQ"7:FT"Q%7%::< Dc!f7: A.q1CF:< Dc!f7: A.q1CF:< y))A *) N 	R!Vq.q1R1q5A.q1	3 	RW/2R41#5a#8A>qA!	# 9%%G & 9%%O & 9%%$ & 9%%N & 9%%IN & 9%%N & 9%%IN & 	R!Vq.q1AR 21 55	7 :&&1a&!! ' :&&HHaVr! ' 9%%O & :&&Aq6Aq6*++ ' 9%%$ & 9%%N & 9%%IN & 	RW/2R*1-R0B10EE	G 	R!Vq.q1Qb!3A!66	8 	QVq.q1AbSA 3A 66	8 	RW/2R*1-R0B10EE	G 9%%N & 9%%IN & $tts{{$tts{{
Ntts{{Ktts{{q *)) &%% &%% &%% &%% &%% &%% &%% '&& '&& &%% '&& &%% &%% &%%  &%% &%%s    _4>	`	&	`	`16a#aa->b1 b0 b)/	b=$c	c%c9/dd!3d54`	`	`.	1a	a	a*	-a>	b	b&	)b:	=c	c"	%c6	9d
	d	!d2	5e	r   N)
r   r   r   r   ry  r  r  r  r   r   r   s   @r+   rq  rq    s!     Y	"~ ~r-   rq  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestTransferFunctionio  c                    \        ^^4       \        ^.^.4       \        \        P                  ! ^.4      \        P                  ! ^.4      4       R# r|  )r   r   rS   rc  s   &r+   ry  (TestTransferFunction.test_initializationp  s8    A!qc"1#!6r-   c                X   \        ^^ .^R.4      p\        VP                  4       \        4      '       g   Q h\        VP	                  4       \         4      '       g   Q h\        VP                  4       \        4      '       g   Q h\        V4      VJg   Q hVP	                  4       VJg   Q hR# ri  )r   rj  r}  r   r~  r  r   rl  s   & r+   r  $TestTransferFunction.test_conversionv  s    aVaW-!'')Z0000!'')%56666!((*n5555  "!+++wwy!!!r-   c                    \        ^^ .^R.4      p\        VP                  R.4       \        VP                  R.4       R# )rf   r   r   Nr^   )r   r   r  r   rl  s   & r+   r  $TestTransferFunction.test_properties  s8    
 aVaW-"&"&r-   r   N)	r   r   r   r   ry  r  r  r   r   r   s   @r+   r  r  o  s     7	"' 'r-   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )TestZerosPolesGaini  c                    \        ^^^4       \        ^.^.^4       \        \        P                  ! ^.4      \        P                  ! ^.4      ^4       R# r|  )r   r   rS   rc  s   &r+   ry  &TestZerosPolesGain.test_initialization  s>    q!QsQC#rxx}bhhsmQ7r-   c                R   \        ^^^4      p\        VP                  4       \        4      '       g   Q h\        VP	                  4       \
        4      '       g   Q h\        VP                  4       \         4      '       g   Q h\        V4      VJg   Q hVP                  4       VJg   Q hR# r|  )r   rj  r}  r   r~  r   r  rl  s   & r+   r  "TestZerosPolesGain.test_conversion  s    1a#!'')Z0000!'')%56666!((*n5555 a )))xxz"""r-   r   N)r   r   r   r   ry  r  r   r   r   s   @r+   r  r    s     8	# 	#r-   r  c            	       "  a  ] tR tRt o RR.RR..tR%.R..tRR..tR..tR tR	 t	R
 t
R tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t]P<                  P?                  R. R&O4      ]P<                  P?                  R. R&O4      ]P<                  P?                  R . R'O4      ]P<                  P?                  R!. R'O4      ]P<                  P?                  R"R... ..4      R# 4       4       4       4       4       t R$t!V t"R# )(Test_abcd_normalizei  r   r   r   r   r         @c                .    \        \        \        4       R # N)r   r"   r   rc  s   &r+   test_no_matrix_fails(Test_abcd_normalize.test_no_matrix_fails  s    j.1r-   c                v    \        \        \        ^R.V P                  V P                  V P
                  4       R# ri  )r   r"   r   r9   r   r   rc  s   &r+   test_A_nosquare_fails)Test_abcd_normalize.test_A_nosquare_fails  s'    j."gtvvtvvtvv	7r-   c                v    \        \        \        V P                  R^.V P                  V P
                  4       R# ri  r   r"   r   r8   r   r   rc  s   &r+   test_AB_mismatch_fails*Test_abcd_normalize.test_AB_mismatch_fails  '    j.ffr1gtvvtvv	7r-   c                z    \        \        \        V P                  V P                  R .R..V P
                  4       R# )r   r   N)r   r"   r   r8   r9   r   rc  s   &r+   test_AC_mismatch_fails*Test_abcd_normalize.test_AC_mismatch_fails  s+    j.ffdffusendff	>r-   c           	     v    \        \        \        V P                  V P                  V P
                  R ^ .4       R# )r  N)r   r"   r   r8   r9   r   rc  s   &r+   test_CD_mismatch_fails*Test_abcd_normalize.test_CD_mismatch_fails  s'    j.ffdffdffsAh	8r-   c                v    \        \        \        V P                  R^.V P                  V P
                  4       R# ri  r  r7   xps   &&r+   test_BD_mismatch_fails*Test_abcd_normalize.test_BD_mismatch_fails  r  r-   c                   a \        V3R  lV P                  V P                  V P                  V P                  34      w  r#rE\        W#WER7      w  rgr\        Wb4       \        Ws4       \        W4       \        W4       R# )c                 >   < SP                  V SP                  R 7      # r   asarrayrt  r   r  s   &r+   <lambda>HTest_abcd_normalize.test_normalized_matrices_unchanged.<locals>.<lambda>      bjj"**j5r-   r8   r9   r   r   N)mapr8   r9   r   r   r   r   )
r7   r  A_B_C_D_r8   r9   r   r   s
   &f        r+   "test_normalized_matrices_unchanged6Test_abcd_normalize.test_normalized_matrices_unchanged  sb    5VVTVVTVVTVV,
 $b";
ar-   c                   \        V P                  V P                  ^^ .^ 4      w  rr4VP                  ^ ,          VP                  ^,          8X  g   Q hVP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^ ,          VP                  ^,          8X  g   Q hVP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^,          VP                  ^,          8X  g   Q hR# r|  )r   r8   r9   r   )r7   r8   r9   r   r   s   &    r+   r   Test_abcd_normalize.test_shapes  s    #DFFDFFQFA>
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''r-   c                   VP                  V P                  VP                  R 7      pVP                  RVP                  R 7      pVP                  RVP                  R 7      p\	        W#VR7      w  rVrx\        WR4       \        Wc4       \        W4       VP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^,          VP                  ^ ,          8X  g   Q hR# )r   r8   r9   r   NrQ   r   )r   r   r  r8   rt  r   r   r   r   	r7   r  r  r  r  r8   r9   r   r   s	   &&       r+    test_zero_dimension_is_not_none14Test_abcd_normalize.test_zero_dimension_is_not_none1      ZZbjjZ1XXfBJJX/XXfBJJX/#b"5
awwqzRXXa[(((wwqzRXXa[(((r-   c                   VP                  V P                  VP                  R 7      pVP                  RVP                  R 7      pVP                  RVP                  R 7      p\	        W#VR7      w  rVrx\        WR4       \        Wc4       \        Wt4       VP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^,          VP                  ^,          8X  g   Q hR# )r   r8   r9   r   Nr  )r   rQ   r  	r7   r  r  r  r  r8   r9   r   r   s	   &&       r+    test_zero_dimension_is_not_none24Test_abcd_normalize.test_zero_dimension_is_not_none2  r  r-   c                  a \        V3R  lV P                  V P                  V P                  34      w  r#p\	        W#VR7      w  rVrxVP
                  ^ ,          VP
                  ^,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hR# )c                 >   < SP                  V SP                  R 7      # r  r  r  s   &r+   r  4Test_abcd_normalize.test_missing_A.<locals>.<lambda>  r  r-   )r9   r   r   N)r  r9   r   r   r   r   )	r7   r  r  r  r  r8   r9   r   r   s	   &f       r+   test_missing_A"Test_abcd_normalize.test_missing_A      5VVTVVTVV$

 $b"5
awwqzQWWQZ'''wwqzQWWQZ'''ww288A;4444r-   c                   \        VP                  V P                  V P                  V P                  34      w  r#p\        W#VR 7      w  rVrxVP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^,          VP                  ^,          8X  g   Q hVP                  VP                  ^ ,          VP                  ^,          38X  g   Q hR# ))r8   r   r   N)r  r  r8   r   r   r   r   )	r7   r  r  r  r  r8   r9   r   r   s	   &&       r+   test_missing_B"Test_abcd_normalize.test_missing_B      dffdffdff%=>
#b"5
awwqzQWWQZ'''wwqzQWWQZ'''ww288A;4444r-   c                  a \        V3R  lV P                  V P                  V P                  34      w  r#p\	        W#VR7      w  rVrxVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^ ,          8X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hR# )c                 >   < SP                  V SP                  R 7      # r  r  r  s   &r+   r  4Test_abcd_normalize.test_missing_C.<locals>.<lambda>  r  r-   r  N)r  r8   r9   r   r   r   r  s	   &f       r+   test_missing_C"Test_abcd_normalize.test_missing_C  r  r-   c                   \        VP                  V P                  V P                  V P                  34      w  r#p\        W#VR 7      w  rVrxVP                  ^ ,          VP                  ^ ,          8X  g   Q hVP                  ^,          VP                  ^,          8X  g   Q hVP                  VP                  ^ ,          VP                  ^,          38X  g   Q hR# )r  N)r  r  r8   r9   r   r   r   r  s	   &&       r+   test_missing_D"Test_abcd_normalize.test_missing_D   r  r-   c                ^   \        VP                  V P                  V P                  34      w  r#\	        W#R 7      w  rErgVP
                  ^ ,          VP
                  ^,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^,          8X  g   Q hVP
                  VP
                  ^,          VP
                  ^,          38X  g   Q hVP
                  VP
                  ^,          VP
                  ^,          38X  g   Q hR# ))r   r   N)r  r  r   r   r   r   )r7   r  r  r  r8   r9   r   r   s   &&      r+   test_missing_AB#Test_abcd_normalize.test_missing_AB  s    RZZ$&&$&&!12#b/
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''ww288A;4444ww288A;4444r-   c                   \        VP                  V P                  V P                  34      w  r#\	        W#R 7      w  rErgVP
                  ^ ,          VP
                  ^,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^ ,          8X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hR# ))r9   r   N)r  r  r9   r   r   r   )r7   r  r  r  r8   r9   r   r   s   &&      r+   test_missing_AC#Test_abcd_normalize.test_missing_AC      RZZ$&&$&&!12#b/
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''ww288A;4444ww288A;4444r-   c                   \        VP                  V P                  V P                  34      w  r#\	        W#R 7      w  rErgVP
                  ^ ,          VP
                  ^,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^,          8X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^,          38X  g   Q hR# ))r9   r   N)r  r  r9   r   r   r   )r7   r  r  r  r8   r9   r   r   s   &&      r+   test_missing_AD#Test_abcd_normalize.test_missing_AD  r  r-   c                   \        VP                  V P                  V P                  34      w  r#\	        W#R 7      w  rErgVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^,          8X  g   Q hVP
                  ^ ,          VP
                  ^ ,          8X  g   Q hVP
                  ^,          VP
                  ^ ,          8X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^,          38X  g   Q hVP
                  VP
                  ^ ,          VP
                  ^ ,          38X  g   Q hR# ))r8   r   N)r  r  r8   r   r   r   )r7   r  r  r  r8   r9   r   r   s   &&      r+   test_missing_BC#Test_abcd_normalize.test_missing_BC$  r  r-   c                d    \        \        \        VP                  V P                  4      R 7       R# ))r   N)r   r"   r   r  r   r  s   &&r+   test_missing_ABC_fails*Test_abcd_normalize.test_missing_ABC_fails.  s    j.BJJtvv4FGr-   c                    VP                  V P                  4      VP                  V P                  4      r2\        \        \
        W#R 7       R# ))r8   r   N)r  r8   r   r   r"   r   )r7   r  r8   r   s   &&  r+   test_missing_BD_fails)Test_abcd_normalize.test_missing_BD_fails1  s/    zz$&&!"**TVV"41j.A;r-   c                    VP                  V P                  4      VP                  V P                  4      r2\        \        \
        W#R 7       R# ))r8   r9   N)r  r8   r9   r   r"   r   )r7   r  r8   r9   s   &&  r+   test_missing_CD_fails)Test_abcd_normalize.test_missing_CD_fails5  s/    zz$&&!2::dff#51j.A;r-   A_dtypeNB_dtypeC_dtypeD_dtyper   c           
        . p\        V P                  V P                  V P                  V.W#WE.4       F6  w  rTP	                  V	e   VP                  V\        Wi4      R7      MR 4       K8  	  Vw  rr\        WWVRR7      p\        WWR7      w  rrV
P                  VP                  u;8X  d-   VP                  u;8X  d   VP                  u;8X  d	   V8X  g   Q h Q hR # )Nr   T)r  force_floatingr  )
zipr8   r9   r   appendr  getattrr	   r   r   )r7   r   r	  r
  r  r  r  r   XX_dtyper8   r9   r   expected_dtypes   &&&&&&&       r+   test_dtypesTest_abcd_normalize.test_dtypes:  s    * +74
JA KK& 

1GB$8
9,0	
 
a'ar$O#a7
aww!''IQWWII>IIIIIr-   r   r   )Nrs  r  rt  	complex64ru  )rs  r  rt  r  ru  )#r   r   r   r   r8   r9   r   r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  pytestmarkparametrizer  r   r   r   s   @r+   r  r    sO    
sc3Z A
#A
sA
A277>87	(	)	)55555555H<<
 [[H
 [[H [[B [[B
 [[SSE7RD/2J 3		&Jr-   r  c                   V   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tRtV tR# )	Test_bodei^  c                l    \        ^.^^.4      p. ROp\        WR7      w  r#p. ROp\        W5^R7       R# )rf   r   r  Nr  rf   rc   d   )r   r_   rj   rp   r   r   r   )r7   r   r   magphaseexpected_mags   &     r+   test_01Test_bode.test_01`  s8     aS1a&!V)(Cq9r-   c                l    \        ^.^^.4      p. ROp\        WR7      w  r#p. ROp\        WE^R7       R# )rf   r  r  Nr  rf   rc   )gig33333Ur!  )r7   r   r   r"  r#  expected_phases   &     r+   test_02Test_bode.test_02n  s8     aS1a&!V)+E1=r-   c                L   \        ^.^^.4      p. ROp\        WR7      w  r#pVR,          p\        P                  ! VP                  V4      \        P                  ! VP
                  V4      ,          pR\        P                  ! \        V4      4      ,          p\        W74       R# )rf   r                ?g      4@Nr  )	r   r   r   polyvalr   r   log10absr   )r7   r   r   r"  r#  jwr   r$  s   &       r+   test_03Test_bode.test_03z  sy     aS1a&!V)VJJvzz2&FJJ)CCbhhs1v..C.r-   c                   \        ^.^^.4      p. ROp\        WR7      w  r#pVR,          p\        P                  ! VP                  V4      \        P                  ! VP
                  V4      ,          p\        P                  ! VP                  VP                  4      R,          \        P                  ,          p\        WG4       R# )rf   r  r-  g     f@Nr  )r   r   r   r.  r   r   arctan2r    r   pir   )r7   r   r   r"  r#  r1  r   r)  s   &       r+   test_04Test_bode.test_04  s     aS1a&!V)VJJvzz2&FJJ)CCAFFAFF3e;beeCE2r-   c                    \        ^.^^.4      p^
p\        P                  ! R^V4      p\        WR7      w  rEp\	        WC4       R# rf   r6  Nrt   )r   r   logspacer   r   )r7   r   r6  
expected_wr   r"  r#  s   &      r+   test_05Test_bode.test_05  sC     aS1a&![[Q*
V)A*r-   c                d    \        ^.^^ .4      p\        V^R7      w  r#pV^ ,          R8X  g   Q hR# rf   r;  g{Gz?Nr   r   r7   r   r   r"  r#  s   &    r+   test_06Test_bode.test_06  s6     aS1a&!Vq)tt||r-   c                D    \        ^.. RO4      p\        V^R7      w  r#pR# )rf   r;  N)rf   r   r   rB  rC  s   &    r+   test_07Test_bode.test_07  s"     aS+&Vq)r-   c                    \        . . RO^4      pVP                  \        P                  ! R^(^d4      R7      w  r#p\	        \        V4      R^R7       R# )rc   r  r  N)rb   rk   rp   rq   rr   r_   i>)r   r   r   r<  r   minrC  s   &    r+   test_08Test_bode.test_08  sB    R2A6bkk"b#&>?CJb9r-   c           	        \         P                  ! . RO4      p\        P                  ! V4      P                  p\         P                  ! R.R.R ..4      p\         P                  ! . RO.4      p\         P                  ! R..4      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R\        4       \        W#WE4      p\        V^dR7      w  rxp	RRR4       ^\         P                  ! \         P                  ! R R X^,          ,           ,          4      4      ,          p
\        XV
4       R#   + '       g   i     Ld; i)r   r   rG   r;  Nr   r   r   r   r   r   r   )r   rS   r1   	companionr  r   r   r   r   r   r   r/  sqrtr   )r7   r   r8   r9   r   r   r   r   r"  r#  expected_magnitudes   &          r+   test_from_state_spaceTest_bode.test_from_state_space  s     HH)*Q!!HHsecUSE*+HHo&'HHseW$$&&!!(O<q_F 3/MAE '
  "((2773#1*3E+F"GGC!34 '&s   #8D77E	r   N)r   r   r   r   r%  r*  r2  r7  r>  rD  rG  rK  rS  r   r   r   s   @r+   r  r  ^  s7     :
>	/	3+*:5 5r-   r  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
Test_freqrespi  c                    \        ^.^^.4      p. ROp\        WR7      w  r#. ROp. ROp\        VP                  V^R7       \        VP                  V^R7       R# )rf   r  r  Nr(  )gGz?r  gׁsF?)MbXrP   rX  r   r   r   r   r    )r7   r   r   Hexpected_reexpected_ims   &     r+   test_output_manual Test_freqresp.test_output_manual  sQ     aS1a&!$),AFFK;AFFK;r-   c                h   \        ^.^^.4      p. ROp\        WR7      w  r#VR,          p\        P                  ! VP                  V4      \        P                  ! VP
                  V4      ,          p\        VP                  VP                  4       \        VP                  VP                  4       R# )rf   r  r-  Nr  )	r   r   r   r.  r   r   r   r   r    r7   r   r   rZ  rm  r=   s   &     r+   test_outputTest_freqresp.test_output  s|     aS1a&!$F::fjj!,rzz&**a/HHAFFHMM2AFFHMM2r-   c                    \        ^.^^.4      p^
p\        P                  ! R^V4      p\        WR7      w  rE\	        WC4       R# r:  )r   r   r<  r   r   )r7   r   r6  r=  r   rZ  s   &     r+   test_freq_rangeTest_freqresp.test_freq_range  sA     aS1a&![[Q*
$A*r-   c                b    \        ^.^^ .4      p\        V^R7      w  r#V^ ,          R8X  g   Q hR# rA  )r   r   )r7   r   r   rZ  s   &   r+   test_pole_zeroTest_freqresp.test_pole_zero  s4     aS1a&!!$tt||r-   c                   \         P                  ! . RO4      p\        P                  ! V4      P                  p\         P                  ! R.R.R ..4      p\         P                  ! . RO.4      p\         P                  ! R..4      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R\        4       \        W#WE4      p\        V^dR7      w  rxRRR4       XR,          p	R R ^V	,          ,           ^V	^,          ,          ,           V	^,          ,           ,          p
\        XP                  V
P                  4       \        VP                  V
P                  4       R#   + '       g   i     L; i)r   r   rG   r;  Nr-  rN  rO  )r   rS   r1   rP  r  r   r   r   r   r   r   r   r   r    )r7   r   r8   r9   r   r   r   r   rZ  rm  r=   s   &          r+   rS  #Test_freqresp.test_from_state_space  s    HH)*Q!!HHseSE3%()HHo&'HHseW$$&&!!(O<q_FFc*DA ' F319qAv-145AFFHMM2AFFHMM2 '&s   #7E''E7	c                   \        . R.^,          ^.4      p. ROp\        WR7      w  r#VR,          p^V^,           ^,          ,          p\        VP                  VP                  4       \        VP                  VP                  4       R# )rf   r  r-  Nr^   r  rY  r`  s   &     r+   test_from_zpkTest_freqresp.test_from_zpk  sg    RQs#$FAz>AFFHMM2AFFHMM2r-   r   N)r   r   r   r   r]  ra  rd  rg  rS  rl  r   r   r   s   @r+   rV  rV    s(     <	3+3*3 3r-   rV  clsc                 `    \        V \        P                  ,          \        4      '       g   Q hR # r  )rj  r   rt  r   )rn  s   &r+    test_subscriptable_generic_typesrp    s     c"**o|4444r-   ):0yE>rq  )1r   typesr   numpyr   r  r   r   scipy._lib._array_apir   r   r   r   r	   scipy.signalr
   r   r   r   r   r   r   r   r   r   r   r   r   r   scipy.signal._filter_designr   scipy.linalgr1   r,   r/   r   r   r,  rP  rg  rq  r  r  r  r  rV  r  r  rp  r   r-   r+   <module>rx     s'       * 
H H H H
 8 N*V@ V@r[P [P|{6 {6|D- D-NF FR 8b bH' '8# #& >"|J |J #|J~a5 a5HI3 I3V 	J(.#tD55r-   