§
    µ³Ùg	í  ã                   ó,  — d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZ ddlmZ d dlmZ ej        j        Zeej                             d	¦  «         ed
ddg¬¦  «        gZdZdddddddœZ G d„ d¦  «        Zej                             d edd¦  «        ¦  «        ej                             de¦  «         G d„ d¦  «        ¦   «         ¦   «         Z edd¬¦  «        ej                             d ed d¦  «        ¦  «         G d„ d ¦  «        ¦   «         ¦   «         Z  edd¬¦  «         G d!„ d"¦  «        ¦   «         Z! G d#„ d$¦  «        Z" G d%„ d&¦  «        Z# G d'„ d(¦  «        Z$ G d)„ d*¦  «        Z% G d+„ d,¦  «        Z&dS )-é    N)Úsuppress_warnings)Úxp_assert_equalÚxp_assert_closeÚassert_array_almost_equal)Úis_cupyÚis_jaxÚ_asarrayÚarray_namespace)Úraisesé   )Útypes)Úarray_api_compatibleÚskip_xp_backendsTÚcupyú	jax.numpy)Úcpu_onlyÚ
exceptionsçê-�™—q=ÚreflectÚ	symmetricÚwrapÚedgeÚconstant)Úmirrorr   úgrid-mirrorú	grid-wrapÚnearestúgrid-constantc                   ó  — e Zd Z edd¬¦  «        ej                             ddg d¢fdg d¢fd	g d
¢fdg d¢fdg d¢fdg d¢fdg d¢fg¦  «        d„ ¦   «         ¦   «         Z edd¬¦  «        ej                             ddg d¢fdg d¢fd	g d¢fdg d¢fdg d¢fdg d¢fdg d¢fg¦  «        d„ ¦   «         ¦   «         Zej                             dg d¢¦  «        ej                             d e	d¦  «        ¦  «        d„ ¦   «         ¦   «         Z
dS ) ÚTestBoundariesr   ú&CuPy does not have geometric_transform©Úreasonzmode, expected_valuer   )ç      ø?ç      @ç      @é   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&   r%   r$   r   )r$   r%   r&   éÿÿÿÿr(   r(   r(   r   )r$   r%   r&   r$   r(   r(   r(   c           
      ó°   — d„ }|                      g d¢¦  «        }t          t          j        ||d|dd¬¦  «        |                      |¦  «        ¦  «         d S )Nc                 ó   — | d         dz   fS )Nr   ç      à?© ©Úxs    ú\/granary/edev/quantum/lib/python3.11/site-packages/scipy/ndimage/tests/test_interpolation.pyÚshiftz-TestBoundaries.test_boundaries.<locals>.shift1   ó   € Ø�a”D˜3‘J�=Ð ó    )r   é   é   ç      @r(   )é   r   )ÚcvalÚmodeÚoutput_shapeÚorder©Úasarrayr   ÚndimageÚgeometric_transform©Úselfr8   Úexpected_valueÚxpr0   Údatas         r/   Útest_boundarieszTestBoundaries.test_boundaries%   sx   € ð	!ð 	!ð 	!ð �zŠz˜-˜-˜-Ñ(Ô(ˆÝÝÔ'¨¨e¸"À4Ø59ÀðDñ Dô Dà�JŠJ�~Ñ&Ô&ñ	(ô 	(ð 	(ð 	(ð 	(r2   )r   r   r3   r4   )r4   r   r3   r4   )r'   r   r3   r4   )r3   r   r3   r4   )r(   r   r3   r4   c           	      ó®   — d„ }|                      g d¢¦  «        }t          t          j        ||d|d¬¦  «        |                      |¦  «        ¦  «         d S )Nc                 ó   — | d         dz
  fS )Nr   gÍÌÌÌÌÌì?r,   r-   s    r/   r0   z.TestBoundaries.test_boundaries2.<locals>.shiftF   r1   r2   ©r   r3   r4   r'   r(   ©r'   )r7   r8   r9   r;   r?   s         r/   Útest_boundaries2zTestBoundaries.test_boundaries2:   ss   € ð	!ð 	!ð 	!ð �zŠz˜,˜,˜,Ñ'Ô'ˆÝÝÔ'¨¨e¸"À4Ø59ð;ñ ;ô ;à�JŠJ�~Ñ&Ô&ñ	(ô 	(ð 	(ð 	(ð 	(r2   r8   )r   r   r   r   r   r   r:   é   c                 ó¾  — t          |¦  «        r|dvs|dk    rt          j        d¦  «         t          j        ddt          j        ¬¦  «        }|                     |¦  «        }|                     t          j        ddd	¬
¦  «        ¦  «        }t          |¦  «        j	        }t          j        |||df         ||¬¦  «        }d}	t                               |¦  «        }
|                     t          j        ||	|
¬¦  «        ¦  «        }|                     |	|z   ¦  «        |df         }t          j        ||||¬¦  «        }|dk    rdnd}t          ||d|¬¦  «         dS )z$Tests based on examples from gh-2640)r   r   r   r   r   r   z-Jax does not support grid- modes or order > 1iúÿÿÿr6   ©Údtypeiøÿÿÿé   iè  )Únum.©r:   r8   é    ©r8   r   gñhãˆµøä>r   çH¯¼šò×z>©ÚrtolÚatolN)r   ÚpytestÚxfailÚnpÚarangeÚfloat64r<   Úlinspacer
   Únewaxisr=   Úmap_coordinatesÚndimage_to_numpy_modeÚgetÚpadr   )r@   r8   r:   rB   Únp_datarC   r.   r]   ÚyÚnpadÚpad_modeÚpaddedÚcoordsÚexpectedrV   s                  r/   Útest_boundary_spline_accuracyz,TestBoundaries.test_boundary_spline_accuracyO   sX  € õ �2‰JŒJð 	JØÐMÐMÐMØ˜’	�	åŒLÐHÑIÔIÐIå”)˜B ­¬Ð4Ñ4Ô4ˆØ�zŠz˜'Ñ"Ô"ˆØ�JŠJ•r”{ 2 r¨tÐ4Ñ4Ô4Ñ5Ô5ˆÝ! !Ñ$Ô$Ô,ˆÝÔ# D¨!¨G°S¨L¬/ÀÈTÐRÑRÔRˆð ˆÝ(×,Ò,¨TÑ2Ô2ˆØ—’�BœF 7¨D°xÐ@Ñ@Ô@ÑAÔAˆØ—’˜D 1™HÑ%Ô% g¨s lÔ3ˆÝÔ*¨6°6ÀÈTÐRÑRÔRˆà˜Ò.Ð.ˆtˆt°EˆÝ˜˜8¨$°TÐ:Ñ:Ô:Ð:Ð:Ð:r2   N)Ú__name__Ú
