
    tKgM4                     L   d Z ddlmZmZmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlZddlmZmZmZmZmZmZmZmZ ddlmZ ddZddZ dd	Z!d
 Z"d Z#ddZ$ G d d      Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d      Z* G d d      Z+y)z
Build fftpack:
  python setup_fftpack.py build
Run tests if scipy is installed:
  python -c 'import scipy;scipy.fftpack.test(<level>)'
Run tests if fftpack is not installed:
  python tests/test_pseudo_diffs.py [<level>]
    )assert_equalassert_almost_equalassert_array_almost_equal)difffftiffttilbertitilberthilbertihilbertshiftfftfreqcs_diffsc_diffss_diffcc_diffN)arangesincospiexptanhsumsign)randomc                     t        |       }t        |      }|	dt        z  }t        |      dz  t        z  |z  |z  }|dk  rd||z  z  }d|d<   n||z  }|dkD  rd|d|dz
   t	        ||z        j
                  S )N                  @r              i     )r   lenr   r   r   real)xkperiodfxnws         i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/fftpack/tests/test_pseudo_diffs.pydirect_diffr+      s    	QBBA~2
2b!A1u1H!qD4x#ae":??    c                     t        |       }t        |      }|	dt        z  }t        |      |z  dz  t        z  |z  |z  }d|d<   dt	        |      z  }d|d<   t        ||z        S )Nr   r   r                 ?y                r   r"   r   r   r   r   r$   hr&   r'   r(   r)   s         r*   direct_tilbertr2   '   so    	QBBA~2
1Qr& "AAaD
47
AAaD":r,   c                     t        |       }t        |      }|	dt        z  }t        |      |z  dz  t        z  |z  |z  }dt	        |      z  }t        ||z        S )Nr   y             r/   r0   s         r*   direct_itilbertr4   3   s]    	QBBA~2
1Qr& "ADGA":r,   c                     t        |       }t        |      }t        |      |z  }dt        |      z  }t	        ||z        S )Nr.   )r   r"   r   r   r   )r$   r'   r(   r)   s       r*   direct_hilbertr6   =   s<    	QBBA
1A
47
A":r,   c                     t        |        S N)r6   )r$   s    r*   direct_ihilbertr9   E   s    1r,   c                     t        |       }|t        |      dz  |z  }nt        |      dz  t        z  |z  |z  }t        t	        |       t        ||z        z        j                  S )Nr.   r   )r"   r   r   r   r   r   r#   )r$   ar&   r(   r%   s        r*   direct_shiftr<   I   s^    AA~AJrM!OAJrM"V#A%As1Q3x %%%r,   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestDiffc                    dD ]w  }t        |      dz  t        z  |z  }t        t        t	        |            t        t	        |                   t        t        t	        |      d      t        t	        |      d             t        t        t	        |      d      t        t	        |      d             t        t        t	        |      d      t        t	        |      d             t        t        t	        |      d      t        t	        |      d             t        t        t	        d|z        d      t        t	        d|z        d             t        t        t	        d|z        d      t        t	        d|z        d             t        t        t        |            t        t        |                   t        t        t        |      d      t        t        |      d             t        t        t        |      d      t        t        |      d             t        t        t        |      d      t        t        |      d             t        t        t        d|z              t        t        d|z                     t        t        t	        ||z  dz              t        t	        ||z  dz                     t        t        t        ||z  dz              t        t        ||z  dz                     t        d      D ]r  }t        t        t	        d|z        |      t        t	        d|z        |             t        t        t        d|z        |      t        t        d|z        |             t z y )N)      @          r               )r   r   r   r   r   r+   r   range)selfr(   r$   r%   s       r*   test_definitionzTestDiff.test_definitionT   s\   "Aq	!Bq A%d3q6l;s1v3FG%d3q6!n[Q5JK%d3q6!n[Q5JK%d3q6!n[Q5JK%d3q6!n[Q5JK%d3qs8A&6{3qs8A7NO%d3qs8A&6{3qs8A7NO%d3q6l;s1v3FG%d3q6!n[Q5JK%d3q6!n[Q5JK%d3q6!n[Q5JK%d3qs8n[QqS5JK%d3qs1u:&6{3qs1u:7NO%d3qs1u:&6{3qs1u:7NO1X)$s1Q3x*:;s1Q3xPQ;RS)$s1Q3x*:;s1Q3xPQ;RS ! #r,   c           	      f   dD ]  }t        |      t        |      z  }t        t        t	        dt
        z  |z        d      dt
        z  t        dt
        z  |z        z         t        t        t	        dt
        z  |z        dd      dt
        z  dz   t        dt
        z  |z        z          y )N)rA   rB   r   r   )r&   rE   )r   floatr   r   r   r   r   rJ   r(   r$   s      r*   test_periodzTestDiff.test_periodi   s    Aq	%("A%d3qtAv;a&@&'d3qtAv;&68%d3qtAv;q&B()"qyjQrT!V&<>	 r,   c           
      p   dD ]0  }t        |      dz  t        z  |z  }t        t        t	        |            t        |             t        t        t        |            t	        |              t        t        t	        |      d      t	        |              t        t        t	        |      d      t	        |             t        t        t	        d|z              dt        d|z        z         t        t        t	        t	        |                  t        |      t        t	        |            z         3 y )N)rD   rB   M   r   rF   r   r   r   r   r   r   rN   s      r*   test_sinzTestDiff.test_sinq   s    Aq	!Bq A%d3q6l3q6:%d3q6lCF7;%d3q6!nc!fW=%d3q6!nSV<%d3qs8nQs1Q3xZ@%d3s1v;&7As3q6{8JK r,   c           	      L   g dd d D ]  }t        |      dz  t        z  |z  }t        |      t        d|z        z  t	        t        d|z              z   }t        |      t        d|z        z  dt        |      z  t        d|z        z  z
  dt        d|z        z  t	        t        d|z              z  z   }dt        |      z  t        d|z        z  dt        |      z  t        d|z        z  z
  dt        d|z        z  t	        t        d|z              z  z
  dt        d|z        dz  z  t	        t        d|z              z  z   }t        |      }t        ||       t        t        |      |       t        t        |d      |       t        t        |d	      |        y )
