§
    µ³Ùg+@  ã                   óP   — d dl Zd dlmZ d dlZd dlmZ d	d„Z G d„ d¦  «        ZdS )
é    N)Úassert_allclose)Úgeometric_slerpé   é   c                 ó  — t           j                             d¦  «         t           j                             || f¬¦  «        }|t           j                             |d¬¦  «        d d …t           j        f         z  }|d         |d         fS )Né{   )Úsizeé   ©Úaxisr   )ÚnpÚrandomÚseedÚnormalÚlinalgÚnormÚnewaxis)ÚndimÚn_ptsÚpointss      úT/granary/edev/quantum/lib/python3.11/site-packages/scipy/spatial/tests/test_slerp.pyÚ_generate_spherical_pointsr      sr   € õ
 „I‡N‚N�3ÑÔÐÝŒY×Ò E¨4 =ÐÑ1Ô1€FØ
�bŒi�nŠn˜V¨!ˆnÑ,Ô,¨Q¨Q¨Qµ´
¨]Ô;Ñ;€FØ�!Œ9�f˜Q”iÐÐó    c                   óv  — e Zd Zej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zej                             dg d¢¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Zej                             d	 ej	        d
¦  «         ej
        d
¦  «        f ej	        d
¦  «         ej
        d¦  «        f ej	        d¦  «         ej
        d¦  «        fg¦  «        d„ ¦   «         Zej                             d	 ej	        d¦  «         ej
        d¦  «        f ej	        d¦  «         ej
        d¦  «        f ej        g ¦  «         ej
        d¦  «        fg¦  «        d„ ¦   «         Zej                             d	 ej        g ¦  «         ej        g ¦  «        fg¦  «        d„ ¦   «         Zej        j        ej                             d ej        g d¢¦  «         ej        g d¢¦  «        df ej        g d¢¦  «         ej        g d¢¦  «        df ej        g d¢¦  «         ej        g d¢¦  «        dfg¦  «        d„ ¦   «         ¦   «         Zej                             d ej        ddg¦  «         ej        ddg¦  «         ej        ddg ej        d¦  «        dz  dgd ej        d¦  «        dz  gddgg¦  «        f ej        g d¢¦  «         ej        g d¢¦  «         ej        g d¢ ej        d¦  «        dz  ddgd ej        d¦  «        dz  dgg d¢g¦  «        f ej        g d¢¦  «         ej        g d¢¦  «         ej        g d¢ ej        d¦  «        dz  ddddgd ej        d¦  «        dz  dddgg d¢g¦  «        fg¦  «        d „ ¦   «         Zej                             d! ej        d"d#d$¦  «         ej        d%d&d¦  «        g¦  «        d'„ ¦   «         Zej                             d	 ej        dg¦  «         ej        dg¦  «        f ej        dg¦  «         ej        dg¦  «        f ej        d(g¦  «         ej        d)g¦  «        fg¦  «        d*„ ¦   «         Zej                             d+d,d-g d.¢ ej        d/¦  «        g¦  «        d0„ ¦   «         Zej                             d+d1d2g¦  «        d3„ ¦   «         Zej                             d	 ej        ddg¦  «         ej        ddg¦  «        f ej        g d4¢¦  «         ej        g d5¢¦  «        f ej        g d6¢¦  «         ej        g d7¢¦  «        fg¦  «        d8„ ¦   «         Zej                             d	 ej        ddg¦  «         ej         ej        d¦  «        d9z   ej        d¦  «        d9z  g¦  «        f ej        ddg¦  «         ej         ej        d¦  «         d9z   ej        d¦  «        d9z  g¦  «        fg¦  «        ej                             d:ej        ej        g¦  «        d;„ ¦   «         ¦   «         Zej                             d!d<g¦  «        d=„ ¦   «         Zd>„ Zd?„ Zej                             d@ ej        g d¢¦  «         ej        ddg¦  «        g¦  «        ej                             d! ej        d¦  «         ej        dg¦  «         ej        dgg¦  «         ej        dggg¦  «         ej        g ¦  «         ej        ddd,¦  «        g¦  «        dA„ ¦   «         ¦   «         Zej                             dB ej        dCdDdE¦  «        ¦  «        dF„ ¦   «         Zej                             d!ddggddgggggggggg¦  «        dG„ ¦   «         Z dHS )IÚTestGeometricSlerpÚn_dims)r   r   é   é   é	   r   )r   r   é   c           	      ó–   — t          |d¦  «        \  }}t          ||t          j        dd|¦  «        ¬¦  «        }|j        ||fk    sJ ‚d S )Nr   r   r
   ©ÚstartÚendÚt)r   r   r   ÚlinspaceÚshape©Úselfr   r   r#   r$   Úactuals         r   Útest_shape_propertyz&TestGeometricSlerp.test_shape_property   s`   € õ 0°¸Ñ:Ô:‰