__module__Ú__qualname__r   rW   ÚmarkÚparametrizerD   rI   Úrangeri   r,   r2   r/   r    r    #   sá  € € € € € àÐ�fÐ%MÐNÑNÔNØ„[×ÒØØ
Ð0Ð0Ð0Ð	1Ø
Ð5Ð5Ð5Ð	6Ø
Ð:Ð:Ð:Ð	;Ø
Ð7Ð7Ð7Ð	8Ø
Ð6Ð6Ð6Ð	7Ø
Ð5Ð5Ð5Ð	6Ø
Ð;Ð;Ð;Ð	<ð	>ñ	ô 	ð(ð (ñ	ô 	ñ OÔNð(ð Ð�fÐ%MÐNÑNÔNØ„[×ÒØØ
�\�\�\Ð	"Ø
�,�,�,Ð	Ø
�|�|�|Ð	$Ø
�L�L�LÐ	!Ø
�\�\�\Ð	"Ø
�m�m�mÐ	$Ø
˜=˜=˜=Ð	)ð	+ñ	ô 	ð(ð (ñ	ô 	ñ OÔNð(ð „[×Ò˜Vð &1ð &1ð &1ñ 2ô 2ð „[×Ò˜W e e¨A¡h¤hÑ/Ô/ð;ð ;ñ 0Ô/ñ2ô 2ð;ð ;ð ;r2   r    r:   r3   rJ   rM   c                   óR   — e Zd Zd„ Zd„ Z edd¬¦  «        d„ ¦   «         Zd„ Zd„ Zd	S )
Ú
TestSplinec                 óÄ   — t          ||¦  «        }|                     g |¬¦  «        }t          j        ||¬¦  «        }||                     d|j        ¬¦  «        k    sJ ‚d S )NrL   ©r:   r   ©ÚgetattrÚonesr=   Úspline_filterr<   rM   ©r@   rM   r:   rB   rC   Úouts         r/   Útest_spline01zTestSpline.test_spline01p   sd   € Ý˜˜EÑ"Ô"ˆØ�wŠw�r ˆwÑ'Ô'ˆÝÔ# D°Ð6Ñ6Ô6ˆØ�b—j’j ¨#¬)�jÑ4Ô4Ò4Ð4Ð4Ð4Ð4Ð4r2   c                 óÊ   — t          ||¦  «        }|                     dg|¬¦  «        }t          j        ||¬¦  «        }t	          ||                     dg¦  «        ¦  «         d S )Nr   rL   rs   )ru   r<   r=   rw   r   rx   s         r/   Útest_spline02zTestSpline.test_spline02v   s_   € Ý˜˜EÑ"Ô"ˆØ�zŠz˜1˜# UˆzÑ+Ô+ˆÝÔ# D°Ð6Ñ6Ô6ˆÝ! # r§z¢z°1°#¡¤Ñ7Ô7Ð7Ð7Ð7r2   Tzoutput=dtype is numpy-specific©Únp_onlyr#   c                 óÆ   — t          ||¦  «        }|                     g |¬¦  «        }t          j        |||¬¦  «        }||                     d|j        ¬¦  «        k    sJ ‚d S )NrL   ©Úoutputr   rt   rx   s         r/   Útest_spline03zTestSpline.test_spline03|   sf   € å˜˜EÑ"Ô"ˆØ�wŠw�r ˆwÑ'Ô'ˆÝÔ# D¨%¸Ð>Ñ>Ô>ˆØ�b—j’j ¨#¬)�jÑ4Ô4Ò4Ð4Ð4Ð4Ð4Ð4r2   c                 óÊ   — t          ||¦  «        }|                     dg|¬¦  «        }t          j        ||¦  «        }t	          ||                     g d¢¦  «        ¦  «         d S )Nr'   rL   ©r   r   r   r   )ru   rv   r=   rw   r   r<   rx   s         r/   Útest_spline04zTestSpline.test_spline04ƒ   s`   € Ý˜˜EÑ"Ô"ˆØ�wŠw˜�s %ˆwÑ(Ô(ˆÝÔ# D¨%Ñ0Ô0ˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óæ   — t          ||¦  «        }|                     ddg|¬¦  «        }t          j        ||¬¦  «        }|                     g d¢g d¢g d¢g d¢g¦  «        }t          ||¦  «         d S )Nr'   rL   rs   r„   )ru   rv   r=   rw   r<   r   )r@   rM   r:   rB   rC   ry   rh   s          r/   Útest_spline05zTestSpline.test_spline05‰   sŠ   € Ý˜˜EÑ"Ô"ˆØ�wŠw˜˜1�v UˆwÑ+Ô+ˆÝÔ# D°Ð6Ñ6Ô6ˆØ—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|Ø+˜|˜|ð-ñ .ô .ˆõ 	" # xÑ0Ô0Ð0Ð0Ð0r2   N)	rj   rk   rl   rz   r|   r   r‚   r…   r‡   r,   r2   r/   rq   rq   l   s�   € € € € € ð5ð 5ð 5ð8ð 8ð 8ð Ð˜dÐ+KÐLÑLÔLð5ð 5ñ MÔLð5ðAð Að Að1ð 1ð 1ð 1ð 1r2   rq   r!   r"   c                   óÒ   — e Zd Zd„ Zd„ Zd„ Zd„ Zej         	                    d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S )ÚTestGeometricTransformc                 óÈ   — |                      dg¦  «        }d„ }t          j        |||j        |¬¦  «        }t	          ||                      dg|j        ¬¦  «        ¦  «         d S )Nr   c                 ó   — | S ©Nr,   r-   s    r/   ÚmappingzBTestGeometricTransform.test_geometric_transform01.<locals>.mapping›   ó   € ØˆHr2   rs   rL   ©r<   r=   r>   Úshaper   rM   ©r@   r:   rB   rC   r�   ry   s         r/   Útest_geometric_transform01z1TestGeometricTransform.test_geometric_transform01˜   sp   € Ø�zŠz˜1˜#‰Œˆð	ð 	ð 	õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆå! # r§z¢z°1°#¸S¼Y zÑ'GÔ'GÑHÔHÐHÐHÐHr2   c                 óÊ   — |                      dg¦  «        }d„ }t          j        |||j        |¬¦  «        }t	          ||                     g d¢|j        ¬¦  «        ¦  «         d S )Nr'   c                 ó   — | S rŒ   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform02.<locals>.mapping¥   rŽ   r2   rs   r„   rL   ©rv   r=   r>   r�   r   r<   rM   r‘   s         r/   Útest_geometric_transform02z1TestGeometricTransform.test_geometric_transform02¢   sr   € Ø�wŠw˜�s‰|Œ|ˆð	ð 	ð 	õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆå! # r§z¢z°,°,°,ÀcÄi zÑ'PÔ'PÑQÔQÐQÐQÐQr2   c                 óÊ   — |                      dg¦  «        }d„ }t          j        |||j        |¬¦  «        }t	          ||                     g d¢|j        ¬¦  «        ¦  «         d S )Nr'   c                 ó   — | d         dz
  fS ©Nr   r   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform03.<locals>.mapping¯   ó   € Ø�a”D˜1‘H�;Ðr2   rs   ©r   r   r   r   rL   r•   r‘   s         r/   Útest_geometric_transform03z1TestGeometricTransform.test_geometric_transform03¬   sr   € Ø�wŠw˜�s‰|Œ|ˆð	ð 	ð 	õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆå! # r§z¢z°,°,°,ÀcÄi zÑ'PÔ'PÑQÔQÐQÐQÐQr2   c                 óÌ   — |                      g d¢¦  «        }d„ }t          j        |||j        |¬¦  «        }t	          ||                      g d¢|j        ¬¦  «        ¦  «         d S )N©r'   r   r4   r3   c                 ó   — | d         dz
  fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform04.<locals>.mapping¹   rš   r2   rs   ©r   r'   r   r4   rL   r�   r‘   s         r/   Útest_geometric_transform04z1TestGeometricTransform.test_geometric_transform04¶   sv   € Ø�zŠz˜,˜,˜,Ñ'Ô'ˆð	ð 	ð 	õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆå! # r§z¢z°,°,°,ÀcÄi zÑ'PÔ'PÑQÔQÐQÐQÐQr2   rM   r[   Ú
complex128c                 óp  — t          ||¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }|d|z  z  }d„ }t          j        |||j        |¬¦  «        }t          ||¦  «         d S )Nr„   rL   r›   úcomplex floatingù              ð?c                 ó(   — | d         | d         dz
  fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform05.<locals>.mappingÏ   ó   € Ø�a”D˜!˜Aœ$ ™(Ð#Ð#r2   rs   )	ru   r<   r
   ÚisdtyperM   r=   r>   r�   r   )	r@   r:   rM   rB   rC   rh   r¨   r�   ry   s	            r/   Útest_geometric_transform05z1TestGeometricTransform.test_geometric_transform05À   s	  € å˜˜EÑ"Ô"ˆØ�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à05ð ñ 7ô 7ˆð —:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à49ð ñ ;ô ;ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	&Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHð	$ð 	$ð 	$õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆå! # xÑ0Ô0Ð0Ð0Ð0r2   c                 óì   — |                      g d¢g d¢g d¢g¦  «        }d„ }t          j        |||j        |¬¦  «        }|                      g d¢g d¢g d¢g|j        ¬	¦  «        }t          ||¦  «         d S )
Nrž   ©r6   rJ   é   é   ©r4   r­   r4   rJ   c                 ó(   — | d         | d         dz
  fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform06.<locals>.mappingÛ   r§   r2   rs   r    ©r   r6   rJ   r¬   ©r   r4   r­   r4   rL   ©r<   r=   r>   r�   rM   r   ©r@   r:   rB   rC   r�   ry   rh   s          r/   Útest_geometric_transform06z1TestGeometricTransform.test_geometric_transform06Ö   ó¯   € Ø�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð	$ð 	$ð 	$õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆà—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à47´Ið ñ ?ô ?ˆõ 	" # xÑ0Ô0Ð0Ð0Ð0r2   c                 óì   — |                      g d¢g d¢g d¢g¦  «        }d„ }t          j        |||j        |¬¦  «        }|                      g d¢g d¢g d¢g|j        ¬¦  «        }t          ||¦  «         d S )Nrž   r«   r®   c                 ó(   — | d         dz
  | d         fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform07.<locals>.mappingê   ó   € Ø�a”D˜1‘H˜a œdÐ#Ð#r2   rs   ©r   r   r   r   rL   r²   r³   s          r/   Útest_geometric_transform07z1TestGeometricTransform.test_geometric_transform07å   rµ   r2   c                 óì   — |                      g d¢g d¢g d¢g¦  «        }d„ }t          j        |||j        |¬¦  «        }|                      g d¢g d¢g d¢g|j        ¬	¦  «        }t          ||¦  «         d S )
Nrž   r«   r®   c                 ó.   — | d         dz
  | d         dz
  fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform08.<locals>.mappingù   ó   € Ø�a”D˜1‘H˜a œd Q™hÐ'Ð'r2   rs   r¹   r    r°   rL   r²   r³   s          r/   Útest_geometric_transform08z1TestGeometricTransform.test_geometric_transform08ô   s¯   € Ø�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð	(ð 	(ð 	(õ Ô)¨$°¸¼Ø05ð7ñ 7ô 7ˆà—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à47´Ið ñ ?ô ?ˆõ 	" # xÑ0Ô0Ð0Ð0Ð0r2   c                 ó,  — |                      g d¢g d¢g d¢g¦  «        }d„ }|dk    rt          j        ||¬¦  «        }n|}t          j        |||j        |d¬¦  «        }|                      g d	¢g d
¢g d¢g|j        ¬¦  «        }t          ||¦  «         d S )Nrž   r«   r®   c                 ó.   — | d         dz
  | d         dz
  fS r™   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform10.<locals>.mapping  r½   r2   r   rs   F©r:   Ú	prefilterr¹   r    r°   rL   )r<   r=   rw   r>   r�   rM   r   )r@   r:   rB   rC   r�   Úfilteredry   rh   s           r/   Útest_geometric_transform10z1TestGeometricTransform.test_geometric_transform10  sÙ   € Ø�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð	(ð 	(ð 	(ð �AŠIˆIÝÔ,¨T¸Ð?Ñ?Ô?ˆHˆHàˆHÝÔ)¨(°G¸T¼ZØ05ÀðHñ Hô Hˆà—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à47´Ið ñ ?ô ?ˆõ 	" # xÑ0Ô0Ð0Ð0Ð0r2   c                 óÐ   — |                      dg|j        ¬¦  «        }d„ }t          j        ||dg|¬¦  «        }t	          ||                     g d¢|j        ¬¦  «        ¦  «         d S )Nr3   rL   c                 ó   — | d         dz  fS ©Nr   r3   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform13.<locals>.mapping  s   € Ø�a”D˜A‘I�<Ðr2   r'   rs   r„   )rv   r[   r=   r>   r   r<   rM   r‘   s         r/   Útest_geometric_transform13z1TestGeometricTransform.test_geometric_transform13  ss   € Ø�wŠw˜�s "¤*ˆwÑ-Ô-ˆð	 ð 	 ð 	 õ Ô)¨$°¸!¸ÀEÐJÑJÔJˆÝ! # r§z¢z°,°,°,ÀcÄi zÑ'PÔ'PÑQÔQÐQÐQÐQr2   c                 óÄ   — |                      g d¢¦  «        }d„ }t          j        ||dg|¬¦  «        }t          ||                      g d¢|j        ¬¦  «        ¦  «         d S )N©r   r­   r3   rJ   r4   r6   r'   r'   c                 ó   — d| d         z  fS )Nr3   r   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform14.<locals>.mapping"  s   € Ø˜˜!œ‘H�;Ðr2   r'   rs   rG   rL   )r<   r=   r>   r   rM   r‘   s         r/   Útest_geometric_transform14z1TestGeometricTransform.test_geometric_transform14  sr   € Ø�zŠzÐ2Ð2Ð2Ñ3Ô3ˆð	ð 	ð 	õ Ô)¨$°¸!¸ÀEÐJÑJÔJˆÝ! # r§z¢z°,°,°,ÀcÄi zÑ'PÔ'PÑQÔQÐQÐQÐQr2   c                 ó|   — g d¢}d„ }t          j        ||dg|¬¦  «        }t          |d d d…         g d¢¦  «         d S )NrG   c                 ó   — | d         dz  fS rÇ   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform15.<locals>.mapping+  rš   r2   r¬   rs   r3   ©r=   r>   r   r‘   s         r/   Útest_geometric_transform15z1TestGeometricTransform.test_geometric_transform15(  s[   € Øˆ|ˆ|ˆð	ð 	ð 	õ Ô)¨$°¸!¸ÀEÐJÑJÔJˆÝ! # c c¨ c¤(¨L¨L¨LÑ9Ô9Ð9Ð9Ð9r2   c                 ó„   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |ddgd	d
gddgg¦  «         d S )NrG   ©r­   rJ   r6   r¬   ©g      "@é
   é   é   c                 ó(   — | d         | d         dz  fS ©Nr   r   r3   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform16.<locals>.mapping6  r§   r2   ©r4   r3   rs   r   r4   r­   r6   é	   rÕ   rÏ   r‘   s         r/   Útest_geometric_transform16z1TestGeometricTransform.test_geometric_transform161  sz   € Ø��Ø��Ø!Ð!Ð!ð#ˆð	$ð 	$ð 	$õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! #¨¨A¨°°A°¸¸B¸Ð'@ÑAÔAÐAÐAÐAr2   c                 óx   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |g d¢g¦  «         d S )NrG   rÒ   ©rÚ   rÔ   rÕ   rÖ   c                 ó(   — | d         dz  | d         fS ©Nr   r3   r   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform17.<locals>.mappingB  r¸   r2   ©r   r'   rs   rÏ   r‘   s         r/   Útest_geometric_transform17z1TestGeometricTransform.test_geometric_transform17=  sk   € Ø��Ø��Ø��ð!ˆð	$ð 	$ð 	$õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! #¨¨¨ ~Ñ6Ô6Ð6Ð6Ð6r2   c                 óx   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |ddgg¦  «         d S )	NrG   rÒ   rÝ   c                 ó.   — | d         dz  | d         dz  fS rß   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform18.<locals>.mappingN  r½   r2   ©r   r3   rs   r   r4   rÏ   r‘   s         r/   Útest_geometric_transform18z1TestGeometricTransform.test_geometric_transform18I  sk   € Ø��Ø��Ø��ð!ˆð	(ð 	(ð 	(õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! #¨¨A¨ xÑ0Ô0Ð0Ð0Ð0r2   c                 óˆ   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |dd d d…f         |¦  «         d S )	NrG   rÒ   rÝ   c                 ó(   — | d         | d         dz  fS rØ   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform19.<locals>.mappingZ  r§   r2   ©r4   r¬   rs   .r3   rÏ   r‘   s         r/   Útest_geometric_transform19z1TestGeometricTransform.test_geometric_transform19U  ss   € Ø��Ø��Ø��ð!ˆð	$ð 	$ð 	$õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! # c¨3¨3¨Q¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 óˆ   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |d d d…df         |¦  «         d S )	NrG   rÒ   rÝ   c                 ó(   — | d         dz  | d         fS rß   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform20.<locals>.mappingf  r¸   r2   ©rJ   r'   rs   r3   .rÏ   r‘   s         r/   Útest_geometric_transform20z1TestGeometricTransform.test_geometric_transform20a  ss   € Ø��Ø��Ø��ð!ˆð	$ð 	$ð 	$õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! # c c¨ c¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 óŽ   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }t          |d d d…d d d…f         |¦  «         d S )NrG   rÒ   rÝ   c                 ó.   — | d         dz  | d         dz  fS rß   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform21.<locals>.mappingr  r½   r2   ©rJ   r¬   rs   r3   rÏ   r‘   s         r/   Útest_geometric_transform21z1TestGeometricTransform.test_geometric_transform21m  sy   € Ø��Ø��Ø��ð!ˆð	(ð 	(ð 	(õ Ô)¨$°¸Ø05ð7ñ 7ô 7ˆå! # c c¨ c¨3¨3¨Q¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 óÜ   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }d„ }d„ }t          j        ||d|¬¦  «        }t          j        ||d	|¬¦  «        }t	          ||¦  «         d S )
NrG   rÒ   rÝ   rL   c                 ó.   — | d         dz  | d         dz  fS rß   r,   r-   s    r/   Úmapping1zCTestGeometricTransform.test_geometric_transform22.<locals>.mapping1~  r½   r2   c                 ó.   — | d         dz  | d         dz  fS rß   r,   r-   s    r/   Úmapping2zCTestGeometricTransform.test_geometric_transform22.<locals>.mapping2�  r½   r2   rð   rs   ©r4   r'   )r<   r[   r=   r>   r   )r@   r:   rB   rC   rô   rö   ry   s          r/   Útest_geometric_transform22z1TestGeometricTransform.test_geometric_transform22y  s®   € Ø�zŠz˜<˜<˜<Ø'˜<˜<Ø*˜?˜?ð,à35´:ð ñ ?ô ?ˆð	(ð 	(ð 	(ð	(ð 	(ð 	(õ Ô)¨$°Ø*0¸ð?ñ ?ô ?ˆåÔ)¨#¨xØ*0¸ð?ñ ?ô ?ˆå! # tÑ,Ô,Ð,Ð,Ð,r2   c                 ó´   — g d¢g d¢g d¢g}d„ }t          j        ||d|¬¦  «        }|                     t          j        ¦  «        }t          |ddg¦  «         d S )	NrG   rÒ   rÝ   c                 ó   — d| d         dz  fS )Nr   r   r3   r,   r-   s    r/   r�   zBTestGeometricTransform.test_geometric_transform23.<locals>.mapping�  ó   € Ø�q˜”t˜a‘x�=Ð r2   ©r3   rs   r­   r6   )r=   r>   ÚastyperY   Úint32r   r‘   s         r/   Útest_geometric_transform23z1TestGeometricTransform.test_geometric_transform23Š  su   € Ø��Ø��Ø��ð!ˆð	!ð 	!ð 	!õ Ô)¨$°¸ÀUÐKÑKÔKˆØ�jŠj�œÑ"Ô"ˆÝ! #¨¨1 vÑ.Ô.Ð.Ð.Ð.r2   c           	      ó~   — g d¢g d¢g d¢g}d„ }t          j        ||d|dddi¬	¦  «        }t          |d
dg¦  «         d S )NrG   rÒ   rÝ   c                 ó   — || d         |z  fS )Nr   r,   )r.   ÚaÚbs      r/   r�   zBTestGeometricTransform.test_geometric_transform24.<locals>.mapping›  rû   r2   rü   )r   r  r3   )r:   Úextra_argumentsÚextra_keywordsr­   r6   rÏ   r‘   s         r/   Útest_geometric_transform24z1TestGeometricTransform.test_geometric_transform24–  st   € Ø��Ø��Ø��ð!ˆð	!ð 	!ð 	!õ Ô)Ø�'˜4 u¸dØ ˜8ð%ñ %ô %ˆõ 	" #¨¨1 vÑ.Ô.Ð.Ð.Ð.r2   N)rj   rk   rl   r’   r–   rœ   r¡   rW   rm   rn   r©   r´   rº   r¾   rÄ   rÈ   rÌ   rÐ   rÛ   rá   rå   ré   rí   rñ   rø   rÿ   r  r,   r2   r/   r‰   r‰   ”   s‰  € € € € € ðIð Ið IðRð Rð RðRð Rð RðRð Rð Rð „[×Ò˜W y°,Ð&?Ñ@Ô@ð1ð 1ñ AÔ@ð1ð*1ð 1ð 1ð1ð 1ð 1ð1ð 1ð 1ð1ð 1ð 1ð&Rð Rð RðRð Rð Rð:ð :ð :ð
Bð 
Bð 
Bð
7ð 
7ð 
7ð
1ð 
1ð 
1ð
7ð 
7ð 
7ð
7ð 
7ð 
7ð
7ð 
7ð 
7ð-ð -ð -ð"
/ð 
/ð 
/ð/ð /ð /ð /ð /r2   r‰   c                   ó  — e Zd Zd„ Zej                             dg d¢¦  «        ej                             d ed¦  «        ¦  «        d„ ¦   «         ¦   «         Z e	dd¬	¦  «        d
„ ¦   «         Z
 e	dd¬	¦  «        d„ ¦   «         ZdS )ÚTestGeometricTransformExtrac                 óÒ   — |                      g d¢g d¢g|j        ¬¦  «        }d„ }|                      g d¢g d¢g¦  «        }t          t          j        ||dd¬	¦  «        |¦  «         d S )
