
    tKg9O                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ eej,                  j/                  d      gZej,                  j2                  Zd Zd	 Z G d
 d      Z ed      ej,                  j;                  dej<                  ej>                  ej@                  ejB                  ejD                  ejF                  g      ej,                  j;                  dddg      ej,                  j;                  dej                  ejH                  ejJ                  ejL                  ejN                  ejP                  g      d                             Z) ed       G d d             Z* ed      ej,                  j;                  dej                  ejL                  ejV                  ejX                  g      d               Z- G d d      Z.ej,                  j;                  dej                  ejL                  ejV                  ejX                  ejJ                  ejP                  ej^                  ej`                  ejb                  ejd                  g
      d        Z3y)    N)random)assert_array_almost_equalassert_allclose)raises)array_api_compatible)array_namespacesizexp_assert_closexp_assert_equalskip_xp_backendsc                    | t         j                   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  fv r|j                  }|S | t         j                  t         j                  t         j                  t         j                   t         j"                  t         j$                  fv r|j&                  }|S t)        d|        )NzUnknown FFT function: )fftfftnfft2ifftifftnifft2hffthfftnhfft2irfftirfftnirfft2
complex128rfftrfftnrfft2ihfftihfftnihfft2float64
ValueError)funcxpdtypes      ^/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper'      s    388#))SYY#))SYY		3::szz3 3  L 
#((CIIsyy))SZZ5 
5

 L 1$899    c                 ,   t        |       }dt        j                  z  t        j                  |      t	        |      z  z  }t        j                  |      j                  dd      |z  }t        j                  | t        j                  |      z  d      S )Ny                 axis)lennppiarangefloatreshapesumexp)xLphases      r&   fft1r9   %   sj    AAIryy|E!H,-EIIaL  Q'%/E66!BFF5M/**r(   c                   n   e Zd Zd Z eddg      d        Zd Z eddg      d        Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej6                  j9                  dej<                  ej>                  ej@                  ejB                  g      d        Z"ej6                  j9                  dejF                  ejH                  g      d        Z%ej6                  j9                  dej<                  ej>                  ej@                  ejB                  g      d        Z&ej6                  j9                  dejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejF                  ejH                  g      d        Z-d  Z. ed!      ej6                  j9                  d"e/j`                  e/jb                  g      d#               Z2ej6                  j9                  d"d$d%g      d&        Z3ej6                  j9                  d"d'd(g      d)        Z4 edd*g      ej6                  j9                  dej:                  ejj                  ejN                  ejP                  ej<                  ej>                  ejl                  ejn                  ejR                  ejT                  ej@                  ejB                  ejp                  ejr                  ejV                  ejX                  ejF                  ejH                  g      d+               Z:y,)-TestFFTc           
      ~   d}|j                  t        |      dt        |      z  z         }|j                  t        |            }dD ]s  }t        t        j                  t        j                  |d|             |d|        t        t        j
                  t        j                  |d|       |      |d|        u y )N                 ?)	r+            r=   5      i  i  r   )asarrayr   r
   r   r   r   r   selfr$   maxlenr6   xris         r&   test_identityzTestFFT.test_identity-   s    JJvf~6&>(99:ZZv'8ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE 9r(   Tz&significant overhead for some backends)np_onlyreasonsc           
         d}|j                  t        |      dt        |      z  z         }|j                  t        |            }t        d|      D ]s  }t        t	        j
                  t	        j                  |d|             |d|        t        t	        j                  t	        j                  |d|       |      |d|        u y )Nr=   r>   r+   r   )rD   r   ranger
   r   r   r   r   rE   s         r&   test_identity_extensivezTestFFT.test_identity_extensive6   s    JJvf~6&>(99:ZZv'q&!ACHHSWWQqV_5q1v>CIIchhr!Aw&7;R!WE "r(   c           
         t        d      dt        d      z  z   }|j                  t        |            }|j                  |      }t        t	        j                  |      |       t        t	        j                  |d      |       t        t	        j                  |d      ||j                  |j                  d|j                              z         t        t	        j                  |d      |dz         y )N   r>   backwardnormorthor%   forward)r   rD   r9   r
   r   sqrtr!   rF   r$   r6   expects       r&   test_fftzTestFFT.test_fft?   s    2JF2J&DG$JJqM