ˆˆså  uØ%(Ý#%¤;¨q°!°UÑ#;Ô#;ð=ñ =ô =ˆð Œ|  v˜Ò.Ð.Ð.Ð.Ð.Ð.r   r   r    c           	      óÐ   — t          |d¦  «        \  }}t          ||t          j        dd|¦  «        ¬¦  «        }t	          |d         |¦  «         t	          |d         |¦  «         d S )Nr   r   r
   r"   éÿÿÿÿ)r   r   r   r&   r   r(   s         r   Útest_include_endsz$TestGeometricSlerp.test_include_ends$   sq   € õ 0°¸Ñ:Ô:‰
ˆˆså  uØ%(Ý#%¤;¨q°!°UÑ#;Ô#;ð=ñ =ô =ˆõ 	˜˜qœ	 5Ñ)Ô)Ð)Ý˜˜rœ
 CÑ(Ô(Ð(Ð(Ð(r   z
start, end)r
   r   r
   )r   r
   c           
      óº   — t          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzone-dimensional©Úmatchr   r
   é
   r"   ©ÚpytestÚraisesÚ
ValueErrorr   r   r&   ©r)   r#   r$   s      r   Útest_input_shape_flatz(TestGeometricSlerp.test_input_shape_flat9   s«   € õ Œ]�:Ð->Ð?Ñ?Ô?ð 	5ð 	5Ý %Ø #Ý œk¨!¨Q°Ñ3Ô3ð5ñ 5ô 5ð 5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ó   œ'AÁAÁAr   r   c           
      óº   — t          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚ
dimensionsr0   r   r
   r2   r"   r3   r7   s      r   Útest_input_dim_mismatchz*TestGeometricSlerp.test_input_dim_mismatchI   sª   € õ Œ]�:¨\Ð:Ñ:Ô:ð 	5ð 	5Ý %Ø #Ý œk¨!¨Q°Ñ3Ô3ð5ñ 5ô 5ð 5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5r9   c           
      óº   — t          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Núat least two-dimr0   r   r
   r2   r"   r3   r7   s      r   Útest_input_at_least1dz(TestGeometricSlerp.test_input_at_least1dZ   s«   € õ Œ]�:Ð-?Ð@Ñ@Ô@ð 	5ð 	5Ý %Ø #Ý œk¨!¨Q°Ñ3Ô3ð5ñ 5ô 5ð 5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5r9   zstart, end, expected)r   r   ç      ð?)r   r   g      ð¿Úwarning)ç        gÔ¬3OD¿gkêš›ÿÿï?)rB   gè¾ÿ{tO¿gx¤€ÿÿï?Úsuccessc           
      óp  — |dk    rZt          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   n&t          ||t	          j        ddd¦  «        ¬¦  «        }t          t          j                             |d¬¦  «        d	¦  «         d S )
NrA   Ú	antipodesr0   r   r
   r2   r"   r   r@   )	r4   ÚwarnsÚUserWarningr   r   r&   r   r   r   )r)   r#   r$   ÚexpectedÚress        r   Útest_handle_antipodesz(TestGeometricSlerp.test_handle_antipodesg   sú   € ð6 �yÒ Ð Ý”�k°Ð=Ñ=Ô=ð ?ð ?Ý%¨EØ*-Ý(*¬°A°q¸"Ñ(=Ô(=ð?ñ ?ô ?�ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?øõ
 "¨Ø&)Ý$&¤K°°1°bÑ$9Ô$9ð;ñ ;ô ;ˆCõ 	�œ	Ÿš s°˜Ñ3Ô3°SÑ9Ô9Ð9Ð9Ð9s   ¢'AÁAÁAr   ç      à?)r
   r   r   )r   r
   r   )r
   r   r   r   r   )r   r
   r   r   r   c           	      óv   — t          ||t          j        ddd¦  «        ¬¦  «        }t          ||d¬¦  «         d S )Nr   r
   é   r"   ç¼‰Ø—²Òœ<©Úatol)r   r   r&   r   )r)   r#   r$   rH   r*   s        r   Útest_straightforward_examplesz0TestGeometricSlerp.test_straightforward_examples‘   sL   € õD ! uØ%(Ý#%¤;¨q°!°QÑ#7Ô#7ð9ñ 9ô 9ˆõ 	˜ ¨uÐ5Ñ5Ô5Ð5Ð5Ð5r   r%   iìÿÿÿé   i,  g-Cëâ6¿g-Cëâ6?c                 óâ   — t          j        t          d¬¦  «        5  t          t	          j        ddg¦  «        t	          j        ddg¦  «        |¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nzinterpolation parameterr0   r
   r   r"   ©r4   r5   r6   r   r   Úarray©r)   r%   Ú_s      r   Útest_t_values_limitsz'TestGeometricSlerp.test_t_values_limits¸   s¶   € õ Œ]�:Ð-FÐGÑGÔGð 	%ð 	%Ý¥b¤h°°1¨vÑ&6Ô&6Ý$&¤H¨a°¨VÑ$4Ô$4Ø"#ð%ñ %ô %ˆAð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   œ;A$Á$A(Á+A(g33333³1ÀgÍÌÌÌÌ¼d@c           
      óº   — t          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nr>   r0   r   r
   rM   r"   r3   )r)   r#   r$   rW   s       r   Útest_0_sphere_handlingz)TestGeometricSlerp.test_0_sphere_handlingÆ   s¨   € õ Œ]�:Ð-?Ð@Ñ@Ô@ð 	8ð 	8Ý eØ$'Ý"$¤+¨a°°AÑ"6Ô"6ð8ñ 8ô 8ˆAð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8r9   Útolr   Ú7)r   é   r   g      "@c           
      ó  — t          j        t          d¬¦  «        5  t          t	          j        ddg¦  «        t	          j        ddg¦  «        t	          j        ddd¦  «        |¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nzmust be a floatr0   r
   r   r   ©r#   r$   r%   r[   )r4   r5   r6   r   r   rU   r&   ©r)   r[   rW   s      r   Útest_tol_typez TestGeometricSlerp.test_tol_typeÖ   sÇ   € õ Œ]�:Ð->Ð?Ñ?Ô?ð 	)ð 	)Ý¥b¤h°°1¨vÑ&6Ô&6Ý$&¤H¨a°¨VÑ$4Ô$4Ý"$¤+¨a°°AÑ"6Ô"6Ø$'ð)ñ )ô )ˆAð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   œAA9Á9A=Â A=gñhãˆµøÔ¾gÆœÞC¾c           	      ó¤   — t          t          j        ddg¦  «        t          j        ddg¦  «        t          j        ddd¦  «        |¬¦  «        }d S )Nr
   r   r   r_   )r   r   rU   r&   r`   s      r   Útest_tol_signz TestGeometricSlerp.test_tol_signç   sQ   € õ ¥"¤(¨A¨q¨6Ñ"2Ô"2Ý "¤¨!¨Q¨Ñ 0Ô 0Ý œk¨!¨Q°Ñ2Ô2Ø #ð%ñ %ô %ˆˆˆr   )çzo ð?r   r   )r   çé!çýÿï?r   )rd   r   r   r   )r   re   r   r   c           
      óº   — t          j        t          d¬¦  «        5  t          ||t	          j        ddd¦  «        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzunit n-spherer0   r   r
   r   r"   r3   r7   s      r   Útest_unit_sphere_enforcementz/TestGeometricSlerp.test_unit_sphere_enforcementó   sª   € õ  Œ]�:¨_Ð=Ñ=Ô=ð 	4ð 	4Ý %Ø #Ý œk¨!¨Q°Ñ2Ô2ð4ñ 4ô 4ð 4ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4r9   g       @Út_funcc                 ó.  — d}t           j                             d¦  «          |dd|¦  «        }||                     ¦   «         z  }t          j        |¦  «        }t          j        |¦  «        }t           j                             |¦  «         |                     ¦   «         |         }t          |||¬¦  «        }	t          |||¬¦  «        }
t          |||¬¦  «        }t          |	t          j        |
¦  «        ¦  «         t          |	|         |¦  «         d S )NrR   i  r   r2   r"   )
r   r   r   ÚmaxÚflipudÚarangeÚshuffleÚcopyr   r   )r)   r#   r$   rh   Ú
num_t_valsÚforward_t_valsÚreverse_t_valsÚshuffled_indicesÚscramble_t_valsÚforward_resultsÚreverse_resultsÚscrambled_resultss               r   Útest_order_handlingz&TestGeometricSlerp.test_order_handling  s/  € ð( ˆ
Ý
Œ	�Š�sÑÔÐØ˜  2 zÑ2Ô2ˆà˜.×,Ò,Ñ.Ô.Ñ.ˆÝœ >Ñ2Ô2ˆÝœ9 ZÑ0Ô0ÐÝ
Œ	×ÒÐ*Ñ+Ô+Ð+Ø(×-Ò-Ñ/Ô/Ð0@ÔAˆå)°Ø.1Ø,:ð<ñ <ô <ˆõ *°Ø.1Ø,:ð<ñ <ô <ˆõ ,°%Ø03Ø.=ð?ñ ?ô ?Ðõ
 	˜­¬°?Ñ)CÔ)CÑDÔDÐDÝ˜Ð(8Ô9Ø)ñ	+ô 	+ð 	+ð 	+ð 	+r   z15, 5, 7c                 óÚ   — t          j        t          ¦  «        5  t          t	          j        dg¦  «        t	          j        dg¦  «        |¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nr
   r   r"   rT   rV   s      r   Útest_t_values_conversionz+TestGeometricSlerp.test_t_values_conversion5  s¨   € õ Œ]�:Ñ&Ô&ð 	%ð 	%Ý¥b¤h°¨s¡m¤mÝ$&¤H¨a¨S¡M¤MØ"#ð%ñ %ô %ˆAð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   š9A Á A$Á'A$c           	      ó^  — t          ddgddgg d¢¦  «        }t          j        ddgt          j        d¦  «        dz  dgt          j        d¦  «        dz  t          j        d¦  «        dz  gdt          j        d¦  «        dz  gddggt          j        ¬¦  «        }t          ||d¬	¦  «         d S )
Nr
   r   )r   gUUUUUUÕ?rK   gUUUUUUå?r
   r   r   rK   ©ÚdtyperN   rO   )r   r   rU   ÚsqrtÚfloat64r   ©r)   r*   rH   s      r   Útest_accept_arraylikez(TestGeometricSlerp.test_accept_arraylikeB  s½   € õ ! ! Q ¨!¨Q¨Ð1FÐ1FÐ1FÑGÔGˆõ
 ”8˜a ˜VÝ œg a™jœj¨1™n¨cÐ2Ý œg a™jœj¨1™nÝ œg a™jœj¨1™nð.à!¥2¤7¨1¡:¤:°¡>Ð2Ø ˜Vð%õ
 -/¬Jð8ñ 8ô 8ˆõ 	˜ ¨uÐ5Ñ5Ô5Ð5Ð5Ð5r   c                 ó  — t          ddgddgd¦  «        }t          j        t          j        d¦  «        dz  t          j        d¦  «        dz  gt          j        ¬¦  «        }|j        dk    sJ ‚t          ||¦  «         d S )Nr
   r   rK   r   r{   )r   )r   r   rU   r}   r~   r'   r   r   s      r   Útest_scalar_tz TestGeometricSlerp.test_scalar_tV  s†   € õ ! ! Q ¨!¨Q¨°Ñ5Ô5ˆÝ”8�RœW Q™ZœZ¨!™^ÝœW Q™ZœZ¨!™^ð-Ý46´Jð@ñ @ô @ˆàŒ|˜tÒ#Ð#Ð#Ð#Ý˜ Ñ)Ô)Ð)Ð)Ð)r   r#   c                 ó´  — t          j        |¦  «        j        dk    rFt          j        t
          ¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S |j        f|j        z   }t          j	        ||¦  «        }t          |||¬¦  «        }t          ||¦  «         t          ||d d d…         |¬¦  «        }|j        |j        k    sJ ‚d S )Nr
   r"   r-   )r   Úasarrayr   r4   r5   r6   r   r	   r'   Úfullr   )r)   r#   r%   r'   rH   r*   Únon_degenerates          r   Útest_degenerate_inputz(TestGeometricSlerp.test_degenerate_input`  s&  € õ Œ:�a‰=Œ=Ô Ò!Ð!Ý”�zÑ*Ô*ð =ð =Ý e°¸!Ð<Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =ð ”V�I ¤Ñ+ˆEÝ”w˜u eÑ,Ô,ˆHå$¨5°e¸qÐAÑAÔAˆFÝ˜F HÑ-Ô-Ð-õ -°5¸eÀDÀDÀbÀD¼kÈQÐOÑOÔOˆNØ”; .Ô"5Ò5Ð5Ð5Ð5Ð5Ð5s   ·AÁAÁAÚkiöÿÿÿr-   r2   c                 ó`  — t           j        |z
  }t          j        ddd¦  «        }t          j        g d¢¦  «        }t          j        t          j        |¦  «        t          j        |¦  «        ddg¦  «        }t           j                             ¦   «         5 }|                     t          ¦  «         t          |||d¦  «        }t           j                             |d¬¦  «        }t          j        t          j        |dz
  ¦  «        ¦  «        }	|	dk     sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r
   éd   )r
   r   r   r   g¬CÒÑ]r2<r   gVçž¯ò<)r   Úpir&   rU   ÚcosÚsinÚtestingÚsuppress_warningsÚfilterrG   r   r   r   rj   Úabs)
