
    ^Mh5                     x   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+dS )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)random   c                    t          |           }t          |          }|
dt          z  }t          |          dz  t          z  |z  |z  }|dk     rd||z  z  }d|d<   n||z  }|dk    r
d|d|dz
  <   t	          ||z            j        S )N                  @r   r           i     )r   lenr   r   r   real)xkperiodfxnws         e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/fftpack/tests/test_pseudo_diffs.pydirect_diffr+      s    	QBBA~2

2b!A1uu1H!qD4xx#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   '   sy    	QBBA~2

1Qr& "AAaD
477
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   sg    	QBBA~2

1Qr& "ADGG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   =   sF    	QBBA

1A
477
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   sj    AA~AJJrM!OAJJrM"V#A%As1Q3xx  %%r,   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestDiffc                 	   dD ]}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 ]}t          t          t	          d|z            |          t          t	          d|z            |                     t          t          t          d|z            |          t          t          d|z            |                     d S )N)      @          r               )r   r   r   r   r   r+   r   range)selfr(   r$   r%   s       r*   test_definitionzTestDiff.test_definitionT   sy   " 	T 	TAq		!Bq A%d3q66ll;s1vv3F3FGGG%d3q66!nn[Q5J5JKKK%d3q66!nn[Q5J5JKKK%d3q66!nn[Q5J5JKKK%d3q66!nn[Q5J5JKKK%d3qs88A&6&6{3qs88A7N7NOOO%d3qs88A&6&6{3qs88A7N7NOOO%d3q66ll;s1vv3F3FGGG%d3q66!nn[Q5J5JKKK%d3q66!nn[Q5J5JKKK%d3q66!nn[Q5J5JKKK%d3qs88nn[QqS5J5JKKK%d3qs1u::&6&6{3qs1u::7N7NOOO%d3qs1u::&6&6{3qs1u::7N7NOOO1XX T T)$s1Q3xx*:*:;s1Q3xxPQ;R;RSSS)$s1Q3xx*:*:;s1Q3xxPQ;R;RSSSST!	T 	Tr,   c           	         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             d S )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 8 8%d3qtAv;;q&B&B&B()"qyjQrT!V&<> > > >		> 	>r,   c           
      P   dD ]}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             d S )N)rD   rB   M   r   rF   r   r   r   r   r   r   rN   s      r*   test_sinzTestDiff.test_sinq   s3    	L 	LAq		!Bq A%d3q66ll3q66:::%d3q66llCFF7;;;%d3q66!nnc!ffW===%d3q66!nnSVV<<<%d3qs88nnQs1Q3xxZ@@@%d3s1vv;;&7&7As3q66{{8JKKKK	L 	Lr,   c           	      F   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	          |           d S )
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{   s   <<<RaR@ 
	7 
	7Aq		!Bq AAs1Q3xxC!HH-AQAaC3q66#ac((!221S1XX:c#ac((mm3KKBc!ff*S1XX%aAhs1Q3xx&77S1XX:c#ac((mm+,,-c!A#hhkM#c!A#hh--,GHCaB%b,,,%d2hhs333%d1Qii444%d3rll26666
	7 
	7r,   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          |           d S )	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   s    		5 		5Aq		!Bq AAs1Q3xxC!HH-AQAaC3q66#ac((!221S1XX:c#ac((mm3KKBc!ff*S1XX%aAhs1Q3xx&77S1XX:c#ac((mm+,,-c!A#hhkM#c!A#hh--,GHC%d1ggb111%d2hhs333%d3rll2666%d1Qii4444		5 		5r,   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                       d S )NrB   r   r\   rR   rN   s      r*   test_intzTestDiff.test_int   s    1IIaKN1!$s1vvb//3q66':::!$s1vvb//3q66':::!$s1vvb//#a&&999!$qQqSz""5"5c!A#hh?????r,   c           
         t           j                            d          }dD ]}dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t	          |d          d          }t          t          |d          d           t          t	          t	          ||          |           |           t          t	          t	          ||           |          |           Ɍd S )	N  )r   r   rF      )<   rD   rB   8   7   r   axisr   r\   r    npr   default_rngr   r   r   r   rJ   rngr%   r(   r]   afs         r*   test_random_evenzTestDiff.test_random_even   s    i##D)) 		@ 		@A% @ @JJt$$]]]1_bDa2&&#CqMMM#666)$tAayy!*<*<Q???)$tAqbzz!*<*<Q????@		@ 		@r,   c           
         t           j                            d          }dD ]}dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t          |d          d           t          t          t          ||          |           |           t          t          t          ||           |          |           d S )Nri   r   r   r   rE   rF   rG   rj   !   A   rm   r   rn   r    )rq   r   rr   r   r   r   r   rs   s         r*   test_random_oddzTestDiff.test_random_odd   s    i##D))  	@ 	@A @ @JJt$$]]]1_bD#CqMMM#666)$tAayy!*<*<Q???)$tAqbzz!*<*<Q????@	@ 	@r,   c           
         t           j                            d          }dD ]}dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t	          |d          d          }t          t          |d          d           t          t	          t	          ||          |           |           t          t	          t	          ||           |          |           Ɍd S )	Nri   rx   )rD   rz   rB   rl   rm   r   rn   r   r\   r    rp   rs   s         r*   test_zero_nyquistzTestDiff.test_zero_nyquist   s    i##D))  		@ 		@A% @ @JJt$$]]]1_bDa2&&#CqMMM#666)$tAayy!*<*<Q???)$tAqbzz!*<*<Q????@		@ 		@r,   N)__name__
