+
    ,i                        ^ RI t ^ RIt^ RIHt ^ RIHtHtHtH	t	H
t
Ht ^ RIt^ RIHt ^ RIHt ^RIHt ]P&                  P(                  t]P&                  P*                  t]! RRR.R	7      .tR
tRRRRRRRRRRRR/t ! R R4      t]P&                  P5                  R]! ^^4      4      ]P&                  P5                  R]4       ! R R4      4       4       t]! RRR7      ]P&                  P5                  R]! ^ ^4      4       ! R R4      4       4       t]! RRR7       ! R R 4      4       t ! R! R"4      t ! R# R$4      t  ! R% R&4      t! ! R' R(4      t" ! R) R*4      t#R# )+    N)suppress_warnings)_asarrayassert_array_almost_equalis_jax	np_compatxp_assert_equalxp_assert_close)raises)typesTcupy	jax.numpy)cpu_only
exceptions-q=mirrorreflect	symmetricgrid-mirror	grid-wrapwrapnearestedgegrid-constantconstantc                     a  ] tR t^"t o ]! RRR7      ]P                  P                  RR. RO3R. RO3R. RO3R. RO3R	. RO3R
. RO3R. RO3.4      R 4       4       t]! RRR7      ]P                  P                  RR. RO3R. RO3R. RO3R. RO3R	. RO3R
. RO3R. RO3.4      R 4       4       t	]P                  P                  R. RO4      ]P                  P                  R]
! ^4      4      R 4       4       tRtV tR# ) TestBoundariesr   &CuPy does not have geometric_transformreasonzmode, expected_valuer   r   r   r   r   r   r   c                    R  pVP                  . RO4      p\        \        P                  ! WTRVR^R7      VP                  V4      4       R# )c                 $    V ^ ,          R,           3# r         ? xs   &H/usr/lib/python3/dist-packages/scipy/ndimage/tests/test_interpolation.pyshift-TestBoundaries.test_boundaries.<locals>.shift0       aD3J=     )cvalmodeoutput_shapeorderN)               @)   asarrayr   ndimagegeometric_transformselfr-   expected_valuexpr(   datas   &&&&  r'   test_boundariesTestBoundaries.test_boundaries$   sE    	! zz-(''"459DJJ~&	(r+   c           
         R  pVP                  . RO4      p\        \        P                  ! WTRVRR7      VP                  V4      4       R# )c                 $    V ^ ,          R,
          3# )r   g?r$   r%   s   &r'   r(   .TestBoundaries.test_boundaries2.<locals>.shiftE   r*   r+   )r,   r-   r.   Nr0   r1   r2      r4   rE   r6   r:   s   &&&&  r'   test_boundaries2TestBoundaries.test_boundaries29   sB    	! zz,'''"459;JJ~&	(r+   r-   r/   c                   \        V4      '       d%   VR9  g   V^8  d   \        P                  ! R4       \        P                  ! R^\        P
                  R7      pVP                  V4      pVP                  \        P                  ! R^RR7      4      p\        P                  ! WVVP                  R3,          W!R7      p^ p\        P                  V4      p	VP                  \        P                  ! WHV	R7      4      p