r)   rˆ   ÚangleÚtsÚPÚQÚsupÚresultÚnormsÚerrors
             r   Útest_numerical_stability_piz.TestGeometricSlerp.test_numerical_stability_pi}  s<  € õ
 ”˜‘	ˆÝŒ[˜˜A˜sÑ#Ô#ˆÝŒH�\�\�\Ñ"Ô"ˆÝŒH•b”f˜U‘m”m¥R¤V¨E¡]¤]°A°qÐ9Ñ:Ô:ˆõ ŒZ×)Ò)Ñ+Ô+ð 	!¨sØ�JŠJ•{Ñ#Ô#Ð#Ý$ Q¨¨2¨uÑ5Ô5ˆFÝ”I—N’N 6°�NÑ2Ô2ˆEÝ”F�2œ6 %¨!¡)Ñ,Ô,Ñ-Ô-ˆEØ˜5’=�=�=�=�=ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   ÂA?D#Ä#D'Ä*D'c                 ól  — t          j        ddg¦  «        }t          j        ddg¦  «        }t          j        t          ¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r
   r"   )r   rU   r4   r5   r6   r   )r)   r%   Úarr1Úarr2s       r   Útest_interpolation_param_ndimz0TestGeometricSlerp.test_interpolation_param_ndim�  sC  € õ Œx˜˜A˜ÑÔˆÝŒx˜˜A˜ÑÔˆåŒ]�:Ñ&Ô&ð 	!ð 	!Ý $Ø $Øð!ñ !ô !ð !ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!õ
 Œ]�:Ñ&Ô&ð 	!ð 	!Ý $Ø $Øð!ñ !ô !ð !ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s$   ÁA%Á%A)Á,A)Â	B)Â)B-Â0B-N)!Ú__name__Ú
