Ë
    âQ(h	í  ã                   óÔ  — 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,                  j1                  d	«       ed
ddg¬«      gZdZdddddddœZ G d„ d«      Zej,                  j;                  d edd«      «      ej,                  j;                  de«       G d„ d«      «       «       Z edd¬«      ej,                  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&y)-é    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
                  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
                  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
                  j                  dg d¢«      ej
                  j                  d e	d«      «      d„ «       «       Z
y) Ú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„ }|j                  g d¢«      }t        t        j                  ||d|dd¬«      |j                  |«      «       y )Nc                 ó   — | d   dz   fS )Nr   ç      à?© ©Úxs    úd/var/www/skyplay_api_hub/venv/lib/python3.12/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%   sG   € ò	!ð �z‰zš-Ó(ˆÜÜ×'Ñ'¨¨e¸"À4Ø59Àô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„ }|j                  g d¢«      }t        t        j                  ||d|d¬«      |j                  |«      «       y )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:   sD   € ò	!ð �z‰zš,Ó'ˆÜÜ×'Ñ'¨¨e¸"À4Ø59ô;à�J‰J�~Ó&õ	(r2   r8   )r   r   r   r   r   r   r:   é   c                 óˆ  — t        |«      r|dvs|dkD  rt        j                  d«       t        j                  ddt        j
                  ¬«      }|j                  |«      }|j                  t        j                  ddd	¬