__module____qualname__rK   rO   rS   ra   rc   rg   rv   r|   r~    r,   r*   r>   r>   R   s        T T T*> > >L L L7 7 7
5 
5 
5@ @ @@ @ @	@ 	@ 	@@ @ @ @ @r,   r>   c                        e Zd Zd Zd Zd ZdS )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            |                     d S 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
   # 		F 		FA# F F1IIaKN1$CFF1%%#CFF1--)!B///)'#a&&*;*;*8Q*B*BD D D)'#ac((1*=*=*8QqS!*D*DF F F FF		F 		Fr,   c           
         dD ]{}dD ]v}t          |f          }t          |d          |z  }||z
  }t          t          |d          d           t          t	          t          ||          |          |           w|d S )Nr   rD   rB   rl   r   rn   r    )r   r   r   r   r2   r4   )rJ   r1   r(   r]   ru   s        r*   rv   zTestTilbert.test_random_even   s    # 	T 	TA T TA4LL]]]1_bD#CqMMM#666).19M9Ma*P*PQRSSSST	T 	Tr,   c           
         t           j                            d          }dD ]}dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t          |d          d           t          t          t          ||          |          |           t          t          t          ||          |          |           d S )Nri   r   ry   r   rn   r    )rq   r   rr   r   r   r   r
   r	   )rJ   rt   r1   r(   r]   ru   s         r*   r|   zTestTilbert.test_random_odd   s    i##D))# 	F 	FA F FJJt$$]]]1_bD#CqMMM#666)(71Q<<*B*B1EEE)'(1Q--*B*B1EEEEF	F 	Fr,   N)r   r   r   rK   rv   r|   r   r,   r*   r   r      sL        
F 
F 
FT T T	F 	F 	F 	F 	Fr,   r   c                       e Zd Zd ZdS )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            |                     d S r   )r   r   r
   r   r4   r   r   s         r*   rK   zTestITilbert.test_definition   s
   # 		G 		GA# G G1IIaKN1$SVVA&&$SVVA..)!B///)(3q66!*<*<*9#a&&*C*CE E E)(3qs88A*>*>*9#ac((1*E*EG G G GG		G 		Gr,   Nr   r   r   rK   r   r,   r*   r   r      s(        