F+
3V<0Bbjj)I!JJ	M	2FRK@r(   zsome backends allow `n=0`c                     |j                  g d|j                        }t        t        t        j                  |d       y )Nr+   r?      rV   r   )rD   r   assert_raisesr"   r   )rF   r$   r6   s      r&   
test_fft_nzTestFFT.test_fft_nI   s*    JJyJ6j#''1a0r(   c           	      4   |j                  t        d      dt        d      z  z         }t        t        j                  t        j                  |            |       dD ]8  }t        t        j                  t        j                  ||      |      |       : y )NrQ   r>   rR   rU   rW   rS   )rD   r   r
   r   r   rF   r$   r6   rT   s       r&   	test_ifftzTestFFT.test_ifftN   sf    JJvbzBvbzM12,a04DCHHSWWQT%:FJ 5r(   c           
         |j                  t        d      dt        d      z  z         }t        j                  t        j                  |d      d      }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d	|j                  
            z         t        t        j                  |d      |d	z         y NrQ      r>   r+   r,   r   rR   rS   rU   X  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   	test_fft2zTestFFT.test_fft2T   s    JJvh'"VH-=*==>+!4V,4f=1G2::)N!OO	Q3Vw5GHr(   c           
         |j                  t        d      dt        d      z  z         }t        j                  t        j                  |d      d      }t	        t        j
                  |      |       t	        t        j
                  |d      |       t	        t        j
                  |d      ||j                  |j                  d	|j                  
            z         t	        t        j
                  |d      |d	z         y rf   )rD   r   r   r   r
   r   rX   r!   rY   s       r&   
test_ifft2zTestFFT.test_ifft2]   s    JJvh'"VH-=*==>#((11-A6		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr(   c           
      <   |j                  t        d      dt        d      z  z         }t        j                  t        j                  t        j                  |d      d      d      }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d	      ||j                  |j                  d
|j                              z         t        t        j                  |d      |d
z         y )NrQ   rh   
   r>   r?   r,   r+   r   rR   rS   rU   p  rV   rW   )rD   r   r   r
   r   rX   r!   rY   s       r&   	test_fftnzTestFFT.test_fftnf   s    JJvl+b1E.EEF!3!<1EV,4f=1L

)S!TT	V3V|5LMr(   c           
      n   |j                  t        d      dt        d      z  z         }t        j                  t        j                  t        j                  |d      d      d      }t	        t        j
                  |      |d       t	        t        j
                  |d	
      |d       t	        t        j
                  |d
      t        j
                  |      |j                  |j                  d|j                              z         t	        t        j
                  |d
      |dz  d       y )Nrn   r>   r?   r,   r+   r   gHz>)rtolrR   rS   rU   rp   rV   rW   )rD   r   r   r   r
   r   rX   r!   rY   s       r&   