«      «      }t        |«      j                  }t        j                  |||df   ||¬«      }d}	t        j                  |«      }
|j                  t        j                  ||	|
¬«      «      }|j                  |	|z   «      |df   }t        j                  ||||¬«      }|dk(  rdnd}t        ||d|¬«       y)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   s  € ô �2ŒJØÐMÑMØ˜’	ä�L‰LÐHÔIä—)‘)˜B ¬¯©Ô4ˆØ�z‰z˜'Ó"ˆØ�J‰J”r—{‘{ 2 r¨tÔ4Ó5ˆÜ! !Ó$×,Ñ,ˆÜ×#Ñ# D¨!¨G°S¨L©/ÀÈTÔRˆð ˆÜ(×,Ñ,¨TÓ2ˆØ—‘œBŸF™F 7¨D°xÔ@ÓAˆØ—‘˜D 1™HÓ% g¨s lÑ3ˆÜ×*Ñ*¨6°6ÀÈTÔRˆà˜Ò.‰t°EˆÜ˜˜8¨$°TÖ:r2   N)Ú__name__Ú
__module__Ú__qualname__r   rW   ÚmarkÚparametrizerD   rI   Úrangeri   r,   r2   r/   r    r    #   s8  „ á�fÐ%MÔNØ‡[�[×ÑØØ
Ò0Ð	1Ø
Ò5Ð	6Ø
Ò:Ð	;Ø
Ò7Ð	8Ø
Ò6Ð	7Ø
Ò5Ð	6Ø
Ò;Ð	<ð	>ó	ñ(ó	ó Oð(ñ �fÐ%MÔNØ‡[�[×ÑØØ
’\Ð	"Ø
’,Ð	Ø
’|Ð	$Ø
’LÐ	!Ø
’\Ð	"Ø
’mÐ	$Ø
š=Ð	)ð	+ó	ñ(ó	ó Oð(ð ‡[�[×Ñ˜Vò &1ó 2ð ‡[�[×Ñ˜W¡e¨A£hÓ/ñ;ó 0ó2ñ;r2   r    r:   r3   rJ   rM   c                   óD   — e Zd Zd„ Zd„ Z edd¬«      d„ «       Zd„ Zd„ Zy	)
Ú
TestSplinec                 ó´   — t        ||«      }|j                  g |¬«      }t        j                  ||¬«      }||j	                  d|j
                  ¬«      k(  sJ ‚y )NrL   ©r:   r   ©ÚgetattrÚonesr=   Úspline_filterr<   rM   ©r@   rM   r:   rB   rC   Úouts         r/   Útest_spline01zTestSpline.test_spline01p   sQ   € Ü˜˜EÓ"ˆØ�w‰w�r ˆwÓ'ˆÜ×#Ñ# D°Ô6ˆØ�b—j‘j ¨#¯)©)�jÓ4Ò4Ð4Ñ4r2   c                 óª   — t        ||«      }|j                  dg|¬«      }t        j                  ||¬«      }t	        ||j                  dg«      «       y )Nr   rL   rs   )ru   r<   r=   rw   r   rx   s         r/   Útest_spline02zTestSpline.test_spline02v   sH   € Ü˜˜EÓ"ˆØ�z‰z˜1˜# UˆzÓ+ˆÜ×#Ñ# D°Ô6ˆÜ! # r§z¡z°1°#£Õ7r2   Tzoutput=dtype is numpy-specific©Únp_onlyr#   c                 ó¶   — t        ||«      }|j                  g |¬«      }t        j                  |||¬«      }||j	                  d|j
                  ¬«      k(  sJ ‚y )NrL   ©Úoutputr   rt   rx   s         r/   Útest_spline03zTestSpline.test_spline03|   sS   € ä˜˜EÓ"ˆØ�w‰w�r ˆwÓ'ˆÜ×#Ñ# D¨%¸Ô>ˆØ�b—j‘j ¨#¯)©)�jÓ4Ò4Ð4Ñ4r2   c                 óª   — t        ||«      }|j                  dg|¬«      }t        j                  ||«      }t	        ||j                  g d¢«      «       y )Nr'   rL   ©r   r   r   r   )ru   rv   r=   rw   r   r<   rx   s         r/   Útest_spline04zTestSpline.test_spline04ƒ   sG   € Ü˜˜EÓ"ˆØ�w‰w˜�s %ˆwÓ(ˆÜ×#Ñ# D¨%Ó0ˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 óÆ   — t        ||«      }|j                  ddg|¬«      }t        j                  ||¬«      }|j	                  g d¢g d¢g d¢g d¢g«      }t        ||«       y )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ˆØ—:‘:š|Ú+Ú+Ú+ð-ó .ˆô 	" # xÕ0r2   N)	rj   rk   rl   rz   r|   r   r‚   r…   r‡   r,   r2   r/   rq   rq   l   s4   „ ò5ò8ñ ˜dÐ+KÔLñ5ó Mð5òAó1r2   rq   r!   r"   c                   óÌ   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  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y)ÚTestGeometricTransformc                 óÄ   — |j                  dg«      }d„ }t        j                  |||j                  |¬«      }t	        ||j                  dg|j
                  ¬«      «       y )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˜   sR   € Ø�z‰z˜1˜#‹ˆò	ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆä! # r§z¡z°1°#¸S¿Y¹Y zÓ'GÕHr2   c                 óÆ   — |j                  dg«      }d„ }t        j                  |||j                  |¬«      }t	        ||j                  g d¢|j                  ¬«      «       y )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¢   sP   € Ø�w‰w˜�s‹|ˆò	ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆä! # r§z¡z²,ÀcÇiÁi zÓ'PÕQr2   c                 óÆ   — |j                  dg«      }d„ }t        j                  |||j                  |¬«      }t	        ||j                  g d¢|j                  ¬«      «       y )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¬   sP   € Ø�w‰w˜�s‹|ˆò	ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆä! # r§z¡z²,ÀcÇiÁi zÓ'PÕQr2   c                 óÈ   — |j                  g d¢«      }d„ }t        j                  |||j                  |¬«      }t	        ||j                  g d¢|j
                  ¬«      «       y )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¶   sO   € Ø�z‰zš,Ó'ˆò	ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆä! # r§z¡z²,ÀcÇiÁi zÓ'PÕQr2   rM   r[   Ú
complex128c                 ó`  — t        ||«      }|j                  g d¢g d¢g d¢g|¬«      }|j                  g d¢g d¢g d¢g|¬«      }t        |«      j                  } ||j                  d«      r|d|z  z  }|d|z  z  }d„ }t        j                  |||j                  |¬«      }t        ||«       y )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ˆð —:‘:š|Ú+Ú+ð-à49ð ó ;ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHò	$ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆä! # xÕ0r2   c                 óè   — |j                  g d¢g d¢g d¢g«      }d„ }t        j                  |||j                  |¬«      }|j                  g d¢g d¢g d¢g|j                  ¬	«      }t        ||«       y )
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Ö   ót   € Ø�z‰zš<Ú'Ú'ð)ó *ˆò	$ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆà—:‘:š|Ú+Ú+ð-à47·I±Ið ó ?ˆô 	" # xÕ0r2   c                 óè   — |j                  g d¢g d¢g d¢g«      }d„ }t        j                  |||j                  |¬«      }|j                  g d¢g d¢g d¢g|j                  ¬«      }t        ||«       y )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                 óè   — |j                  g d¢g d¢g d¢g«      }d„ }t        j                  |||j                  |¬«      }|j                  g d¢g d¢g d¢g|j                  ¬	«      }t        ||«       y )
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ô   st   € Ø�z‰zš<Ú'Ú'ð)ó *ˆò	(ô ×)Ñ)¨$°¸¿¹Ø05ô7ˆà—:‘:š|Ú+Ú+ð-à47·I±Ið ó ?ˆô 	" # xÕ0r2   c                 ó(  — |j                  g d¢g d¢g d¢g«      }d„ }|dkD  rt        j                  ||¬«      }n|}t        j                  |||j                  |d¬«      }|j                  g d	¢g d
¢g d¢g|j
                  ¬«      }t        ||«       y )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Ü×,Ñ,¨T¸Ô?‰HàˆHÜ×)Ñ)¨(°G¸T¿Z¹ZØ05ÀôHˆà—:‘:š|Ú+Ú+ð-à47·I±Ið ó ?ˆô 	" # xÕ0r2   c                 óÌ   — |j                  dg|j                  ¬«      }d„ }t        j                  ||dg|¬«      }t	        ||j                  g d¢|j                  ¬«      «       y )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  sT   € Ø�w‰w˜�s "§*¡*ˆwÓ-ˆò	 ô ×)Ñ)¨$°¸!¸ÀEÔJˆÜ! # r§z¡z²,ÀcÇiÁi zÓ'PÕQr2   c                 ó¶   — |j                  g d¢«      }d„ }t        j                  ||dg|¬«      }t        ||j                  g d¢|j                  ¬«      «       y )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  sK   € Ø�z‰zÒ2Ó3ˆò	ô ×)Ñ)¨$°¸!¸ÀEÔJˆÜ! # r§z¡z²,ÀcÇiÁi zÓ'PÕQr2   c                 ón   — g d¢}d„ }t        j                  ||dg|¬«      }t        |d d d…   g d¢«       y )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(  s8   € Úˆò	ô ×)Ñ)¨$°¸!¸ÀEÔJˆÜ! #¡c¨ c¡(ªLÕ9r2   c                 ó|   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |ddgd	d
gddgg«       y )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  sO   € ÚÚÚ!ð#ˆò	$ô ×)Ñ)¨$°¸Ø05ô7ˆä! #¨¨A¨°°A°¸¸B¸Ð'@ÕAr2   c                 óp   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |g d¢g«       y )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=  s>   € ÚÚÚð!ˆò	$ô ×)Ñ)¨$°¸Ø05ô7ˆä! #ª ~Õ6r2   c                 óp   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |ddgg«       y )	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  sB   € ÚÚÚð!ˆò	(ô ×)Ñ)¨$°¸Ø05ô7ˆä! #¨¨A¨ xÕ0r2   c                 óz   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |dd d d…f   |«       y )	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  sH   € ÚÚÚð!ˆò	$ô ×)Ñ)¨$°¸Ø05ô7ˆä! # c©3¨Q¨3 h¡-°Õ6r2   c                 óz   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |d d d…df   |«       y )	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  sH   € ÚÚÚð!ˆò	$ô ×)Ñ)¨$°¸Ø05ô7ˆä! #¡c¨ c¨3 h¡-°Õ6r2   c                 ó€   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }t        |d d d…d d d…f   |«       y )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  sL   € ÚÚÚð!ˆò	(ô ×)Ñ)¨$°¸Ø05ô7ˆä! #¡c¨ c©3¨Q¨3 h¡-°Õ6r2   c                 óØ   — |j                  g d¢g d¢g d¢g|j                  ¬«      }d„ }d„ }t        j                  ||d|¬«      }t        j                  ||d	|¬«      }t	        ||«       y )
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  sq   € Ø�z‰zš<Ú'Ú*ð,à35·:±:ð ó ?ˆò	(ò	(ô ×)Ñ)¨$°Ø*0¸ô?ˆä×)Ñ)¨#¨xØ*0¸ô?ˆä! # tÕ,r2   c                 ó¬   — g d¢g d¢g d¢g}d„ }t        j                  ||d|¬«      }|j                  t        j                  «      }t        |ddg«       y )	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Š  sO   € ÚÚÚð!ˆò	!ô ×)Ñ)¨$°¸ÀUÔKˆØ�j‰jœŸ™Ó"ˆÜ! #¨¨1 vÕ.r2   c           	      óv   — g d¢g d¢g d¢g}d„ }t        j                  ||d|dddi¬	«      }t        |d
dg«       y )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–  sK   € ÚÚÚð!ˆò	!ô ×)Ñ)Ø�'˜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òRòRòRð ‡[�[×Ñ˜W y°,Ð&?Ó@ñ1ó Að1ò*1ò1ò1ò1ò&RòRò:ò
Bò
7ò
1ò
7ò
7ò
7ò-ò"
/ó/r2   r‰   c                   óä   — e Zd Zd„ Zej
                  j                  dg d¢«      ej
                  j                  d ed«      «      d„ «       «       Z e	dd¬	«      d
„ «       Z
 e	dd¬	«      d„ «       Zy)ÚTestGeometricTransformExtrac                 óÄ   — |j                  g d¢g d¢g|j                  ¬«      }d„ }|j                  g d¢g d¢g«      }t        t        j                  ||dd¬	«      |«       y )
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§  sj   € ð �J‰Jš	Ú!ð#Ø*,¯*©*ð ó 6ˆò	.ð Ÿ*™*Ò&8Ú&8ð&:ó ;ˆä!Ü×'Ñ'¨¨7¸Ø./ô1àõ	
r2   r8   ©r   r   r   r   r   r:   rJ   c                 óÌ  — d„ }t        j                  dt        ¬«      j                  dd«      }d}t        j                  |«      }t        j                  |||¬«      }|j                  |«      }|j                  |«      }t        t        || «      g|j                  z  «      }	t        j                  ||||¬«      |	   }
t        t        j                  ||||¬«      |
d¬	«       y )
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‰I�c¤Ô'×/Ñ/°°BÓ7ˆØˆÜ(×,Ñ,¨TÓ2ˆÜ—6‘6˜!˜T¨Ô1ˆà�J‰J�q‹MˆØ—:‘:˜hÓ'ˆäœe D¨4¨%Ó0Ð1°A·F±FÑ:Ó;ˆÜ!×5Ñ5Ø�g D°ô7Ø7CñEˆô 	Ü×'Ñ'¨¨7¸Ø.3ô5àØö		
r2   Tzendianness is numpy-specificr}   c                 ó–  — t        j                  dg«      }d„ }|j                  |j                  j                  «       t        j                  |«      t        j                  |«      j                  |j                  j                  «       «      fD ]8  }t        j                  |||j                  |¬«      }|€|n|}t        |dg«       Œ: y )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‰z˜1˜#‹ˆò	ð —J‘J §
¡
× 7Ñ 7Ó 9Ü—M‘M $Ó'Ü—M‘M $Ó'×.Ñ.¨t¯z©z×/FÑ/FÓ/HÓIðKò 	3ˆCô ×2Ñ2°4¸À$Ç*Á*Ø:=ô?ˆHà$Ð,‘S°(ˆFÜ% f¨q¨cÕ2ñ	3r2   ú!string `output` is numpy-specificc                 ó¾   — |j                  dg«      }d„ }t        j                  ||d¬«      }|j                  t	        j                  d«      u sJ ‚t        |dg«       y )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æ  sR   € à�z‰z˜1˜#‹ˆò	ô ×)Ñ)¨$°ÀÔDˆØ�y‰yœBŸH™H S›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¨A£hÓ/ñ
ó 0ó<ð
ñ4 ˜dÐ+IÔJñ3ó Kð3ñ  ˜dÐ+NÔOñ,ó Pñ,r2   r  c                   ó  — e Zd Zej                  j                  d edd«      «      ej                  j                  dej                  ej                  g«      d„ «       «       Z
ej                  j                  d edd«      «      d„ «       Z edd¬	«      d
„ «       Z ed¬«      d„ «       Z edd¬«      d„ «       Zej                  j!                  dej$                  v xs  ej&                  d«      j(                  dk  d¬	«      d„ «       Zy)ÚTestMapCoordinatesr:   r   rJ   rM   c                 óØ  — t        |«      r|dkD  rt        j                  d«       |j                  g d¢g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }t	        |«      j
                  } ||j                  d	«      r|d
|z  z
  }|d
|z  z
  }t        j                  |j                  «      }|dz  }|j                  |«      }t        j                  |||¬«      }t        ||«       y )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Ù   € ô �"Œ:˜% !š)Ü�L‰LÐBÔCà�z‰zš<Ú'Ú'ð)ó *ˆð —:‘:š|Ú+Ú+ð-ó .ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø˜"˜t™)Ñ#ˆDØ " x¡-Ñ/ˆHä�j‰j˜Ÿ™Ó$ˆØˆq‰ˆØ�j‰j˜‹oˆä×%Ñ% d¨C°uÔ=ˆÜ! # xÕ0r2   c                 ó¶  — t        |«      r4|dkD  rt        j                  d«       |dk(  rt        j                  d«       |j                  g d¢g d¢g d¢g«      }t	        j
                  |j                  t        j                  «      }|dz  }|j                  |«      }t        j                  |d|¬«      }t        j                  |||¬«      }t        ||«       y )	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¬   € ä�"Œ:Ø�qŠyÜ�|‰|ÐEÔFØ˜ŠzÜ�|‰|Ð6Ô7à�z‰zš<Ú'Ú'ð)ó *ˆô �j‰j˜Ÿ™¤R§Z¡ZÓ0ˆØˆs‰
ˆØ�j‰j˜‹oˆä�}‰}˜T 3¨eÔ4ˆÜ×&Ñ& t¨S¸Ô>ˆÜ! $¨Õ-r2   r   z`order` is required in jaxr"   c           
      óê  — t        g d¢g d¢g d¢gd|¬«      }t        j                  |j                  «      dz
  }|j	                  |«      }t        j                  ||«      }|j	                  g d¢g d¢g d	¢g«      }t        ||«       t        |t        j                  |d
«      «       t        j                  |d d d…df   j                  «      dz
  }|j	                  |«      }t        j                  |d d d…df   |«      }t        ||j	                  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
  }|j	                  |«      }t        j                  |d d …d d d…f   |«      }t        ||j	                  ddgddgddgg«      «       t        |t        j                  |d d …d d d…f   d
«      «       y )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‰j˜Ÿ™Ó$ qÑ(ˆØ�j‰j˜‹oˆÜ×%Ñ% d¨CÓ0ˆØ—:‘:š|Ú+Ú+ð-ó .ˆô 	" # xÔ0Ü! #¤w§}¡}°T¸6Ó'BÔCä�j‰j˜™c ˜c 3˜h™×-Ñ-Ó.°Ñ2ˆØ�j‰j˜‹oˆÜ×%Ñ% d©3¨Q¨3°¨8¡n°cÓ:ˆÜ! # r§z¡z²<Ú3?ð3Aó (Bô 	Cä! #¤w§}¡}°T¹#¸A¸#¸s¸(±^ÀVÓ'LÔMä�j‰j˜ša¡ 1 ˜f™×+Ñ+Ó,¨qÑ0ˆØ�j‰j˜‹oˆÜ×%Ñ% dª1©c°¨c¨6¡l°CÓ8ˆÜ! # r§z¡z°A°q°6¸A¸q¸6ÀAÀqÀ6Ð2JÓ'KÔLÜ! #¤w§}¡}°Tº!¹S¸q¸S¸&±\À6Ó'JÕ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                  j                  «       t        j                  |«      t        j                  |«      j                  |j                  j                  «       «      fD ],  }t        j                  |||¬«      }|€|n|}t        ||«       Œ. y )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‰z˜A˜q˜6 A q 6Ð*Ó+ˆÜ—:‘:  1˜v¨¨1 vÐ.Ó/ˆÜ�j‰j˜Ÿ™Ó$ˆØˆq‰ˆà�J‰JØ�J‰J×#Ñ#Ó%Ü�M‰M˜(Ó#Ü�M‰M˜(Ó#×*Ñ*¨8¯>©>×+FÑ+FÓ+HÓIð	
ò 	8ˆCô ×.Ñ.¨t°SÀÔEˆHØ$Ð,‘S°(ˆFÜ% f¨hÕ7ñ	8r2   r*  r}   c                 ó:  — |j                  dgg«      }t        j                  |j                  «      }|j                  |«      }t	        j
                  ||d¬«      }|j                  t        j                  d«      u sJ ‚t        ||j                  dgg«      «       y ©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  sx   € à�z‰z˜A˜3˜%Ó ˆÜ�j‰j˜Ÿ™Ó$ˆØ�j‰j˜‹oˆÜ×%Ñ% d¨C¸Ô<ˆØ�y‰yœBŸH™H S›MÑ)Ð)Ð)Ü! # r§z¡z°A°3°%Ó'8Õ9r2   Úwin32r¬   z2do not run on 32 bit or windows (no sparse memory)c                 ój  — 	 d}t        j                  |dz  t         j                  ¬«      j                  ||«      }d||dz
  d …|dz
  d …f<   t	        j
                  |j                  |«      |j                  |dz
  g|dz
  gg«      d¬«       y # 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¡ZÔ0×8Ñ8¸¸AÓ>ˆAà !ˆAˆa�!‰e‰f�a˜!‘e‘fˆnÑÜ×#Ñ#Ø—
‘
˜1“˜rŸz™z¨A°©G¨9°q¸3±w°iÐ*@ÓAÈöøô ò 	DÜ—+‘+Ð;Ó<À!ÐCûð	Dús   ‚BB Â	B2ÂB-Â-B2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¨A¨q£kÓ2Ø‡[�[×Ñ˜W r§z¡z°2·=±=Ð&AÓBñ1ó Có 3ð1ð, ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ.ó 3ð.ñ$ �kÐ*FÔGñLó HðLñ4 ˜dÔ#ñ8ó $ð8ñ& ˜dÐ+NÔOñ:ó Pð:ð ‡[�[×Ñ˜ 3§<¡<Ð/ÒJ°7°2·7±7¸1³:×3FÑ3FÈÑ3Jð 4ð ó 5ñDó5ñDr2   r0  c                   ó
  — e Zd Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Z	ej                  j                  d edd«      «      d„ «       Z
ej                  j                  d edd«      «      ej                  j                  dd	d
g«      d„ «       «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  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                  j                  d+g d,¢«      ej                  j                  d edd«      «      d-„ «       «       Z'ej                  j                  d edd«      «      d.„ «       Z(y/)0ÚTestAffineTransformr:   r   rJ   c                 ó²   — |j                  dg«      }t        j                  ||j                  dgg«      |¬«      }t        ||j                  dg«      «       y )Nr   rs   ©r<   r=   Úaffine_transformr   ©r@   r:   rB   rC   ry   s        r/   Útest_affine_transform01z+TestAffineTransform.test_affine_transform01k  sF   € à�z‰z˜1˜#‹ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀeÔLˆÜ! # r§z¡z°1°#£Õ7r2   c                 ó´   — |j                  dg«      }t        j                  ||j                  dgg«      |¬«      }t	        ||j                  g d¢«      «       y )Nr'   r   rs   r„   ©rv   r=   rU  r<   r   rV  s        r/   Útest_affine_transform02z+TestAffineTransform.test_affine_transform02q  sE   € à�w‰w˜�s‹|ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀeÔLˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 ó¶   — |j                  dg«      }t        j                  ||j                  dgg«      d|¬«      }t	        ||j                  g d¢«      «       y )Nr'   r   r(   rs   r›   rY  rV  s        r/   Útest_affine_transform03z+TestAffineTransform.test_affine_transform03w  sG   € à�w‰w˜�s‹|ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀÈ%ÔPˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 ó¸   — |j                  g d¢«      }t        j                  ||j                  dgg«      d|¬«      }t        ||j                  g d¢«      «       y )Nrž   r   r(   rs   r    rT  rV  s        r/   Útest_affine_transform04z+TestAffineTransform.test_affine_transform04}  sF   € à�z‰zš,Ó'ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀÈ%ÔPˆÜ! # r§z¡z²,Ó'?Õ@r2   rM   r[   r¢   c                 ót  — t        ||«      }|j                  g d¢g d¢g d¢g|¬«      }|j                  g d¢g d¢g d¢g|¬«      }t        |«      j                  } ||j                  d«      r|d|z  z  }|d|z  z  }t        j                  ||j                  ddgddgg«      ddg|¬	«      }t        ||«       y )
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ˆð —:‘:š|Ú+Ú+ð-à49ð ó ;ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÜ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IØ()¨2 w°eô=ˆä! # xÕ0r2   c           	      óà   — |j                  g d¢g d¢g d¢g«      }t        j                  ||j                  ddgddgg«      ddg|¬«      }t        ||j                  g d¢g d	¢g d
¢g«      «       y )Nrž   r«   r®   r   r   r(   rs   r    r°   r±   rT  rV  s        r/   Útest_affine_transform06z+TestAffineTransform.test_affine_transform06•  sw   € à�z‰zš<Ú'Ú'ð)ó *ˆô ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IØ()¨2 w°eô=ˆä! # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   c           	      óà   — |j                  g d¢g d¢g d¢g«      }t        j                  ||j                  ddgddgg«      ddg|¬«      }t        ||j                  g d¢g d¢g d¢g«      «       y )	Nrž   r«   r®   r   r   r(   rs   r¹   rT  rV  s        r/   Útest_affine_transform07z+TestAffineTransform.test_affine_transform07   sw   € à�z‰zš<Ú'Ú'ð)ó *ˆô ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IØ(*¨A w°eô=ˆä! # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   c           	      óà   — |j                  g d¢g d¢g d¢g«      }t        j                  ||j                  ddgddgg«      ddg|¬«      }t        ||j                  g d¢g d	¢g d
¢g«      «       y )Nrž   r«   r®   r   r   r(   rs   r¹   r    r°   rT  rV  s        r/   Útest_affine_transform08z+TestAffineTransform.test_affine_transform08«  sw   € à�z‰zš<Ú'Ú'ð)ó *ˆô ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IØ(*¨B x°uô>ˆä! # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   c           	      ó   — |j                  g d¢g d¢g d¢g«      }|dkD  rt        j                  ||¬«      }n|}t        j                  ||j                  ddgddgg«      ddg|d¬	«      }t	        ||j                  g d
¢g d¢g d¢g«      «       y )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Ü×,Ñ,¨T¸Ô?‰HàˆHÜ×&Ñ& x°·±¸aÀ¸VÀaÈÀVÐ<LÓ1MØ(*¨B x°uØ16ô8ˆô 	" # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   c                 óÎ   — |j                  dg|j                  ¬«      }t        j                  ||j	                  dgg«      d|¬«      }t        ||j	                  g d¢«      «       y )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Æ  sS   € à�w‰w˜�s "§*¡*ˆwÓ-ˆÜ×&Ñ& t¨R¯Z©Z¸#¸¸Ó-@ÈtØ-2ô4ˆä! # r§z¡z²,Ó'?Õ@r2   c                 óº   — |j                  g d¢«      }t        j                  ||j                  dgg«      dd|¬«      }t        ||j                  g d¢«      «       y )NrÊ   r3   r   rH   rs   rG   rT  rV  s        r/   Útest_affine_transform11z+TestAffineTransform.test_affine_transform11Í  sI   € à�z‰zÒ2Ó3ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀÀ4ÈuÔUˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 óÆ   — |j                  g d¢«      }t        j                  ||j                  dgg«      dd|¬«      }t        |d d d…   |j                  g d¢«      «       y )NrG   r+   r   ©r¬   rs   r3   rT  rV  s        r/   Útest_affine_transform12z+TestAffineTransform.test_affine_transform12Ó  sQ   € à�z‰zš,Ó'ˆÜ×&Ñ& t¨R¯Z©Z¸#¸¸Ó-@À!ÀTÐQVÔWˆÜ! #¡c¨ c¡(¨B¯J©J²|Ó,DÕEr2   c           	      óâ   — g d¢g d¢g d¢g}|j                  |«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        ||j                  dd	gd
dgddgg«      «       y )NrG   rÒ   rÓ   r   r   r3   rÙ   rs   r4   r­   r6   rÚ   rÕ   rT  rV  s        r/   Útest_affine_transform13z+TestAffineTransform.test_affine_transform13Ù  sy   € âÚÚ!ð#ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IÈ1ÈfØ-2ô4ˆä! # r§z¡z°A°q°6¸A¸q¸6ÀAÀrÀ7Ð2KÓ'LÕMr2   c                 óÖ   — g d¢g d¢g d¢g}|j                  |«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        ||j                  g d¢g«      «       y )	NrG   rÒ   rÝ   r3   r   r   rà   rs   rT  rV  s        r/   Útest_affine_transform14z+TestAffineTransform.test_affine_transform14ã  sh   € âÚÚð!ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IÈ1ÈfØ-2ô4ˆä! # r§z¡z²<°.Ó'AÕBr2   c                 óÖ   — g d¢g d¢g d¢g}|j                  |«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        ||j                  dd	gg«      «       y )
NrG   rÒ   rÝ   r3   r   rä   rs   r   r4   rT  rV  s        r/   Útest_affine_transform15z+TestAffineTransform.test_affine_transform15í  sl   € âÚÚð!ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸!¸Q¸À!ÀQÀÐ8HÓ-IÈ1ÈfØ-2ô4ˆä! # r§z¡z°A°q°6°(Ó';Õ<r2   c                 óÂ   — g d¢g d¢g d¢g}|j                  |«      }t        j                  ||j                  ddgddgg«      dd|¬	«      }t        |d
d d d…f   |«       y )NrG   rÒ   rÝ   r   ç        r   r+   rè   rs   .r3   rT  rV  s        r/   Útest_affine_transform16z+TestAffineTransform.test_affine_transform16÷  si   € âÚÚð!ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸!¸S¸ÀAÀsÀ8Ð8LÓ-MÈqØ'-°Uô<ˆä! # c©3¨Q¨3 h¡-°Õ6r2   c                 óÂ   — g d¢g d¢g d¢g}|j                  |«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        |d d d	…d
f   |«       y )NrG   rÒ   rÝ   r+   r   r   rì   rs   r3   .rT  rV  s        r/   Útest_affine_transform17z+TestAffineTransform.test_affine_transform17  si   € âÚÚð!ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸#¸q¸ÀAÀqÀ6Ð8JÓ-KÈQØ'-°Uô<ˆä! #¡c¨ c¨3 h¡-°Õ6r2   c                 óÄ   — |j                  g d¢g d¢g d¢g«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        |d d d…d d d…f   |«       y )	NrG   rÒ   rÝ   r+   r   rð   rs   r3   rT  rV  s        r/   Útest_affine_transform18z+TestAffineTransform.test_affine_transform18  sj   € à�z‰zš<Ú'Ú*ð,ó -ˆô ×&Ñ& t¨R¯Z©Z¸#¸q¸ÀAÀsÀ8Ð8LÓ-MÈqØ'-°Uô<ˆä! #¡c¨ c©3¨Q¨3 h¡-°Õ6r2   c                 ó$  — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        j                  ||j                  ddgddgg«      dd|¬«      }t        j                  ||j                  d	dgdd	gg«      dd
|¬«      }t	        ||«       y )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ÈqØ'-°Uô<ˆä×&Ñ& s¨B¯J©J¸¸a¸À1ÀcÀ(Ð7KÓ,LÈaØ'-°Uô<ˆä! # tÕ,r2   c                 ó  — t        |«      rt        j                  d«       g d¢g d¢g d¢g}|j                  |«      }t	        j
                  ||j                  dgdgg«      dd|¬«      }t        ||j                  d	d
g«      «       y )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  óy   € ä�2Œ;Ü�L‰LÐCÔDâÚÚð!ˆð �z‰z˜$ÓˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸q¸c¸
Ó-CÀQÈØ-2ô4ˆä! # r§z¡z°1°a°&Ó'9Õ:r2   c                 ó  — t        |«      rt        j                  d«       g d¢g d¢g d¢g}|j                  |«      }t	        j
                  ||j                  dgdgg«      dd|¬«      }t        ||j                  d	d
g«      «       y )Nr„  rG   rÒ   rÝ   r3   r   rü   rs   r   rÚ   r…  rV  s        r/   Útest_affine_transform21z+TestAffineTransform.test_affine_transform21,  r‡  r2   c                 ó¼   — |j                  g d¢«      }t        j                  ||j                  dgg«      dgd|¬«      }t        ||j                  g d¢«      «       y )Nrž   r3   r(   )r4   rs   ©r   r   r3   rT  rV  s        r/   Útest_affine_transform22z+TestAffineTransform.test_affine_transform229  sO   € ð �z‰zš,Ó'ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀÀÀdØ-2ô4ˆä! # r§z¡z²)Ó'<Õ=r2   c                 óÈ   — |j                  g d¢«      }t        j                  ||j                  dgg«      dgd|¬«      }t        |d d d…   |j                  g d¢«      «       y )Nrž   r+   r(   rq  rs   r3   r    rT  rV  s        r/   Útest_affine_transform23z+TestAffineTransform.test_affine_transform23A  sW   € ð �z‰zš,Ó'ˆÜ×&Ñ& t¨R¯Z©Z¸#¸¸Ó-@À2À$ÈØ-2ô4ˆä! #¡c¨ c¡(¨B¯J©J²|Ó,DÕEr2   c                 óR  — |j                  g d¢«      }t        «       5 }|j                  t        d«       t	        j
                  ||j                  dg«      d|¬«      }d d d «       t	        j
                  ||j                  dgg«      d|¬«      }t        |«       y # 1 sw Y   Œ@xY w)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ˆD÷		Tô
 ×'Ñ'¨¨b¯j©j¸1¸#¸Ó.?ÀÈ5ÔQˆÜ! $¨Õ-÷	Tð 	Túó   žA BÂB&c                 óR  — |j                  g d¢«      }t        «       5 }|j                  t        d«       t	        j
                  ||j                  dg«      d|¬«      }d d d «       t	        j
                  ||j                  dgg«      d|¬«      }t        |«       y # 1 sw Y   Œ@xY w)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ÀRÈuÔUˆD÷		Vô
 ×'Ñ'¨¨b¯j©j¸3¸%¸Ó.AÀ2ÈUÔSˆÜ! $¨Õ-÷	Vð 	Vúr—  c           
      óŠ  — |j                  g d¢g d¢g d¢g«      }|dkD  rt        j                  ||¬«      }n|}|j                  d«      }|j	                  d«       }t        ||«      j                  } |||fd¬«      } |||j                  g d	¢g«      fd
¬«      }	|j                  |d«      D �
cg c]  }
t        |
«      ‘Œ }}
t        j                  ||||d¬«      }t        j                  |||d¬«      }t        j                  ||	|d¬«      }|||fD ]&  }t        ||j                  g d¢g d¢g d¢g«      «       Œ( y c c}
w )Nrž   r«   r®   r   rs   r3   ©r3   r   ©Úaxis)rz  r   r   r   )r(   FrÁ   r¹   r    r°   )r<   r=   rw   Úeyerv   r
   Úconcatr  r  rU  r   )r@   r:   rB   rC   rÃ   Útform_originalÚoffset_originalrŸ  Útform_h1Útform_h2r.   Úoffsr7  r8  Úout3ry   s                   r/   Útest_affine_transform26z+TestAffineTransform.test_affine_transform26a  sQ  € ð �z‰zš<Ú'Ú'ð)ó *ˆð �AŠIÜ×,Ñ,¨T¸Ô?‰HàˆHØŸ™ ›ˆØŸ7™7 6›?Ð*ˆä  °ÓA×HÑHˆÙ˜>¨?Ð;À!ÔDˆÙ˜H b§j¡j²+°Ó&?Ð@ÀqÔIˆà"$§*¡*¨_¸eÓ"DÖE˜Q”�a•ÐEˆÐEä×'Ñ'¨°.Ø(,Ø.3¸uôFˆô ×'Ñ'¨°(À%Ø27ô9ˆä×'Ñ'¨°(À%Ø27ô9ˆà˜$ Ð%ò 	GˆCÜ% c¨2¯:©:²|Ú7CÚ7Cð7Eó ,Fõ Gñ	Gùò Fs   Â1E c                 ót  — t        |«      rt        j                  d«       |j                  g d¢g d¢g d¢g«      }t	        |«      j
                  } ||j                  d«      |j                  d«       fd¬«      } |||j                  g d	¢g«      fd
¬«      }t        t        t        j                  ||«       y )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Œ;Ü�L‰LÐ.Ô/ð �z‰zš<Ú'Ú'ð)ó *ˆô ! Ó&×-Ñ-ˆÙ˜BŸF™F 1›I¨¯©°«Ð'7Ð8ÀÔBˆÙ˜8 R§Z¡Z²°Ó%>Ð?ÀaÔHˆä”j¤'×":Ñ":¸DÀ(ÕKr2   Tzbyteorder is numpy-specificr}   c           	      ó  — |j                  d«      }|j                  |«      |j                  |«      j                  |j                  j	                  «       «      |j                  |j                  j	                  «       fD ]}  }t        «       5 }|j                  t        d«       |j                  ddg«      }t        j                  |||¬«      }d d d «       €|n|}t        ||j                  ddgddgg«      «       Œ y # 1 sw Y   Œ3xY w)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Ž  sö   € ð �w‰w�v‹ˆØ—M‘M $Ó'Ø—M‘M $Ó'×.Ñ.¨t¯z©z×/FÑ/FÓ/HÓIØ—J‘J §
¡
× 7Ñ 7Ó 9ð;ò 
	LˆCô #Ó$ð N¨Ø—
‘
œ;ð,ô-ð Ÿ™ Q¨ FÓ+�Ü"×3Ñ3°D¸&ÈÔM�÷Nð %Ð,‘S°(ˆFÜ% f¨b¯j©j¸1¸a¸&À1ÀaÀ&Ð9IÓ.JÕKñ
	L÷Nð Nús   ÂAD Ä D		c                 óÊ  — t        j                  dg«      }|j                  |j                  j                  «       t        j                  |«      t        j                  |«      j                  |j                  j                  «       «      fD ]U  }t        j                  |t        j                  dgg«      |¬«      }|€|n|}t        |t        j                  dg«      «       ŒW y )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‰z˜1˜#‹ˆØ—J‘J §
¡
× 7Ñ 7Ó 9Ü—M‘M $Ó'Ü—M‘M $Ó'×.Ñ.¨t¯z©z×/FÑ/FÓ/HÓIðKò 	?ˆCô ×/Ñ/°´b·j±jÀ1À#ÀÓ6GÐPSÔTˆHØ$Ð,‘S°(ˆFÜ% f¬b¯j©j¸!¸«oÕ>ñ	?r2   z+`out` of a different size is numpy-specificc                 ób  — |j                  d|j                  ¬«      }|j                  d«      }t        j                  ||j                  dgg«      |¬«       t        |d d |«       t        j                  t        «      5  t        j                  |dgg|d¬«       d d d «       y # 1 sw Y   y xY w)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ˆä× Ñ   r§z¡z°A°3°%Ó'8ÀÕEÜ! # b q '¨4Ô0ô �]‰]œ<Ó(ñ 	=Ü×$Ñ$Ø˜�s�e C°eõ=÷	=÷ 	=ñ 	=ús   Â B%Â%B.r*  c                 óø   — |j                  dg«      }t        j                  ||j                  dgg«      d¬«      }|j                  t	        j                  d«      u sJ ‚t        ||j                  dg«      «       y rA  )r<   r=   rU  rM   rY   r   r´  s       r/   Ú(test_affine_transform_with_string_outputz<TestAffineTransform.test_affine_transform_with_string_output¼  s`   € à�z‰z˜1˜#‹ˆÜ×&Ñ& t¨R¯Z©Z¸!¸¸Ó->ÀsÔKˆØ�y‰yœBŸH™H S›MÑ)Ð)Ð)Ü! # r§z¡z°1°#£Õ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¬«      }|j                  |«      }|j                  |«      }|j                  |«      }t        t        j                  ||d|¬	«      |«       y )
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‰J˜˜A˜Ø˜A˜ð ó !ˆä—‘˜&Ó!ˆÜŸ™ ›ˆˆr�ˆr�2�A�2ˆv‰Ü—z‘z %Ó(ˆŠq�!ˆt‰ä—7‘7˜1˜e¨&Ô1ˆà�J‰J�q‹MˆØ—‘˜FÓ#ˆØ—:‘:˜hÓ'ˆä!Ü×$Ñ$ Q¨°[ÈÔNØõ	
r2   c                 óÒ  — t        j                  g d¢g d¢g«      }|d d d…d d d…f   j                  «       }|j                  |«      }|j                  |«      }t        j                  ddg«      }t        j                  d«      |d d…d d…f<   t        j                  |j
                  «      |d d …df<   |j                  |«      }t        t        j                  ||d|¬«      |«       y )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‰Jš	Ú!ð#ó $ˆà‘T�r�T™4˜R˜4�Z‘=×%Ñ%Ó'ˆØ�J‰J�q‹MˆØ—:‘:˜hÓ'ˆä—‘˜1˜a˜&Ó!ˆÜŸ™ ›ˆˆr�ˆr�2�A�2ˆv‰Ü—z‘z !§'¡'Ó*ˆŠq�!ˆt‰Ø—‘˜FÓ#ˆä!Ü×$Ñ$ Q¨°YÀeÔ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¨A¨q£kÓ2ñ8ó 3ð8ð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜W y°,Ð&?Ó@ñ1ó Aó 3ð1ð  ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñFó 3ðFð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñNó 3ðNð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ=ó 3ð=ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ7ó 3ð7ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ7ó 3ð7ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ7ó 3ð7ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ-ó 3ð-ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