__module__Ú__qualname__r4   ÚmarkÚparametrizer+   r.   r   ÚzerosÚonesr8   rU   r<   r?   Úthread_unsaferJ   r}   rQ   r&   rX   rZ   ra   rc   rg   Úlogspacerw   ry   r€   r‚   r‡   rš   rž   © r   r   r   r      s
  € € € € € ð „[×Ò˜X   Ñ7Ô7Ø„[×Ò˜W j j jÑ1Ô1ð
/ð 
/ñ 2Ô1ñ 8Ô7ð
/ð „[×Ò˜X   Ñ7Ô7Ø„[×Ò˜W q¨" gÑ.Ô.ð)ð )ñ /Ô.ñ 8Ô7ð)ð& „[×Ò˜\à	ˆŒ�&Ñ	Ô	˜7˜2œ7 6™?œ?Ð+à	ˆŒ�&Ñ	Ô	˜7˜2œ7 1™:œ:Ð&à	ˆŒ�!‰Œ�g�b”g˜f‘o”oÐ&ð,
ñ ô ð5ð 5ñô ð5ð „[×Ò˜\à	ˆŒ�!‰Œ�g�b”g˜a‘j”jÐ!à	ˆŒ�!‰Œ�g�b”g˜a‘j”jÐ!à	ˆŒ�"‰Œ�w�r”w˜q‘z”zÐ"ð,
ñ ô ð5ð 5ñô ð5ð „[×Ò˜\à	ˆŒ�"‰Œ�x�r”x ‘|”|Ð$ð,
ñ ô ð5ð 5ñ	ô ð5ð „[ÔØ„[×ÒÐ3ð 
ˆŒ�+�+�+Ñ	Ô	  ¤¨¨¨Ñ 6Ô 6¸	ÐBð 
ˆŒð "ð "ð "ñ 
#ô 
#à$, B¤H¨\¨\¨\Ñ$:Ô$:¸Ið	Gð 
ˆŒð "ð "ð "ñ 
#ô 
#à$, B¤H¨\¨\¨\Ñ$:Ô$:¸Ið	Gð%6
ñ ô ð,:ð :ñ-ô ñ Ôð.:ð& „[×ÒÐ3ð 
ˆŒ�1�a�&Ñ	Ô	Ø	ˆŒ�1�a�&Ñ	Ô	Ø	ˆŒ�A�q�6Ø�B”G˜A‘J”J ‘N CÐ(Ø˜˜œ ™œ a™Ð(Ø�q�6ðñ 
ô 
ð	ð 
ˆŒ�)�)�)Ñ	Ô	Ø	ˆŒ�)�)�)Ñ	Ô	Ø	ˆŒ�9�9�9Ø�B”G˜A‘J”J ‘N C¨Ð+Ø˜˜œ ™œ a™¨Ð+Ø�9�9ðñ 
ô 
ð	 ð 
ˆŒ�/�/�/Ñ	"Ô	"Ø	ˆŒ�/�/�/Ñ	"Ô	"Ø	ˆŒ�?�?�?Ø�B”G˜A‘J”J ‘N C¨¨A¨qÐ1Ø˜˜œ ™œ a™¨¨A¨qÐ1Ø"�?�?ð$ñ 
%ô 
%ð	&ð+6ñ ô ð:6ð 6ñ;ô ð:6ð „[×Ò˜SàˆŒ�C˜˜SÑ!Ô!àˆŒ�G˜V RÑ(Ô(ð	#
ñ ô ð%ð %ñô ð%ð „[×Ò˜\Ø	ˆŒ�1�#‰ŒØ	ˆŒ�1�#‰Œð	à	ˆŒ�1�#‰ŒØ	ˆŒ�1�#‰Œð	à	ˆŒ�5�'Ñ	Ô	Ø	ˆŒ�5�'Ñ	Ô	ð	ð,ñ ô ð8ð 8ñô ð8ð „[×Ò˜Uà	ààˆ	ˆ	�8�2”8˜C‘=”=ð%
ñ ô ð)ð )ñô ð)ð „[×Ò˜UØØð%
ñ ô ð%ð %ñ	ô ð%ð „[×Ò˜\ð 
ˆŒ�1�a�&Ñ	Ô	˜8˜2œ8 Q¨ FÑ+Ô+Ð,ð 
ˆŒÐ"Ð"Ð"Ñ	#Ô	#Ø	ˆŒÐ"Ð"Ð"Ñ	#Ô	#ð	%ð 
ˆŒÐ%Ð%Ð%Ñ	&Ô	&Ø	ˆŒÐ%Ð%Ð%Ñ	&Ô	&ð	(ð,
ñ ô ð4ð 4ñô ð4ð „[×Ò˜\à	ˆŒ�1�a�&Ñ	Ô	Ø	ˆŒ�7�2”7˜1‘:”: ‘?Ø�2”7˜1‘:”: ‘?ð$ñ 
%ô 
%ð	&ð 
ˆŒ�1�a�&Ñ	Ô	Ø	ˆŒ�G�B”G˜A‘J”J�; Ñ#Ø�2”7˜1‘:”: ‘?ð$ñ 
%ô 
%ð	&ð	,
ñ 	ô 	ð „[×Ò˜XØ
Œ�R”[ð("ñ #ô #ð+ð +ñ#ô #ñ	ô 	ð+ðB „[×Ò˜Sàð#
ñ ô ð%ð %ñô ð%ð6ð 6ð 6ð(*ð *ð *ð „[×Ò˜WØˆŒ���ÑÔØˆŒ�!�Q�ÑÔð'ñ ô ð „[×Ò˜SØˆŒ�‰ŒØˆŒ�!�‰ŒØˆŒ�1�#�‰ŒØˆŒ�A�3�%�ÑÔØˆŒ�‰ŒØˆŒ�A�q˜!ÑÔð#ñ ô ð6ð 6ñô ñ	ô ð6ð" „[×Ò˜S + "¤+¨c°2°rÑ":Ô":Ñ;Ô;ð!ð !ñ <Ô;ð!ð$ „[×Ò˜SØˆ#€h€ZØ�ˆXˆJˆ<ˆ.Ð	ÐÐÐÐð#ñ ô ð!ð !ñ	ô ð!ð !ð !r   r   )r   r   )	Únumpyr   Únumpy.testingr   r4   Úscipy.spatialr   r   r   r¨   r   r   ú<module>r¬      sŽ   ðØ Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )à €€€Ø )Ð )Ð )Ð )Ð )Ð )ð ð  ð  ð  ðN!ð N!ð N!ð N!ð N!ñ N!ô N!ð N!ð N!ð N!r   