N)
rB   rQ   d         i   i         i    rG   r   rF   rE   rH   	   )r   r   r   r   r   r   r   )rJ   r(   r$   fdfddfd1s          r*   	test_exprzTestDiff.test_expr{   se   <Ra@Aq	!Bq AAs1Q3xC!H-AQAaC3q6#ac(!221S1X:c#ac(m3KKBc!f*S1X%aAhs1Q3x&77S1X:c#ac(m+,,-c!A#hkM#c!A#h-,GHCaB%b,%d2hs3%d1Qi4%d3rl26 Ar,   c           	      >   dD ]  }t        |      dz  t        z  |z  }t        |      t        d|z        z  t	        t        d|z              z   }t        |      t        d|z        z  dt        |      z  t        d|z        z  z
  dt        d|z        z  t	        t        d|z              z  z   }dt        |      z  t        d|z        z  dt        |      z  t        d|z        z  z
  dt        d|z        z  t	        t        d|z              z  z
  dt        d|z        dz  z  t	        t        d|z              z  z   }t        t        |      |       t        t        |      |       t        t        |d      |       t        t        |d      |        y )	N)rX   rY   r   rF   rE   rZ   rH   r[   r\   )r   r   r   r   r   r   r   )rJ   r(   r$   r]   r^   r_   s         r*   test_expr_largezTestDiff.test_expr_large   sX   Aq	!Bq AAs1Q3xC!H-AQAaC3q6#ac(!221S1X:c#ac(m3KKBc!f*S1X%aAhs1Q3x&77S1X:c#ac(m+,,-c!A#hkM#c!A#h-,GHC%d1gb1%d2hs3%d3rl26%d1Qi4 r,   c           	         d}t        |      dz  t        z  |z  }t        t        t	        |      d      t        |              t        t        t	        |      d      t	        |              t        t        t	        |      d      t	        |             t        t        dt        d|z        z  d      t	        d|z               y )NrB   r   r\   rR   rN   s      r*   test_intzTestDiff.test_int   s    1IaKN1!$s1vb/3q6':!$s1vb/3q6':!$s1vb/#a&9!$qQqSz""5c!A#h?r,   c           
      @   dD ]  }dD ]  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d      }t        t        |d      d       t	        t        t        ||      |       |       t	        t        t        ||       |      |         y )N)r   r   rF      )<   rD   rB   8   7   r   axisr   r\   r    r   r   r   r   r   rJ   r%   r(   r]   afs        r*   test_random_evenzTestDiff.test_random_even   s    A%A4L]1_bDa2&#CqM#6)$tAay!*<Q?)$tAqbz!*<Q? & r,   c           
         dD ]  }dD ]|  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d       t        t	        t	        ||      |       |       t        t	        t	        ||       |      |       ~  y )Nr   r   r   rE   rF   rG   ri   !   A   rl   r   rm   r    )r   r   r   r   r   rp   s        r*   test_random_oddzTestDiff.test_random_odd   s{     AA4L]1_bD#CqM#6)$tAay!*<Q?)$tAqbz!*<Q?   !r,   c           
      @   dD ]  }dD ]  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d      }t        t        |d      d       t	        t        t        ||      |       |       t	        t        t        ||       |      |         y )Nrt   )rD   rv   rB   rk   rl   r   rm   r   r\   r    ro   rp   s        r*   test_zero_nyquistzTestDiff.test_zero_nyquist   s     A%A4L]1_bDa2&#CqM#6)$tAay!*<Q?)$tAqbz!*<Q? & !r,   N)__name__