VP                  W,           4      VP                  R3,          p\        P                  ! WW!R7      pVR8X  d   R	MR
p\        W|RVR7       R# )z$Tests based on examples from gh-2640z-Jax does not support grid- modes or order > 1dtypei  )num.r/   r-   r-   r   gh㈵>r   Hz>rtolatolN)r   r   r   r   r   ii)r   pytestxfailnparangefloat64r7   linspacer8   map_coordinatesnewaxisndimage_to_numpy_modegetpadr	   )r;   r-   r/   r=   np_datar>   r&   ynpadpad_modepaddedcoordsexpectedrR   s   &&&&          r'   test_boundary_spline_accuracy,TestBoundaries.test_boundary_spline_accuracyN   s    2JJMM	LLHI))B4zz'"JJr{{2rt45##DBJJO*<EU (,,T2BFF7x@ADH%bjj#o6**6R.tE$T:r+   r$   N)      ?      @      @rE   rE   rE   rE   )rg   rh   ri   rg   rh   ri   rg   )rg   rh   ri   rh   rg   rh   ri   )rg   rh   ri   ri   rh   rg   rg   )rg   rh   ri   rE   ri   rh   rg   )rg   rh   ri   r4   r4   r4   r4   )rg   rh   ri   rg   r4   r4   r4   )r0   r0   r1   r2   )r2   r0   r1   r2   )rE   r0   r1   r2   )r1   r0   r1   r2   )r4   r0   r1   r2   )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__skip_xp_backendsrS   markparametrizer?   rG   rangere   __static_attributes____classdictcell____classdict__s   @r'   r   r   "   s;    f%MN[[
0	1
5	6
:	;
7	8
6	7
5	6
;	<	>	(	 O( f%MN[[
\	"
,	
|	$
L	!
\	"
m	$
=	)	+	(	 O( [[V &1 2 [[WeAh/; 02;r+   r   r/   rK   c                   \   a  ] tR t^jt o R tR t]! RR.RR7      R 4       tR tR	 t	R
t
V tR# )
TestSplinec                    \        W14      pVP                  . VR 7      p\        P                  ! WBR7      pWSP	                  ^VP
                  R 7      8X  g   Q hR# )rJ   r/   Ngetattronesr8   spline_filterr7   rK   r;   rK   r/   r=   r>   outs   &&&&  r'   test_spline01TestSpline.test_spline01n   sK    "wwrw'##D6jj#))j4444r+   c                    \        W14      pVP                  ^.VR7      p\        P                  ! WBR7      p\	        WSP                  ^.4      4       R# )r0   rJ   ry   N)r{   r7   r8   r}   r   r~   s   &&&&  r'   test_spline02TestSpline.test_spline02t   sB    "zz1#Uz+##D6!#zz1#7r+   Tr   zoutput=dtype is numpy-specific)np_onlyr   r   c                    \        W14      pVP                  . VR 7      p\        P                  ! WBVR7      pWSP	                  ^VP
                  R 7      8X  g   Q hR# )rJ   outputNrz   r~   s   &&&&  r'   test_spline03TestSpline.test_spline03z   sO     "wwrw'##D>jj#))j4444r+   c                    \        W14      pVP                  ^.VR7      p\        P                  ! WB4      p\	        WSP                  . RO4      4       R# )rE   rJ   Nr0   r0   r0   r0   )r{   r|   r8   r}   r   r7   r~   s   &&&&  r'   test_spline04TestSpline.test_spline04   sA    "wws%w(##D0!#zz,'?@r+   c                    \        W14      pVP                  ^^.VR7      p\        P                  ! WBR7      pVP	                  . RO. RO. RO. RO.4      p\        WV4       R# )rE   rJ   ry   Nr   )r{   r|   r8   r}   r7   r   )r;   rK   r/   r=   r>   r   rd   s   &&&&   r'   test_spline05TestSpline.test_spline05   sZ    "ww1vUw+##D6::|+++- . 	"#0r+   r$   N)rj   rk   rl   rm   r   r   rn   r   r   r   rr   rs   rt   s   @r'   rw   rw   j   sA     58 dx=?5?5A1 1r+   rw   r   r   c                      a  ] tR t^t o R tR tR tR t]P                  P                  RRR.4      R 4       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V tR# )TestGeometricTransformc                    VP                  ^.4      pR p\        P                  ! W4VP                  VR7      p\	        WRP                  ^.VP
                  R7      4       R# )r0   c                     V # Nr$   r%   s   &r'   mappingBTestGeometricTransform.test_geometric_transform01.<locals>.mapping       Hr+   ry   rJ   Nr7   r8   r9   shaper   rK   r;   r/   r=   r>   r   r   s   &&&   r'   test_geometric_transform011TestGeometricTransform.test_geometric_transform01   sN    zz1#	 ))$057!#zz1#SYYz'GHr+   c                    VP                  ^.4      pR p\        P                  ! W4VP                  VR7      p\	        WRP                  . ROVP                  R7      4       R# )rE   c                     V # r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform02.<locals>.mapping   r   r+   ry   rJ   Nr   r|   r8   r9   r   r   r7   rK   r   s   &&&   r'   test_geometric_transform021TestGeometricTransform.test_geometric_transform02   sL    wws|	 ))$057!#zz,ciiz'PQr+   c                    VP                  ^.4      pR p\        P                  ! W4VP                  VR7      p\	        WRP                  . ROVP                  R7      4       R# )rE   c                 $    V ^ ,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform03.<locals>.mapping       aD1H;r+   ry   rJ   Nr   r0   r0   r0   r   r   s   &&&   r'   test_geometric_transform031TestGeometricTransform.test_geometric_transform03   sL    wws|	 ))$057!#zz,ciiz'PQr+   c                    VP                  . RO4      pR p\        P                  ! W4VP                  VR7      p\	        WRP                  . ROVP
                  R7      4       R# )rE   c                 $    V ^ ,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform04.<locals>.mapping   r   r+   ry   rJ   NrE   r0   r2   r1   r   rE   r0   r2   r   r   s   &&&   r'   test_geometric_transform041TestGeometricTransform.test_geometric_transform04   sK    zz,'	 ))$057!#zz,ciiz'PQr+   rK   rW   
complex128c                r   \        W24      pVP                  . RO. RO. RO.VR7      pVP                  . RO. RO. RO.VR7      pVP                  VP                  R4      '       d!   VRV,          ,          pVRV,          ,          pR p\        P
                  ! WFVP                  VR7      p\        Wu4       R# )	r0   rJ   complex floating              ?c                 4    V ^ ,          V ^,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform05.<locals>.mapping       aD!A$(##r+   ry   Nr   r   )r{   r7   isdtyperK   r8   r9   r   r   )r;   r/   rK   r=   r>   rd   r   r   s   &&&&    r'   test_geometric_transform051TestGeometricTransform.test_geometric_transform05   s    "zz<'')05  7 ::|++-49  ; ::djj"455BIDX%H	$ ))$057!#0r+   c                    VP                  . RO. RO. RO.4      pR p\        P                  ! W4VP                  VR7      pVP                  . RO. R	O. R
O.VP                  R7      p\        WV4       R# )rE   c                 4    V ^ ,          V ^,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform06.<locals>.mapping   r   r+   ry   rJ   Nr   r5            r2   r   r2   r   r   r   r5   r   r   r   r2   r   r2   r7   r8   r9   r   rK   r   r;   r/   r=   r>   r   r   rd   s   &&&    r'   test_geometric_transform061TestGeometricTransform.test_geometric_transform06   p    zz<'') *	$ ))$057::|++-47II  ? 	"#0r+   c                    VP                  . RO. RO. RO.4      pR p\        P                  ! W4VP                  VR7      pVP                  . RO. RO. RO.VP                  R7      p\        WV4       R# )	rE   c                 4    V ^ ,          ^,
          V ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform07.<locals>.mapping       aD1Had##r+   ry   rJ   Nr   r   r   r   r   r   r   r   r   s   &&&    r'   test_geometric_transform071TestGeometricTransform.test_geometric_transform07   r   r+   c                    VP                  . RO. RO. RO.4      pR p\        P                  ! W4VP                  VR7      pVP                  . RO. R	O. R
O.VP                  R7      p\        WV4       R# )rE   c                 B    V ^ ,          ^,
          V ^,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform08.<locals>.mapping       aD1HadQh''r+   ry   rJ   Nr   r   r   r   r   r   r   r   s   &&&    r'   test_geometric_transform081TestGeometricTransform.test_geometric_transform08   sp    zz<'') *	( ))$057::|++-47II  ? 	"#0r+   c                ,   VP                  . RO. RO. R	O.4      pR pV^8  d   \        P                  ! W1R7      pMTp\        P                  ! WTVP                  VRR7      pVP                  . R
O. RO. RO.VP
                  R7      p\        Wg4       R# )rE   c                 B    V ^ ,          ^,
          V ^,          ^,
          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform10.<locals>.mapping  r   r+   ry   Fr/   	prefilterrJ   Nr   r   r   r   r   r   )r7   r8   r}   r9   r   rK   r   )r;   r/   r=   r>   r   filteredr   rd   s   &&&     r'   test_geometric_transform101TestGeometricTransform.test_geometric_transform10  s    zz<'') *	( AI,,T?HH))(TZZ05H::|++-47II  ? 	"#0r+   c                    VP                  ^.VP                  R7      pR p\        P                  ! W4^.VR7      p\	        WRP                  . ROVP                  R7      4       R# )r1   rJ   c                 $    V ^ ,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform13.<locals>.mapping  s    aDAI<r+   ry   Nr   )r|   rW   r8   r9   r   r7   rK   r   s   &&&   r'   test_geometric_transform131TestGeometricTransform.test_geometric_transform13  sP    wws"**w-	  ))$!EJ!#zz,ciiz'PQr+   c                    VP                  . RO4      pR p\        P                  ! W4^.VR7      p\        WRP                  . ROVP                  R7      4       R# )r0   c                 $    ^V ^ ,          ,          3# r1   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform14.<locals>.mapping   s    !H;r+   ry   rJ   Nr0   r   r1   r   r2   r5   rE   rE   rD   )r7   r8   r9   r   rK   r   s   &&&   r'   test_geometric_transform141TestGeometricTransform.test_geometric_transform14  sG    zz23	 ))$!EJ!#zz,ciiz'PQr+   c                    VP                  . RO4      pR p\        P                  ! W4^.VR7      p\        VR,          VP                  . RO4      4       R# )r0   c                 $    V ^ ,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform15.<locals>.mapping)  r   r+   ry   NNr1   NrD   r7   r8   r9   r   r   s   &&&   r'   test_geometric_transform151TestGeometricTransform.test_geometric_transform15&  sD    zz,'	 ))$!EJ!#c(BJJ|,DEr+   c           	         . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        WRP                  ^^.^^.^	^..4      4       R# )r0   c                 4    V ^ ,          V ^,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform16.<locals>.mapping5  r   r+   ry   NrD   r   r   r5   r   g      "@
         r2   r1   r   r   s   &&&   r'   test_geometric_transform161TestGeometricTransform.test_geometric_transform16/  sd    !# zz$	$ ))$057!#zzAq6Aq6Ar72K'LMr+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        WRP                  . RO.4      4       R# )r0   c                 4    V ^ ,          ^,          V ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform17.<locals>.mappingB  r   r+   ry   NrD   r   	   r   r   r   r0   rE   r   r   s   &&&   r'   test_geometric_transform171TestGeometricTransform.test_geometric_transform17<  sS    ! zz$	$ ))$057!#zz<.'ABr+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        WRP                  ^^..4      4       R# )r0   c                 B    V ^ ,          ^,          V ^,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform18.<locals>.mappingO  r   r+   ry   NrD   r   r  r0   r1   r   r   s   &&&   r'   test_geometric_transform181TestGeometricTransform.test_geometric_transform18I  sW    ! zz$	( ))$057!#zzAq6(';<r+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        VR,          V4       R# )	r0   c                 4    V ^ ,          V ^,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform19.<locals>.mapping\  r   r+   ry   NrD   r   r  r2   r   .r   r   r   s   &&&   r'   test_geometric_transform191TestGeometricTransform.test_geometric_transform19V  N    ! zz$	$ ))$057!#h-6r+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        VR,          V4       R# )	r0   c                 4    V ^ ,          ^,          V ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform20.<locals>.mappingi  r   r+   ry   NrD   r   r  r   rE   r   .r   r   s   &&&   r'   test_geometric_transform201TestGeometricTransform.test_geometric_transform20c  r  r+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        VR,          V4       R# )	r0   c                 B    V ^ ,          ^,          V ^,          ^,          3# r   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform21.<locals>.mappingv  r   r+   ry   NrD   r   r  r   r   r   r   r   r   s   &&&   r'   test_geometric_transform211TestGeometricTransform.test_geometric_transform21p  sN    ! zz$	( ))$057!#h-6r+   c                    . RO. RO. RO.pVP                  W2P                  R7      pR pR p\        P                  ! W4R	VR7      p\        P                  ! WeR
VR7      p\	        Wc4       R# )r0   rJ   c                 B    V ^ ,          ^,          V ^,          ^,          3# r   r$   r%   s   &r'   mapping1CTestGeometricTransform.test_geometric_transform22.<locals>.mapping1  r   r+   c                 B    V ^ ,          ^,          V ^,          ^,          3# r   r$   r%   s   &r'   mapping2CTestGeometricTransform.test_geometric_transform22.<locals>.mapping2  r   r+   ry   NrD   r   r  r   r2   rE   )r7   rW   r8   r9   r   )r;   r/   r=   r>   r&  r)  r   s   &&&    r'   test_geometric_transform221TestGeometricTransform.test_geometric_transform22}  sj    ! zz$jjz1	(	( ))$*0?))#*0?!#,r+   c                    . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR7      p\        WRP                  ^^.4      4       R# )r0   c                 &    ^V ^ ,          ^,          3# r0   r$   r%   s   &r'   r   BTestGeometricTransform.test_geometric_transform23.<locals>.mapping  s    qtax= r+   ry   NrD   r   r  r   r   r   s   &&&   r'   test_geometric_transform231TestGeometricTransform.test_geometric_transform23  sR    ! zz$	! ))$UK!#zz1a&'9:r+   c           	         . RO. RO. RO.pVP                  V4      pR p\        P                  ! W4RVR	R^/R7      p\        WRP                  ^^.4      4       R# )
r0   c                 $    W^ ,          V,          3# r   r$   )r&   abs   &&&r'   r   BTestGeometricTransform.test_geometric_transform24.<locals>.mapping  s    tax= r+   r7  )r/   extra_argumentsextra_keywordsNrD   r   r  r   r0  r   r   s   &&&   r'   test_geometric_transform241TestGeometricTransform.test_geometric_transform24  s`    ! zz$	! ))4ud8% 	"#zz1a&'9:r+   r$   N)rj   rk   rl   rm   r   r   r   r   rS   ro   rp   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r,  r2  r;  rr   rs   rt   s   @r'   r   r      s     IRRR [[Wy,&?@1 A1(1111&RRFNC=777-$
;; ;r+   r   c                      a  ] tR tRt o R t]P                  P                  R. RO4      ]P                  P                  R]! ^4      4      R 4       4       t	]
! RRR7      R	 4       t]
! RR
R7      R 4       tRtV tR# )TestGeometricTransformExtrai  c           	         VP                  . RO. RO.VP                  R7      pR pVP                  . RO. R	O.4      p\        \        P                  ! W#R^R7      V4       R# )
r0   rJ   c                 B    V ^ ,          R,
          V ^,          R,
          3# r"   r$   r%   s   &r'   r   ZTestGeometricTransformExtra.test_geometric_transform_grid_constant_order1.<locals>.mapping      aD3J!A$*--r+   r   r-   r/   Nr0   r1   r2   rE   r   r   g      ?g      ?      ?rG  g      @r3   )r7   rW   r   r8   r9   )r;   r=   r&   r   expected_results   &&   r'   -test_geometric_transform_grid_constant_order1ITestGeometricTransformExtra.test_geometric_transform_grid_constant_order1  sh     JJ	!#*,**  6	. **&8&8&: ;!''./1	