N©r   r3   r4   ©r'   r­   rJ   rL   c                 ó.   — | d         dz
  | d         dz
  fS )Nr   r+   r   r,   r-   s    r/   r�   zZTestGeometricTransformExtra.test_geometric_transform_grid_constant_order1.<locals>.mapping­  ó   € Ø�a”D˜3‘J ! A¤$¨¡*Ð-Ð-r2   ©g      Ð?g      è?ç      ô?©r  g      @r5   r   r   ©r8   r:   )r<   r[   r   r=   r>   )r@   rB   r.   r�   Úexpected_results        r/   Ú-test_geometric_transform_grid_constant_order1zITestGeometricTransformExtra.test_geometric_transform_grid_constant_order1§  s«   € ð �JŠJ˜	˜	˜	Ø!˜	˜	ð#Ø*,¬*ð ñ 6ô 6ˆð	.ð 	.ð 	.ð Ÿ*š*Ð&8Ð&8Ð&8Ø&8Ð&8Ð&8ð&:ñ ;ô ;ˆå!ÝÔ'¨¨7¸Ø./ð1ñ 1ô 1àñ	
ô 	
ð 	
ð 	
ð 	
r2   r8   ©r   r   r   r   r   r:   rJ   c                 óþ  — d„ }t          j        dt          ¬¦  «                             dd¦  «        }d}t                               |¦  «        }t          j        |||¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          t          || ¦  «        g|j
        z  ¦  «        }	t          j        ||||¬¦  «        |	         }
t          t          j        ||||¬¦  «        |
d¬	¦  «         d S )
Nc                 ó.   — | d         dz
  | d         dz   fS )Nr   çš™™™™™Ù?r   gffffff@r,   r-   s    r/   r�   zOTestGeometricTransformExtra.test_geometric_transform_vs_padded.<locals>.mapping½  r  r2   é�   rL   rÖ   é   rR   r  rS   ©rU   )rY   rZ   ÚfloatÚreshaper_   r`   ra   r<   ÚtupleÚsliceÚndimr=   r>   r   )r@   r:   r8   rB   r�   r.   rd   re   Úx_paddedÚcenter_slicer  s              r/   Ú"test_geometric_transform_vs_paddedz>TestGeometricTransformExtra.test_geometric_transform_vs_padded¸  s  € ð
	.ð 	.ð 	.õ
 ŒI�c¥Ð'Ñ'Ô'×/Ò/°°BÑ7Ô7ˆØˆÝ(×,Ò,¨TÑ2Ô2ˆÝ”6˜!˜T¨Ð1Ñ1Ô1ˆà�JŠJ�q‰MŒMˆØ—:’:˜hÑ'Ô'ˆå�e D¨4¨%Ñ0Ô0Ð1°A´FÑ:Ñ;Ô;ˆÝ!Ô5Ø�g D°ð7ñ 7ô 7Ø7CôEˆõ 	ÝÔ'¨¨7¸Ø.3ð5ñ 5ô 5àØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r2   Tzendianness is numpy-specificr}   c                 ó„  — t          j        dg¦  «        }d„ }|j        |j                             ¦   «         t          j        |¦  «        t          j        |¦  «                             |j                             ¦   «         ¦  «        fD ]6}t          j        |||j        |¬¦  «        }|€|n|}t          |dg¦  «         Œ7d S )Nr   c                 ó   — | S rŒ   r,   r-   s    r/   r�   zfTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameter.<locals>.mappingÛ  rŽ   r2   r€   )
rY   r<   rM   ÚnewbyteorderÚ
empty_likerý   r=   r>   r�   r   )r@   rB   rC   r�   ry   ÚreturnedÚresults          r/   Ú9test_geometric_transform_endianness_with_output_parameterzUTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameterÕ  sÒ   € õ Œz˜1˜#‰Œˆð	ð 	ð 	ð ”J ¤
× 7Ò 7Ñ 9Ô 9Ý”M $Ñ'Ô'Ý”M $Ñ'Ô'×.Ò.¨t¬z×/FÒ/FÑ/HÔ/HÑIÔIðKð 	3ð 	3ˆCõ Ô2°4¸À$Ä*Ø:=ð?ñ ?ô ?ˆHà$Ð,�S�S°(ˆFÝ% f¨q¨cÑ2Ô2Ð2Ð2ð	3ð 	3r2   ú!string `output` is numpy-specificc                 óÂ   — |                      dg¦  «        }d„ }t          j        ||d¬¦  «        }|j        t	          j        d¦  «        u sJ ‚t          |dg¦  «         d S )Nr   c                 ó   — | S rŒ   r,   r-   s    r/   r�   zXTestGeometricTransformExtra.test_geometric_transform_with_string_output.<locals>.mappingê  rŽ   r2   Úfr€   )r<   r=   r>   rM   rY   r   )r@   rB   rC   r�   ry   s        r/   Ú+test_geometric_transform_with_string_outputzGTestGeometricTransformExtra.test_geometric_transform_with_string_outputæ  sn   € à�zŠz˜1˜#‰Œˆð	ð 	ð 	õ Ô)¨$°ÀÐDÑDÔDˆØŒy�BœH S™MœMÐ)Ð)Ð)Ð)Ý! #¨ sÑ+Ô+Ð+Ð+Ð+r2   N)rj   rk   rl   r  rW   rm   rn   ro   r"  r   r)  r.  r,   r2   r/   r  r  ¤  så   € € € € € ð
ð 
ð 
ð" „[×Ò˜Vð &;ð &;ð &;ñ <ô <à„[×Ò˜W e e¨A¡h¤hÑ/Ô/ð
ð 
ñ 0Ô/ñ<ô <ð
ð4 Ð˜dÐ+IÐJÑJÔJð3ð 3ñ KÔJð3ð  Ð˜dÐ+NÐOÑOÔOð,ð ,ñ PÔOð,ð ,ð ,r2   r  c                   ó,  — e Zd Zej                             d edd¦  «        ¦  «        ej                             dej        ej	        g¦  «        d„ ¦   «         ¦   «         Z
ej                             d edd¦  «        ¦  «        d„ ¦   «         Z edd¬	¦  «        d
„ ¦   «         Z ed¬¦  «        d„ ¦   «         Z edd¬¦  «        d„ ¦   «         Zej                             dej        v p ej        d¦  «        j        dk     d¬	¦  «        d„ ¦   «         ZdS )ÚTestMapCoordinatesr:   r   rJ   rM   c                 óî  — t          |¦  «        r|dk    rt          j        d¦  «         |                     g d¢g d¢g d¢g¦  «        }|                     g d¢g d¢g d¢g¦  «        }t	          |¦  «        j        } ||j        d	¦  «        r|d
|z  z
  }|d
|z  z
  }t          j        |j	        ¦  «        }|dz  }|                     |¦  «        }t          j        |||¬¦  «        }t          ||¦  «         d S )Nr   ú'jax map_coordinates requires order <= 1rž   r«   r®   r¹   r    r°   r¤   r¥   rs   )r   rW   rX   r<   r
   r¨   rM   rY   Úindicesr�   r=   r^   r   )	r@   r:   rM   rB   rC   rh   r¨   Úidxry   s	            r/   Útest_map_coordinates01z)TestMapCoordinates.test_map_coordinates01ô  s!  € õ �"‰:Œ:ð 	D˜% !š)˜)ÝŒLÐBÑCÔCÐCà�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð —:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-ñ .ô .ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	0Ø˜"˜t™)Ñ#ˆDØ " x¡-Ñ/ˆHåŒj˜œÑ$Ô$ˆØˆq‰ˆØ�jŠj˜‰oŒoˆåÔ% d¨C°uÐ=Ñ=Ô=ˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c                 óÀ  — t          |¦  «        r4|dk    rt          j        d¦  «         |dk    rt          j        d¦  «         |                     g d¢g d¢g d¢g¦  «        }t	          j        |j        t          j        ¦  «        }|dz  }|                     |¦  «        }t          j	        |d|¬¦  «        }t          j
        |||¬¦  «        }t          ||¦  «         d S )	Nr   r2  zoutput differs. jax bug?rž   r«   r®   r+   rs   )r   rW   rX   r<   rY   r3  r�   r[   r=   r0   r^   r   )r@   r:   rB   rC   r4  Úout1Úout2s          r/   Útest_map_coordinates02z)TestMapCoordinates.test_map_coordinates02  sâ   € å�"‰:Œ:ð 	8Ø�qŠyˆyÝŒ|ÐEÑFÔFÐFØ˜ŠzˆzÝŒ|Ð6Ñ7Ô7Ð7à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ Œj˜œ¥R¤ZÑ0Ô0ˆØˆs‰
ˆØ�jŠj˜‰oŒoˆåŒ}˜T 3¨eÐ4Ñ4Ô4ˆÝÔ& t¨S¸Ð>Ñ>Ô>ˆÝ! $¨Ñ-Ô-Ð-Ð-Ð-r2   r   z`order` is required in jaxr"   c           
      óH  — t          g d¢g d¢g d¢gd|¬¦  «        }t          j        |j        ¦  «        dz
  }|                     |¦  «        }t          j        ||¦  «        }|                     g d¢g d¢g d	¢g¦  «        }t          ||¦  «         t          |t          j        |d
¦  «        ¦  «         t          j        |d d d…df         j        ¦  «        dz
  }|                     |¦  «        }t          j        |d d d…df         |¦  «        }t          ||                     g d¢g d¢g¦  «        ¦  «         t          |t          j        |d d d…df         d
¦  «        ¦  «         t          j        |d d …d d d…f         j        ¦  «        dz
  }|                     |¦  «        }t          j        |d d …d d d…f         |¦  «        }t          ||                     ddgddgddgg¦  «        ¦  «         t          |t          j        |d d …d d d…f         d
¦  «        ¦  «         d S )Nrž   r«   r®   ÚF)r:   rB   r   r¹   r    r°   ©r   r   r3   .r   r'   r6   )	r	   rY   r3  r�   r<   r=   r^   r   r0   )r@   rB   rC   r4  ry   rh   s         r/   Útest_map_coordinates03z)TestMapCoordinates.test_map_coordinates03  s@  € å˜˜˜Ø%˜˜Ø%˜˜ð'à.1°bð:ñ :ô :ˆõ Œj˜œÑ$Ô$ qÑ(ˆØ�jŠj˜‰oŒoˆÝÔ% d¨CÑ0Ô0ˆØ—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-ñ .ô .ˆõ 	" # xÑ0Ô0Ð0Ý! #¥w¤}°T¸6Ñ'BÔ'BÑCÔCÐCåŒj˜˜c˜c ˜c 3˜hœÔ-Ñ.Ô.°Ñ2ˆØ�jŠj˜‰oŒoˆÝÔ% d¨3¨3¨Q¨3°¨8¤n°cÑ:Ô:ˆÝ! # r§z¢z°<°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cå! #¥w¤}°T¸#¸#¸A¸#¸s¸(´^ÀVÑ'LÔ'LÑMÔMÐMåŒj˜˜a˜a˜a   1 ˜fœÔ+Ñ,Ô,¨qÑ0ˆØ�jŠj˜‰oŒoˆÝÔ% d¨1¨1¨1¨c¨c°¨c¨6¤l°CÑ8Ô8ˆÝ! # r§z¢z°A°q°6¸A¸q¸6ÀAÀqÀ6Ð2JÑ'KÔ'KÑLÔLÐLÝ! #¥w¤}°T¸!¸!¸!¸S¸S¸q¸S¸&´\À6Ñ'JÔ'JÑKÔKÐKÐKÐKr2   T)r~   c                 óê  — t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }t          j        |j        ¦  «        }|dz  }|j        |j                             ¦   «         t          j        |¦  «        t          j        |¦  «                             |j                             ¦   «         ¦  «        fD ]/}t          j	        |||¬¦  «        }|€|n|}t          ||¦  «         Œ0d S )Nr   r3   r6   rJ   r   r€   )rY   r<   r3  r�   rM   r%  r&  rý   r=   r^   r   )r@   rB   rC   rh   r4  ry   r'  r(  s           r/   Ú5test_map_coordinates_endianness_with_output_parameterzHTestMapCoordinates.test_map_coordinates_endianness_with_output_parameter:  s÷   € õ Œz˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ”:  1˜v¨¨1 vÐ.Ñ/Ô/ˆÝŒj˜œÑ$Ô$ˆØˆq‰ˆàŒJØŒJ×#Ò#Ñ%Ô%ÝŒM˜(Ñ#Ô#ÝŒM˜(Ñ#Ô#×*Ò*¨8¬>×+FÒ+FÑ+HÔ+HÑIÔIð	
ð 	8ð 	8ˆCõ Ô.¨t°SÀÐEÑEÔEˆHØ$Ð,�S�S°(ˆFÝ% f¨hÑ7Ô7Ð7Ð7ð	8ð 	8r2   r*  r}   c                 óB  — |                      dgg¦  «        }t          j        |j        ¦  «        }|                      |¦  «        }t	          j        ||d¬¦  «        }|j        t          j        d¦  «        u sJ ‚t          ||                      dgg¦  «        ¦  «         d S ©Nr   r-  r€   )r<   rY   r3  r�   r=   r^   rM   r   )r@   rB   rC   r4  ry   s        r/   Ú'test_map_coordinates_with_string_outputz:TestMapCoordinates.test_map_coordinates_with_string_outputN  s�   € à�zŠz˜A˜3˜%Ñ Ô ˆÝŒj˜œÑ$Ô$ˆØ�jŠj˜‰oŒoˆÝÔ% d¨C¸Ð<Ñ<Ô<ˆØŒy�BœH S™MœMÐ)Ð)Ð)Ð)Ý! # r§z¢z°A°3°%Ñ'8Ô'8Ñ9Ô9Ð9Ð9Ð9r2   Úwin32r¬   z2do not run on 32 bit or windows (no sparse memory)c                 óx  — 	 d}t          j        |dz  t           j        ¬¦  «                             ||¦  «        }d||dz
  d …|dz
  d …f<   t	          j        |                     |¦  «        |                     |dz
  g|dz
  gg¦  «        d¬¦  «         d S # t          $ r}t          j	        d	¦  «        |‚d }~ww xY w)
Ni0u  r3   rL   r   r4   r$   r   rs   zNot enough memory available)
rY   ÚemptyÚfloat32r  r=   r^   r<   ÚMemoryErrorrW   Úskip)r@   rB   Únr  Úes        r/   Útest_map_coordinates_large_dataz2TestMapCoordinates.test_map_coordinates_large_dataW  sß   € ð

	DØˆAå”˜˜A™¥R¤ZÐ0Ñ0Ô0×8Ò8¸¸AÑ>Ô>ˆAà !ˆAˆa�!‰eˆfˆf�a˜!‘e�f�fˆnÑÝÔ#Ø—
’
˜1‘”˜rŸzšz¨A°©G¨9°q¸3±w°iÐ*@ÑAÔAÈðñ ô ð ð ð øõ ð 	Dð 	Dð 	DÝ”+Ð;Ñ<Ô<À!ÐCøøøøð	Døøøs   ‚BB Â
B9ÂB4Â4B9N)rj   rk   rl   rW   rm   rn   ro   rY   r[   r¢   r5  r9  r   r=  r?  rB  ÚskipifÚsysÚplatformÚintpÚitemsizerK  r,   r2   r/   r0  r0  ò  s‘  € € € € € à„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜W r¤z°2´=Ð&AÑBÔBð1ð 1ñ CÔBñ 3Ô2ð1ð, „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð.ð .ñ 3Ô2ð.ð$ Ð�kÐ*FÐGÑGÔGðLð Lñ HÔGðLð4 Ð˜dÐ#Ñ#Ô#ð8ð 8ñ $Ô#ð8ð& Ð˜dÐ+NÐOÑOÔOð:ð :ñ PÔOð:ð „[×Ò˜ 3¤<Ð/ÐJ°7°2´7¸1±:´:Ô3FÈÒ3Jð 4ð ñ 5ô 5ðDð Dñ5ô 5ðDð Dð Dr2   r0  c                   ó`  — e Zd Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Z	ej                             d edd¦  «        ¦  «        d„ ¦   «         Z
ej                             d edd¦  «        ¦  «        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d „ ¦   «         Z d!„ Z! e"d"d#¬$¦  «        d%„ ¦   «         Z# e"d"d#¬$¦  «        d&„ ¦   «         Z$ e"d"d'¬$¦  «        d(„ ¦   «         Z% e"d"d)¬$¦  «        d*„ ¦   «         Z&ej                             d+g d,¢¦  «        ej                             d edd¦  «        ¦  «        d-„ ¦   «         ¦   «         Z'ej                             d edd¦  «        ¦  «        d.„ ¦   «         Z(d/S )0ÚTestAffineTransformr:   r   rJ   c                 óÒ   — |                      dg¦  «        }t          j        ||                      dgg¦  «        |¬¦  «        }t          ||                      dg¦  «        ¦  «         d S )Nr   rs   ©r<   r=   Úaffine_transformr   ©r@   r:   rB   rC   ry   s        r/   Útest_affine_transform01z+TestAffineTransform.test_affine_transform01k  s\   € à�zŠz˜1˜#‰ŒˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀeÐLÑLÔLˆÝ! # r§z¢z°1°#¡¤Ñ7Ô7Ð7Ð7Ð7r2   c                 óÔ   — |                      dg¦  «        }t          j        ||                     dgg¦  «        |¬¦  «        }t	          ||                     g d¢¦  «        ¦  «         d S )Nr'   r   rs   r„   ©rv   r=   rU  r<   r   rV  s        r/   Útest_affine_transform02z+TestAffineTransform.test_affine_transform02q  s`   € à�wŠw˜�s‰|Œ|ˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀeÐLÑLÔLˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óÖ   — |                      dg¦  «        }t          j        ||                     dgg¦  «        d|¬¦  «        }t	          ||                     g d¢¦  «        ¦  «         d S )Nr'   r   r(   rs   r›   rY  rV  s        r/   Útest_affine_transform03z+TestAffineTransform.test_affine_transform03w  sb   € à�wŠw˜�s‰|Œ|ˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀÈ%ÐPÑPÔPˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óØ   — |                      g d¢¦  «        }t          j        ||                      dgg¦  «        d|¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )Nrž   r   r(   rs   r    rT  rV  s        r/   Útest_affine_transform04z+TestAffineTransform.test_affine_transform04}  sf   € à�zŠz˜,˜,˜,Ñ'Ô'ˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀÈ%ÐPÑPÔPˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   rM   r[   r¢   c                 ó–  — t          ||¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }|d|z  z  }t          j        ||                     ddgddgg¦  «        ddg|¬	¦  «        }t          ||¦  «         d S )
Nr„   rL   r›   r¤   r¥   r   r   r(   rs   )ru   r<   r
   r¨   rM   r=   rU  r   ©r@   r:   rM   rB   rC   rh   r¨   ry   s           r/   Útest_affine_transform05z+TestAffineTransform.test_affine_transform05ƒ  s  € õ ˜˜EÑ"Ô"ˆØ�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à05ð ñ 7ô 7ˆð —:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à49ð ñ ;ô ;ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	&Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÝÔ& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IØ()¨2 w°eð=ñ =ô =ˆå! # xÑ0Ô0Ð0Ð0Ð0r2   c           	      ó   — |                      g d¢g d¢g d¢g¦  «        }t          j        ||                      ddgddgg¦  «        ddg|¬¦  «        }t          ||                      g d¢g d	¢g d