;ó 3ð
;ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
;ó 3ð
;ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ>ó 3ð>ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñFó 3ðFð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ	.ó 3ð	.ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ	.ó 3ð	.ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñGó 3ðGò<Lñ ˜dÐ+HÔIñLó JðLñ  ˜dÐ+HÔIñ
?ó Jð
?ñ ˜dØ<ôñ=óð=ñ ˜dÐ+NÔOñ8ó Pð8ð ‡[�[×Ñ˜WÚGóIà‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
ó 3óIð
ð& ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
ó 3ñ
r2   rR  c                   ó¬  — e Zd Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Z	ej                  j                  d edd«      «      d„ «       Z
ej                  j                  d edd«      «      ej                  j                  dd	d
g«      d„ «       «       Zej                  j                  d edd«      «      ej                  j                  dddg«      ej                  j                  dd	d
g«      d„ «       «       «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  dg d¢«      ej                  j                  d edd«      «      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  d edd«      «      d„ «       «       Zd„ Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      ej                  j                  dddg«      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  d ed«      «      d„ «       «       Zy )!Ú	TestShiftr:   r   rJ   c                 ó’   — |j                  dg«      }t        j                  |dg|¬«      }t        ||j                  dg«      «       y )Nr   rs   r   ©r<   r=   r0   r   rV  s        r/   Útest_shift01zTestShift.test_shift01ï  s9   € à�z‰z˜1˜#‹ˆÜ�m‰m˜D 1 #¨UÔ3ˆÜ! # r§z¡z°1°#£Õ7r2   c                 ó”   — |j                  dg«      }t        j                  |dg|¬«      }t        ||j	                  g d¢«      «       y )Nr'   r   rs   r›   ©rv   r=   r0   r   r<   rV  s        r/   Útest_shift02zTestShift.test_shift02õ  s8   € à�w‰w˜�s‹|ˆÜ�m‰m˜D 1 #¨UÔ3ˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 ó’   — |j                  dg«      }t        j                  |d|¬«      }t        ||j	                  g d¢«      «       y )Nr'   r(   rs   rl  rË  rV  s        r/   Útest_shift03zTestShift.test_shift03û  s6   € à�w‰w˜�s‹|ˆÜ�m‰m˜D "¨EÔ2ˆÜ! # r§z¡z²,Ó'?Õ@r2   c                 ó”   — |j                  g d¢«      }t        j                  |d|¬«      }t        ||j                  g d¢«      «       y )Nrž   r   rs   r    rÈ  rV  s        r/   Útest_shift04zTestShift.test_shift04  s5   € à�z‰zš,Ó'ˆÜ�m‰m˜D !¨5Ô1ˆÜ! # r§z¡z²,Ó'?Õ@r2   rM   r[   r¢   c                 óH  — t        ||«      }|j                  g d¢g d¢g d¢g|¬«      }|j                  g d¢g d¢g d¢g|¬«      }t        |«      j                  } ||j                  d«      r|d|z  z  }|d|z  z  }t        j                  |ddg|¬«      }t        ||«       y )	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ˆð —:‘:š|Ú+Ú+ð-à49ð ó ;ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÜ�m‰m˜D 1 a &°Ô6ˆÜ! # xÕ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<   |j                  |«      }|j                  |«      }t        j                  |ddg|||¬	«      }	t        |	|«       y )
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‰zš<Ú'Ú'ð)à05ô7ˆô —:‘:š|Ú+Ú+ð-à49ô;ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHØˆØˆ’�A�‰à�z‰z˜$ÓˆØ—:‘:˜hÓ'ˆÜ�m‰m˜D 1 a &°¸DÀtÔLˆÜ! # xÕ0r2   c           	      ó´   — |j                  g d¢g d¢g d¢g«      }t        j                  |ddg|¬«      }t        ||j                  g d¢g d¢g d	¢g«      «       y )
Nrž   r«   r®   r   r   rs   r    r°   r±   rÈ  rV  s        r/   Útest_shift06zTestShift.test_shift060  óZ   € à�z‰zš<Ú'Ú'ð)ó *ˆô �m‰m˜D 1 a &°Ô6ˆÜ! # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   c           	      ó´   — |j                  g d¢g d¢g d¢g«      }t        j                  |ddg|¬«      }t        ||j                  g d¢g d¢g d¢g«      «       y )Nrž   r«   r®   r   r   rs   r¹   rÈ  rV  s        r/   Útest_shift07zTestShift.test_shift07:  r×  r2   c           	      ó´   — |j                  g d¢g d¢g d¢g«      }t        j                  |ddg|¬«      }t        ||j                  g d¢g d¢g d¢g«      «       y )	Nrž   r«   r®   r   rs   r¹   r    r°   rÈ  rV  s        r/   Útest_shift08zTestShift.test_shift08D  r×  r2   c           	      óô   — |j                  g d¢g d¢g d¢g«      }|dkD  rt        j                  ||¬«      }n|}t        j                  |ddg|d¬«      }t	        ||j                  g d¢g d	¢g d
¢g«      «       y )Nrž   r«   r®   r   rs   FrÁ   r¹   r    r°   )r<   r=   rw   r0   r   ri  s         r/   Útest_shift09zTestShift.test_shift09N  sz   € à�z‰zš<Ú'Ú'ð)ó *ˆð �AŠIÜ×,Ñ,¨T¸Ô?‰HàˆHÜ�m‰m˜H q¨! f°EÀUÔKˆÜ! # r§z¡z²<Ú3?Ú3?ð3Aó (Bõ 	Cr2   r0   r¸  c                 óô   — t        j                  ddgddgg«      }t        j                  ||d¬«      }|j                  |«      }|j                  |«      }t        t	        j
                  ||d|¬«      |«       y )	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\  sn   € ô
 �J‰J˜˜A˜Ø˜A˜ð ó !ˆä—7‘7˜1˜e¨%Ô0ˆà�J‰J�q‹MˆØ—:‘:˜hÓ'ˆä!Ü�M‰M˜!˜U¨¸EÔBØõ	