G 
G 
G 
G 
Gr,   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestHilbertc           
      n   dD ]}t          |          dz  t          z  |z  }t          t          |                    }t	          t          |                    }t          ||           t          t          t          d|z                      t	          t          d|z                                 d S Nr   r   )r   r   r   r   r6   r   rJ   r(   r$   r   r   s        r*   rK   zTestHilbert.test_definition   s     	@ 	@Aq		!Bq AAAA''B%a+++%gc!A#hh&7&7&4S1XX&>&>@ @ @ @	@ 	@r,   c                 L   dD ]}t          |          dz  t          z  |z  }t          |          t          d|z            t          |          z  z   }t	          |          }t          |          }t          ||           t          |d          }t          ||           d S 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   s     	, 	,Aq		!Bq AAs1Q3xxA&A

A""B%a+++RB%a++++	, 	,r,   c                    t           j                            d          }dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t          |d          d           t          t          t          |                    |           t          t          t          |                    |           d S )Nri   ry   r   rn   r    )rq   r   rr   r   r   r   r   r   rJ   rt   r(   r]   ru   s        r*   r|   zTestHilbert.test_random_odd	  s    i##D)) 	> 	>A

A4  AQAqB"AA1c222%hwqzz&:&:1===%ghqkk&:&:1====	> 	>r,   c                    t           j                            d          }dD ]}|                    |f          }t          |d          |z  }||z
  }t	          t	          |d          d          }t          t          |d          d           t          t          t          |                    |           t          t          t          |                    |           d S )Nri   r   r   rn   r   r\   r    )rq   r   rr   r   r   r   r   r6   r9   r   r   r   s        r*   rv   zTestHilbert.test_random_even  s    i##D)) 	> 	>A

A4  AQAqB"AT!AYYr""AA1c222%n_Q5G5G&H&HKKK%ghqkk&:&:1====	> 	>r,   N)r   r   r   rK   r   r|   rv   r   r,   r*   r   r      sS        @ @ @, , ,> > >
> 
> 
> 
> 
>r,   r   c                       e Zd Zd Zd ZdS )TestIHilbertc           
      n   dD ]}t          |          dz  t          z  |z  }t          t          |                    }t	          t          |                    }t          ||           t          t          t          d|z                      t	          t          d|z                                 d S r   )r   r   r   r   r9   r   r   s        r*   rK   zTestIHilbert.test_definition"  s     	A 	AAq		!Bq AQ  A Q((B%a+++%hs1Q3xx&8&8&5c!A#hh&?&?A A A A	A 	Ar,   c                 L   dD ]}t          |          dz  t          z  |z  }t          |          t          d|z            t          |          z  z   }t	          |          }t          |          }t          ||           t          |d          }t          ||           d S r   )r   r   r   r   r   r9   r   r
   r   s          r*   test_itilbert_relationz#TestIHilbert.test_itilbert_relation+  s     	, 	,Aq		!Bq AAs1Q3xxA&AA ##B%a+++!b!!!B%a++++	, 	,r,   N)r   r   r   rK   r   r   r,   r*   r   r      s5        A A A, , , , ,r,   r   c                       e Zd Zd ZdS )	TestShiftc                    dD ]Z}t          |          dz  t          z  |z  }dD ]x}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                                  zt          t          t	          |          dt          z            t	          |                     t          t          t	          |          t                    t	          |                      t          t          t	          |          t          dz            t          |                     \d S )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_definition8  s   + 	A 	AAq		!Bq A N N)%Aq//,s1vva:P:PQQQ)%Aq//#ac((CCC)%Aq//#ac((CCC)%AaCQ*B*B*-a1g,,s1Q3xx*?A A A)%CFFA*>*>s3qs88}}MMMM%eCFF1R4&8&8Q@@@%eCFF2&6&6Aw???%eCFF2a4&8&8Q@@@@	A 	Ar,   Nr   r   r,   r*   r   r   6  s(        A A A A 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dS )TestOverwritezCheck input overwrite behavior c                     |                                 } ||g|R i | |j        }|r|t          |          z  }|r|t          |          z  }t          ||d|            d S )Nzspurious overwrite in )err_msg)copyr   reprr   )rJ   r$   routineargskwargsx2sigs          r*   _checkzTestOverwrite._checkM  s    VVXX$T$$$V$$$ 	4::C 	 4<<CR$BS$B$BCCCCCCr,   c                    t           j                            d          }t          j        |t           j                  r |j        | d |j        | z  z   }n
 |j        | }|                    |          } | j        ||g|R i | d S )Nri   r.   )rq   r   RandomState