test_ifftnzTestFFT.test_ifftno   s    JJvl+b1E.EEF#((388AA#6Q?aH		!f48		!*5vDIIIag&IIaL2772::l"**:#MNN	
 			!)4,/!	#r(   c                    |j                  t        d      |j                        }t        |      dt        |      z  fD ]  }dD ]^  }t	        t        j                  |||      t        j
                  |j                  ||j                        ||      d |dz  dz           ` t	        t        j                  ||d      t        j                  ||      |j                  |j                  ||j                              z          y )	N   rV   r?   )NrR   rU   rW   nrT   r+   rU   )rx   )	rD   r   r!   r	   r
   r   r   r   rX   )rF   r$   r6   rx   rT   s        r&   	test_rfftzTestFFT.test_rfft|   s    JJvbzJ4q'1T!W9%A>ad ; #

1BMM
(J*+$!88C!Q$(!EF ? ag.a 2772::arzz:+J#KK &r(   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y )NrQ   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   
test_irfftzTestFFT.test_irfft   sY    JJvbz"		#((1+.24DCIIchhqt&<4H!L 5r(   c           
      &   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y 	Nrg   rV      rR   rS   rU   ri   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   
test_rfft2zTestFFT.test_rfft2   s    JJvh'rzzJ:"**Qbmm*<=a"fE		!f-		!*5v>		!'2G2::)N!OO	Q		!)4f6HIr(   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y Nrg   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   test_irfft2zTestFFT.test_irfft2   sZ    JJvh'(

399Q<0!44DCJJsyy'>TJAN 5r(   c           
      ,   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y 	Nrn   rV      rR   rS   rU   rp   rW   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   
test_rfftnzTestFFT.test_rfftn   s    JJvl+2::J>"**Qbmm*<=aBQBhG		!f-		!*5v>		!'2L

)S!TT	V		!)4f6MNr(   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y Nrn   rb   rS   )rD   r   r
   r   r   r   rc   s       r&   test_irfftnzTestFFT.test_irfftn   sZ    JJvl+,

399Q<0!44DCJJsyy'>TJAN 5r(   c           
         t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }|j	                  |      }|j	                  |      }|j                  t        j                  |            }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j	                  d|j                  	            z         t        t        j                  |d
      |dz         y )N   r>   r+   r*   rR   rS   rU   rQ   rV   rW   )r   r/   concatenateconjrD   realr   r
   r   rX   r!   )rF   r$   r6   x_hermrZ   s        r&   	test_hfftzTestFFT.test_hfft   s    2JF2J&Avay 9:NNFAddGLLN34JJqMF#$(&1j96Bg6Bbjj)I!JJ	Li8&2+Fr(   c           	         t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }|j	                  |      }|j	                  |      }t        t        j                  t        j                  |            |       dD ]8  }t        t        j                  t        j                  ||      |      |       : y )Nr   r>   r+   r*   rb   rS   )	r   r/   r   r   rD   r
   r   r   r   )rF   r$   r6   r   rT   s        r&   
test_ihfftzTestFFT.test_ihfft   s    2JF2J&Avay 9:NNFAddGLLN34JJqMF#		#((6"23V<4DCIIchhvD&AMvV 5r(   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y r   )rD   r   r
   r   r   r    rc   s       r&   
test_hfft2zTestFFT.test_hfft2   sZ    JJvh'(		#**Q-0!44DCIIcjj&>TJAN 5r(   c           
      &   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d df   }t        t        j                  |      |       t        t        j                  |d      |       t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y r}   )	rD   r   r!   r   r   r   r
   r    rX   rY   s       r&   test_ihfft2zTestFFT.test_ihfft2   s    JJvh'rzzJ:2::ar}}:=>q#2#vF

1v.

1:6?JJqw'RWWRZZrzzZBCC	
 	

195v7IJr(   c           	         |j                  t        d            }t        t        j                  t        j
                  |            |       dD ]8  }t        t        j                  t        j
                  ||      |      |       : y r   )rD   r   r
   r   r   r   rc   s       r&   
test_hfftnzTestFFT.test_hfftn   sZ    JJvl+,		#**Q-0!44DCIIcjj&>TJAN 5r(   c           
      ,   |j                  t        d      |j                        }t        j                  |j                  ||j
                              d d d d d df   }t        |t        j                  |             t        |t        j                  |d             t        t        j                  |d      ||j                  |j                  d|j                              z         t        t        j                  |d      |dz         y r   )	rD   r   r!   r   r   r   r
   r   rX   rY   s       r&   test_ihfftnzTestFFT.test_ihfftn   s    JJvl+2::J>2::ar}}:=>q!RaRxH

1.

1: >?JJqw'RWWRZZBJJZGHH	
 	

195v7NOr(   c                     t        ||      }|j                  t        d      |      }g d}t        |      }|D ]B  } ||j	                  ||            }|j	                   |||      |      }	t        ||	       D y )Nrn   rV   )r   r+   r?   r   r?   r+   )r+   r   r?   r+   r?   r   )r?   r   r+   )r?   r+   r   axes)r'   rD   r   r   permute_dimsr
   )
rF   opr$   r%   r6   r   xp_testaop_trtr_ops
             r&   _check_axeszTestFFT._check_axes   s}    (R0JJvl+5J9Q!!$Aw++AA+67E((AAQ(?EE5) r(   r   c                 (    | j                  ||       y Nr   rF   r   r$   s      r&   test_axes_standardzTestFFT.test_axes_standard       R r(   c                 (    | j                  ||       y r   r   r   s      r&   test_axes_non_standardzTestFFT.test_axes_non_standard   r   r(   c           
         t        ||      }|j                  t        d      |      }g d}t        |      }|D ]  }t	        t        |j                        D cg c]*  }||d d v rd|j                  |   z  n|j                  |   , c}      }	 ||j                  ||      |	d d d      }
|j                   |||	d d |d d       |      }t        |
|        y c c}w N)r@         rV   )r   r   r   r?   r   r   r+   )sr   
r'   rD   r   r   tuplerN   ndimshaper   r
   rF   r   r$   r%   r6   r   r   r   axr   r   r   s               r&   $test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standard   s     )R0JJvj)J70!!$A%*166]4%2r -/!BQ%K1QWWR[=QWWR[H%24 5E w++AA+6r1E((Ar2A)G./ ) 1EE5) 4   /C
c           
         t        ||      }|j                  t        d      |      }g d}t        |      }|D ]  }t	        t        |j                        D cg c]*  }||d d v rd|j                  |   z  n|j                  |   , c}      }	 ||j                  ||      |	d d d      }
|j                   |||	d d |d d       |      }t        |
|        y c c}w r   r   r   s               r&   (test_axes_subset_with_shape_non_standardz0TestFFT.test_axes_subset_with_shape_non_standard	  s    
 )R0JJvj)J70!!$A%*166]4%2r -/!BQ%K1QWWR[=QWWR[H%24 5E w++AA+6%)&QE((Ar2A)Ga(PEE5) 4r   c                    |j                  t        d      |j                        }t        |      }|j                  j                  |      }t        |      dz  }t        j                  t        j                  ft        j                  t        j                  ft        j                  t        j                  fg}|D ]  \  }}|t        j                  k(  r8|j                  ||j                        }|j                  j                  |      }t        |      dt        |      z  fD ]D  }dD ]=  }	 ||||	      }
 ||
||	      }
t        |j                  j                  |
      |       ? F  y )NrQ   rV   r?   rb   rw   )rD   r   r!   r   linalgvector_normr	   r   r   r   r   r   r   r   r
   )rF   r$   r6   r   x_normrx   
func_pairsforwbackrT   tmps              r&   test_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preserving  s   JJvbzJ4!!$++A.GaKxx+ yy#((+ww)
 %JD$swwJJqJ6 33A61gqay)<DqAD1Csad3C#GNN$>$>s$CVL = *	 %r(   rK   r%   c                 Z   t        d      j                  |      }t        j                  t        j                  t        j
                  t        j                  i}|j                  ||         }t        j                  t        j                  |            }t        j                  t        j                  |            }t        j                  t        j                  |      |j                  d         }t        ||       t        ||       t        ||       |j                  |j                  k(  sJ |j                  t        j                   t        j"                  |j                        k(  sJ |j                  t        j                   t        j"                  |j                        k(  sJ y )NrQ   r   )r   astyper/   float16	complex64
longdoubleclongdoubler   r   r   r   r   r   r   r   r%   result_typefloat32)rF   r%   r6   
out_dtypes	x_complexres_fftres_rfftres_hffts           r&   test_dtypes_nonstandardzTestFFT.test_dtypes_nonstandard2  s    2Je$jj",,r~~N
HHZ./	((3771:&99SXXa[)88CIIaL!''!*5!'95!(A.!(A.}}	///~~

AGG!DDDD~~

AGG!DDDDr(   r   r!   c                 <   |j                  t        d      t        ||            }t        j                  t        j
                  |            }t        j                  t        j                  |      |j                  d         }t        ||       t        ||       y )NrQ   rV   r   )
rD   r   getattrr   r   r   r   r   r   r
   )rF   r%   r$   r6   r   r   s         r&   test_dtypes_realzTestFFT.test_dtypes_realD  si    JJvbzU);J<99SXXa[)88CIIaL!''!*5!$!$r(   r   r   c                     |j                  t        d      t        ||            }t        j                  t        j                  |            }t        ||       y )NrQ   rV   )rD   r   r   r   r   r
   )rF   r%   r$   r6   r   s        r&   test_dtypes_complexzTestFFT.test_dtypes_complexN  s?    JJvbzU);J<((3771:&#r(   z,array-likes only supported for NumPy backendc                     ddgddggddgddggddgddggg}t         ||       ||j                  |                   y )Ng      ?)r
   rD   )rF   r$   r   r6   s       r&   test_array_likezTestFFT.test_array_likeV  sX     Cj3*%Cj3*%Cj3*%' 	1r"**Q-01r(   N);__name__
__module____qualname__rJ   r   rO   r[   r`   rd   rj   rl   rq   rt   ry   r{   r   r   r   r   r   r   r   r   r   r   r   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r/   r   r   r   r   r   r   r   r   r   r   r    r(   r&   r;   r;   +   s   F d-U,VWF XFA d-H,IJ1 K1KIJN#
MJOOOGWO	KO	P* [[TCHHciiCJJ#OP! Q! [[TCIIszz#:;! <! [[TCHHcii$'IIszz$; <*<*  [[TCHHcii$'IIszz$'IIszz$'IIszz$; <*	<*M. d#[[Wrzz2==&ABE C $E  [[Wy)&<=% >% [[W{L&AB$ C$ dMNP[[TCGGSXX$'HHcii$'HHcii$'HHcii$'IIszz$'IIszz$'HHcii$'IIszz$'IIszz$< =2=P2r(   r;   Tr   r%   orderFznon-contiguousr   c                    t         j                  j                  d      }|j                  ddd      j	                  | d      }|dk(  rt        j
                  |      }n#|d d d   }t        j                  |d d d         }|j                  j                  d	      r1t        d
      D ]"  } |||      } |||      }t        ||       $ y |j                  j                  d      rZg d}	|j                  j                  d      r|	j                  g d       |	D ]"  }
 |||
      } |||
      }t        ||       $ y t        )N*   r         F)copyr   r*   r   r^   r,   )r   r   )r   )r+   r?   )r   r?   r   ))r   )r+   )r?   Nr   )r/   r   RandomStaterandr   asfortranarrayascontiguousarrayr   endswithrN   r   extendr"   )r%   r   r   rngXYr-   X_resY_resr   r   s              r&   test_fft_with_orderr   h  s%    ))