__module____qualname__rK   rO   rS   ra   rc   rg   rr   rx   rz    r,   r*   r>   r>   R   s5    T*>L7
5@
@@
@r,   r>   c                       e Zd Zd Zd Zd Zy)TestTilbertc                    dD ]  }dD ]  }t        |      dz  t        z  |z  }t        t        |      |      }t	        t        |      |      }t        ||       t        t        t        |      |      t	        t        |      |             t        t        t        d|z        |      t	        t        d|z        |               y N皙?g      ?r   g      @
   r@   rA   rB   rC   r   )r   r   r	   r   r2   r   rJ   r1   r(   r$   yy1s         r*   rK   zTestTilbert.test_definition   s    #A#1IaKN1$CF1%#CF1-)!B/)'#a&*;*8Q*BD)'#ac(1*=*8QqS!*DF $ $r,   c           
          dD ]a  }dD ]Z  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d       t        t	        t        ||      |      |       \ c y )Nr   rD   rB   rk   r   rm   r    )r   r   r   r   r2   r4   rJ   r1   r(   r]   rq   s        r*   rr   zTestTilbert.test_random_even   sb    #AA4L]1_bD#CqM#6).19Ma*PQRS   $r,   c           
         dD ]  }dD ]z  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d       t        t	        t        ||      |      |       t        t        t	        ||      |      |       |  y )Nr   ru   r   rm   r    )r   r   r   r   r
   r	   r   s        r*   rx   zTestTilbert.test_random_odd   sw    #AA4L]1_bD#CqM#6)(71Q<*B1E)'(1Q-*B1E   $r,   N)r{   r|   r}   rK   rr   rx   r~   r,   r*   r   r      s    