¢g¦  «        ¦  «         d S )Nrž   r«   r®   r   r   r(   rs   r    r°   r±   rT  rV  s        r/   Útest_affine_transform06z+TestAffineTransform.test_affine_transform06•  s¼   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ Ô& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IØ()¨2 w°eð=ñ =ô =ˆå! # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   c           	      ó   — |                      g d¢g d¢g d¢g¦  «        }t          j        ||                      ddgddgg¦  «        ddg|¬¦  «        }t          ||                      g d¢g d¢g d¢g¦  «        ¦  «         d S )	Nrž   r«   r®   r   r   r(   rs   r¹   rT  rV  s        r/   Útest_affine_transform07z+TestAffineTransform.test_affine_transform07   s¼   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ Ô& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IØ(*¨A w°eð=ñ =ô =ˆå! # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   c           	      ó   — |                      g d¢g d¢g d¢g¦  «        }t          j        ||                      ddgddgg¦  «        ddg|¬¦  «        }t          ||                      g d¢g d	¢g d
¢g¦  «        ¦  «         d S )Nrž   r«   r®   r   r   r(   rs   r¹   r    r°   rT  rV  s        r/   Útest_affine_transform08z+TestAffineTransform.test_affine_transform08«  s¼   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ Ô& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IØ(*¨B x°uð>ñ >ô >ˆå! # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   c           	      ó@  — |                      g d¢g d¢g d¢g¦  «        }|dk    rt          j        ||¬¦  «        }n|}t          j        ||                      ddgddgg¦  «        ddg|d¬	¦  «        }t	          ||                      g d
¢g d¢g d¢g¦  «        ¦  «         d S )Nrž   r«   r®   r   rs   r   r(   FrÁ   r¹   r    r°   )r<   r=   rw   rU  r   ©r@   r:   rB   rC   rÃ   ry   s         r/   Útest_affine_transform09z+TestAffineTransform.test_affine_transform09¶  sæ   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð �AŠIˆIÝÔ,¨T¸Ð?Ñ?Ô?ˆHˆHàˆHÝÔ& x°·²¸aÀ¸VÀaÈÀVÐ<LÑ1MÔ1MØ(*¨B x°uØ16ð8ñ 8ô 8ˆõ 	" # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   c                 óä   — |                      dg|j        ¬¦  «        }t          j        ||                     dgg¦  «        d|¬¦  «        }t          ||                     g d¢¦  «        ¦  «         d S )Nr3   rL   r+   rH   )r9   r:   ©r   r   r   r   )rv   r[   r=   rU  r<   r   rV  s        r/   Útest_affine_transform10z+TestAffineTransform.test_affine_transform10Æ  sq   € à�wŠw˜�s "¤*ˆwÑ-Ô-ˆÝÔ& t¨R¯ZªZ¸#¸¸Ñ-@Ô-@ÈtØ-2ð4ñ 4ô 4ˆå! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óÚ   — |                      g d¢¦  «        }t          j        ||                      dgg¦  «        dd|¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )NrÊ   r3   r   rH   rs   rG   rT  rV  s        r/   Útest_affine_transform11z+TestAffineTransform.test_affine_transform11Í  sk   € à�zŠzÐ2Ð2Ð2Ñ3Ô3ˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀÀ4ÈuÐUÑUÔUˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óì   — |                      g d¢¦  «        }t          j        ||                      dgg¦  «        dd|¬¦  «        }t          |d d d…         |                      g d¢¦  «        ¦  «         d S )NrG   r+   r   ©r¬   rs   r3   rT  rV  s        r/   Útest_affine_transform12z+TestAffineTransform.test_affine_transform12Ó  ss   € à�zŠz˜,˜,˜,Ñ'Ô'ˆÝÔ& t¨R¯ZªZ¸#¸¸Ñ-@Ô-@À!ÀTÐQVÐWÑWÔWˆÝ! # c c¨ c¤(¨B¯JªJ°|°|°|Ñ,DÔ,DÑEÔEÐEÐEÐEr2   c           	      ó  — g d¢g d¢g d¢g}|                      |¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          ||                      dd	gd
dgddgg¦  «        ¦  «         d S )NrG   rÒ   rÓ   r   r   r3   rÙ   rs   r4   r­   r6   rÚ   rÕ   rT  rV  s        r/   Útest_affine_transform13z+TestAffineTransform.test_affine_transform13Ù  s£   € à��Ø��Ø!Ð!Ð!ð#ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IÈ1ÈfØ-2ð4ñ 4ô 4ˆå! # r§z¢z°A°q°6¸A¸q¸6ÀAÀrÀ7Ð2KÑ'LÔ'LÑMÔMÐMÐMÐMr2   c                 óö   — g d¢g d¢g d¢g}|                      |¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          ||                      g d¢g¦  «        ¦  «         d S )	NrG   rÒ   rÝ   r3   r   r   rà   rs   rT  rV  s        r/   Útest_affine_transform14z+TestAffineTransform.test_affine_transform14ã  s”   € à��Ø��Ø��ð!ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IÈ1ÈfØ-2ð4ñ 4ô 4ˆå! # r§z¢z°<°<°<°.Ñ'AÔ'AÑBÔBÐBÐBÐBr2   c                 óö   — g d¢g d¢g d¢g}|                      |¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          ||                      dd	gg¦  «        ¦  «         d S )
NrG   rÒ   rÝ   r3   r   rä   rs   r   r4   rT  rV  s        r/   Útest_affine_transform15z+TestAffineTransform.test_affine_transform15í  s”   € à��Ø��Ø��ð!ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸!¸Q¸À!ÀQÀÐ8HÑ-IÔ-IÈ1ÈfØ-2ð4ñ 4ô 4ˆå! # r§z¢z°A°q°6°(Ñ';Ô';Ñ<Ô<Ð<Ð<Ð<r2   c                 óà   — g d¢g d¢g d¢g}|                      |¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬	¦  «        }t          |d
d d d…f         |¦  «         d S )NrG   rÒ   rÝ   r   ç        r   r+   rè   rs   .r3   rT  rV  s        r/   Útest_affine_transform16z+TestAffineTransform.test_affine_transform16÷  s�   € à��Ø��Ø��ð!ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸!¸S¸ÀAÀsÀ8Ð8LÑ-MÔ-MÈqØ'-°Uð<ñ <ô <ˆå! # c¨3¨3¨Q¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 óà   — g d¢g d¢g d¢g}|                      |¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          |d d d	…d
f         |¦  «         d S )NrG   rÒ   rÝ   r+   r   r   rì   rs   r3   .rT  rV  s        r/   Útest_affine_transform17z+TestAffineTransform.test_affine_transform17  s�   € à��Ø��Ø��ð!ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸#¸q¸ÀAÀqÀ6Ð8JÑ-KÔ-KÈQØ'-°Uð<ñ <ô <ˆå! # c c¨ c¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 óâ   — |                      g d¢g d¢g d¢g¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          |d d d…d d d…f         |¦  «         d S )	NrG   rÒ   rÝ   r+   r   rð   rs   r3   rT  rV  s        r/   Útest_affine_transform18z+TestAffineTransform.test_affine_transform18  s•   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø*˜?˜?ð,ñ -ô -ˆõ Ô& t¨R¯ZªZ¸#¸q¸ÀAÀsÀ8Ð8LÑ-MÔ-MÈqØ'-°Uð<ñ <ô <ˆå! # c c¨ c¨3¨3¨Q¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6r2   c                 ó8  — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          j        ||                      ddgddgg¦  «        dd|¬¦  «        }t          j        ||                      d	dgdd	gg¦  «        dd
|¬¦  «        }t	          ||¦  «         d S )NrG   rÒ   rÝ   rL   r+   r   rð   rs   ç       @r÷   )r<   r[   r=   rU  r   rV  s        r/   Útest_affine_transform19z+TestAffineTransform.test_affine_transform19  sÆ   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø*˜?˜?ð,à35´:ð ñ ?ô ?ˆõ Ô& t¨R¯ZªZ¸#¸q¸ÀAÀsÀ8Ð8LÑ-MÔ-MÈqØ'-°Uð<ñ <ô <ˆåÔ& s¨B¯JªJ¸¸a¸À1ÀcÀ(Ð7KÑ,LÔ,LÈaØ'-°Uð<ñ <ô <ˆå! # tÑ,Ô,Ð,Ð,Ð,r2   c                 ó6  — t          |¦  «        rt          j        d¦  «         g d¢g d¢g d¢g}|                     |¦  «        }t	          j        ||                     dgdgg¦  «        dd|¬¦  «        }t          ||                     d	d
g¦  «        ¦  «         d S )Nú(https://github.com/cupy/cupy/issues/8394rG   rÒ   rÝ   r   r3   rü   rs   r   r4   ©r   rW   rX   r<   r=   rU  r   rV  s        r/   Útest_affine_transform20z+TestAffineTransform.test_affine_transform20  ó­   € å�2‰;Œ;ð 	EÝŒLÐCÑDÔDÐDà��Ø��Ø��ð!ˆð �zŠz˜$ÑÔˆÝÔ& t¨R¯ZªZ¸!¸¸q¸c¸
Ñ-CÔ-CÀQÈØ-2ð4ñ 4ô 4ˆå! # r§z¢z°1°a°&Ñ'9Ô'9Ñ:Ô:Ð:Ð:Ð:r2   c                 ó6  — t          |¦  «        rt          j        d¦  «         g d¢g d¢g d¢g}|                     |¦  «        }t	          j        ||                     dgdgg¦  «        dd|¬¦  «        }t          ||                     d	d
g¦  «        ¦  «         d S )Nr„  rG   rÒ   rÝ   r3   r   rü   rs   r   rÚ   r…  rV  s        r/   Útest_affine_transform21z+TestAffineTransform.test_affine_transform21,  r‡  r2   c                 óÜ   — |                      g d¢¦  «        }t          j        ||                      dgg¦  «        dgd|¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )Nrž   r3   r(   )r4   rs   ©r   r   r3   rT  rV  s        r/   Útest_affine_transform22z+TestAffineTransform.test_affine_transform229  ss   € ð �zŠz˜,˜,˜,Ñ'Ô'ˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀÀÀdØ-2ð4ñ 4ô 4ˆå! # r§z¢z°)°)°)Ñ'<Ô'<Ñ=Ô=Ð=Ð=Ð=r2   c                 óî   — |                      g d¢¦  «        }t          j        ||                      dgg¦  «        dgd|¬¦  «        }t          |d d d…         |                      g d¢¦  «        ¦  «         d S )Nrž   r+   r(   rq  rs   r3   r    rT  rV  s        r/   Útest_affine_transform23z+TestAffineTransform.test_affine_transform23A  s}   € ð �zŠz˜,˜,˜,Ñ'Ô'ˆÝÔ& t¨R¯ZªZ¸#¸¸Ñ-@Ô-@À2À$ÈØ-2ð4ñ 4ô 4ˆå! # c c¨ c¤(¨B¯JªJ°|°|°|Ñ,DÔ,DÑEÔEÐEÐEÐEr2   c                 óˆ  — |                      g d¢¦  «        }t          ¦   «         5 }|                     t          d¦  «         t	          j        ||                      dg¦  «        d|¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          j        ||                      dgg¦  «        d|¬¦  «        }t          ||¦  «         d S )Nrž   ú@The behavior of affine_transform with a 1-D array .* has changedr3   r(   rs   ©r<   r   ÚfilterÚUserWarningr=   rU  r   ©r@   r:   rB   rC   Úsupr7  r8  s          r/   Útest_affine_transform24z+TestAffineTransform.test_affine_transform24I  s  € ð �zŠz˜,˜,˜,Ñ'Ô'ˆÝÑ Ô ð 	T CØ�JŠJ•{ð%ñ&ô &ð &õ Ô+¨D°"·*²*¸a¸S±/´/À2ÈUÐSÑSÔSˆDð		Tð 	Tð 	Tñ 	Tô 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tøøøð 	Tð 	Tð 	Tð 	Tõ
 Ô'¨¨b¯jªj¸1¸#¸Ñ.?Ô.?ÀÈ5ÐQÑQÔQˆÝ! $¨Ñ-Ô-Ð-Ð-Ð-ó   ¦AA:Á:A>ÂA>c                 óˆ  — |                      g d¢¦  «        }t          ¦   «         5 }|                     t          d¦  «         t	          j        ||                      dg¦  «        d|¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          j        ||                      dgg¦  «        d|¬¦  «        }t          ||¦  «         d S )Nrž   r�  r+   r(   rs   r‘  r”  s          r/   Útest_affine_transform25z+TestAffineTransform.test_affine_transform25U  s  € ð �zŠz˜,˜,˜,Ñ'Ô'ˆÝÑ Ô ð 	V CØ�JŠJ•{ð%ñ&ô &ð &õ Ô+¨D°"·*²*¸c¸UÑ2CÔ2CÀRÈuÐUÑUÔUˆDð		Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Võ
 Ô'¨¨b¯jªj¸3¸%¸Ñ.AÔ.AÀ2ÈUÐSÑSÔSˆÝ! $¨Ñ-Ô-Ð-Ð-Ð-r—  c           
      ó¢  — |                      g d¢g d¢g d¢g¦  «        }|dk    rt          j        ||¬¦  «        }n|}|                     d¦  «        }|                     d¦  «         }t          ||¦  «        j        } |||fd¬¦  «        } |||                      g d	¢g¦  «        fd