r+   r-   r/   c           	        R  p\         P                  ! ^\        R7      P                  ^^4      p^p\        P                  V4      p\         P                  ! WVVR7      pVP                  V4      pVP                  V4      p\        \        Wf) 4      .VP                  ,          4      p	\        P                  ! WW!R7      V	,          p
\        \        P                  ! WTVVR7      V
RR7       R# )c                 B    V ^ ,          R,
          V ^,          R,           3# )r   皙?gffffff@r$   r%   s   &r'   r   OTestGeometricTransformExtra.test_geometric_transform_vs_padded.<locals>.mapping  rB  r+   rJ   rN   rC  rO   rQ   N)rU   rV   floatreshaper[   r\   r]   r7   tupleslicendimr8   r9   r	   )r;   r/   r-   r=   r   r&   r`   ra   x_paddedcenter_slicerI  s   &&&&       r'   "test_geometric_transform_vs_padded>TestGeometricTransformExtra.test_geometric_transform_vs_padded  s    
	.
 IIc'//B7(,,T266!1JJqM::h'eD%01AFF:;!55D77CE 	''.35		
r+   Tzendianness is numpy-specificr   r   c                   \         P                  ! ^.4      pR pVP                  VP                  P                  4       \         P                  ! V4      \         P                  ! V4      P                  VP                  P                  4       4      3 F;  p\        P                  ! W#VP                  VR7      pVf   TMTp\        V^.4       K=  	  R# )r0   c                     V # r   r$   r%   s   &r'   r   fTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameter.<locals>.mapping  r   r+   r   N)
rU   r7   rK   newbyteorder
empty_likeastyper8   r9   r   r   )r;   r=   r>   r   r   returnedresults   &&     r'   9test_geometric_transform_endianness_with_output_parameterUTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameter  s     zz1#	 JJ

 7 7 9MM$'MM$'..tzz/F/F/HIKC 224$**:=?H$,S(F%fqc2Kr+   !string `output` is numpy-specificc                    VP                  ^.4      pR p\        P                  ! W#RR7      pVP                  \        P                  ! R4      J g   Q h\        V^.4       R# )r0   c                     V # r   r$   r%   s   &r'   r   XTestGeometricTransformExtra.test_geometric_transform_with_string_output.<locals>.mapping  r   r+   fr   N)r7   r8   r9   rK   rU   r   )r;   r=   r>   r   r   s   &&   r'   +test_geometric_transform_with_string_outputGTestGeometricTransformExtra.test_geometric_transform_with_string_output  sP    zz1#	 ))$DyyBHHSM)))!#s+r+   r$   Nr   r   r   r   r   )rj   rk   rl   rm   rJ  rS   ro   rp   rq   rX  rn   rc  rj  rr   rs   rt   s   @r'   r>  r>    s     
" [[V &; <[[WeAh/
 0<
4 d+IJ3 K3  d+NO, P,r+   r>  c                   x  a  ] tR tRt o ]P
                  P                  R]! ^ ^4      4      ]P
                  P                  R]P                  ]P                  .4      R 4       4       t]P
                  P                  R]! ^ ^4      4      R 4       t]! RRR7      R	 4       t]! R
R7      R 4       t]! R
RR7      R 4       t]P
                  P                  R
R7      ]P
                  P#                  R]P&                  9   ;'       g     ]P(                  ! ^ 4      P*                  ^8  RR7      R 4       4       tRtV tR# )TestMapCoordinatesi  r/   rK   c                   \        V4      '       d   V^8  d   \        P                  ! R4       VP                  . RO. RO. RO.4      pVP                  . R	O. R
O. RO.4      pVP	                  VP
                  R4      '       d!   VRV,          ,
          pVRV,          ,
          p\        P                  ! VP                  4      pV^,          pVP                  V4      p\        P                  ! WFVR7      p\        Wu4       R# )r0   'jax map_coordinates requires order <= 1r   r   ry   Nr   r   r   r   r   r   )r   rS   rT   r7   r   rK   rU   indicesr   r8   rY   r   )r;   r/   rK   r=   r>   rd   idxr   s   &&&&    r'   test_map_coordinates01)TestMapCoordinates.test_map_coordinates01  s     "::%!)LLBCzz<'') * ::|++- . ::djj"455"t)#D"x-/Hjj$qjjo%%du=!#0r+   c                   \        V4      '       d;   V^8  d   \        P                  ! R4       V^8X  d   \        P                  ! R4       VP                  . RO. RO. RO.4      p\        P
                  ! VP                  \        P                  4      pVR,          pVP                  V4      p\        P                  ! VRVR7      p\        P                  ! W4VR7      p\        WV4       R# )	r0   rp  zoutput differs. jax bug?r#   ry   Nr   r   r   )r   rS   rT   r7   rU   rq  r   rW   r8   r(   rY   r   )r;   r/   r=   r>   rr  out1out2s   &&&    r'   test_map_coordinates02)TestMapCoordinates.test_map_coordinates02  s    "::qy||EFz||67zz<'') * jjRZZ0s
jjo}}T3e4&&t>!$-r+   r   z`order` is required in jaxr   c           	        \        . RO. RO. RO.RVR7      p\        P                  ! VP                  4      ^,
          pVP	                  V4      p\
        P                  ! W#4      pVP	                  . RO. RO. R	O.4      p\        WE4       \        V\
        P                  ! VR
4      4       \        P                  ! VR,          P                  4      ^,
          pVP	                  V4      p\
        P                  ! VR,          V4      p\        WAP	                  . RO. RO.4      4       \        V\
        P                  ! VR,          R
4      4       \        P                  ! VR,          P                  4      ^,
          pVP	                  V4      p\
        P                  ! VR,          V4      p\        WAP	                  ^ ^ .^ ^.^ ^..4      4       \        V\
        P                  ! VR,          R
4      4       R# )rE   F)r/   r=   Nr   r   r   r   r   r   r0   r0   r  )NNNr   )	r   rU   rq  r   r7   r8   rY   r   r(   )r;   r=   r>   rr  r   rd   s   &&    r'   test_map_coordinates03)TestMapCoordinates.test_map_coordinates03$  s   %%'.1b: jj$q(jjo%%d0::|++- . 	"#0!#w}}T6'BCjjh--.2jjo%%d8nc:!#zz<3?3A (B 	C!#w}}T(^V'LMjjf++,q0jjo%%d6lC8!#zzAq6Aq6Aq62J'KL!#w}}T&\6'JKr+   T)r   c                   \         P                  ! ^^.^^..4      p\         P                  ! ^ ^ .^ ^..4      p\         P                  ! VP                  4      pV^,          pVP                  VP                  P                  4       \         P                  ! V4      \         P                  ! V4      P                  VP                  P                  4       4      3 F.  p\        P                  ! W$VR7      pVf   TMTp\        Ws4       K0  	  R# r0   r   N)rU   r7   rq  r   rK   r^  r_  r`  r8   rY   r   )r;   r=   r>   rd   rr  r   ra  rb  s   &&      r'   5test_map_coordinates_endianness_with_output_parameterHTestMapCoordinates.test_map_coordinates_endianness_with_output_parameter?  s     zzAq6Aq6*+::1v1v./jj$qJJJJ##%MM(#MM(#**8>>+F+F+HI	
C ..tEH$,S(F%f7
r+   re  rZ  c                B   VP                  ^..4      p\        P                  ! VP                  4      pVP                  V4      p\        P
                  ! W#RR7      pVP                  \        P                  ! R4      J g   Q h\        WAP                  ^..4      4       R# r0   ri  r   N)r7   rU   rq  r   r8   rY   rK   r   )r;   r=   r>   rr  r   s   &&   r'   'test_map_coordinates_with_string_output:TestMapCoordinates.test_map_coordinates_with_string_outputS  st    zzA3% jj$jjo%%d<yyBHHSM)))!#zzA3%'89r+   )r   win32z2do not run on 32 bit or windows (no sparse memory)c                    R p\         P                  ! V^,          \         P                  R7      P                  W"4      p^ W2^,
          R1V^,
          R13&   \        P
                  ! VP                  V4      VP                  VR,
          .VR,
          ..4      ^R7       R#   \         d   p\        P                  ! R4      ThRp?ii ; i)i0u  rJ   Nrg   ry   zNot enough memory available)
rU   emptyfloat32rR  r8   rY   r7   MemoryErrorrS   skip)r;   r=   nr6  es   &&   r'   test_map_coordinates_large_data2TestMapCoordinates.test_map_coordinates_large_data\  s    
	DAARZZ088>A !A!efa!efn##