FTFr,   r   c                       e Zd Zd Zy)TestITilbertc                    dD ]  }dD ]  }t        |      dz  t        z  |z  }t        t        |      |      }t	        t        |      |      }t        ||       t        t        t        |      |      t	        t        |      |             t        t        t        d|z        |      t	        t        d|z        |               y r   )r   r   r
   r   r4   r   r   s         r*   rK   zTestITilbert.test_definition   s    #A#1IaKN1$SVA&$SVA.)!B/)(3q6!*<*9#a&*CE)(3qs8A*>*9#ac(1*EG $ $r,   Nr{   r|   r}   rK   r~   r,   r*   r   r      s    
Gr,   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestHilbertc           
         dD ]  }t        |      dz  t        z  |z  }t        t        |            }t	        t        |            }t        ||       t        t        t        d|z              t	        t        d|z                      y Nr   r   )r   r   r   r   r6   r   rJ   r(   r$   r   r   s        r*   rK   zTestHilbert.test_definition   so    Aq	!Bq AAAA'B%a+%gc!A#h&7&4S1X&>@  r,   c                    dD ]{  }t        |      dz  t        z  |z  }t        |      t        d|z        t        |      z  z   }t	        |      }t        |      }t        ||       t        |d      }t        ||       } y Nr   r   r   )r1   )r   r   r   r   r   r6   r   r	   rJ   r(   r$   r]   r   r   y2s          r*   test_tilbert_relationz!TestHilbert.test_tilbert_relation   sr    Aq	!Bq AAs1Q3xA&A
A"B%a+RB%a+  r,   c                     dD ]v  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d       t        t	        t        |            |       t        t        t	        |            |       x y )Nru   r   rm   r    )r   r   r   r   r   r   rJ   r(   r]   rq   s       r*   rx   zTestHilbert.test_random_odd  se    AtAQAqB"AA1c2%hwqz&:1=%ghqk&:1= r,   c                 &   dD ]  }t        |f      }t        |d      |z  }||z
  }t        t        |d      d      }t        t        |d      d       t	        t        t        |            |       t	        t        t        |            |        y )Nr   r   rm   r   r\   r    )	r   r   r   r   r   r6   r9   r   r   r   s       r*   rr   zTestHilbert.test_random_even  sx    AtAQAqB"AT!AYr"AA1c2%n_Q5G&HK%ghqk&:1= r,   N)r{   r|   r}   rK   r   rx   rr   r~   r,   r*   r   r      s    @,>	>r,   r   c                       e Zd Zd Zd Zy)TestIHilbertc           
         dD ]  }t        |      dz  t        z  |z  }t        t        |            }t	        t        |            }t        ||       t        t        t        d|z              t	        t        d|z                      y r   )r   r   r   r   r9   r   r   s        r*   rK   zTestIHilbert.test_definition  sp    Aq	!Bq AQ A Q(B%a+%hs1Q3x&8&5c!A#h&?A  r,   c                    dD ]{  }t        |      dz  t        z  |z  }t        |      t        d|z        t        |      z  z   }t	        |      }t        |      }t        ||       t        |d      }t        ||       } y r   )r   r   r   r   r   r9   r   r
   r   s          r*   test_itilbert_relationz#TestIHilbert.test_itilbert_relation%  ss    Aq	!Bq AAs1Q3xA&AA #B%a+!b!B%a+  r,   N)r{   r|   r}   rK   r   r~   r,   r*   r   r     s    A,r,   r   c                       e Zd Zd Zy)	TestShiftc                    dD ]  }t        |      dz  t        z  |z  }dD ]  }t        t        t	        |      |      t        t	        |      |             t        t        t	        |      |      t	        ||z                t        t        t        |      |      t        ||z                t        t        t        d|z        t	        |      z   |      t        d||z   z        t	        ||z         z          t        t        t        t	        |            |      t        t	        ||z                       t        t        t	        |      dt        z        t	        |             t        t        t	        |      t              t	        |              t        t        t	        |      t        dz        t        |              y )N)   rA   rB   rC   rD   rX   rW   r   )r   rE   )r   r   r   r   r   r<   r   r   )rJ   r(   r$   r;   s       r*   rK   zTestShift.test_definition2  s=   +Aq	!Bq A)%Aq/,s1va:PQ)%Aq/#ac(C)%Aq/#ac(C)%AaCQ*B*-a1g,s1Q3x*?A)%CFA*>s3qs8}M  &eCF1R4&8Q@%eCF2&6Aw?%eCF2a4&8Q@ ,r,   Nr   r~   r,   r*   r   r   0  s    Ar,   r   c                       e Zd ZdZej
                  ej                  fZeej                  ej                  fz   Z
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zy)TestOverwritezCheck input overwrite behavior c                     |j                         } ||g|i | |j                  }|r|t        |      z  }|r|t        |      z  }t        ||d|z         y )Nzspurious overwrite in %s)err_msg)copyr{   reprr   )rJ   r$   routineargskwargsx2sigs          r*   _checkzTestOverwrite._checkG  s^    VVX$T$V$4:C4<CR$>$DEr,   c                    t         j                  j                  d       t        j                  |t         j                        r=t        j                  j
                  | dt        j                  j
                  | z  z   }nt        j                  j
                  | }|j                  |      } | j                  ||g|i | y )Ni  r.   )npr   seed