¬¦  «        }	d„ |                     |d¦  «        D ¦   «         }
t          j        |||
|d¬¦  «        }t          j        |||d¬¦  «        }t          j        ||	|d¬¦  «        }|||fD ].}t          ||                      g d¢g d¢g d¢g¦  «        ¦  «         Œ/d S )Nrž   r«   r®   r   rs   r3   ©r3   r   ©Úaxis)rz  r   r   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r,   )r  )Ú.0r.   s     r/   ú
<listcomp>z?TestAffineTransform.test_affine_transform26.<locals>.<listcomp>r  s   € ÐEÐEÐE˜Q•�a‘”ÐEÐEÐEr2   )r(   FrÁ   r¹   r    r°   )
r<   r=   rw   Úeyerv   r
   Úconcatr  rU  r   )r@   r:   rB   rC   rÃ   Útform_originalÚoffset_originalr¢  Útform_h1Útform_h2Úoffsr7  r8  Úout3ry   s                  r/   Útest_affine_transform26z+TestAffineTransform.test_affine_transform26a  sÄ  € ð �zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð �AŠIˆIÝÔ,¨T¸Ð?Ñ?Ô?ˆHˆHàˆHØŸš ™œˆØŸ7š7 6™?œ?Ð*ˆå  °ÑAÔAÔHˆØ�6˜>¨?Ð;À!ÐDÑDÔDˆØ�6˜H b§j¢j°+°+°+°Ñ&?Ô&?Ð@ÀqÐIÑIÔIˆàEÐE "§*¢*¨_¸eÑ"DÔ"DÐEÑEÔEˆåÔ'¨°.Ø(,Ø.3¸uðFñ Fô Fˆõ Ô'¨°(À%Ø27ð9ñ 9ô 9ˆåÔ'¨°(À%Ø27ð9ñ 9ô 9ˆà˜$ Ð%ð 	Gð 	GˆCÝ% c¨2¯:ª:°|°|°|Ø7C°|°|Ø7C°|°|ð7Eñ ,Fô ,Fñ Gô Gð Gð Gð	Gð 	Gr2   c                 ó¨  — t          |¦  «        rt          j        d¦  «         |                     g d¢g d¢g d¢g¦  «        }t	          |¦  «        j        } ||                     d¦  «        |                     d¦  «         fd¬¦  «        } |||                     g d	¢g¦  «        fd
¬¦  «        }t          t          t          j        ||¦  «         d S )NzCuPy does not raiserž   r«   r®   r3   r›  r   rœ  )ç      @r3   r   r   )r   rW   rX   r<   r
   r¢  r¡  rv   Úassert_raisesÚ
ValueErrorr=   rU  )r@   rB   rC   r¢  r¥  r¦  s         r/   Útest_affine_transform27z+TestAffineTransform.test_affine_transform27€  sÙ   € Ý�2‰;Œ;ð 	0ÝŒLÐ.Ñ/Ô/Ð/ð �zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ ! Ñ&Ô&Ô-ˆØ�6˜BŸFšF 1™IœI¨¯ª°©¬Ð'7Ð8ÀÐBÑBÔBˆØ�6˜8 R§Z¢Z°°°°Ñ%>Ô%>Ð?ÀaÐHÑHÔHˆå•j¥'Ô":¸DÀ(ÑKÔKÐKÐKÐKr2   Tzbyteorder is numpy-specificr}   c           	      óV  — |                      d¦  «        }|                     |¦  «        |                     |¦  «                             |j                             ¦   «         ¦  «        |j        |j                             ¦   «         fD ] }t          ¦   «         5 }|                     t          d¦  «         |                     ddg¦  «        }t          j
        |||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |€|n|}t          ||                     ddgddgg¦  «        ¦  «         Œ¡d S )N)r3   r3   r�  r   r€   )rv   r&  rý   rM   r%  r   r’  r“  r<   r=   rU  r   )r@   rB   rC   ry   r•  Úmatrixr'  r(  s           r/   Ú9test_affine_transform_1d_endianness_with_output_parameterzMTestAffineTransform.test_affine_transform_1d_endianness_with_output_parameterŽ  sx  € ð �wŠw�v‰ŒˆØ—M’M $Ñ'Ô'Ø—M’M $Ñ'Ô'×.Ò.¨t¬z×/FÒ/FÑ/HÔ/HÑIÔIØ”J ¤
× 7Ò 7Ñ 9Ô 9ð;ð 
	Lð 
	LˆCõ #Ñ$Ô$ð N¨Ø—
’
�;ð,ñ-ô -ð -ð Ÿš Q¨ FÑ+Ô+�Ý"Ô3°D¸&ÈÐMÑMÔM�ðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð %Ð,�S�S°(ˆFÝ% f¨b¯jªj¸1¸a¸&À1ÀaÀ&Ð9IÑ.JÔ.JÑKÔKÐKÐKð
	Lð 
	Ls   ÂA
C.Ã.C2	Ã5C2	c                 ó¾  — t          j        dg¦  «        }|j        |j                             ¦   «         t          j        |¦  «        t          j        |¦  «                             |j                             ¦   «         ¦  «        fD ]V}t          j        |t          j        dgg¦  «        |¬¦  «        }|€|n|}t          |t          j        dg¦  «        ¦  «         ŒWd S )Nr   r€   )	rY   r<   rM   r%  r&  rý   r=   rU  r   )r@   rB   rC   ry   r'  r(  s         r/   Ú>test_affine_transform_multi_d_endianness_with_output_parameterzRTestAffineTransform.test_affine_transform_multi_d_endianness_with_output_parameterŸ  sÍ   € õ
 Œz˜1˜#‰ŒˆØ”J ¤