r2   c           	      óº   — |j                  |j                  d«      d«      }t        t        j                  ||d|¬«      t        j                  ||d|¬«      «       y )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  sH   € ð
 �J‰J�r—y‘y “} fÓ-ˆÜ!Ü�M‰M˜!˜U¨ÀÔFÜ�M‰M˜!˜U¨¸5ÔAõ	
r2   c                 ó¾   — |j                  g d¢g d¢g|j                  ¬«      }|j                  g d¢g d¢g«      }t        t        j                  |ddd¬	«      |«       y )
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ˆàŸ*™*Ò&8Ú&8ð&:ó ;ˆä!Ü�M‰M˜!˜Z¨oÀQÔGØõ	
r2   c                 ó  — t        j                  g d¢g d¢g«      }|d d d…d d d…f   j                  «       }|j                  |«      }|j                  |«      }t        t	        j
                  ||j                  d|¬«      |«       y )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‚  sv   € ô �J‰Jš	Ú!ð#ó $ˆà‘T�r�T™4˜R˜4�Z‘=×%Ñ%Ó'ˆà�J‰J�q‹MˆØ—:‘:˜hÓ'ˆÜ!Ü�M‰M˜!˜QŸW™W¨9¸EÔBØõ	
r2   rÂ   FTc                 óø   — |j                  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   «       y )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ˆÜ˜9¨E¸YÔGˆÜ!Ü�M‰M˜!˜U a™Z¨!™^Ñ6¨vÑ6°qÑ9¸1¸Q¹4ô	
ô 	"Ü�M‰M˜!˜e˜V q™[¨1™_Ñ7°Ñ7¸Ñ;¸Q¸r¹Uõ	
r2   r  c                 óÆ  — t        j                  dt        ¬«      j                  dd«      }d}d}t        j                  |«      }|j                  t        j                  |||¬«      «      }|j                  |«      }	t        t        || «      g|	j                  z  «      }
t        j                  ||||¬«      |
   }t        t        j                  |	|||¬«      |d¬	«       y )
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‰y˜¤EÔ*×2Ñ2°2°rÓ:ˆØˆð ˆÜ(×,Ñ,¨TÓ2ˆØ—:‘:œbŸf™f T¨4°hÔ?Ó@ˆØ�J‰J�tÓˆäœe D¨4¨%Ó0Ð1°A·F±FÑ:Ó;ˆÜ!Ÿ-™-Ø�e $¨eô5Ø5AñCˆô 	Ü�M‰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Æ  í  sj  „ à‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ8ó 3ð8ð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñAó 3ðAð
 ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜W y°,Ð&?Ó@ñ1ó Aó 3ð1ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜V j°/Ð%BÓCØ‡[�[×Ñ˜W y°,Ð&?Ó@ñ1ó Aó Dó 3ð1ð* ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñCó 3ðCð ‡[�[×Ñ˜WÚGóIà‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
ó 3óIð
ð ‡[�[×Ñ˜WÚGóIà‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
ó 3óIð
ò
ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ
ó 3ð
ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜[¨5°$¨-Ó8ñ

ó 9ó 3ð

ð ‡[�[×Ñ˜Vò &;ó <à‡[�[×Ñ˜W¡e¨A£hÓ/ñ
ó 0ó<ñ
r2   rÆ  c                   ó  — e Zd Zej                  j                  d edd«      «      d„ «       Zd„ Zd„ Z	ej                  j                  d edd«      «      ej                  j                  ddd	g«      d
„ «       «       Z
d„ Zd„ Zd„ Zej                  j                  dg d¢«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dg d¢«      ej                  j                  dg d¢«      d„ «       «       «       Zej                  j                  dddg«      ej                  j                   d„ «       «       Z edd¬«      d„ «       Zd„ Zy )!ÚTestZoomr:   r   rJ   c                 ó  — dddgfD ]÷  }|j                  |j                  d|j                  ¬«      d«      }t        j                  |||¬«      }|j
                  dk(  sJ ‚|j                  |dd d …f   dk7  «      sJ ‚|j                  |dd d …f   d	t        z
  k\  «      sJ ‚|j                  |dd d …f   d
t        z   k  «      sJ ‚|j                  |dt        z
  k\  «      sJ ‚|j                  |dt        z   k  «      rŒ÷J ‚ y )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¸  sø   € à�a˜�V�ò 	-ˆAØ—*‘*˜RŸY™Y r°·±˜YÓ<¸fÓEˆCÜ—,‘,˜s A¨UÔ3ˆCØ—9‘9 Ò(Ð(Ð(Ø—6‘6˜#˜b¢!˜e™*¨™/Ô*Ð*Ð*Ø—6‘6˜#˜b¢!˜e™*¨¬c©Ñ2Ô3Ð3Ð3Ø—6‘6˜#˜a¢˜d™)¨¬C©Ñ0Ô1Ð1Ð1Ø—6‘6˜# !¤c¡'Ñ*Ô+Ð+Ð+Ø—6‘6˜# "¤s¡(Ñ+Õ,Ð,Ð,ñ	-r2   c                 ó²   — |j                  |j                  d«      d«      }t        j                  t        j                  |d«      d«      }t	        ||«       y )NrÖ   r÷   r3   r+   )r  rZ   r=   rò  r   )r@   rB   rö  ry   s       r/   Ú
test_zoom2zTestZoom.test_zoom2Ä  s?   € Ø�j‰j˜Ÿ™ 2›¨Ó/ˆÜ�l‰lœ7Ÿ<™<¨¨QÓ/°Ó5ˆÜ˜˜SÕ!r2   c                 ó  — |j                  ddgg«      }t        j                  |d«      }t        j                  |d«      }t        ||j                  ddgddgg«      «       t        ||j                  g d¢g«      «       y )Nr   r3   r›  rä   )r   r   r3   r3   )r<   r=   rò  r   )r@   rB   rö  r7  r8  s        r/   Ú
test_zoom3zTestZoom.test_zoom3É  sk   € Ø�j‰j˜1˜a˜&˜Ó"ˆÜ�|‰|˜C Ó(ˆÜ�|‰|˜C Ó(ˆä! $¨¯
©
°Q¸°F¸QÀ¸FÐ3CÓ(DÔEÜ! $¨¯
©
²L°>Ó(BÕCr2   rM   r[   r¢   c                 ó¢  — t        ||«      }|j                  g d¢g d¢g d¢g|¬«      }t        |«      j                  } ||j                  d«      r|d|z  z  }t        «       5 }|j                  t        d«       t        j                  ||j                  ddg«      d	d
|¬«      }d d d «       t        d d d…d d d…f   |«       y # 1 sw Y   Œ!xY w)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Ñ  sÝ   € ô ˜˜EÓ"ˆØ�z‰zš<Ú'Ú*ð,à38ð ó :ˆô " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDÜÓ ð 	@ CØ�J‰J”{ð%ô&ô ×*Ñ*¨4°·±¸SÀ#¸JÓ1GÈØ+1¸ô@ˆC÷		@ô 	" #¡c¨ c©3¨Q¨3 h¡-°Õ6÷	@ð 	@ús   Á#ACÃCc                 ó`   — d}t        j                  |j                  ||f«      d|z  d¬«       y )Nr¬   ç      ð?r   rR   )r=   rò  r½  )r@   rB   Údims      r/   Útest_zoom_infinityzTestZoom.test_zoom_infinityã  s(   € àˆÜ�‰�R—X‘X˜s C˜jÓ)¨2°©8¸)ÖDr2   c                 ó”   — |j                  d«      }d}t        j                  ||d¬«      }|j                  d«      }t        ||«       y )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è  s?   € à�h‰h�yÓ!ˆØˆä�l‰l˜3 ¨1Ô-ˆØ�h‰h�{Ó#ˆÜ! # sÕ+r2   c                 óx   — |j                  d«      }d}t        j                  ||«      }|j                  dk(  sJ ‚y )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ñ  s7   € Ø�h‰h�{Ó#ˆØ.ˆÜ�l‰l˜3 Ó%ˆØ�y‰y˜KÒ'Ð'Ñ'r2   rò  )r<  )r4   r­   )r¬   r3   )r¬   r¬   r8   )r   r   r   r   r   r   r   r   c                 ó6  — t        j                  ddgddggt         j                  ¬«      }t        j                  |t        j                  |«      «      }|j                  |«      }|j                  |«      }t        t        j                  ||d|¬«      |«       y )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‰z˜A˜q˜6Ø˜q˜6ð#Ü*,¯*©*ô6ˆä—7‘7˜4¤§¡¨£Ó/ˆà�J‰J�tÓˆØ—:‘:˜hÓ'ˆä!Ü�L‰L˜˜D¨°Ô5Øõ	
r2   r�   r¼  )r'   r'   )r   r   r   r   r   c                 óT  — t        j                  t        j                  |«      t        ¬«      j	                  |«      }|j                  |«      }t        t        j                  ||d|d¬«      |j                  t        j                  |t        j                  |«      «      «      «       y )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  sp   € ô �y‰yœŸ™ ›¬uÔ5×=Ñ=¸eÓDˆà�J‰J�tÓˆÜ!Ü�L‰L˜˜D¨°ÀÔEØ�J‰J”r—w‘w˜t¤R§W¡W¨T£]Ó3Ó4õ	
r2   r   r   c                 óò   — |j                  |j                  d|j                  ¬«      d«      }t        j                  t
        d¬«      5  t        j                  |d|d¬«      f d d d «       y # 1 sw Y   y xY w)	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  sa   € ð �J‰J�r—y‘y ¨"¯*©*�yÓ5°vÓ>ˆÜ�\‰\œ+Ø ?ôAñ 	;ä�L‰L˜˜A D°DÔ9Ñ:÷	;÷ 	;ñ 	;ús   Á	A-Á-A6Tz!inplace output= is numpy-specificr}   c                 ó”   — |j                  |j                  d«      d«      }t        j                  |d|j	                  d«      ¬«       y)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%  s5   € ð �J‰J�r—y‘y “} fÓ-ˆÜ�‰�Q˜ "§(¡(¨6Ó"2Ö3r2   c                 óÀ   — |j                  d«      }d}t        j                  |t        j                  |«      «      }t        j                  ||«      }t        ||«       y )Ng      $@r3   )rZ   r=   rò  rY   Úarrayr   )r@   rB   r  ÚfactorÚactualrh   s         r/   Útest_zoom_0d_arrayzTestZoom.test_zoom_0d_array+  sG   € à�I‰I�c‹NˆØˆÜ—‘˜a¤§¡¨&Ó!1Ó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ï  ¶  s™  „ à‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ	-ó 3ð	-ò"ò