1rzzAG9q3wi*@A  	D++;<!C	Ds   BB# #C
.CC
r$   N)rj   rk   rl   rm   rS   ro   rp   rq   rU   rW   r   rs  rx  rn   r~  r  r  skipifsysplatformintpitemsizer  rr   rs   rt   s   @r'   rn  rn    sD    [[WeAqk2[[Wrzz2==&AB1 C 31* [[WeAqk2. 3.$ k*FGL HL4 d#8 $8& d+NO: P: [[!!4!0[[3<</JJ2771:3F3F3J 4  5D5 1Dr+   rn  c                   p
  a  ] tR tRt o ]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t	]P
                  P                  R]! ^ ^4      4      R 4       t
]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR	.4      R
 4       4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]! RRR7      ]P
                  P                  R]! ^ ^4      4      R 4       4       t]! RRR7      ]P
                  P                  R]! ^ ^4      4      R 4       4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R  4       t ]P
                  P                  R]! ^ ^4      4      R! 4       t!]P
                  P                  R]! ^ ^4      4      R" 4       t"]! RR#R7      R$ 4       t#]$! R%R&R'7      R( 4       t%]$! R%R&R'7      R) 4       t&]$! R%R*R'7      R+ 4       t']$! R%R,R'7      R- 4       t(]P
                  P                  R.. R3O4      ]P
                  P                  R]! ^ ^4      4      R/ 4       4       t)]P
                  P                  R]! ^ ^4      4      R0 4       t*R1t+V t,R2# )4TestAffineTransformio  r/   c                    VP                  ^.4      p\        P                  ! W2P                  ^..4      VR7      p\        WBP                  ^.4      4       R# r0   ry   Nr7   r8   affine_transformr   r;   r/   r=   r>   r   s   &&&  r'   test_affine_transform01+TestAffineTransform.test_affine_transform01q  sB    zz1#&&tZZ!->eL!#zz1#7r+   c                    VP                  ^.4      p\        P                  ! W2P                  ^..4      VR7      p\	        WBP                  . RO4      4       R# )rE   ry   Nr   r|   r8   r  r7   r   r  s   &&&  r'   test_affine_transform02+TestAffineTransform.test_affine_transform02w  sA    wws|&&tZZ!->eL!#zz,'?@r+   c                    VP                  ^.4      p\        P                  ! W2P                  ^..4      RVR7      p\	        WBP                  . RO4      4       R# )rE   ry   Nr4   r   r  r  s   &&&  r'   test_affine_transform03+TestAffineTransform.test_affine_transform03}  sC    wws|&&tZZ!->%P!#zz,'?@r+   c                    VP                  . RO4      p\        P                  ! W2P                  ^..4      RVR7      p\        WBP                  . RO4      4       R# )rE   ry   Nr   r4   r   r  r  s   &&&  r'   test_affine_transform04+TestAffineTransform.test_affine_transform04  sB    zz,'&&tZZ!->%P!#zz,'?@r+   rK   rW   r   c                   \        W24      pVP                  . RO. RO. RO.VR7      pVP                  . RO. RO. RO.VR7      pVP                  VP                  R4      '       d!   VRV,          ,          pVRV,          ,          p\        P
                  ! WCP                  ^^ .^ ^..4      ^ R.VR7      p\        We4       R# )	r0   rJ   r   r   ry   Nr   r   r4   )r{   r7   r   rK   r8   r  r   r;   r/   rK   r=   r>   rd   r   s   &&&&   r'   test_affine_transform05+TestAffineTransform.test_affine_transform05  s     "zz<'')05  7 ::|++-49  ; ::djj"455BIDX%H&&tZZ!Q!Q8H-I()2we=!#0r+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! W2P                  ^^ .^ ^..4      ^ R.VR7      p\        WBP                  . RO. RO. R	O.4      4       R# )
rE   ry   Nr   r   r   r4   r   r   r   r  r  s   &&&  r'   test_affine_transform06+TestAffineTransform.test_affine_transform06  ss    zz<'') * &&tZZ!Q!Q8H-I()2we=!#zz<3?3?3A (B 	Cr+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! W2P                  ^^ .^ ^..4      R^ .VR7      p\        WBP                  . RO. RO. RO.4      4       R# )rE   ry   Nr   r   r   r4   r   r  r  s   &&&  r'   test_affine_transform07+TestAffineTransform.test_affine_transform07  ss    zz<'') * &&tZZ!Q!Q8H-I(*Awe=!#zz<3?3?3A (B 	Cr+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! W2P                  ^^ .^ ^..4      RR.VR7      p\        WBP                  . RO. RO. R	O.4      4       R# )
rE   ry   Nr   r   r   r4   r   r   r   r  r  s   &&&  r'   test_affine_transform08+TestAffineTransform.test_affine_transform08  ss    zz<'') * &&tZZ!Q!Q8H-I(*Bxu>!#zz<3?3?3A (B 	Cr+   c           	     $   VP                  . RO. RO. RO.4      pV^8  d   \        P                  ! W1R7      pMTp\        P                  ! WBP                  ^^ .^ ^..4      RR.VRR7      p\	        WRP                  . R	O. R
O. RO.4      4       R# )rE   ry   Fr   Nr   r   r   r4   r   r   r   )r7   r8   r}   r  r   r;   r/   r=   r>   r   r   s   &&&   r'   test_affine_transform09+TestAffineTransform.test_affine_transform09  s    zz<'') * AI,,T?HH&&xaVaV<L1M(*Bxu168 	"#zz<3?3?3A (B 	Cr+   c                    VP                  ^.VP                  R7      p\        P                  ! W2P	                  R..4      RVR7      p\        WBP	                  . RO4      4       R# )r1   rJ   r#   )r.   r/   NrF   r0   r0   r0   r   )r|   rW   r8   r  r7   r   r  s   &&&  r'   test_affine_transform10+TestAffineTransform.test_affine_transform10  sO    wws"**w-&&tZZ#-@t-24!#zz,'?@r+   c                    VP                  . RO4      p\        P                  ! W2P                  ^..4      ^ RVR7      p\        WBP                  . RO4      4       R# )r0   ry   Nr   rF   rD   r  r  s   &&&  r'   test_affine_transform11+TestAffineTransform.test_affine_transform11  sE    zz23&&tZZ!->4uU!#zz,'?@r+   c                    VP                  . RO4      p\        P                  ! W2P                  R..4      ^ RVR7      p\        VR,          VP                  . RO4      4       R# )r0   r#   ry   r   NrD   r   r  r  s   &&&  r'   test_affine_transform12+TestAffineTransform.test_affine_transform12  sK    zz,'&&tZZ#-@!TQVW!#c(BJJ|,DEr+   c           	         . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^^ .^ ^..4      ^ RVR7      p\        WBP                  ^^.^^.^	^..4      4       R# )r0   ry   NrD   r   r   r   r  r  s   &&&  r'   test_affine_transform13+TestAffineTransform.test_affine_transform13  su    !# zz$&&tZZ!Q!Q8H-I1f-24!#zzAq6Aq6Ar72K'LMr+   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^^ .^ ^..4      ^ RVR7      p\        WBP                  . RO.4      4       R# )r0   ry   NrD   r   r  r  r  r  s   &&&  r'   test_affine_transform14+TestAffineTransform.test_affine_transform14  sd    ! zz$&&tZZ!Q!Q8H-I1f-24!#zz<.'ABr+   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^^ .^ ^..4      ^ RVR7      p\        WBP                  ^^..4      4       R# )r0   ry   NrD   r   r  r  r  r  s   &&&  r'   test_affine_transform15+TestAffineTransform.test_affine_transform15  sh    ! zz$&&tZZ!Q!Q8H-I1f-24!#zzAq6(';<r+   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^R.^ R..4      ^ RVR7      p\        VR	,          V4       R# )
r0           r#   ry   NrD   r   r  r  r  r  r  s   &&&  r'   test_affine_transform16+TestAffineTransform.test_affine_transform16  s_    ! zz$&&tZZ!SAs88L-Mq'-U<!#h-6r+   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  R^ .^ ^..4      ^ RVR7      p\        VR,          V4       R# )	r0   r#   ry   NrD   r   r  r  r  r  r  s   &&&  r'   test_affine_transform17+TestAffineTransform.test_affine_transform17  s_    ! zz$&&tZZ#qAq68J-KQ'-U<!#h-6r+   c                    VP                  . RO. RO. RO.4      p\        P                  ! W2P                  R^ .^ R..4      ^ RVR7      p\        VR,          V4       R# )	r0   r#   ry   NrD   r   r  r   r!  r  r  s   &&&  r'   test_affine_transform18+TestAffineTransform.test_affine_transform18  s\    zz<'*, - &&tZZ#qAs88L-Mq'-U<!#h-6r+   c                $   VP                  . RO. RO. RO.VP                  R7      p\        P                  ! W2P                  R^ .^ R..4      ^ R	VR7      p\        P                  ! WBP                  R^ .^ R..4      ^ R
VR7      p\	        WC4       R# )r0   rJ   r#   ry          @NrD   r   r  r   r+  )r7   rW   r8   r  r   r  s   &&&  r'   test_affine_transform19+TestAffineTransform.test_affine_transform19  s    zz<'*,35::  ? &&tZZ#qAs88L-Mq'-U<&&sJJa1c(7K,La'-U<!#,r+   r   z(https://github.com/cupy/cupy/issues/8394r   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^ .^..4      ^ RVR7      p\        WBP                  ^^.4      4       R# r0   ry   NrD   r   r  r   r  r  s   &&&  r'   test_affine_transform20+TestAffineTransform.test_affine_transform20$  c     ! zz$&&tZZ!qc
-CQ-24!#zz1a&'9:r+   c                    . RO. RO. RO.pVP                  V4      p\        P                  ! W2P                  ^.^ ..4      ^ RVR7      p\        WBP                  ^^	.4      4       R# r  r  r  s   &&&  r'   test_affine_transform21+TestAffineTransform.test_affine_transform21/  r  r+   c                    VP                  . RO4      p\        P                  ! W2P                  ^..4      R.RVR7      p\        WBP                  . RO4      4       R# )rE   ry   Nr   r4   )r2   r   r0   r1   r  r  s   &&&  r'   test_affine_transform22+TestAffineTransform.test_affine_transform22:  sK     zz,'&&tZZ!->d-24!#zz)'<=r+   c                    VP                  . RO4      p\        P                  ! W2P                  R..4      R.RVR7      p\        VR,          VP                  . RO4      4       R# )	rE   r#   ry   r   Nr   r4   r  r   r  r  s   &&&  r'   test_affine_transform23+TestAffineTransform.test_affine_transform23B  sQ     zz,'&&tZZ#-@2$-24!#c(BJJ|,DEr+   c           	     r   VP                  . RO4      p\        4       ;_uu_ 4       pVP                  \        R4       \        P
                  ! W2P                  ^.4      RVR7      pRRR4       \        P
                  ! W2P                  ^..4      RVR7      p\        XV4       R#   + '       g   i     LH; i)rE   @The behavior of affine_transform with a 1-D array .* has changedry   Nr   r4   r7   r   filterUserWarningr8   r  r   r;   r/   r=   r>   suprv  rw  s   &&&    r'   test_affine_transform24+TestAffineTransform.test_affine_transform24J  s     zz,'  CJJ{%& ++D**aS/2USD	 !
 ''jj1#.?5Q!$- !    A B&&B6	c           	     r   VP                  . RO4      p\        4       ;_uu_ 4       pVP                  \        R4       \        P
                  ! W2P                  R.4      RVR7      pRRR4       \        P
                  ! W2P                  R..4      RVR7      p\        XV4       R#   + '       g   i     LH; i)rE   r  r#   ry   Nr   r4   r  r  s   &&&    r'   test_affine_transform25+TestAffineTransform.test_affine_transform25V  s     zz,'  CJJ{%& ++D**cU2CRuUD	 !
 ''jj3%.A2US!$- ! r  c           
        VP                  . RO. RO. RO.4      pV^8  d   \        P                  ! W1R7      pMTpVP                  ^4      pVP	                  R	4      ) pVP                  WV3^R7      pVP                  WrP                  . R