issubdtypecomplexfloatingrandnastyper   )rJ   r   dtypeshaper   r   rt   datas           r*   	_check_1dzTestOverwrite._check_1dW  s    i##D))= 233 	%39e$r)#)U*;';;DD39e$D{{5!!D'3D333F33333r,   c                 R    | j         D ]}|                     t          |d           d S Nr@   )dtypesr   r   rJ   r   s     r*   	test_diffzTestOverwrite.test_diffb  s6    [ 	/ 	/ENN4....	/ 	/r,   c                 T    | j         D ]}|                     t          |dd            d S Nr   g?)r   r   r	   r   s     r*   test_tilbertzTestOverwrite.test_tilbertf  s8    [ 	7 	7ENN7E5#6666	7 	7r,   c                 T    | j         D ]}|                     t          |dd            d S r   )r   r   r
   r   s     r*   test_itilbertzTestOverwrite.test_itilbertj  s8    [ 	8 	8ENN8UE37777	8 	8r,   c                 R    | j         D ]}|                     t          |d           d S r   )r   r   r   r   s     r*   test_hilbertzTestOverwrite.test_hilbertn  s6    [ 	2 	2ENN7E51111	2 	2r,   c                 V    | j         D ] }|                     t          |ddd           !d S Nr         ?g      @)r   r   r   r   s     r*   test_cs_diffzTestOverwrite.test_cs_diffr  :    [ 	< 	<ENN7E5#s;;;;	< 	<r,   c                 V    | j         D ] }|                     t          |ddd           !d S r   )r   r   r   r   s     r*   test_sc_diffzTestOverwrite.test_sc_diffv  r   r,   c                 V    | j         D ] }|                     t          |ddd           !d S r   )r   r   r   r   s     r*   test_ss_diffzTestOverwrite.test_ss_diffz  r   r,   c                 V    | j         D ] }|                     t          |ddd           !d S r   )r   r   r   r   s     r*   test_cc_diffzTestOverwrite.test_cc_diff~  r   r,   c                 T    | j         D ]}|                     t          |dd            d S )Nr   r   )r   r   r   r   s     r*   
test_shiftzTestOverwrite.test_shift  s8    [ 	5 	5ENN5%4444	5 	5r,   N)r   r   r   __doc__rq   float32float64real_dtypes	complex64
complex128r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r*   r   r   G  s        )):rz*KBL"-88FD D D	4 	4 	4/ / /7 7 78 8 82 2 2< < << < << < << < <5 5 5 5 5r,   r   )r   Nr8   ),	__usage__numpy.testingr   r   r   scipy.fftpackr   r   r   r	   r
   r   r   r   r   r   r   r   r   numpyrq   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 6 6 6 6 6 6 6 6- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     < < < < < < < < < < < < < < < < < < < <          	 	 	 	       & & & &m@ m@ m@ m@ m@ m@ m@ m@` F  F  F  F  F  F  F  FFG G G G G G G G)> )> )> )> )> )> )> )>X, , , , , , , ,,A A A A A A A A"=5 =5 =5 =5 =5 =5 =5 =5 =5 =5r,   