Dð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜W y°,Ð&?Ó@ñ7ó Aó 3ð7ò Eò
,ò(ð ‡[�[×Ñ˜VÒ%EÓFØ‡[�[×Ñ˜Vò &7ó 8ñ
ó8ó Gð
ð" ‡[�[×Ñ˜W v¨vÐ&6Ó7Ø‡[�[×Ñ˜VÒ%EÓFØ‡[�[×Ñ˜Vò &Dó Eñ

óEó Gó 8ð

ð ‡[�[×Ñ˜V j°&Ð%9Ó:Ø‡[�[×Ññ;ó ó ;ð;ñ ˜dÐ+NÔOñ4ó Pð4ó
*r2   rï  c                   óð  — e Zd Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      ej                  j                  dddg«      d	„ «       «       Z	ej                  j                  d edd«      «      d
„ «       Z
ej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  d edd«      «      d„ «       Zd„ Zd„ Zd„ Zy)Ú
TestRotater:   r   rJ   c                 ó˜   — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        j                  |d|¬«      }t	        ||«       y )Nr¹   ©r   r   r   r   rL   r   rs   ©r<   r[   r=   Úrotater   rV  s        r/   Útest_rotate01zTestRotate.test_rotate016  sG   € à�z‰zš<Ú'Ú'ð)à02·
±
ð ó <ˆô �n‰n˜T 1¨EÔ2ˆÜ! # tÕ,r2   c                 óê   — |j                  g d¢g d¢g d¢g|j                  ¬«      }|j                  g d¢g d¢g d¢g d¢g|j                  ¬«      }t        j                  |d|¬«      }t	        ||«       y )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>  su   € à�z‰zš<Ú'Ú'ð)à02·
±
ð ó <ˆð —:‘:šyÚ(Ú(Ú(ð*ð 24·±ð ó =ˆô �n‰n˜T 2¨UÔ3ˆÜ! # xÕ0r2   rM   r[   r¢   c                 óP  — t        ||«      }|j                  g d¢g d¢g d¢g|¬«      }|j                  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        ||«       y )
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Ú(Ú(Ú(Ú(ð	*ð 27ð	 ó 8ˆô
 " $Ó'×/Ñ/ˆÙ�4—:‘:Ð1Ô2Ø�B˜‘IÑˆDØ˜˜X™Ñ%ˆHÜ�n‰n˜T 2¨UÔ3ˆÜ! # xÕ0r2   c                 óæ   — |j                  g d¢g d¢g d¢g|j                  ¬«      }|j                  g d¢g d¢g d¢g|j                  ¬«      }t        j                  |dd|¬«      }t	        ||«       y )Nr)  r*  rL   ©r   r   r   r   r   r%  F)r  r:   r  r&  s         r/   Útest_rotate04zTestRotate.test_rotate04]  ss   € à�z‰zš?Ú*Ú*ð,à35·:±:ð ó ?ˆð —:‘:šÚ.Ú.ð0à79·z±zð ó Cˆô �n‰n˜T 2¨u¸EÔBˆÜ! # xÕ0r2   c                 ó®  — t        j                  d«      }t        d«      D ]=  }t        j                  g d¢g d¢g d¢g d¢gt         j                  ¬«      |d d …d d …|f<   Œ? |j                  |«      }|j                  g d¢g d¢g d¢g|j                  ¬«      }t        j                  |d|¬	«      }t        d«      D ]  }t        |d d …d d …|f   |«       Œ y )
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‰x˜	Ó"ˆÜ�q“ò 	FˆAÜŸJ™Jª	Ú(1Ú(1Ú(1ð(3ô ;=¿*¹*ôFˆD’’A�q�ŠMð	Fð
 �z‰z˜$ÓˆØ—:‘:š|Ú+Ú+ð-à46·J±Jð ó @ˆô �n‰n˜T 2¨UÔ3ˆÜ�q“ò 	>ˆAÜ% cª!ªQ°¨'¡l°HÕ=ñ	>r2   c                 ó®  — t        j                  d«      }t        d«      D ]:  }t        j                  g d¢g d¢g d¢gt         j                  ¬«      |d d …d d …|f<   Œ< |j                  |«      }|j                  g d¢g d¢g d¢g d¢g|j                  ¬«      }t        j                  |d|¬	«      }t        d«      D ]  }t        |d d …d d …|f   |«       Œ y )
N)r4   r'   r4   r4   r¹   r  rL   r#  r$  r%  rs   r0  r1  s          r/   Útest_rotate06zTestRotate.test_rotate06x  sÉ   € ä�x‰x˜	Ó"ˆÜ�q“ò 	IˆAÜŸJ™JªÚ(4Ú(4ð(6ä=?¿Z¹ZôIˆD’’A�q�ŠMð	Ið �z‰z˜$ÓˆØ—:‘:šyÚ(Ú(Ú(ð*ð 24·±ð ó =ˆô �n‰n˜T 2¨UÔ3ˆÜ�q“ò 	>ˆAÜ% cª!ªQ°¨'¡l°HÕ=ñ	>r2   c                 óP  — |j                  g d¢g d¢g d¢ggdz  |j                  ¬«      }t        |«      j                  } ||d«      }|j                  g d¢g d¢g d¢g d¢g d¢ggdz  |j                  ¬«      } ||d«      }t	        j
                  |dd	|¬
«      }t        ||«       y )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Ú+Ú+ð-ð .à01ñ2à9;¿¹ð ó Eˆô ' tÓ,×9Ñ9ˆÙ˜D )Ó,ˆØ—:‘:¢	Ú )Ú )Ú )Ú )ð	 +ð ,ð /0ñ	0ð 8:·z±zð	 ó Cˆñ
   ¨)Ó4ˆÜ�n‰n˜T 2¨F¸%Ô@ˆÜ! # xÕ0r2   c                 óp  — |j                  g d¢g d¢g d¢ggdz  |j                  ¬«      }t        |«      j                  } ||d«      }|j                  g d¢g d¢g d¢ggdz  |j                  ¬«      }t        |«      j                  } ||d«      }t	        j
                  |ddd	|¬
«      }t        ||«       y )Nr)  r*  r3   rL   r7  r-  r%  r¹  F)r8  r  r:   r9  r;  s          r/   Útest_rotate08zTestRotate.test_rotate08˜  sÈ   € à�z‰zšOÚ+Ú+ð-ð .à01ñ2à9;¿¹ð ó Eˆô ' tÓ,×9Ñ9ˆÙ˜D )Ó,ˆØ—:‘:¢Ú /Ú /ð 1ð 2à45ñ6à=?¿Z¹Zð ó Iˆô ' tÓ,×9Ñ9ˆÙ ¨)Ó4ˆÜ�n‰n˜T 2¨F¸EÈÔOˆÜ! # xÕ0r2   c                 óæ   — |j                  g d¢g d¢g d¢gdz  |j                  ¬«      }t        t        «      5  t	        j
                  |dd|j                  f¬«       d d d «       y # 1 sw Y   y xY w)Nr)  r*  r3   rL   r%  r   )r8  )r<   r[   r©  rª  r=   r   r  )r@   rB   rC   s      r/   Útest_rotate09zTestRotate.test_rotate09§  si   € Ø�z‰zš?Ú*Ú*ð,à./ñ0à79·z±zð ó Cˆô œ:Ó&ñ 	:Ü�N‰N˜4 ¨1¨d¯i©i¨.Õ9÷	:÷ 	:ñ 	:ús   ¹%A'Á'A0c           
      óF  — |j                  |j                  d|j                  ¬«      d«      }|j                  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¬«       y )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©j˜)Ó9¸9ÓEˆð —:‘:¢Ú /Ú DÚ GÚ /ð	 1ò
 !EÚ DÚ 2Ú DÚ Gð	 Iò
 !0Ú GÚ GÚ /Ú /ð	 1ð2ð :<¿¹ð ó Eˆô  �n‰n˜T¨°UÔ;ˆä˜˜X¨D°tÖ<r2   c                 óú   — t        |«      rt        j                  d«       t        j                  |j                  d«      d«      }t        j                  t        j                  |d«      d«      }t        ||«       y )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Æ  sS   € Ü�2Œ;Ü�L‰LÐCÔDä�G‰G�B—I‘I˜a“L &Ó)ˆÜ�N‰Nœ7Ÿ>™>¨!¨SÓ1°4Ó8ˆÜ˜˜1Õr2   N)rj   rk   rl   rW   rm   rn   ro   r!  r'  r+  r.  r3  r5  r<  r>  r@  rD  rH  r,   r2   r/   r  r  4  s†  „ à‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ-ó 3ð-ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ	1ó 3ð	1ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2Ø‡[�[×Ñ˜W y°,Ð&?Ó@ñ1ó Aó 3ð1ð" ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ1ó 3ð1ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ>ó 3ð>ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ>ó 3ð>ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ1ó 3ð1ð ‡[�[×Ñ˜W¡e¨A¨q£kÓ2ñ1ó 3ð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>rQ     s“  ðÛ 
ã Ý +÷ñ ÷ MÓ Lã Ý *Ý å å /Ø—;‘;×/Ñ/Ð Ø" F§K¡K×$;Ñ$;Ð<NÓ$OÙ¨¸&À+Ð9NÔPðR€
ð €ð ØØØØØñÐ ÷F;ñ F;ðR ‡�×Ñ˜¡%¨¨1£+Ó.Ø‡�×Ñ˜ %Ó(÷#1ð #1ó )ó /ð#1ñL �&Ð!IÔJØ‡�×Ñ˜¡%¨¨1£+Ó.÷K/ð K/ó /ó KðK/ñ\ �&Ð!IÔJ÷J,ð J,ó KðJ,÷ZtDñ tD÷nA
ñ A
÷HF
ñ F
÷R{*ñ {*÷|Xò Xr2   