× 7Ò 7Ñ 9Ô 9Ý”M $Ñ'Ô'Ý”M $Ñ'Ô'×.Ò.¨t¬z×/FÒ/FÑ/HÔ/HÑIÔIðKð 	?ð 	?ˆCõ Ô/°µb´jÀ1À#ÀÑ6GÔ6GÐPSÐTÑTÔTˆHØ$Ð,�S�S°(ˆFÝ% f­b¬j¸!¸©o¬oÑ>Ô>Ð>Ð>ð	?ð 	?r2   z+`out` of a different size is numpy-specificc                 óˆ  — |                      d|j        ¬¦  «        }|                     d¦  «        }t          j        ||                     dgg¦  «        |¬¦  «         t          |d d…         |¦  «         t          j        t          ¦  «        5  t          j        |dgg|d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr¬   rL   )é   r   r€   )rÖ   )r�   r9   )
rZ   r[   rv   r=   rU  r<   r   rW   r   ÚRuntimeError©r@   rB   rC   ry   s       r/   Ú"test_affine_transform_output_shapez6TestAffineTransform.test_affine_transform_output_shape¬  s  € ð
 �yŠy˜ "¤*ˆyÑ-Ô-ˆØ�gŠg�e‰nŒnˆåÔ   r§z¢z°A°3°%Ñ'8Ô'8ÀÐEÑEÔEÐEÝ! # b q b¤'¨4Ñ0Ô0Ð0õ Œ]�<Ñ(Ô(ð 	=ð 	=ÝÔ$Ø˜�s�e C°eð=ñ =ô =ð =ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   ÂB7Â7B;Â>B;r*  c                 ó  — |                      dg¦  «        }t          j        ||                      dgg¦  «        d¬¦  «        }|j        t	          j        d¦  «        u sJ ‚t          ||                      dg¦  «        ¦  «         d S rA  )r<   r=   rU  rM   rY   r   r·  s       r/   Ú(test_affine_transform_with_string_outputz<TestAffineTransform.test_affine_transform_with_string_output¼  sw   € à�zŠz˜1˜#‰ŒˆÝÔ& t¨R¯ZªZ¸!¸¸Ñ->Ô->ÀsÐKÑKÔKˆØŒy�BœH S™MœMÐ)Ð)Ð)Ð)Ý! # r§z¢z°1°#¡¤Ñ7Ô7Ð7Ð7Ð7r2   r0   ©)r   r   ©r   r   )r(   r   )r4   éûÿÿÿ)r3   r6   c                 óÊ  — t          j        ddgddgg¦  «        }t          j        d¦  «        }t          j        d¦  «        |d d…d d…f<   t          j        |¦  «        |d d …df<   t          j        ||d¬¦  «        }|                     |¦  «        }|                     |¦  «        }|                     |¦  «        }t          t          j        ||d|¬	¦  «        |¦  «         d S )
Nr   r   r3   r4   ©r3   r4   r¼  rœ  r   r  )rY   r<   Úzerosr¡  Úrollr   r=   rU  )r@   r0   r:   rB   r.   Úaffinerh   s          r/   Ú)test_affine_transform_shift_via_grid_wrapz=TestAffineTransform.test_affine_transform_shift_via_grid_wrapÃ  së   € õ
 ŒJ˜˜A˜Ø˜A˜ð ñ !ô !ˆå”˜&Ñ!Ô!ˆÝœ ™œˆˆr�ˆr�2�A�2ˆv‰Ý”z %Ñ(Ô(ˆˆqˆqˆq�!ˆt‰å”7˜1˜e¨&Ð1Ñ1Ô1ˆà�JŠJ�q‰MŒMˆØ—’˜FÑ#Ô#ˆØ—:’:˜hÑ'Ô'ˆå!ÝÔ$ Q¨°[ÈÐNÑNÔNØñ	
ô 	
ð 	
ð 	
ð 	
r2   c                 óî  — t          j        g d¢g d¢g¦  «        }|d d d…d d d…f                              ¦   «         }|                     |¦  «        }|                     |¦  «        }t          j        ddg¦  «        }t          j        d¦  «        |d d…d d…f<   t          j        |j        ¦  «        |d d …df<   |                     |¦  «        }t          t          j        ||d|¬¦  «        |¦  «         d S )Nr‹  ©r4   r'   r­   r(   r3   r4   r   r  )	rY   r<   ÚcopyrÀ  r¡  r�   r   r=   rU  )r@   r:   rB   r.   rh   rÂ  s         r/   Ú#test_affine_transform_shift_reflectz7TestAffineTransform.test_affine_transform_shift_reflectÙ  s   € õ ŒJ˜	˜	˜	Ø!˜	˜	ð#ñ $ô $ˆà�T�T�r�T˜4˜4˜R˜4�Z”=×%Ò%Ñ'Ô'ˆØ�JŠJ�q‰MŒMˆØ—:’:˜hÑ'Ô'ˆå”˜1˜a˜&Ñ!Ô!ˆÝœ ™œˆˆr�ˆr�2�A�2ˆv‰Ý”z !¤'Ñ*Ô*ˆˆqˆqˆq�!ˆt‰Ø—’˜FÑ#Ô#ˆå!ÝÔ$ Q¨°YÀeÐLÑLÔLØñ	
ô 	
ð 	
ð 	
ð 	
r2   N))rj   rk   rl   rW   rm   rn   ro   rW  rZ  r\  r^  ra  rc  re  rg  rj  rm  ro  rr  rt  rv  rx  r{  r}  r  r‚  r†  r‰  rŒ  rŽ  r–  r™  r©  r®  r   r±  r³  r¸  rº  rÃ  rÇ  r,   r2   r/   rR  rR  i  s�  € € € € € à„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð8ð 8ñ 3Ô2ð8ð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜W y°,Ð&?Ñ@Ô@ð1ð 1ñ AÔ@ñ 3Ô2ð1ð  „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðFð Fñ 3Ô2ðFð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðNð Nñ 3Ô2ðNð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð=ð =ñ 3Ô2ð=ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð7ð 7ñ 3Ô2ð7ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð7ð 7ñ 3Ô2ð7ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð7ð 7ñ 3Ô2ð7ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð-ð -ñ 3Ô2ð-ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
;ð 
;ñ 3Ô2ð
;ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
;ð 
;ñ 3Ô2ð
;ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð>ð >ñ 3Ô2ð>ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðFð Fñ 3Ô2ðFð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð	.ð 	.ñ 3Ô2ð	.ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð	.ð 	.ñ 3Ô2ð	.ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðGð Gñ 3Ô2ðGð<Lð Lð Lð Ð˜dÐ+HÐIÑIÔIðLð Lñ JÔIðLð  Ð˜dÐ+HÐIÑIÔIð
?ð 
?ñ JÔIð
?ð Ð˜dØ<ðñ ô ð=ð =ñô ð=ð Ð˜dÐ+NÐOÑOÔOð8ð 8ñ PÔOð8ð „[×Ò˜WØGÐGÐGñIô Ià„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
ð 
ñ 3Ô2ñIô Ið
ð& „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
ð 
ñ 3Ô2ð
ð 
ð 
r2   rR  c                   ó`  — e Zd Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Z	ej                             d edd¦  «        ¦  «        d„ ¦   «         Z
ej                             d edd¦  «        ¦  «        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         Zej                             d edd¦  «        ¦  «        ej                             dddg¦  «        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             dg d¢¦  «        ej                             d edd¦  «        ¦  «        d„ ¦   «         ¦   «         Zej                             dg d¢¦  «        ej                             d edd¦  «        ¦  «        d„ ¦   «         ¦   «         Zd„ Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Zej                             dg d¢¦  «        ej                             d ed¦  «        ¦  «        d„ ¦   «         ¦   «         Zd S )!Ú	TestShiftr:   r   rJ   c                 óª   — |                      dg¦  «        }t          j        |dg|¬¦  «        }t          ||                      dg¦  «        ¦  «         d S )Nr   rs   r   ©r<   r=   r0   r   rV  s        r/   Útest_shift01zTestShift.test_shift01ï  sM   € à�zŠz˜1˜#‰ŒˆÝŒm˜D 1 #¨UÐ3Ñ3Ô3ˆÝ! # r§z¢z°1°#¡¤Ñ7Ô7Ð7Ð7Ð7r2   c                 ó¬   — |                      dg¦  «        }t          j        |dg|¬¦  «        }t          ||                     g d¢¦  «        ¦  «         d S )Nr'   r   rs   r›   ©rv   r=   r0   r   r<   rV  s        r/   Útest_shift02zTestShift.test_shift02õ  sQ   € à�wŠw˜�s‰|Œ|ˆÝŒm˜D 1 #¨UÐ3Ñ3Ô3ˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 óª   — |                      dg¦  «        }t          j        |d|¬¦  «        }t          ||                     g d¢¦  «        ¦  «         d S )Nr'   r(   rs   rl  rÎ  rV  s        r/   Útest_shift03zTestShift.test_shift03û  sO   € à�wŠw˜�s‰|Œ|ˆÝŒm˜D "¨EÐ2Ñ2Ô2ˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   c                 ó¬   — |                      g d¢¦  «        }t          j        |d|¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )Nrž   r   rs   r    rË  rV  s        r/   Útest_shift04zTestShift.test_shift04  sS   € à�zŠz˜,˜,˜,Ñ'Ô'ˆÝŒm˜D !¨5Ð1Ñ1Ô1ˆÝ! # r§z¢z°,°,°,Ñ'?Ô'?Ñ@Ô@Ð@Ð@Ð@r2   rM   r[   r¢   c                 ób  — t          ||¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }|d|z  z  }t          j        |ddg|¬¦  «        }t          ||¦  «         d S )	Nr„   rL   r›   r¤   r¥   r   r   rs   )ru   r<   r
   r¨   rM   r=   r0   r   r`  s           r/   Útest_shift05zTestShift.test_shift05  sò   € õ ˜˜EÑ"Ô"ˆØ�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à05ð ñ 7ô 7ˆð —:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à49ð ñ ;ô ;ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	&Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÝŒm˜D 1 a &°Ð6Ñ6Ô6ˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   r8   r   r   c                 ó¬  — t          j        g d¢g d¢g d¢g|¬¦  «        }t          j        g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }|d|z  z  }d}||d d …df<   |                     |¦  «        }|                     |¦  «        }t          j        |ddg|||¬	¦  «        }	t          |	|¦  «         d S )
Nr„   rL   r›   r¤   r¥   r«  r   r   )r:   r8   r7   )rY   r<   r
   r¨   rM   r=   r0   r   )
r@   r:   r8   rM   rB   rC   rh   r¨   r7   ry   s
             r/   Útest_shift_with_nonzero_cvalz&TestShift.test_shift_with_nonzero_cval  s  € õ Œz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à05ð7ñ 7ô 7ˆõ ”:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à49ð;ñ ;ô ;ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	&Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHØˆØˆ����A�‰à�zŠz˜$ÑÔˆØ—:’:˜hÑ'Ô'ˆÝŒm˜D 1 a &°¸DÀtÐLÑLÔLˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c           	      óÌ   — |                      g d¢g d¢g d¢g¦  «        }t          j        |ddg|¬¦  «        }t          ||                      g d¢g d¢g d	¢g¦  «        ¦  «         d S )
Nrž   r«   r®   r   r   rs   r    r°   r±   rË  rV  s        r/   Útest_shift06zTestShift.test_shift060  ó™   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆõ Œm˜D 1 a &°Ð6Ñ6Ô6ˆÝ! # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   c           	      óÌ   — |                      g d¢g d¢g d¢g¦  «        }t          j        |ddg|¬¦  «        }t          ||                      g d¢g d¢g d¢g¦  «        ¦  «         d S )Nrž   r«   r®   r   r   rs   r¹   rË  rV  s        r/   Útest_shift07zTestShift.test_shift07:  rÚ  r2   c           	      óÌ   — |                      g d¢g d¢g d¢g¦  «        }t          j        |ddg|¬¦  «        }t          ||                      g d¢g d¢g d¢g¦  «        ¦  «         d S )	Nrž   r«   r®   r   rs   r¹   r    r°   rË  rV  s        r/   Útest_shift08zTestShift.test_shift08D  rÚ  r2   c           	      ó  — |                      g d¢g d¢g d¢g¦  «        }|dk    rt          j        ||¬¦  «        }n|}t          j        |ddg|d¬¦  «        }t	          ||                      g d¢g d	¢g d
¢g¦  «        ¦  «         d S )Nrž   r«   r®   r   rs   FrÁ   r¹   r    r°   )r<   r=   rw   r0   r   ri  s         r/   Útest_shift09zTestShift.test_shift09N  sÀ   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)ñ *ô *ˆð �AŠIˆIÝÔ,¨T¸Ð?Ñ?Ô?ˆHˆHàˆHÝŒm˜H q¨! f°EÀUÐKÑKÔKˆÝ! # r§z¢z°<°<°<Ø3?°<°<Ø3?°<°<ð3Añ (Bô (Bñ 	Cô 	Cð 	Cð 	Cð 	Cr2   r0   r»  c                 ó  — t          j        ddgddgg¦  «        }t          j        ||d¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          t	          j        ||d|¬¦  «        |¦  «         d S )	Nr   r   r3   r4   r¼  rœ  r   r  )rY   r<   rÁ  r   r=   r0   )r@   r0   r:   rB   r.   rh   s         r/   Útest_shift_grid_wrapzTestShift.test_shift_grid_wrap\  s’   € õ
 ŒJ˜˜A˜Ø˜A˜ð ñ !ô !ˆå”7˜1˜e¨%Ð0Ñ0Ô0ˆà�JŠJ�q‰MŒMˆØ—:’:˜hÑ'Ô'ˆå!ÝŒM˜!˜U¨¸EÐBÑBÔBØñ	
ô 	
ð 	
ð 	
ð 	
r2   c           	      óÐ   — |                      |                     d¦  «        d¦  «        }t          t          j        ||d|¬¦  «        t          j        ||d|¬¦  «        ¦  «         d S )Né   )r­   r'   r   r  r   )r  rZ   r   r=   r0   )r@   r0   r:   rB   r.   s        r/   Útest_shift_grid_constant1z#TestShift.test_shift_grid_constant1m  si   € ð
 �JŠJ�r—y’y ‘}”} fÑ-Ô-ˆÝ!ÝŒM˜!˜U¨ÀÐFÑFÔFÝŒM˜!˜U¨¸5ÐAÑAÔAñ	
ô 	
ð 	
ð 	
ð 	
r2   c                 óÌ   — |                      g d¢g d¢g|j        ¬¦  «        }|                      g d¢g d¢g¦  «        }t          t          j        |ddd¬	¦  «        |¦  «         d S )
Nr
  r  rL   r  r  )r+   r+   r   r   r  )r<   r[   r   r=   r0   )r@   rB   r.   r  s       r/   Útest_shift_grid_constant_order1z)TestShift.test_shift_grid_constant_order1x  s�   € Ø�JŠJ˜	˜	˜	Ø!˜	˜	ð#Ø*,¬*ð ñ 6ô 6ˆàŸ*š*Ð&8Ð&8Ð&8Ø&8Ð&8Ð&8ð&:ñ ;ô ;ˆå!ÝŒM˜!˜Z¨oÀQÐGÑGÔGØñ	
ô 	
ð 	
ð 	
ð 	
r2   c                 ó(  — t          j        g d¢g d¢g¦  «        }|d d d…d d d…f                              ¦   «         }|                     |¦  «        }|                     |¦  «        }t          t	          j        ||j        d|¬¦  «        |¦  «         d S )Nr‹  rÅ  r(   r   r  )rY   r<   rÆ  r   r=   r0   r�   )r@   r:   rB   r.   rh   s        r/   Útest_shift_reflectzTestShift.test_shift_reflect‚  s£   € õ ŒJ˜	˜	˜	Ø!˜	˜	ð#ñ $ô $ˆà�T�T�r�T˜4˜4˜R˜4�Z”=×%Ò%Ñ'Ô'ˆà�JŠJ�q‰MŒMˆØ—:’:˜hÑ'Ô'ˆÝ!ÝŒM˜!˜QœW¨9¸EÐBÑBÔBØñ	
ô 	
ð 	
ð 	
ð 	
r2   rÂ   FTc                 ó"  — |                      d¦  «        }t          d||¬¦  «        }t          t          j        ||dz  dz   fi |¤Žd         |d         ¦  «         t          t          j        || dz  dz
  fi |¤Žd         |d         ¦  «         d S )Nrµ  r   )r8   r:   rÂ   r3   r   r   r(   )rZ   Údictr   r=   r0   )r@   r:   rÂ   rB   r.   Úkwargss         r/   Útest_shift_nearest_boundaryz%TestShift.test_shift_nearest_boundary�  s­   € ð
 �IŠI�b‰MŒMˆÝ˜9¨E¸YÐGÑGÔGˆÝ!ÝŒM˜!˜U a™Z¨!™^Ð6Ð6¨vÐ6Ð6°qÔ9¸1¸Q¼4ñ	
ô 	
ð 	
õ 	"ÝŒM˜!˜e˜V q™[¨1™_Ð7Ð7°Ð7Ð7¸Ô;¸Q¸r¼Uñ	
ô 	
ð 	
ð 	
ð 	
r2   r  c                 óø  — t          j        dt          ¬¦  «                             dd¦  «        }d}d}t                               |¦  «        }|                     t          j        |||¬¦  «        ¦  «        }|                     |¦  «        }	t          t          || ¦  «        g|	j
        z  ¦  «        }
t          j        ||||¬¦  «        |
         }t          t          j        |	|||¬¦  «        |d¬	¦  «         d S )