O.4      3^ R7      pVP                  VR4       U	u. uF  p	\        V	4      NK  	  p
p	\        P                  ! WEV
VRR7      p\        P                  ! WGVRR7      p\        P                  ! WHVRR7      pWV3 F&  p\        WP                  . RO. RO. RO.4      4       K(  	  R# u up	i )rE   ry   axisFr   Nr   r   r   r1   r0   )r  r   r0   )r4   r   r   r   )
r7   r8   r}   eyer|   concatrR  rQ  r  r   )r;   r/   r=   r>   r   tform_originaloffset_originaltform_h1tform_h2r&   offsrv  rw  out3r   s   &&&            r'   test_affine_transform26+TestAffineTransform.test_affine_transform26b  s7    zz<'') * AI,,T?HH776?*99n>Q9G99h

K=(AB9K"$**_e"DE"DQa"DE''(,.3uF ''%279''%279%C%c::|7C7C7E ,F G & Fs   -D?zdoes not raisec                ,   VP                  . RO. RO. RO.4      pVP                  VP                  ^4      VP                  R4      ) 3^R7      pVP                  W1P                  . RO.4      3^ R7      p\	        \
        \        P                  W$4       R# )rE   r  Nr   r   r   r  )      @r1   r0   )r7   r  r  r|   assert_raises
ValueErrorr8   r  )r;   r=   r>   r  r  s   &&   r'   test_affine_transform27+TestAffineTransform.test_affine_transform27  s}     zz<'') * 99bffQi"''&/)9:!9D99h

K=(AB9Kj'":":DKr+   Tzbyteorder is numpy-specificrZ  c           	     >   VP                  R4      pVP                  V4      VP                  V4      P                  VP                  P	                  4       4      VP                  VP                  P	                  4       3 F  p\        4       ;_uu_ 4       pVP                  \        R4       VP                  ^^.4      p\        P                  ! W%VR7      pRRR4       Xf   TMTp\        WqP                  ^^.^^..4      4       K  	  R#   + '       g   i     L>; i)r1   r  r   N)r1   r1   )r|   r_  r`  rK   r^  r   r  r  r7   r8   r  r   )r;   r=   r>   r   r  matrixra  rb  s   &&      r'   9test_affine_transform_1d_endianness_with_output_parameterMTestAffineTransform.test_affine_transform_1d_endianness_with_output_parameter  s     wwvMM$'MM$'..tzz/F/F/HIJJ

 7 7 9;C #$$

;,- QF+"33DM % %,S(F%fjj1a&1a&9I.JK; %$s   ADDc                   \         P                  ! ^.4      pVP                  VP                  P                  4       \         P                  ! V4      \         P                  ! V4      P                  VP                  P                  4       4      3 F[  p\        P                  ! V\         P                  ! ^..4      VR7      pVf   TMTp\        V\         P                  ! ^.4      4       K]  	  R# r  )	rU   r7   rK   r^  r_  r`  r8   r  r   )r;   r=   r>   r   ra  rb  s   &&    r'   >test_affine_transform_multi_d_endianness_with_output_parameterRTestAffineTransform.test_affine_transform_multi_d_endianness_with_output_parameter  s    
 zz1#JJ

 7 7 9MM$'MM$'..tzz/F/F/HIKC //bjj1#6GPSTH$,S(F%fbjj!o>Kr+   z+`out` of a different size is numpy-specificc           	        VP                  ^VP                  R7      pVP                  R4      p\        P                  ! W!P                  ^..4      VR7       \        VR,          V4       \        P                  ! \        4      ;_uu_ 4        \        P                  ! V^..VRR7       RRR4       R#   + '       g   i     R# ; i)r   rJ   r   :Nr   N)r   r.   N)   )r   )