#CAr!!%e!4A|a  ddG  4R4)
||U#!HD%E%E%eU3  
		/	0'<<  (KK01BOEOE%eU3 
 r(   )cpu_onlyc                   D    e Zd ZdZdZdddZd Zd Zd Zd	 Z	d
 Z
d Zy)TestFFTThreadSafer@   )i      Nr$   c                   fd}t        j                         } | }t        | j                        D cg c]  }t	        j
                  |||f       }}|D 	cg c]  }	|	j                          c}	 |D 	cg c]  }	|	j                          c}	 t        | j                        D ]   }t        |j                  d      |d       " y c c}w c c}	w c c}	w )Nc                 .    |j                   |         y r   )put)argsqr#   s     r&   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r(   )targetr     )timeoutz6Function returned wrong value in multithreaded context)err_msg)
queueQueuerN   threads	threadingThreadstartjoinr   get)
rF   r#   r$   r  r  r  expectedrI   tr6   s
    `        r&   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+) V4)<) 	
 +AqA1a1 t||$Aa (P %+s    CC;Cc                     |j                  | j                  |j                        }| j                  t        j                  ||       y NrV   r   )onesinput_shaper   r  r   rF   r$   r   s      r&   r[   zTestFFTThreadSafe.test_fft  s7    GGD$$BMMG:#''1,r(   c                     |j                  | j                  d      }| j                  t        j                  ||       y Ny      ?        r   )fullr  r  r   r   r  s      r&   rd   zTestFFTThreadSafe.test_ifft  s1    GGD$$d+#((A"-r(   c                 ~    |j                  | j                        }| j                  t        j                  ||       y Nr   )r  r  r  r   r   r  s      r&   ry   zTestFFTThreadSafe.test_rfft  s/    GGD$$%#((A"-r(   c                     |j                  | j                  d      }| j                  t        j                  ||       y r  )r  r  r  r   r   r  s      r&   r{   zTestFFTThreadSafe.test_irfft  s1    GGD$$d+#))Q2.r(   c                     |j                  | j                  |j                        }| j                  t        j
                  ||       y r  )r  r  r   r  r   r   r  s      r&   r   zTestFFTThreadSafe.test_hfft  s7    GGD$$BLLG9#((A"-r(   c                 ~    |j                  | j                        }| j                  t        j                  ||       y r  )r  r  r  r   r   r  s      r&   r   zTestFFTThreadSafe.test_ihfft  s/    GGD$$%#))Q2.r(   )r   r   r   r
  r  r  r[   rd   ry   r{   r   r   r   r(   r&   r   r     s2    GK+/ *-.././r(   r   r#   c           
      6   t        j                  d      5 }|j                  | t        d      D cg c]  }t	        j
                  d       c}      }d d d         | t	        j
                  d            }D ]  }t        ||        y c c}w # 1 sw Y   =xY w)Nr?   r   d   )multiprocessingPoolmaprN   r/   r  r   )r#   p_resrZ   r6   s         r&   test_multiprocessr(    sz    
 
		a	 AeeDq:A2773<:; 
! "''#,F6"  ; 
!	 s   BB
B
BBc                       e Zd Zd Zy)
TestIRFFTNc                     t         j                  j                  d      \  }}|d|z  z   }|j                  |      }d}t        j                  ||       y )N)r?   r@   r       r>   )r   )r/   r   rD   r   r   )rF   r$   arair   r   s         r&   test_not_last_axis_successz%TestIRFFTN.test_not_last_axis_success  sI    !!.1BBJJJqM 	

14 r(   N)r   r   r   r0  r   r(   r&   r*  r*    s    !r(   r*  c                    | t         j                  t         j                  t         j                  fv r|j                  }n|j
                  }|j                  dk7  r1|j                  g d|      } | |       t        t        | |d       y y )Nnumpyr]   rV   r?   )workers)
r   r   r   r   r!   r   r   rD   r_   r"   )r#   r$   r%   r6   s       r&   test_non_standard_paramsr4    si     #))SYY//

	{{gJJyJ.Qj$15	 r(   )4r  r  r"  r2  r/   r   numpy.randomr   numpy.testingr   r   r   r_   	scipy.fftr   scipy.conftestr   scipy._lib._array_apir   r	   r
   r   r   usefixtures
pytestmarkr   r'   r9   r;   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r(  r*  r   r   r   r   r4  r   r(   r&   <module>r<     s         D *  /  #FKK$;$;<N$OP
;;// +z2 z2z	 $	RZZ	r}}bnn	67 3(8"9:	#((CHH	399cii	)*	* ;	7  : 4 // // !//d $#''388SXXsyy!IJ# K  #
! 
! #''388SXXsyy"%((CII"%))SZZ399"N O
6O
6r(   