Nr  rL   rÖ   )r  gffffffÀrQ   rR   r  rS   r  )rY   rZ   r  r  r_   r`   r<   ra   r  r  r  r=   r0   r   )r@   r:   r8   rB   Úx_npr0   rd   re   r   r.   r!  r  s               r/   Útest_shift_vs_paddedzTestShift.test_shift_vs_paddedž  s  € õ Œy˜¥EÐ*Ñ*Ô*×2Ò2°2°rÑ:Ô:ˆØˆð ˆÝ(×,Ò,¨TÑ2Ô2ˆØ—:’:�bœf T¨4°hÐ?Ñ?Ô?Ñ@Ô@ˆØ�JŠJ�tÑÔˆå�e D¨4¨%Ñ0Ô0Ð1°A´FÑ:Ñ;Ô;ˆÝ!œ-Ø�e $¨eð5ñ 5ô 5Ø5AôCˆõ 	ÝŒM˜!˜U¨°UÐ;Ñ;Ô;ØØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r2   N)rj   rk   rl   rW   rm   rn   ro   rÌ  rÏ  rÑ  rÓ  rÕ  r×  rÙ  rÜ  rÞ  rà  râ  rå  rç  ré  rí  rð  r,   r2   r/   rÉ  rÉ  í  s’  € € € € € à„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð8ð 8ñ 3Ô2ð8ð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðAð Añ 3Ô2ðAð
 „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜W y°,Ð&?Ñ@Ô@ð1ð 1ñ AÔ@ñ 3Ô2ð1ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜V j°/Ð%BÑCÔCØ„[×Ò˜W y°,Ð&?Ñ@Ô@ð1ð 1ñ AÔ@ñ DÔCñ 3Ô2ð1ð* „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ðCð Cñ 3Ô2ðCð „[×Ò˜WØGÐGÐGñIô Ià„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
ð 
ñ 3Ô2ñIô Ið
ð „[×Ò˜WØGÐGÐGñIô Ià„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
ð 
ñ 3Ô2ñIô Ið
ð
ð 
ð 
ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð
ð 
ñ 3Ô2ð
ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜[¨5°$¨-Ñ8Ô8ð

ð 

ñ 9Ô8ñ 3Ô2ð

ð „[×Ò˜Vð &;ð &;ð &;ñ <ô <à„[×Ò˜W e e¨A¡h¤hÑ/Ô/ð
ð 
ñ 0Ô/ñ<ô <ð
ð 
ð 
r2   rÉ  c                   ó6  — e Zd Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zd„ Zd„ Z	ej                             d edd¦  «        ¦  «        ej                             ddd	g¦  «        d
„ ¦   «         ¦   «         Z
d„ Zd„ Zd„ Zej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zej                             dddg¦  «        ej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         Zej                             dddg¦  «        ej        j        d„ ¦   «         ¦   «         Z edd¬¦  «        d„ ¦   «         Zd„ Zd S )!ÚTestZoomr:   r   rJ   c                 óN  — dddgfD �]}|                      |                     d|j        ¬¦  «        d¦  «        }t          j        |||¬¦  «        }|j        dk    sJ ‚|                     |dd d …f         dk    ¦  «        sJ ‚|                     |dd d …f         d	t          z
  k    ¦  «        sJ ‚|                     |dd d …f         d
t          z   k    ¦  «        sJ ‚|                     |dt          z
  k    ¦  «        sJ ‚|                     |dt          z   k    ¦  «        sJ ‚�Œd S )Nr3   é   rL   )r­   r­   rs   )rÔ   rÔ   r(   r   rä  r­   r  )r  rZ   r[   r=   Úzoomr�   ÚallÚeps)r@   r:   rB   ÚzÚarrs        r/   Ú
test_zoom1zTestZoom.test_zoom1¸  s8  € à�a˜�V�ð 	-ñ 	-ˆAØ—*’*˜RŸYšY r°´˜YÑ<Ô<¸fÑEÔEˆCÝ”,˜s A¨UÐ3Ñ3Ô3ˆCØ”9 Ò(Ð(Ð(Ð(Ø—6’6˜#˜b ! ! !˜eœ*¨š/Ñ*Ô*Ð*Ð*Ð*Ø—6’6˜#˜b ! ! !˜eœ*¨­c©Ò2Ñ3Ô3Ð3Ð3Ð3Ø—6’6˜#˜a   ˜dœ)¨­C©Ò0Ñ1Ô1Ð1Ð1Ð1Ø—6’6˜# !¥c¡'Ò*Ñ+Ô+Ð+Ð+Ð+Ø—6’6˜# "¥s¡(Ò+Ñ,Ô,Ð,Ð,Ð,Ñ,ð	-ð 	-r2   c                 óÈ   — |                      |                     d¦  «        d¦  «        }t          j        t          j        |d¦  «        d¦  «        }t	          ||¦  «         d S )NrÖ   r÷   r3   r+   )r  rZ   r=   rõ  r   )r@   rB   rù  ry   s       r/   Ú
test_zoom2zTestZoom.test_zoom2Ä  sR   € Ø�jŠj˜Ÿš 2™œ¨Ñ/Ô/ˆÝŒl�7œ<¨¨QÑ/Ô/°Ñ5Ô5ˆÝ˜˜SÑ!Ô!Ð!Ð!Ð!r2   c                 ó(  — |                      ddgg¦  «        }t          j        |d¦  «        }t          j        |d¦  «        }t          ||                      ddgddgg¦  «        ¦  «         t          ||                      g d¢g¦  «        ¦  «         d S )Nr   r3   r›  rä   )r   r   r3   r3   )r<   r=   rõ  r   )r@   rB   rù  r7  r8  s        r/   Ú
test_zoom3zTestZoom.test_zoom3É  sŒ   € Ø�jŠj˜1˜a˜&˜Ñ"Ô"ˆÝŒ|˜C Ñ(Ô(ˆÝŒ|˜C Ñ(Ô(ˆå! $¨¯
ª
°Q¸°F¸QÀ¸FÐ3CÑ(DÔ(DÑEÔEÐEÝ! $¨¯
ª
°L°L°L°>Ñ(BÔ(BÑCÔCÐCÐCÐCr2   rM   r[   r¢   c                 óÚ  — t          ||¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }t          ¦   «         5 }|                     t          d¦  «         t          j	        ||                     ddg¦  «        d	d
|¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |d d d…d d d…f         |¦  «         d S )NrG   rÒ   rÝ   rL   r¤   r¥   r�  r+   r   rð   rs   r3   )ru   r<   r
   r¨   rM   r   r’  r“  r=   rU  r   )r@   r:   rM   rB   rC   r¨   r•  ry   s           r/   Útest_zoom_affine01zTestZoom.test_zoom_affine01Ñ  sl  € õ ˜˜EÑ"Ô"ˆØ�zŠz˜<˜<˜<Ø'˜<˜<Ø*˜?˜?ð,à38ð ñ :ô :ˆõ " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	Ø�B˜‘IÑˆDÝÑ Ô ð 	@ CØ�JŠJ•{ð%ñ&ô &ð &õ Ô*¨4°·²¸SÀ#¸JÑ1GÔ1GÈØ+1¸ð@ñ @ô @ˆCð		@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ 	" # c c¨ c¨3¨3¨Q¨3 h¤-°Ñ6Ô6Ð6Ð6Ð6s   Á,A
CÃCÃ	Cc                 óh   — d}t          j        |                     ||f¦  «        d|z  d¬¦  «         d S )Nr¬   ç      ð?r   rR   )r=   rõ  rÀ  )r@   rB   Údims      r/   Útest_zoom_infinityzTestZoom.test_zoom_infinityã  s8   € àˆÝŒ�R—X’X˜s C˜jÑ)Ô)¨2°©8¸)ÐDÑDÔDÐDÐDÐDr2   c                 ó¬   — |                      d¦  «        }d}t          j        ||d¬¦  «        }|                      d¦  «        }t          ||¦  «         d S )N)r   r­   r­   )r  r�  r�  r6   )r7   )r   rÔ   rÔ   )rÀ  r=   rõ  r   )r@   rB   rù  rõ  ry   Úrefs         r/   Útest_zoom_zoomfactor_onez!TestZoom.test_zoom_zoomfactor_oneè  sU   € à�hŠh�yÑ!Ô!ˆØˆåŒl˜3 ¨1Ð-Ñ-Ô-ˆØ�hŠh�{Ñ#Ô#ˆÝ! # sÑ+Ô+Ð+Ð+Ð+r2   c                 óx   — |                      d¦  «        }d}t          j        ||¦  «        }|j        dk    sJ ‚d S )N)r4   rÕ   rô  )gUUUUUUõ?gÑE]tÑõ?g�Âõ(\�ò?)r'   rN   é   )rÀ  r=   rõ  r�   )r@   rB   rù  rõ  ry   s        r/   Útest_zoom_output_shape_roundoffz(TestZoom.test_zoom_output_shape_roundoffñ  sB   € Ø�hŠh�{Ñ#Ô#ˆØ.ˆÝŒl˜3 Ñ%Ô%ˆØŒy˜KÒ'Ð'Ð'Ð'Ð'Ð'r2   rõ  )r<  )r4   r­   )r¬   r3   )r¬   r¬   r8   )r   r   r   r   r   r   r   r   c                 ó@  — t          j        ddgddggt           j        ¬¦  «        }t          j        |t          j        |¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }t          t          j        ||d|¬¦  «        |¦  «         d S )Nr   r   r3   r4   rL   rP   )rY   r<   r[   Úkronrv   r   r=   rõ  )r@   rõ  r8   rB   rï  rh   r.   s          r/   Útest_zoom_by_int_order0z TestZoom.test_zoom_by_int_order0÷  s¡   € õ Œz˜A˜q˜6Ø˜q˜6ð#Ý*,¬*ð6ñ 6ô 6ˆå”7˜4¥¤¨¡¤Ñ/Ô/ˆà�JŠJ�tÑÔˆØ—:’:˜hÑ'Ô'ˆå!ÝŒL˜˜D¨°Ð5Ñ5Ô5Øñ	
ô 	
ð 	
ð 	
ð 	
r2   r�   r¿  )r'   r'   )r   r   r   r   r   c                 ón  — t          j        t          j        |¦  «        t          ¬¦  «                             |¦  «        }|                     |¦  «        }t          t          j        ||d|d¬¦  «        |                     t          j	        |t          j
        |¦  «        ¦  «        ¦  «        ¦  «         d S )NrL   r   T)r:   r8   Ú	grid_mode)rY   rZ   Úprodr  r  r<   r   r=   rõ  r  rv   )r@   r�   rõ  r8   rB   rï  r.   s          r/   Útest_zoom_grid_by_int_order0z%TestZoom.test_zoom_grid_by_int_order0  s–   € õ Œy�œ ™œ­uÐ5Ñ5Ô5×=Ò=¸eÑDÔDˆà�JŠJ�tÑÔˆÝ!ÝŒL˜˜D¨°ÀÐEÑEÔEØ�JŠJ•r”w˜t¥R¤W¨T¡]¤]Ñ3Ô3Ñ4Ô4ñ	
ô 	
ð 	
ð 	
ð 	
r2   r   r   c                 ó   — |                      |                     d|j        ¬¦  «        d¦  «        }t          j        t
          d¬¦  «        5  t          j        |d|d¬¦  «        f d d d ¦  «         d S # 1 swxY w Y   d S )	NrÚ   rL   )r4   r4   zIt is recommended to use mode)Úmatchr3   T)r8   r  )r  rZ   r[   rW   Úwarnsr“  r=   rõ  )r@   r8   rB   r.   s       r/   Útest_zoom_grid_mode_warningsz%TestZoom.test_zoom_grid_mode_warnings  sÈ   € ð �JŠJ�r—y’y ¨"¬*�yÑ5Ô5°vÑ>Ô>ˆÝŒ\�+Ø ?ðAñ Aô Að 	;ð 	;åŒL˜˜A D°DÐ9Ñ9Ô9Ð:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   ÁA3Á3A7Á:A7Tz!inplace output= is numpy-specificr}   c                 ó¬   — |                      |                     d¦  «        d¦  «        }t          j        |d|                     d¦  «        ¬¦  «         dS )zTicket #643rÖ   r÷   r3   rð   r€   N)r  rZ   r=   rõ  rÀ  )r@   rB   r.   s      r/   Útest_zoom_output_shapezTestZoom.test_zoom_output_shape%  sJ   € ð �JŠJ�r—y’y ‘}”} fÑ-Ô-ˆÝŒ�Q˜ "§(¢(¨6Ñ"2Ô"2Ð3Ñ3Ô3Ð3Ð3Ð3r2   c                 óÌ   — |                      d¦  «        }d}t          j        |t          j        |¦  «        ¦  «        }t          j        ||¦  «        }t          ||¦  «         d S )Ng      $@r3   )rZ   r=   rõ  rY   Úarrayr   )r@   rB   r  ÚfactorÚactualrh   s         r/   Útest_zoom_0d_arrayzTestZoom.test_zoom_0d_array+  sX   € à�IŠI�c‰NŒNˆØˆÝ”˜a¥¤¨&Ñ!1Ô!1Ñ2Ô2ˆÝ”<  6Ñ*Ô*ˆÝ˜ Ñ)Ô)Ð)Ð)Ð)r2   N)rj   rk   rl   rW   rm   rn   ro   rú  rü  rþ  r   r  r  r
  r  r  Úthread_unsafer  r   r  r  r,   r2   r/   rò  rò  ¶  sk  € € € € € à„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð	-ð 	-ñ 3Ô2ð	-ð"ð "ð "ð
Dð Dð Dð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜W y°,Ð&?Ñ@Ô@ð7ð 7ñ AÔ@ñ 3Ô2ð7ð Eð Eð Eð
,ð ,ð ,ð(ð (ð (ð „[×Ò˜VÐ%EÐ%EÐ%EÑFÔFØ„[×Ò˜Vð &7ð &7ð &7ñ 8ô 8ð
ð 
ñ8ô 8ñ GÔFð
ð" „[×Ò˜W v¨vÐ&6Ñ7Ô7Ø„[×Ò˜VÐ%EÐ%EÐ%EÑFÔFØ„[×Ò˜Vð &Dð &Dð &Dñ Eô Eð

ð 

ñEô Eñ GÔFñ 8Ô7ð

ð „[×Ò˜V j°&Ð%9Ñ:Ô:Ø„[Ôð;ð ;ñ Ôñ ;Ô:ð;ð Ð˜dÐ+NÐOÑOÔOð4ð 4ñ PÔOð4ð
*ð *ð *ð *ð *r2   rò  c                   óF  — e Zd Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        ej                             dddg¦  «        d	„ ¦   «         ¦   «         Z	ej                             d edd¦  «        ¦  «        d
„ ¦   «         Z
ej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zej                             d edd¦  «        ¦  «        d„ ¦   «         Zd„ Zd„ Zd„ ZdS )Ú
TestRotater:   r   rJ   c                 óž   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          j        |d|¬¦  «        }t	          ||¦  «         d S )Nr¹   ©r   r   r   r   rL   r   rs   ©r<   r[   r=   Úrotater   rV  s        r/   Útest_rotate01zTestRotate.test_rotate016  sf   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à02´
ð ñ <ô <ˆõ Œn˜T 1¨EÐ2Ñ2Ô2ˆÝ! # tÑ,Ô,Ð,Ð,Ð,r2   c                 óî   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }|                      g d¢g d¢g d¢g d¢g|j        ¬¦  «        }t          j        |d|¬¦  «        }t	          ||¦  «         d S )Nr¹   )r   r   r   r   rL   ©r   r   r   ©r   r   r   éZ   rs   r"  ©r@   r:   rB   rC   rh   ry   s         r/   Útest_rotate02zTestRotate.test_rotate02>  s§   € à�zŠz˜<˜<˜<Ø'˜<˜<Ø'˜<˜<ð)à02´
ð ñ <ô <ˆð —:’:˜y˜y˜yØ(˜y˜yØ(˜y˜yØ(˜y˜yð*ð 24´ð ñ =ô =ˆõ Œn˜T 2¨UÐ3Ñ3Ô3ˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   rM   r[   r¢   c                 ój  — t          ||¦  «        }|                     g d¢g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g d¢g d¢g d¢g|¬¦  «        }t          |¦  «        j        } ||j        d¦  «        r|d|z  z  }|d|z  z  }t          j        |d|¬	¦  «        }t          ||¦  «         d S )
N©r   r   r   r   r   ©r   r   r   r   r   rL   r&  r'  r¤   r¥   r(  rs   )ru   r<   r
   r¨   rM   r=   r#  r   r`  s           r/   Útest_rotate03zTestRotate.test_rotate03J  sþ   € õ ˜˜EÑ"Ô"ˆØ�zŠz˜?˜?˜?Ø*˜?˜?Ø*˜?˜?ð,à38ð ñ :ô :ˆð —:’:˜y˜y˜yØ(˜y˜yØ(˜y˜yØ(˜y˜yØ(˜y˜yð	*ð 27ð	 ñ 8ô 8ˆõ
 " $Ñ'Ô'Ô/ˆØˆ7�4”:Ð1Ñ2Ô2ð 	&Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÝŒn˜T 2¨UÐ3Ñ3Ô3ˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c                 óê   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }|                      g d¢g d¢g d¢g|j        ¬¦  «        }t          j        |dd|¬¦  «        }t	          ||¦  «         d S )Nr,  r-  rL   ©r   r   r   r   r   r(  F)r  r:   r"  r)  s         r/   Útest_rotate04zTestRotate.test_rotate04]  s¢   € à�zŠz˜?˜?˜?Ø*˜?˜?Ø*˜?˜?ð,à35´:ð ñ ?ô ?ˆð —:’:˜˜˜Ø.˜˜Ø.˜˜ð0à79´zð ñ Cô Cˆõ Œn˜T 2¨u¸EÐBÑBÔBˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c                 ó¾  — t          j        d¦  «        }t          d¦  «        D ]8}t          j        g d¢g d¢g d¢g d¢gt           j        ¬¦  «        |d d …d d …|f<   Œ9|                     |¦  «        }|                     g d¢g d¢g d¢g|j        ¬¦  «        }t          j        |d|¬	¦  «        }t          d¦  «        D ]}t          |d d …d d …|f         |¦  «         Œ d S )