issubdtypecomplexfloatingrandnastyper   )rJ   r   dtypeshaper   r   datas          r*   	_check_1dzTestOverwrite._check_1dQ  s    
		t== 2 2399??E*R		0G-GGD99??E*D{{5!D'3D3F3r,   c                 T    | j                   D ]  }| j                  t        |d        y Nr@   )dtypesr   r   rJ   r   s     r*   	test_diffzTestOverwrite.test_diffZ  s     [[ENN4. !r,   c                 V    | j                   D ]  }| j                  t        |dd        y Nr   g?)r   r   r	   r   s     r*   test_tilbertzTestOverwrite.test_tilbert^  s"    [[ENN7E5#6 !r,   c                 V    | j                   D ]  }| j                  t        |dd        y r   )r   r   r
   r   s     r*   test_itilbertzTestOverwrite.test_itilbertb  s"    [[ENN8UE37 !r,   c                 T    | j                   D ]  }| j                  t        |d        y r   )r   r   r   r   s     r*   test_hilbertzTestOverwrite.test_hilbertf  s     [[ENN7E51 !r,   c                 X    | j                   D ]  }| j                  t        |ddd        y Nr         ?g      @)r   r   r   r   s     r*   test_cs_diffzTestOverwrite.test_cs_diffj  $    [[ENN7E5#s; !r,   c                 X    | j                   D ]  }| j                  t        |ddd        y r   )r   r   r   r   s     r*   test_sc_diffzTestOverwrite.test_sc_diffn  r   r,   c                 X    | j                   D ]  }| j                  t        |ddd        y r   )r   r   r   r   s     r*   test_ss_diffzTestOverwrite.test_ss_diffr  r   r,   c                 X    | j                   D ]  }| j                  t        |ddd        y r   )r   r   r   r   s     r*   test_cc_diffzTestOverwrite.test_cc_diffv  r   r,   c                 V    | j                   D ]  }| j                  t        |dd        y )Nr   r   )r   r   r   r   s     r*   
test_shiftzTestOverwrite.test_shiftz  s"    [[ENN5%4 !r,   N)r{   r|   r}   __doc__r   float32float64real_dtypes	complex64
complex128r   r   r   r   r   r   r   r   r   r   r   r   r~   r,   r*   r   r   A  sf    )::rzz*KBLL"--88FF4/782<<<<5r,   r   )r   Nr8   ),	__usage__numpy.testingr   r   r   scipy.fftpackr   r   r   r	   r
   r   r   r   r   r   r   r   r   numpyr   r   r   r   r   r   r   r   r   numpy.randomr   r+   r2   r4   r6   r9   r<   r>   r   r   r   r   r   r   r~   r,   r*   <module>r      s   	6 6- - - -  < < <  	&j@ j@ZF FDG G'> '>T, ,,A A";5 ;5r,   