rV   rW   r|   r8   r  r7   r   rS   r
   RuntimeErrorr;   r=   r>   r   s   &&  r'   "test_affine_transform_output_shape6TestAffineTransform.test_affine_transform_output_shape  s    
 yy"**y-ggen  zzA3%'8E!#b'40 ]]<(($$seCe= )(((s   B44C	re  c                    VP                  ^.4      p\        P                  ! W!P                  ^..4      RR7      pVP                  \        P                  ! R4      J g   Q h\        W1P                  ^.4      4       R# r  )r7   r8   r  rK   rU   r   r  s   &&  r'   (test_affine_transform_with_string_output<TestAffineTransform.test_affine_transform_with_string_output  s\    zz1#&&tZZ!->sKyyBHHSM)))!#zz1#7r+   r(   c           	        \         P                  ! ^ ^.^^..4      p\         P                  ! R4      p\         P                  ! ^4      VR&   \         P                  ! V4      VR&   \         P                  ! WARR7      pVP                  V4      pVP                  V4      pVP                  V4      p\        \        P                  ! WERVR7      V4       R# )	r   r  r   rC  Nr1   r2   Nr1   Nr   r}  r1   r   r0   )rU   r7   zerosr  rollr   r8   r  )r;   r(   r/   r=   r&   affinerd   s   &&&&   r'   )test_affine_transform_shift_via_grid_wrap=TestAffineTransform.test_affine_transform_shift_via_grid_wrap  s    
 JJAA  !&!vzz%(t771&1JJqMF#::h'!$$Q[N	
r+   c           	        \         P                  ! . RO. RO.4      pVRRR1RRR13,          P                  4       pVP                  V4      pVP                  V4      p\         P                  ! ^^.4      p\         P                  ! ^4      VR&   \         P                  ! VP
                  4      VR&   VP                  V4      p\        \        P                  ! W5RVR7      V4       R# )	r   Nr   rC  r  r2   rE   r   r4   r  r!  )	rU   r7   copyr#  r  r   r   r8   r  )r;   r/   r=   r&   rd   r%  s   &&&   r'   #test_affine_transform_shift_reflect7TestAffineTransform.test_affine_transform_shift_reflect  s     JJ	!# $TrT4R4Z=%%'JJqM::h'1a&!vzz!''*tF#!$$QYeL	
r+   r$   N)r0   r   r"  )r4   r0   )r2   )r1   r5   )-rj   rk   rl   rm   rS   ro   rp   rq   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xfail_xp_backendsr  r  r  r  r  r  r  r  rn   r  r  r  r  r&  r+  rr   rs   rt   s   @r'   r  r  o  s    [[WeAqk28 38
 [[WeAqk2A 3A
 [[WeAqk2A 3A
 [[WeAqk2A 3A
 [[WeAqk2[[Wy,&?@1 A 31 [[WeAqk2C 3C [[WeAqk2C 3C [[WeAqk2C 3C [[WeAqk2C 3C [[WeAqk2A 3A [[WeAqk2A 3A
 [[WeAqk2F 3F
 [[WeAqk2N 3N [[WeAqk2C 3C [[WeAqk2= 3= [[WeAqk27 37 [[WeAqk27 37 [[WeAqk27 37 [[WeAqk2- 3- v&PQ[[WeAqk2; 3 R; v&PQ[[WeAqk2; 3 R; [[WeAqk2> 3> [[WeAqk2F 3F [[WeAqk2	. 3	. [[WeAqk2	. 3	. [[WeAqk2G 3G: v&67L 8L d+HIL JL  d+HI
? J
? d<== d+NO8 P8 [[WGI[[WeAqk2
 3I
& [[WeAqk2
 3
r+   r  c                     a  ] tR tRt o ]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t	]P
                  P                  R]! ^ ^4      4      R 4       t
]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR	.4      R
 4       4       t]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR.4      ]P
                  P                  RRR	.4      R 4       4       4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R. RO4      ]P
                  P                  R]! ^ ^4      4      R 4       4       t]P
                  P                  R. RO4      ]P
                  P                  R]! ^ ^4      4      R 4       4       tR t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR.4      R 4       4       t]P
                  P                  R. R O4      ]P
                  P                  R]! ^4      4      R 4       4       tRtV tR# )!	TestShifti  r/   c                    VP                  ^.4      p\        P                  ! V^.VR7      p\        WBP                  ^ .4      4       R# r  r7   r8   r(   r   r  s   &&&  r'   test_shift01TestShift.test_shift01  s7    zz1#mmD1#U3!#zz1#7r+   c                    VP                  ^.4      p\        P                  ! V^.VR7      p\        WBP	                  . RO4      4       R# )rE   ry   Nr   r|   r8   r(   r   r7   r  s   &&&  r'   test_shift02TestShift.test_shift02  s6    wws|mmD1#U3!#zz,'?@r+   c                    VP                  ^.4      p\        P                  ! VRVR7      p\        WBP	                  . RO4      4       R# )rE   ry   Nr4   r  r7  r  s   &&&  r'   test_shift03TestShift.test_shift03  s4    wws|mmD"E2!#zz,'?@r+   c                    VP                  . RO4      p\        P                  ! V^VR7      p\        WBP                  . RO4      4       R# )rE   ry   Nr   r   r3  r  s   &&&  r'   test_shift04TestShift.test_shift04  s3    zz,'mmD!51!#zz,'?@r+   rK   rW   r   c                \   \        W24      pVP                  . RO. RO. RO.VR7      pVP                  . RO. RO. RO.VR7      pVP                  VP                  R4      '       d!   VRV,          ,          pVRV,          ,          p\        P
                  ! V^ ^.VR7      p\        We4       R# )r0   rJ   r   r   ry   Nr   r   )r{   r7   r   rK   r8   r(   r   r  s   &&&&   r'   test_shift05TestShift.test_shift05  s     "zz<'')05  7 ::|++-49  ; ::djj"455BIDX%HmmD1a&6!#0r+   r-   r   r   c                   \         P                  ! . RO. RO. RO.VR7      p\         P                  ! . RO. RO. RO.VR7      p\        P                  ! VP                  R4      '       d!   VRV,          ,          pVRV,          ,          pRpWvR	&   VP                  V4      pVP                  V4      p\
        P                  ! V^ ^.WVR7      p\        W4       R# )
r0   rJ   r   r   r  )r/   r-   r,   Nr   r   )r}  r   )rU   r7   r   r   rK   r8   r(   r   )	r;   r/   r-   rK   r=   r>   rd   r,   r   s	   &&&&&    r'   test_shift_with_nonzero_cval&TestShift.test_shift_with_nonzero_cval  s     zz<'')057 ::|++-49; TZZ);<<BIDX%Hzz$::h'mmD1a&tL!#0r+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! V^ ^.VR7      p\        WBP                  . RO. RO. RO.4      4       R# )	rE   ry   Nr   r   r   r   r   r   r3  r  s   &&&  r'   test_shift06TestShift.test_shift06+  X    zz<'') * mmD1a&6!#zz<3?3?3A (B 	Cr+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! V^^ .VR7      p\        WBP                  . RO. RO. RO.4      4       R# )rE   ry   Nr   r   r   r   r3  r  s   &&&  r'   test_shift07TestShift.test_shift075  rI  r+   c           	         VP                  . RO. RO. RO.4      p\        P                  ! V^^.VR7      p\        WBP                  . RO. RO. RO.4      4       R# )	rE   ry   Nr   r   r   r   r   r   r3  r  s   &&&  r'   test_shift08TestShift.test_shift08?  rI  r+   c           	         VP                  . RO. RO. RO.4      pV^8  d   \        P                  ! W1R7      pMTp\        P                  ! V^^.VRR7      p\	        WRP                  . RO. R	O. R
O.4      4       R# )rE   ry   Fr   Nr   r   r   r   r   r   )r7   r8   r}   r(   r   r  s   &&&   r'   test_shift09TestShift.test_shift09I  sv    zz<'') * AI,,T?HHmmHq!fEUK!#zz<3?3?3A (B 	Cr+   r(   c           	         \         P                  ! ^ ^.^^..4      p\         P                  ! WARR7      pVP                  V4      pVP                  V4      p\        \        P
                  ! WARVR7      V4       R# )r   r  r   rC  Nr"  )rU   r7   r$  r   r8   r(   )r;   r(   r/   r=   r&   rd   s   &&&&  r'   test_shift_grid_wrapTestShift.test_shift_grid_wrapW  sj    
 JJAA  !771%0JJqM::h'!MM!EB	
r+   c           
         VP                  VP                  ^4      R4      p\        \        P                  ! WARVR7      \        P                  ! WARVR7      4       R# )   r   rC  r   N)r   rE   )rR  rV   r   r8   r(   )r;   r(   r/   r=   r&   s   &&&& r'   test_shift_grid_constant1#TestShift.test_shift_grid_constant1h  sD    
 JJryy}f-!MM!FMM!5A	
r+   c           	         VP                  . RO. RO.VP                  R7      pVP                  . RO. RO.4      p\        \        P                  ! VR	R^R7      V4       R# )
r0   rJ   r   rC  NrD  rE  rF  rH  )r#   r#   )r7   rW   r   r8   r(   )r;   r=   r&   rI  s   &&  r'   test_shift_grid_constant_order1)TestShift.test_shift_grid_constant_order1s  s\    JJ	!#*,**  6**&8&8&: ;!MM!ZoQG	
r+   c           	        \         P                  ! . RO. RO.4      pVRRR1RRR13,          P                  4       pVP                  V4      pVP                  V4      p\        \        P
                  ! W3P                  RVR7      V4       R# )r   Nr   rC  r  r)  r4   )rU   r7   r*  r   r8   r(   r   )r;   r/   r=   r&   rd   s   &&&  r'   test_shift_reflectTestShift.test_shift_reflect}  st     JJ	!# $TrT4R4Z=%%'JJqM::h'!MM!WW9EB	
r+   r   FTc                8   VP                  ^4      p\        RWR7      p\        \        P                  ! WA^,          ^,           3/ VB ^ ,          V^ ,          4       \        \        P                  ! WA) ^,          ^,
          3/ VB R,          VR,          4       R# )r  r   )r-   r/   r   Nr4   )rV   dictr   r8   r(   )r;   r/   r   r=   r&   kwargss   &&&&  r'   test_shift_nearest_boundary%TestShift.test_shift_nearest_boundary  sy    
 IIbM9EG!MM!aZ!^6v6q91Q4	
 	"MM!Vq[1_77;QrU	
r+   c           	        \         P                  ! ^\        R7      P                  ^^4      pRp^ p\        P                  V4      pVP                  \         P                  ! WFVR7      4      pVP                  V4      p	\        \        Wf) 4      .V	P                  ,          4      p
\        P                  ! WW!R7      V
,          p\        \        P                  ! WW!R7      VRR7       R# )   rJ   rN   rC  rO   rP  N)rN  gffffff)rU   rV   rQ  rR  r[   r\   r7   r]   rS  rT  rU  r8   r(   r	   )r;   r/   r-   r=   x_npr(   r`   ra   rV  r&   rW  rI  s   &&&&        r'   test_shift_vs_paddedTestShift.test_shift_vs_padded  s     yyE*222r: (,,T2::bffTh?@JJteD%01AFF:;!--$55AC 	MM!;	
r+   r$   Nr-  rl  )rj   rk   rl   rm   rS   ro   rp   rq   r4  r8  r;  r>  rA  rD  rG  rK  rN  rQ  rT  rX  r[  r^  rc  rh  rr   rs   rt   s   @r'   r1  r1    sm    [[WeAqk28 38
 [[WeAqk2A 3A
 [[WeAqk2A 3A
 [[WeAqk2A 3A
 [[WeAqk2[[Wy,&?@1 A 31 [[WeAqk2[[Vj/%BC[[Wy,&?@1 A D 31( [[WeAqk2C 3C [[WeAqk2C 3C [[WeAqk2C 3C [[WeAqk2C 3C [[WGI[[WeAqk2
 3I
 [[WGI[[WeAqk2
 3I

 [[WeAqk2
 3
 [[WeAqk2[[[5$-8

 9 3

 [[V &; <[[WeAh/
 0<
r+   r1  c                     a  ] tR tRt o ]P
                  P                  R]! ^ ^4      4      R 4       tR t	R t
]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR.4      R	 4       4       tR
 tR tR t]P
                  P                  R. R#O4      ]P
                  P                  R. R$O4      R 4       4       t]P
                  P                  RR%R&.4      ]P
                  P                  R. R#O4      ]P
                  P                  R. R'O4      R 4       4       4       t]P
                  P                  RRR.4      ]P
                  P"                  R 4       4       t]! RRR7      ]! RRR7      R 4       4       tR t]! RRR7      R 4       t]! RRR7      ]! RRR7      ]! RRR7      R  4       4       4       tR!tV tR"# )(TestZoomi  r/   c                n   ^^^.3 EF)  pVP                  VP                  ^VP                  R7      R4      p\        P                  ! WCVR7      pVP
                  R8X  g   Q hVP                  VR,          ^ 8g  4      '       g   Q hVP                  VR,          ^\        ,
          8  4      '       g   Q hVP                  VR,          ^\        ,           8*  4      '       g   Q hVP                  V^ \        ,
          8  4      '       g   Q hVP                  V^\        ,           8*  4      '       d   EK*  Q h	  R# )r1   rJ   ry   N)r   r   )r   r   )r4   r}  )r   r}  )rR  rV   rW   r8   zoomr   alleps)r;   r/   r=   zarrs   &&&  r'   
test_zoom1TestZoom.test_zoom1  s    aVA**RYYrY<fEC,,sU3C99(((66#e*/****66#e*c2333366#d)C0111166#!c'*++++66#"s(+,,,, r+   c                    VP                  VP                  ^4      R4      p\        P                  ! \        P                  ! V^4      R4      p\	        W24       R# )r   r#   Nr+  )rR  rV   r8   rm  r   )r;   r=   rq  r   s   &&  r'   
test_zoom2TestZoom.test_zoom2  s=    jj2/ll7<<Q/5!r+   c                   VP                  ^^..4      p\        P                  ! VR4      p\        P                  ! VR4      p\        W1P                  ^^.^^..4      4       \        WAP                  . RO.4      4       R# )r0   Nr  r  )r0   r0   r1   r1   )r7   r8   rm  r   )r;   r=   rq  rv  rw  s   &&   r'   
test_zoom3TestZoom.test_zoom3  sg    jj1a&"||C(||C(!$

QFQF3C(DE!$

L>(BCr+   rK   rW   r   c           
        \        W24      pVP                  . RO. R	O. R
O.VR7      pVP                  VP                  R4      '       d   VRV,          ,          p\	        4       ;_uu_ 4       pVP                  \        R4       \        P                  ! WCP                  RR.4      ^ RVR7      pRRR4       \        XR,          V4       R#   + '       g   i     L%; i)r0   rJ   r   r   r  r#   ry   NrD   r   r  r   r!  )
r{   r7   r   rK   r   r  r  r8   r  r   )r;   r/   rK   r=   r>   r  r   s   &&&&   r'   test_zoom_affine01TestZoom.test_zoom_affine01  s     "zz<'*,38  : ::djj"455BID  CJJ{%& **4S#J1G+1@C	 ! 	"#h-6 ! s   ,ACC	c                j    ^p\         P                  ! VP                  W"34      RV,          RR7       R# )r         ?r   rN   N)r8   rm  r#  )r;   r=   dims   && r'   test_zoom_infinityTestZoom.test_zoom_infinity  s&    RXXsj)28)Dr+   c                    VP                  R4      pRp\        P                  ! W#^R7      pVP                  R4      p\        WE4       R# )r0   )r,   N)r0   r   r   )r~  r  r  )r0   r   r   )r#  r8   rm  r   )r;   r=   rq  rm  r   refs   &&    r'   test_zoom_zoomfactor_one!TestZoom.test_zoom_zoomfactor_one  s;    hhy!ll31-hh{#!#+r+   c                ~    VP                  R4      pRp\        P                  ! W#4      pVP                  R8X  g   Q hR# )r2   N)r2   r      )gUUUUUU?gE]t?g(\?)rE         )r#  r8   rm  r   )r;   r=   rq  rm  r   s   &&   r'   test_zoom_output_shape_roundoff(TestZoom.test_zoom_output_shape_roundoff  s5    hh{#.ll3%yyK'''r+   rm  r-   r   r   c           	     >   \         P                  ! ^ ^.^^..\         P                  R7      p\         P                  ! V\         P                  ! V4      4      pVP                  V4      pVP                  V4      p\        \        P                  ! Wa^ VR7      V4       R# )r   rJ   rM   N)rU   r7   rW   kronr|   r   r8   rm  )r;   rm  r-   r=   rg  rd   r&   s   &&&&   r'   test_zoom_by_int_order0 TestZoom.test_zoom_by_int_order0  sz     zzAq6q6#*,**6774/JJt::h'!LL5	
r+   r   c                ^   \         P                  ! \         P                  ! V4      \        R 7      P	                  V4      pVP                  V4      p\        \        P                  ! Wb^ VRR7      VP                  \         P                  ! V\         P                  ! V4      4      4      4       R# )rJ   T)r/   r-   	grid_modeN)rU   rV   prodrQ  rR  r7   r   r8   rm  r  r|   )r;   r   rm  r-   r=   rg  r&   s   &&&&&  r'   test_zoom_grid_by_int_order0%TestZoom.test_zoom_grid_by_int_order0  sn     yyu5==eDJJt!LLEJJrwwtRWWT]34	
r+   c           	        VP                  VP                  ^	VP                  R7      R4      p\        P                  ! \
        RR7      ;_uu_ 4        \        P                  ! V^VRR7      3 RRR4       R#   + '       g   i     R# ; i)r  rJ   zIt is recommended to use mode)matchT)r-   r  N)r2   r2   )rR  rV   rW   rS   warnsr  r8   rm  )r;   r-   r=   r&   s   &&& r'   test_zoom_grid_mode_warnings%TestZoom.test_zoom_grid_mode_warnings  sk     JJryy"**y5v>\\+ ?A ALLADD9:A A A As   A88B		z
dask.arrayz!output=array requires buffer viewr   r   c                    VP                  VP                  ^4      R4      p\        P                  ! V^VP	                  R4      R7       R# )zTicket #643r   Nr+  r   )rR  rV   r8   rm  r#  r;   r=   r&   s   && r'   test_zoom_output_shapeTestZoom.test_zoom_output_shape  s5     JJryy}f-Q"((6"23r+   c                    VP                  R 4      p^p\        P                  ! V\        P                  ! V4      4      p\        P                  ! W#4      p\        WE4       R# )g      $@N)rV   r8   rm  rU   arrayr	   )r;   r=   r6  factoractualrd   s   &&    r'   test_zoom_0d_arrayTestZoom.test_zoom_0d_array&  sC    IIcNa&!12<<*)r+   r   zCuPy `zoom` needs similar fix.c                    VP                  ^4      p\        \        P                  ! V^4      V4       \        \        P                  ! VR4      V4       R# )r2   Nr|  )r  r   r8   rm  r  s   && r'   test_zoom_1_gh20999TestZoom.test_zoom_1_gh20999.  s;     FF1IQ*A.Q/3r+   zread-only backendznumpy round-tripc                    VP                  ^4      pVP                  V4      p\        P                  ! V^VR7       \	        W24       R# )r2   r   N)r  
zeros_liker8   rm  r   )r;   r=   r&   r   s   &&  r'   test_zoom_1_gh20999_output#TestZoom.test_zoom_1_gh20999_output6  s7     FF1Iq!Q&)"r+   r$   N)r|  )r2   r   )r   r1   )r   r   )r   r   r   r   r   r   r   r   r  )rE   rE   )r   r   r   r   r   )rj   rk   rl   rm   rS   ro   rp   rq   rr  ru  rx  r{  r  r  r  r  r  thread_unsafer  rn   r  r  r/  r  r  rr   rs   rt   s   @r'   rk  rk    s    [[WeAqk2	- 3	-"
D [[WeAqk2[[Wy,&?@7 A 37E
,( [[V%EF[[V &7 8
8 G
" [[Wvv&67[[V%EF[[V &D E

E G 8

 [[Vj&%9:[[;  ;; l+NOk*MN4 O P4
* v&FG4 H4 v&FGk*=>|,>?# @ ? H#r+   rk  c                     a  ] tR tRt o ]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t	]P
                  P                  R]! ^ ^4      4      ]P
                  P                  RRR.4      R 4       4       t
]P
                  P                  R]! ^ ^4      4      R	 4       t]P
                  P                  R]! ^ ^4      4      R
 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       t]P
                  P                  R]! ^ ^4      4      R 4       tR tR t]! RRR7      R 4       tRtV tR# )
TestRotatei@  r/   c                    VP                  . RO. RO. RO.VP                  R7      p\        P                  ! V^ VR7      p\	        WC4       R# )r   rJ   ry   Nr   r   r0   r0   r   r7   rW   r8   rotater   r  s   &&&  r'   test_rotate01TestRotate.test_rotate01B  sE    zz<'')02

  < nnT1E2!#,r+   c                    VP                  . RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO.VP                  R7      p\        P                  ! V^ZVR7      p\	        WT4       R# )r   rJ   ry   Nr   )r   r0   r   r   r   r   r   r   r0   r   r  r;   r/   r=   r>   rd   r   s   &&&   r'   test_rotate02TestRotate.test_rotate02J  ss    zz<'')02

  < ::y(((* 24  = nnT2U3!#0r+   rK   rW   r   c                d   \        W24      pVP                  . RO. RO. RO.VR7      pVP                  . RO. RO. R	O. R	O. RO.VR7      pVP                  VP                  R4      '       d!   VRV,          ,          pVRV,          ,          p\        P
                  ! V^ZVR7      p\        We4       R# )
r   rJ   r   r   ry   Nr   r   r   r   r   r   r0   r0   r   r   r  r  )r{   r7   r   rK   r8   r  r   r  s   &&&&   r'   test_rotate03TestRotate.test_rotate03V  s     "zz?**,38  : ::y((((	* 27	  8
 ::djj"455BIDX%HnnT2U3!#0r+   c                    VP                  . RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO.VP                  R7      p\        P                  ! V^ZRVR7      p\	        WT4       R# )r   rJ   F)rR  r/   Nr  r  r   r   r0   r   r   r  r  s   &&&   r'   test_rotate04TestRotate.test_rotate04h  sq    zz?**,35::  ? ::..079zz  C nnT2uEB!#0r+   c                   \         P                  ! R4      p\        ^4       F;  p\         P                  ! . RO. RO. RO. RO.\         P                  R7      VRRV3&   K=  	  VP                  V4      pVP                  . RO. R	O. RO.VP                  R7      p\
        P                  ! V^ZVR7      p\        ^4       F  p\        VRRV3,          V4       K  	  R# )
rE   rJ   r}  ry   N)rE   r2   r2   r  r  r   r  rU   r  rq   r7   rW   r8   r  r   r;   r/   r=   r>   ird   r   s   &&&    r'   test_rotate05TestRotate.test_rotate05s  s    xx	"qAJJ	(1(1(1(3 ;=**FDAqM 
 zz$::|++-46JJ  @ nnT2U3qA%c!Q'lH= r+   c                   \         P                  ! R4      p\        ^4       F8  p\         P                  ! . RO. RO. RO.\         P                  R7      VRRV3&   K:  	  VP                  V4      pVP                  . RO. R	O. R	O. RO.VP                  R7      p\
        P                  ! V^ZVR7      p\        ^4       F  p\        VRRV3,          V4       K  	  R# )
r2   rJ   r}  ry   N)r2   rE   r2   r   r  r  r  r  r  s   &&&    r'   test_rotate06TestRotate.test_rotate06  s    xx	"qAJJ(4(4(6=?ZZIDAqM  zz$::y(((* 24  = nnT2U3qA%c!Q'lH= r+   c                \   VP                  . RO. RO. RO..^,          VP                  R7      pVP                  VR4      pVP                  . RO. RO. RO. RO. RO..^,          VP                  R7      pVP                  VR4      p\        P                  ! V^ZR	VR7      p\        WT4       R# )
r   rJ   )axesr/   Nr  r  r1   r0   r   r  r  r"  r7   rW   permute_dimsr8   r  r   r  s   &&&   r'   test_rotate07TestRotate.test_rotate07  s    zzO++- .0129;  E tY/::	 ) ) ) )	 + , /0	0 8:zz	  C
 ??8Y7nnT2F%@!#0r+   c                R   VP                  . RO. RO. RO..^,          VP                  R7      pVP                  VR4      pVP                  . RO. RO. RO..^,          VP                  R7      pVP                  VR4      p\        P                  ! V^ZR	RVR7      p\        WT4       R# )
r   rJ   F)r  rR  r/   Nr  r  r  r  r"  r  r  s   &&&   r'   test_rotate08TestRotate.test_rotate08  s    zzO++- .0129;  E tY/:: / / 1 2456=?ZZ  I ??8Y7nnT2FEO!#0r+   c                   VP                  . RO. RO. RO.^,          VP                  R7      p\        \        4      ;_uu_ 4        \        P
                  ! V^Z^ VP                  3R7       RRR4       R#   + '       g   i     R# ; i)r   rJ   )r  Nr  r  )r7   rW   r	  r
  r8   r  rU  )r;   r=   r>   s   && r'   test_rotate09TestRotate.test_rotate09  sf    zz?**,./079zz  C :&&NN41dii.9 '&&&s   &A55B	c           
     H   VP                  VP                  ^-VP                  R7      R4      pVP                  . R	O. R	O. R
O. RO. R	O.. RO. RO. RO. RO. RO.. R	O. RO. RO. R	O. R	O..VP                  R7      p\        P
                  ! V^RR7      p\        WCRRR7       R# )-   rJ   F)anglerR  gư>g>rP   N)r2   r   r2   )r  r  r  )g|S2@g|S2@g>)!@)g9HD%@g9HD'@g9HD)@)gc~@gc~@gzLb @)g[ic6*@g[ic6,@g[ic6.@)g      5@g      6@g      7@)gRK<@gRK=@gRK>@)g,PA@g,PgB@g,PB@)gݠ'?@grn@@grnГ@@)gGA@gG9B@gGB@)rR  rV   rW   r7   r8   r  r	   )r;   r=   r>   rd   r   s   &&   r'   test_rotate10TestRotate.test_rotate10  s    zz"))Bbjj)99E :: / D G /	 1
 !E D 2 D G	 I
 !0 G G / /	 12 :<  E  nnTU;Dt<r+   r   z(https://github.com/cupy/cupy/issues/8400r   c                    VP                  \        P                  ! \        P                  ! ^4      R4      4      p\        P
                  ! \        P
                  ! V^4      R4      p\        W#4       R# )r   N)r   r0   iL)r7   rU   tilerV   r8   r  r   )r;   r=   r6  r7  s   &&  r'   test_rotate_exact_180 TestRotate.test_rotate_exact_180  sF    JJrwwryy|V45NN7>>!S148r+   r$   N)rj   rk   rl   rm   rS   ro   rp   rq   r  r  r  r  r  r  r  r  r  r  r/  r  rr   rs   rt   s   @r'   r  r  @  s    [[WeAqk2- 3- [[WeAqk2	1 3	1 [[WeAqk2[[Wy,&?@1 A 31  [[WeAqk21 31 [[WeAqk2> 3> [[WeAqk2> 3> [[WeAqk21 31 [[WeAqk2
1 3
1:=2 v&PQ Rr+   r  )$r  numpyrU   numpy.testingr   scipy._lib._array_apir   r   r   r   r   r	   rS   r
   r	  scipy.ndimager8    r   ro   rn   r/  
pytestmarkro  r[   r   rp   rq   rw   r   r>  rn  r  r1  rk  r  r$   r+   r'   <module>r     s   
  +   *  ;;// KK11 &+9NOP
  i{;vZ E; E;P %1+.%($1 $1 ) /$1N &!IJ%1+.R; R; / KR;j &!IJJ, J, KJ,ZtD tDnx
 x
vD
 D
NL# L#^S Sr+   