N)r'   r4   r4   r4   r&  r'  rL   r¹   r!  r(  rs   ©rY   rE  ro   r<   r[   r=   r#  r   ©r@   r:   rB   rC   Úirh   ry   s          r/   Útest_rotate05zTestRotate.test_rotate05h  s#  € åŒx˜	Ñ"Ô"ˆÝ�q‘”ð 	Fð 	FˆAÝœJ¨	¨	¨	Ø(1¨	¨	Ø(1¨	¨	Ø(1¨	¨	ð(3õ ;=¼*ðFñ Fô FˆD����A�A�A�q�‰MˆMð �zŠz˜$ÑÔˆØ—:’:˜|˜|˜|Ø+˜|˜|Ø+˜|˜|ð-à46´Jð ñ @ô @ˆõ Œn˜T 2¨UÐ3Ñ3Ô3ˆÝ�q‘”ð 	>ð 	>ˆAÝ% c¨!¨!¨!¨Q¨Q¨Q°¨'¤l°HÑ=Ô=Ð=Ð=ð	>ð 	>r2   c                 ó¾  — t          j        d¦  «        }t          d¦  «        D ]5}t          j        g d¢g d¢g d¢gt           j        ¬¦  «        |d d …d d …|f<   Œ6|                     |¦  «        }|                     g d¢g d¢g d¢g d¢g|j        ¬¦  «        }t          j        |d|¬	¦  «        }t          d¦  «        D ]}t          |d d …d d …|f         |¦  «         Œ d S )
N)r4   r'   r4   r4   r¹   r!  rL   r&  r'  r(  rs   r3  r4  s          r/   Útest_rotate06zTestRotate.test_rotate06x  s!  € åŒx˜	Ñ"Ô"ˆÝ�q‘”ð 	Ið 	IˆAÝœJ¨¨¨Ø(4¨¨Ø(4¨¨ð(6å=?¼ZðIñ Iô IˆD����A�A�A�q�‰MˆMð �zŠz˜$ÑÔˆØ—:’:˜y˜y˜yØ(˜y˜yØ(˜y˜yØ(˜y˜yð*ð 24´ð ñ =ô =ˆõ Œn˜T 2¨UÐ3Ñ3Ô3ˆÝ�q‘”ð 	>ð 	>ˆAÝ% c¨!¨!¨!¨Q¨Q¨Q°¨'¤l°HÑ=Ô=Ð=Ð=ð	>ð 	>r2   c                 ó^  — |                      g d¢g d¢g d¢ggdz  |j        ¬¦  «        }t          |¦  «        j        } ||d¦  «        }|                      g d¢g d¢g d¢g d¢g d¢ggdz  |j        ¬¦  «        } ||d¦  «        }t	          j        |dd	|¬
¦  «        }t          ||¦  «         d S )Nr,  r-  r3   rL   ©r3   r   r   r&  r'  r(  r¼  )Úaxesr:   ©r<   r[   r
   Úpermute_dimsr=   r#  r   ©r@   r:   rB   rC   r=  rh   ry   s          r/   Útest_rotate07zTestRotate.test_rotate07ˆ  s  € à�zŠz˜O˜O˜OØ+˜O˜OØ+˜O˜Oð-ð .à01ñ2à9;¼ð ñ Eô Eˆõ ' tÑ,Ô,Ô9ˆØˆ|˜D )Ñ,Ô,ˆØ—:’: 	 	 	Ø ) 	 	Ø ) 	 	Ø ) 	 	Ø ) 	 	ð	 +ð ,ð /0ñ	0ð 8:´zð	 ñ Cô Cˆð
  �< ¨)Ñ4Ô4ˆÝŒn˜T 2¨F¸%Ð@Ñ@Ô@ˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c                 ó|  — |                      g d¢g d¢g d¢ggdz  |j        ¬¦  «        }t          |¦  «        j        } ||d¦  «        }|                      g d¢g d¢g d¢ggdz  |j        ¬¦  «        }t          |¦  «        j        } ||d¦  «        }t	          j        |ddd	|¬
¦  «        }t          ||¦  «         d S )Nr,  r-  r3   rL   r:  r0  r(  r¼  F)r;  r  r:   r<  r>  s          r/   Útest_rotate08zTestRotate.test_rotate08˜  s  € à�zŠz˜O˜O˜OØ+˜O˜OØ+˜O˜Oð-ð .à01ñ2à9;¼ð ñ Eô Eˆõ ' tÑ,Ô,Ô9ˆØˆ|˜D )Ñ,Ô,ˆØ—:’:   Ø /  Ø /  ð 1ð 2à45ñ6à=?¼Zð ñ Iô Iˆõ ' tÑ,Ô,Ô9ˆØ�< ¨)Ñ4Ô4ˆÝŒn˜T 2¨F¸EÈÐOÑOÔOˆÝ! # xÑ0Ô0Ð0Ð0Ð0r2   c                 óì   — |                      g d¢g d¢g d¢gdz  |j        ¬¦  «        }t          t          ¦  «        5  t	          j        |dd|j        f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr,  r-  r3   rL   r(  r   )r;  )r<   r[   r¬  r­  r=   r#  r  )r@   rB   rC   s      r/   Útest_rotate09zTestRotate.test_rotate09§  sÓ   € Ø�zŠz˜?˜?˜?Ø*˜?˜?Ø*˜?˜?ð,à./ñ0à79´zð ñ Cô Cˆõ �:Ñ&Ô&ð 	:ð 	:ÝŒN˜4 ¨1¨d¬i¨.Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ½A)Á)A-Á0A-c           
      óR  — |                      |                     d|j        ¬¦  «        d¦  «        }|                     g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d	¢g d
¢g d¢gg d¢g d¢g d¢g d¢g d¢gg|j        ¬¦  «        }t	          j        |dd¬¦  «        }t          ||dd¬¦  «         d S )Né-   rL   )r4   r­   r4   )rz  rz  rz  )g|ÀÕS2@g|ÀÕS2@g>àê)!@)g9ÚHD¾°%@g9ÚHD¾°'@g9ÚHD¾°)@)gõc™~Å@gõc™~Å@gz‰±L¿b @)gä[ic6ò*@gä[ic6ò,@gä[ic6ò.@)g      5@g      6@g      7@)gRKÎä†<@gRKÎä†=@gRKÎä†>@)g¡�Ó,PçA@g¡�Ó,PgB@g¡�Ó,PçB@)gã’ÛÝ '?@grÉínÐ@@grÉínÐ“@@)gñýG…µ¹A@gñýG…µ9B@gñýG…µ¹B@rÖ   F)Úangler  g�íµ ÷Æ°>g�íµ ÷ÆÀ>rT   )r  rZ   r[   r<   r=   r#  r   )r@   rB   rC   rh   ry   s        r/   Útest_rotate10zTestRotate.test_rotate10®  s  € Ø�zŠz˜"Ÿ)š) B¨b¬j˜)Ñ9Ô9¸9ÑEÔEˆð —:’:   Ø /  Ø DÐ DÐ DØ GÐ GÐ GØ /  ð	 1ð
 !EÐ DÐ DØ DÐ DÐ DØ 2Ð 2Ð 2Ø DÐ DÐ DØ GÐ GÐ Gð	 Ið
 !0  Ø GÐ GÐ GØ GÐ GÐ GØ /  Ø /  ð	 1ð2ð :<¼ð ñ Eô Eˆõ  Œn˜T¨°UÐ;Ñ;Ô;ˆå˜˜X¨D°tÐ<Ñ<Ô<Ð<Ð<Ð<r2   c                 ó  — t          |¦  «        rt          j        d¦  «         t          j        |                     d¦  «        d¦  «        }t          j        t          j        |d¦  «        d¦  «        }t          ||¦  «         d S )Nz(https://github.com/cupy/cupy/issues/8400r­   )r­   r   é´   iLÿÿÿ)	r   rW   rX   rY   ÚtilerZ   r=   r#  r   )r@   rB   r  r  s       r/   Útest_rotate_exact_180z TestRotate.test_rotate_exact_180Æ  sp   € Ý�2‰;Œ;ð 	EÝŒLÐCÑDÔDÐDåŒG�B—I’I˜a‘L”L &Ñ)Ô)ˆÝŒN�7œ>¨!¨SÑ1Ô1°4Ñ8Ô8ˆÝ˜˜1ÑÔÐÐÐr2   N)rj   rk   rl   rW   rm   rn   ro   r$  r*  r.  r1  r6  r8  r?  rA  rC  rG  rK  r,   r2   r/   r  r  4  s"  € € € € € à„[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð-ð -ñ 3Ô2ð-ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð	1ð 	1ñ 3Ô2ð	1ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2Ø„[×Ò˜W y°,Ð&?Ñ@Ô@ð1ð 1ñ AÔ@ñ 3Ô2ð1ð" „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð1ð 1ñ 3Ô2ð1ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð>ð >ñ 3Ô2ð>ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð>ð >ñ 3Ô2ð>ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð1ð 1ñ 3Ô2ð1ð „[×Ò˜W e e¨A¨q¡k¤kÑ2Ô2ð1ð 1ñ 3Ô2ð1ð:ð :ð :ð=ð =ð =ð0ð ð ð ð r2   r  )'rM  ÚnumpyrY   Únumpy.testingr   Úscipy._lib._array_apir   r   r   r   r   r	   r
   rW   r   r¬  Úscipy.ndimager=   Ú r   Úscipy.conftestr   rm   r   ÚusefixturesÚ
pytestmarkr÷  r_   r    rn   ro   rq   r‰   r  r0  rR  rÉ  rò  r  r,   r2   r/   ú<module>rT     s®  ðØ 
€
€
€
à Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø”;Ô/Ð Ø" F¤K×$;Ò$;Ð<NÑ$OÔ$OØÐ¨¸&À+Ð9NÐPÑPÔPðR€
ð €ð ØØØØØðð Ð ðF;ð F;ð F;ð F;ð F;ñ F;ô F;ð F;ðR „×Ò˜ % %¨¨1¡+¤+Ñ.Ô.Ø„×Ò˜ %Ñ(Ô(ð#1ð #1ð #1ð #1ð #1ñ #1ô #1ñ )Ô(ñ /Ô.ð#1ðL Ð�&Ð!IÐJÑJÔJØ„×Ò˜ % %¨¨1¡+¤+Ñ.Ô.ðK/ð K/ð K/ð K/ð K/ñ K/ô K/ñ /Ô.ñ KÔJðK/ð\ Ð�&Ð!IÐJÑJÔJðJ,ð J,ð J,ð J,ð J,ñ J,ô J,ñ KÔJðJ,ðZtDð tDð tDð tDð tDñ tDô tDð tDðnA
ð A
ð A
ð A
ð A
ñ A
ô A
ð A
ðHF
ð F
ð F
ð F
ð F
ñ F
ô F
ð F
ðR{*ð {*ð {*ð {*ð {*ñ {*ô {*ð {*ð|Xð Xð Xð Xð Xñ Xô Xð Xð Xð Xr2   