Ë
    ¨ehç×  ã                   óÖ  — d dl Zd dlmZmZmZ d dlmc mZ	 d dl
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mZ  G d„ d«      Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Ze
j>                  jA                  dg g fdgdgfddgddgfg d¢g d¢fg d¢g d¢fg d¢g d¢fg«      d„ «       Z!d„ Z" e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. ed'gd(d)¬*«      d+„ «       Z/ ed,gd(d-¬*«      d.„ «       Z0d/„ Z1d0„ Z2e
j>                  jA                  d1ejf                  ejh                  gd2d3g¬4«      d5„ «       Z5d6„ Z6d7„ Z7d8„ Z8d9„ Z9d:„ Z:d;„ Z;dDd<„Z<d=„ Z=d>„ Z>d?„ Z? e«       d@„ «       Z@dA„ ZAdB„ ZBdC„ ZCy)Eé    N)Úassert_array_equalÚassert_array_almost_equalÚassert_array_less)ÚPath)Úimage_comparisonÚcheck_figures_equalc                   ó.  — e Zd Zg d¢Zg d¢Zg d¢g d¢gZddgZej                  j                  deegi eeddgfeeegi eeedgfeeg e
e¬	«      eeedgfeeg e
e¬
«      eedegfeeeg e
e¬
«      eeeegfeeg e
ee¬«      eeeegfg«      d„ «       Zy)ÚTestTriangulationParams©éÿÿÿÿr   é   r   ©r   r   r   r   ©r   r   é   ©r   r   é   FTzargs, kwargs, expectedN©Ú	triangles©Úmask©r   r   c                 óØ   — ddg}dddœ}t         j                  j                  ||z   i |¥|¥«      \  }}}}	}
}|\  }}}}||u sJ ‚||u sJ ‚t        ||«       |	|u sJ ‚|
|k(  sJ ‚||k(  sJ ‚y )Nr   r   r   Ú4)ÚaÚb)ÚmtriÚTriangulationÚ_extract_triangulation_paramsr   )ÚselfÚargsÚkwargsÚexpectedÚ
other_argsÚother_kwargsÚx_Úy_Ú
triangles_Úmask_Úargs_Úkwargs_ÚxÚyr   r   s                   úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/tests/test_triangulation.pyÚ!test_extract_triangulation_paramsz9TestTriangulationParams.test_extract_triangulation_params   s©   € ð ˜�Vˆ
Ø SÑ)ˆä×Ñ×<Ñ<Ø�zÑ!Ð#= fÐ#=°Ð#=ó?ñ 	2ˆˆB�
˜E 5¨'ð !)Ñˆˆ1ˆi˜Ø�Q‰wˆˆwØ�Q‰wˆˆwÜ˜: yÔ1Ø˜‰}Ðˆ}Ø˜
Ò"Ð"Ð"Ø˜,Ò&Ð&Ñ&ó    )Ú__name__Ú
__module__Ú__qualname__r+   r,   r   r   ÚpytestÚmarkÚparametrizeÚdictr.   © r/   r-   r
   r
      sì   „ Ú€AÚ€AÚšIÐ&€IØ�4ˆ=€Dà‡[�[×ÑÐ5Ø
ˆQˆ��a˜˜D $Ð'Ð(Ø
ˆQ�	Ð	˜B  A y°$Ð 7Ð8Ø
ˆQˆ‘ 	Ô*¨Q°°9¸dÐ,CÐDØ
ˆQˆ‘˜4” 1 a¨¨tÐ"4Ð5Ø
ˆQ�	Ð	™D dœO¨a°°I¸tÐ-DÐEØ
ˆQˆ‘ 	°Ô5¸¸1¸iÈÐ7NÐOð8ó ñ'óñ'r/   r
   c                  óŠ   — dg} g d¢g d¢g d¢g| g}t         j                  j                  |i «      \  }}}}}}|�J ‚|| gk(  sJ ‚y )NT©r   r   r   ©r   r   r   r   )r   r   r   )r   r    r%   r&   r'   r(   r)   r*   s           r-   Ú*test_extract_triangulation_positional_maskr;   +   sX   € àˆ6€DÚ’y¢9 +¨tÐ4€Dä×Ñ×8Ñ8¸¸rÓBñ .€BˆˆJ˜˜u gàˆ=Ðˆ=Ø�T�FŠ?Ð‰?r/   c                  óì  — g d¢} g d¢}t        j                  t        d¬«      5  t        j                  | ddg«       d d d «       t        j                  t        d¬«      5  t        j                  | |g d¢«       d d d «       t        j                  t        d	¬«      5  t        j                  | |d
«       d d d «       t        j                  t        d¬«      5  t        j                  | |g d¢g«       d d d «       t        j                  t        d¬«      5  t        j                  | |g d¢g«       d d d «       y # 1 sw Y   ŒþxY w# 1 sw Y   ŒÍxY w# 1 sw Y   ŒžxY w# 1 sw Y   ŒlxY w# 1 sw Y   y xY w)Nr   r   zx and y must be equal-length©Úmatchr   r   z>triangles must be a \(N, 3\) int array, but found shape \(3,\)r   z3triangles must be a \(N, 3\) int array, not 'other'Úotherzfound value 99)r   r   éc   zfound value -1)r   r   r   ©r3   ÚraisesÚ
ValueErrorr   r   ©r+   r,   s     r-   Útest_triangulation_initrE   7   s6  € Ú€AÚ€AÜ	�‰”zÐ)GÔ	Hñ &Ü×Ñ˜1˜q !˜fÔ%÷&ä	�‰Üðô
ñ ,ô 	×Ñ˜1˜a¢Ô+÷	,ô
 
�‰ÜØHô
Jñ *ô 	×Ñ˜1˜a Ô)÷*ô 
�‰”zÐ)9Ô	:ñ /Ü×Ñ˜1˜a¢* Ô.÷/ä	�‰”zÐ)9Ô	:ñ /Ü×Ñ˜1˜a¢* Ô.÷/ð /÷&ð &ú÷,ð ,ú÷
*ð *ú÷/ð /ú÷/ð /ús;   ¤D:Á EÂEÃEÄE*Ä:EÅEÅEÅE'Å*E3c                  óÄ  — g d¢} g d¢}g d¢g d¢g}t        j                  | ||«      }t        |j                  g d¢g d¢g«       |j	                  ddg«       t        |j
                  ddg«       |j	                  d «       |j
                  �J ‚d	}g d
¢dgdgddfD ]7  }t        j                  t        |¬«      5  |j	                  |«       d d d «       Œ9 y # 1 sw Y   ŒDxY w)Nr   r   r   )r   r   r   )r   r   r   )r   r   r   FTz3mask array must have same length as triangles array)FTFr=   )	r   r   r   Ú	neighborsÚset_maskr   r3   rB   rC   )r+   r,   r   ÚtriangÚmsgr   s         r-   Útest_triangulation_set_maskrK   K   sÚ   € Ú€AÚ€AÚšIÐ&€IÜ×Ñ  1 iÓ0€Fô �v×'Ñ'ª+²{Ð)CÔDð ‡O�O�U˜D�MÔ"Ü�v—{‘{ U¨D MÔ2ð ‡O�O�DÔØ�;‰;ÐÐÐà
@€CÚ%¨ w°°¸¸tÐDò "ˆÜ�]‰]œ:¨SÔ1ñ 	"Ø�O‰O˜DÔ!÷	"ð 	"ñ"÷	"ð 	"ús   Â9CÃC	c                  ó  — d} d}t        j                  t        j                  dd| «      t        j                  dd|«      «      \  }}|j                  «       }|j                  «       }| |z  }d| dz
  z  |dz
  z  }d| z  |z  d| z  z
  d|z  z
  dz   }t	        j
                  ||«      }t        |j                  |«       t        |j                  |«       t        |j                  «      |k(  sJ ‚t        j                  |j                  «      dk(  sJ ‚t        j                  |j                  «      |dz
  k(  sJ ‚t        |j                  «      |k(  sJ ‚t        j                  |j                  «      dk(  sJ ‚t        j                  |j                  «      |dz
  k(  sJ ‚|j                  }d |_        t!        |j                  |«       t!        t        j"                  |j                  «      t        j$                  |«      «       y )	Né   é   ç        ç      ð?r   r   r   r   )ÚnpÚmeshgridÚlinspaceÚravelr   r   r   r+   r,   Úlenr   ÚminÚmaxÚedgesrG   Ú
_neighborsr   ÚuniqueÚarange)	ÚnxÚnyr+   r,   ÚnpointsÚ
ntrianglesÚnedgesrI   rG   s	            r-   Útest_delaunayra   b   s¹  € à	
€BØ	
€BÜ�;‰;”r—{‘{ 3¨¨RÓ0´"·+±+¸cÀ3ÈÓ2KÓL�D€A€qØ	�‰‹	€AØ	�‰‹	€AØ�‰e€GØ�b˜‘d‘˜r !™tÑ$€JØˆr‰T�"‰W�q˜‘t‰^˜a ™dÑ" QÑ&€Fô ×Ñ  1Ó%€Fô ˜fŸh™h¨Ô*Ü˜fŸh™h¨Ô*ô ˆv×ÑÓ  JÒ.Ð.Ð.Ü�6‰6�&×"Ñ"Ó# qÒ(Ð(Ð(Ü�6‰6�&×"Ñ"Ó# w¨q¡yÒ0Ð0Ð0ô ˆv�|‰|Ó Ò&Ð&Ð&Ü�6‰6�&—,‘,Ó 1Ò$Ð$Ð$Ü�6‰6�&—,‘,Ó 7¨1¡9Ò,Ð,Ð,ð
 × Ñ €IØ€FÔÜ�v×'Ñ'¨Ô3ô ”r—y‘y ×!1Ñ!1Ó2´B·I±I¸gÓ4FÕGr/   c                  ó¶  — d} d}d}t         j                  j                  d«       t         j                  j                  | «      }t         j                  j                  | «      }||   ||<   ||   ||<   t        j                  ||«      }t        t        j                  |j                  «      t        j                  t        j                  | «      |«      «       y )Né
   é   r   é   )
rQ   ÚrandomÚseedr   r   r   rZ   r   Údeleter[   )r^   Ú	duplicateÚduplicate_ofr+   r,   rI   s         r-   Útest_delaunay_duplicate_pointsrk   Œ   sª   € Ø€GØ€IØ€Lä‡I�I‡N�N�2ÔÜ
�	‰	×Ñ˜Ó!€AÜ
�	‰	×Ñ˜Ó!€AØ�\‘?€A€i�LØ�\‘?€A€i�Lô ×Ñ  1Ó%€Fô ”r—y‘y ×!1Ñ!1Ó2Ü—y‘y¤§¡¨7Ó!3°YÓ?õAr/   c                  ól  — t        j                  ddd«      } t        j                  ddd«      }t        j                  t        «      5  t        j                  | |«       d d d «       t        j                  | d«      } t        j                  |d«      }t        j                  | |«       y # 1 sw Y   ŒLxY w)NrO   ç      $@é   ç       @g       @)rQ   rS   r3   rB   ÚRuntimeErrorr   r   ÚappendrD   s     r-   Útest_delaunay_points_in_linerr       s‹   € ô 	�‰�C˜˜rÓ"€AÜ
�‰�C˜˜rÓ"€AÜ	�‰”|Ó	$ñ !Ü×Ñ˜1˜aÔ ÷!ô 	�	‰	�!�SÓ€AÜ
�	‰	�!�SÓ€AÜ×Ñ�q˜!Õ÷!ð !ús   ÁB*Â*B3zx, yr   rM   r   é   )r   r   r   )rM   rs   rM   ©r   r   r   )rM   rs   rs   )r   r   r   r   r   r   )rM   rM   rM   rs   rM   rs   c                 óŒ   — t        j                  t        «      5  t        j                  | |«       d d d «       y # 1 sw Y   y xY w©NrA   rD   s     r-   Ú!test_delaunay_insufficient_pointsrw   ®   s5   € ô 
�‰”zÓ	"ñ !Ü×Ñ˜1˜aÔ ÷!÷ !ñ !ús	   š:ºAc            
      óx  ‡— t        j                  ddgddgddgddgddgd	d
gddgg«      } t        j                  ddgddgddgddgddgddgddgg«      }d„ Šˆfd„}t        j                  | d d …df   | d d …df   «      }|D ]  } |||«      dk(  rŒJ ‚ t        j                  | dd …df   | dd …df   «      }y )Ng¨LXèz¶ë?g     à¿gCM‹«?è?g~9B.ÜÈä?g     à¿gè/7ÑRá?gÞÇÒ9ûé?g     Ú¿gH¾ÇÜC„æ?g     Ú¿g³´¼tã?g     Ú¿g�Âõ(\�â?gq=
×£pÝ¿gÍÌÌÌÌÌä?gáz®GáÚ¿çffffffæ?g¸…ëQ¸Þ¿g)\�Âõ(Ü¿ç      è?çš™™™™™é?c                 óx   — t        j                  | |f«      j                  }t        |«      j	                  |«      S rv   )rQ   ÚvstackÚTr   Úcontains_point)ÚxtriÚytriÚxyÚ
tri_pointss       r-   Útri_contains_pointz0test_delaunay_robust.<locals>.tri_contains_pointÕ   s0   € Ü—Y‘Y  d˜|Ó,×.Ñ.ˆ
Ü�JÓ×.Ñ.¨rÓ2Ð2r/   c                 óH   •‡ ‡— t        ˆˆ ˆfd„‰ j                  D «       «      S )Nc              3   óf   •K  — | ](  } ‰‰j                   |   ‰j                  |   ‰«      –— Œ* y ­wrv   rD   )Ú.0Útrir„   rI   r‚   s     €€€r-   ú	<genexpr>zCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>Ý   s2   øè ø€ ò 0Øñ & f§h¡h¨s¡m°V·X±X¸c±]ÀB×Gñ 0ùs   ƒ.1)Úsumr   )rI   r‚   r„   s   ``€r-   Útris_contain_pointz0test_delaunay_robust.<locals>.tris_contain_pointÜ   s#   ú€ Üõ 0Ø$×.Ñ.ô0ó 0ð 	0r/   r   r   )rQ   ÚarrayÚasarrayr   r   )rƒ   Útest_pointsr‹   rI   Ú
test_pointr„   s        @r-   Útest_delaunay_robustr�   ¾   s  ø€ ô —‘Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð1Ð2ð4ó 5€Jô —*‘*Ø	ˆuˆØ	ˆuˆØ	ˆuˆØ	ˆeˆØ	ˆeˆØ	ˆuˆØ	ˆeˆðó €Kò3ô0ô ×Ñ 
ª1¨a¨4Ñ 0°*ºQÀ¸TÑ2BÓC€FØ!ò ;ˆ
Ù! &¨*Ó5¸Ó:Ð:Ð:ð;ô
 ×Ñ 
¨1©2¨q¨5Ñ 1°:¸a¹bÀ!¸eÑ3DÓE�Fr/   ztripcolor1.pngc                  ó˜  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g
«      }t        j                  | ||«      }| d|z  z   }| |j                     j                  d¬«      }||j                     j                  d¬«      }d|z  |z   }t        j                  d«       t        j                  ||d¬«       t        j                  d«       t        j                  d«       t        j                  ||d¬«       t        j                  d«       y )N)
r   ç      à?r   r   r’   r   r   r’   r   rz   )
r   r   r   r’   r’   r’   r   r   r   rz   ©r   r   r   )r   rN   r   ©r   r   rN   )r   rM   rN   )r   rN   rs   )rN   rd   rs   )rN   rM   é	   )rd   rN   r•   )é   rd   r•   )rM   r–   r•   r’   r   ©Úaxiséy   Úk)Ú
edgecolorszpoint colorséz   )Ú
facecolorsr›   r�   )
rQ   r�   r   r   r   ÚmeanÚpltÚsubplotÚ	tripcolorÚtitle)r+   r,   r   rI   ÚCpointsÚxmidÚymidÚCfacess           r-   Útest_tripcolorr§   ë   s  € ä
�
‰
Ò>Ó?€AÜ
�
‰
Ò>Ó?€AÜ—
‘
Ú’9Ú’9Ú’9Ú’9šiªð	4ó 5€Iô ×Ñ  1 iÓ0€Fà�#�a‘%‰i€GàˆV×ÑÑ×#Ñ#¨Ð#Ó+€DØˆV×ÑÑ×#Ñ#¨Ð#Ó+€DØ�‰X˜‰_€Fä‡K�K�ÔÜ‡M�M�&˜'¨cÕ2Ü‡I�IˆnÔä‡K�K�ÔÜ‡M�M�& V¸Õ<Ü‡I�IˆlÕr/   c                  óÈ  — g d¢} g d¢}t        j                  «       \  }}t        j                  t        d¬«      5  |j                  | |«       d d d «       t        j                  t        d¬«      5  |j                  | |g d¢«       d d d «       t        j                  t        d¬«      5  |j                  | |g d¢¬	«       d d d «       t        j                  t        d
¬«      5  |j                  | |ddgd¬«       d d d «       t        j                  t        d
¬«      5  |j                  | |ddgd¬«       d d d «       t        j                  t        d¬«      5  |j                  | |g d¢¬«       d d d «       t        j                  t        d¬«      5  |j                  | |ddgd«       d d d «       |j                  | |g d¢«       |j                  | |g d¢d¬«       |j                  | |ddg«       |j                  | |ddg¬	«       y # 1 sw Y   �Œ¿xY w# 1 sw Y   �Œ“xY w# 1 sw Y   �ŒfxY w# 1 sw Y   �Œ8xY w# 1 sw Y   �Œ
xY w# 1 sw Y   ŒÜxY w# 1 sw Y   Œ®xY w)Nr   r   z!tripcolor\(\) missing 1 required r=   z!The length of c must match either©r   r   r   z,length of facecolors must match .* triangles)r   r   r   rN   ©r�   z-'gouraud' .* at the points.* not at the facesr   r   Úgouraud)r�   Úshading)r¬   z+positional.*'c'.*keyword-only.*'facecolors')ÚCzUnexpected positional parameterÚunused_positional)rŸ   Úsubplotsr3   rB   Ú	TypeErrorr¡   rC   )r+   r,   ÚfigÚaxs       r-   Útest_tripcolor_colorr³     s  € Ú€AÚ€AÜ�l‰l‹n�G€CˆÜ	�‰”yÐ(LÔ	Mñ Ø
�‰�Q˜Ô÷ä	�‰”zÐ)LÔ	Mñ &Ø
�‰�Q˜š9Ô%÷&ä	�‰”zØKô
Mñ 4à
�‰�Q˜¢lˆÔ3÷4ô 
�‰”zØLô
Nñ Aà
�‰�Q˜ q¨! f°iˆÔ@÷Aô 
�‰”zØLô
Nñ 6à
�‰�Q˜˜A˜q˜6¨9ˆÔ5÷6ô 
�‰”yØJô
Lñ +à
�‰�Q˜š\ˆÔ*÷+ô 
�‰”yÐ(IÔ	Jñ 8Ø
�‰�Q˜˜A˜q˜6Ð#6Ô7÷8ð ‡L�L��A’|Ô$Ø‡L�L��A’|¨Y€LÔ7Ø‡L�L��A˜˜1�vÔØ‡L�L��A 1 a &€LÕ)÷/ñ ú÷&ñ &ú÷4ñ 4ú÷Añ Aú÷6ñ 6ú÷+ð +ú÷8ð 8úsS   »HÁ1HÂ*H%Ã$H2ÄH?ÅIÆIÈHÈH"È%H/È2H<È?I	ÉIÉI!c                  ó¼  — t         j                  j                  d«       t         j                  j                  d«      t         j                  j                  d«      t         j                  j                  d«      }}} t	        j
                  «       j                  «       }d}|j                  | |||¬«      j                  }|j                  |j                  f|k(  sJ ‚y )Ni!N,rc   )ç      Ð?rz   )Úclim)rQ   rf   rg   ÚrandrŸ   ÚfigureÚadd_subplotr¡   ÚnormÚvminÚvmax)r   r   Úcr²   r¶   rº   s         r-   Útest_tripcolor_climr¾   %  s–   € Ü‡I�I‡N�N�8ÔÜ�i‰i�n‰n˜RÓ ¤"§)¡)§.¡.°Ó"4´b·i±i·n±nÀRÓ6Hˆ!€q€Aä	�‰‹×	!Ñ	!Ó	#€BØ€DØ�<‰<˜˜1˜a dˆ<Ó+×0Ñ0€DØ�I‰I�t—y‘yÐ! TÒ)Ð)Ñ)r/   c                  ó^  — g d¢} g d¢}ddg}t        j                  «       \  }}t        j                  t        d¬«      5  |j                  | |||¬«       d d d «       t        j                  t        d¬«      5  |j                  | |d|¬«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)	Nr   r   çš™™™™™Ù?r’   z"Positional parameter c .*no effectr=   rª   zinterpreted as c)rŸ   r¯   r3   ÚwarnsÚUserWarningr¡   )r+   r,   r½   r±   r²   s        r-   Útest_tripcolor_warningsrÃ   /  sš   € Ú€AÚ€AØ	ˆcˆ
€AÜ�l‰l‹n�G€Cˆä	�‰”kÐ)MÔ	Nñ ,Ø
�‰�Q˜˜1¨ˆÔ+÷,ä	�‰”kÐ)MÔ	Nñ =Ø
�‰�Q˜Ð-¸!ˆÔ<÷=ð =÷,ð ,ú÷=ð =ús   ¿BÁ8B#ÂB Â#B,c                  ó  — t        j                  g d¢g d¢gt         j                  ¬«      } t        j                  g d¢«      }| j                  «       }t	        j
                  |d d …df   |d d …df   | «      j                   t        || «       y )N©r   r   r   )r   r   r   ©Údtype))r   r   )r   gš™™™™™ñ?)r   r   )r   r   r   r   )rQ   rŒ   Úint32Úcopyr   r   rX   r   )r   ÚpointsÚold_triangless      r-   Útest_no_modifyrÌ   ;  sh   € ä—‘š)¢YÐ/´r·x±xÔ@€IÜ�X‰XÒ8Ó9€Fà—N‘NÓ$€MÜ×Ñ�vša ˜d‘| VªA¨q¨D¡\°9Ó=×CÒCÜ�} iÕ0r/   c                  ó¨  — t        j                  t        j                  d«      t        j                  d«      «      \  } }| j                  «       } |j                  «       }g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t        j                  t        |«      «      }d|dd t        j                  | |||«      }|j                  «       }g d¢}g d¢}t        j                  ||«      \  }}|j                  «       }|j                  «       } |||«      }t        |g d¢«        ||dz
  |dz
  «      }t        |g d¢«       g d¢}g d¢} |||«      }t        |g d¢«       ddg}ddg} |||«      }t        |d d!g«       d}	g d"¢} d#d d d d |	dg}g d$¢g d%¢g d&¢g d¢g d'¢g d(¢g d)¢g d*¢g}t        j                  | ||«      }|j                  «       }g d+¢}d,d-g}t        j                  ||«      \  }} |||«      }t        |g d.¢g d/¢g«       d}	d#|	 d d d d dg} g d0¢}g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d*¢g}t        j                  | ||«      }|j                  «       }d,d-g}g d+¢}t        j                  ||«      \  }} |||«      }t        |d#d#gd d8gd d8gd d9gdd9gdd:gd#d#gg«       g d;¢} g d<¢}g d1¢g d=¢g}t        j                  | ||«      }|j                  «       }g d>¢}g d?¢} |||«      }t        |g d@¢«       |j                  dd g«       ||j                  «       k(  sJ ‚ |||«      }t        |g dA¢«       y )BNrN   ©r   r   rN   ©r   rM   rN   ©r   r   rM   ©r   rs   rM   ©r   r   rs   ©r   rd   rs   ©rN   rM   r–   ©rM   r•   r–   ©rM   rs   r•   ©rs   rc   r•   ©rs   rd   rc   ©rd   rn   rc   ©r–   r•   é   ©r•   é   rÛ   ©r•   rc   rÝ   ©rc   é   rÝ   ©rc   rn   rà   ©rn   é   rà   r   r–   rc   )rµ   ç      ô?ç      @ç      
@)r   r   rN   r   rs   r   rc   r   rÛ   rà   é   r   r   r   r   r   r’   )r   r   r   r   r   r   r   rM   r   rd   r   rn   r   rÝ   rã   é   )r’   ç      ø?ç      @r’   ré   rê   ré   ré   rO   rP   ro   ç      @)rO   rO   rO   rë   rë   rë   rP   ro   ré   ré   ré   ré   )r   r   rN   rÝ   rã   rè   r   rà   rs   rd   rc   rn   rO   rë   r   rè   ©ré   r   r   r   r   ré   ré   r   r9   ©r   r   r   ©r   rN   r   ©r   r   rM   ©r   rN   rM   ©r   rM   rs   ©rN   rs   rM   )çš™™™™™¹¿rÀ   çÍÌÌÌÌÌì?gffffffö?gffffffþ?g333333@g333333@ró   çš™™™™™¹?)r   r   r   r   r   r   r   )r   rs   rs   rs   rd   rd   r   )ré   ré   r   r   r   r   ré   r   )r   r   rM   r©   )r   r   rN   )r   rN   rM   )r   rs   r   )r   rs   rN   rM   rs   rd   ©r   r   r   r   ©r   r   r   r   ©r   r   r   )gš™™™™™É¿çš™™™™™É?r{   g333333ó?)r’   r’   r’   r’   )r   r   r   r   )r   r   r   r   )rQ   rR   r[   rT   ÚzerosrU   r   r   Úget_trifinderr   rH   )
r+   r,   r   r   rI   Ú	trifinderÚxsÚysÚtrisÚdeltas
             r-   Útest_trifinderr  E  sj  € ä�;‰;”r—y‘y “|¤R§Y¡Y¨q£\Ó2�D€A€qØ	�‰‹	€AØ	�‰‹	€AÚšI¢y²)ºYÚšI¢y²)ºZÚš[ª*²kÂ;Úš|ª\ð;€Iô �8‰8”C˜	“NÓ#€DØ€Dˆˆ2€JÜ×Ñ  1 i°Ó6€FØ×$Ñ$Ó&€Iâ	!€BÚ	!€BÜ�[‰[˜˜RÓ �F€BˆØ	�‰‹€BØ	�‰‹€BÙ�R˜Ó€DÜ�tò >ô ?á�R˜‘V˜R ™VÓ$€DÜ�tò =ô >ò 
F€BÚ	E€BÙ�R˜Ó€DÜ�tÒGÔHð ˆsˆ€BØ
ˆsˆ€BÙ�R˜Ó€DÜ�t˜a ˜WÔ%ð €Eâ'€AØ	ˆa�!�a˜˜E 1Ð%€AÚšI¢y²)ºYÚšI¢yð2€Iä×Ñ  1 iÓ0€FØ×$Ñ$Ó&€Iâ	-€BØ
�ˆ€BÜ�[‰[˜˜RÓ �F€BˆÙ�R˜Ó€DÜ�tÒ5Ú5ð7ô 8ð €Eà	ˆeˆV�Q˜˜Q  1Ð%€AÚ'€AÚšI¢y²)ºYÚšI¢yð2€Iä×Ñ  1 iÓ0€FØ×$Ñ$Ó&€Ià
�ˆ€BÚ	-€BÜ�[‰[˜˜RÓ �F€BˆÙ�R˜Ó€DÜ�t˜r 2˜h¨¨A¨°°A°¸¸A¸ÀÀAÀÈÈAÈØ! 2˜hð(ô )ò
 	€AÚ€AÚšIÐ&€IÜ×Ñ  1 iÓ0€FØ×$Ñ$Ó&€Iâ	€BÚ	€BÙ�R˜Ó€DÜ�tš^Ô,à
‡O�O�Q˜�FÔØ˜×,Ñ,Ó.Ò.Ð.Ð.Ù�R˜Ó€DÜ�tš_Õ-r/   c                  óF  ‡‡‡— t        j                  t        j                  d«      t        j                  d«      «      \  } }| j                  «       } |j                  «       }d| z  d|z  z
  }g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t        j                  t        |«      «      }d|dd t        j                  | |||«      }t        j                  ||«      }t        j                  ||«      }t        j                  ||d¬«      }t        j                  ddd«      }	g d¢}
t        j                  |	|
«      \  }	}
|||fD ]   } ||	|
«      }t        |d|	z  d|
z  z
  «       Œ" g d¢}	|	}
t        j                  |	|
«      \  }	}
|||fD ])  } ||	|
«      }t        |j                  d gdz  gdz  «       Œ+ t        j                  dd!d«      }	g d"¢}
t        j                  |	|
«      \  }	}
|||fD ]W  } ||	|
«      }t        j                  |d|	z  d|
z  z
  «       |	dk\  |	d#k  z  |
dk\  z  |
d#k  z  }t        |j                  |«       ŒY d$\  ŠŠŠˆˆˆfd%„}ˆˆˆfd&„}t        j                  g d'¢«      } t        j                  g d(¢«      }t        j                  g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g«      }t        j                  | ||«      } || |«      } || |«      }t        j                  d1d2d3«      }	t        j                  d1d2d3«      }
t        j                  |	|
«      \  }	}
t        j                  ||d4|¬5«      } ||	|
«      }t        | ||	|
«      «       |j!                  | |«      \  }} || |«      \  }}t        ||«       t        ||«       d6}t        j                  t        j                  d1d2|dz   «      t        j                  d1d2|dz   «      «      \  } }| j                  «       } |j                  «       } || |«      }t        j                  | |t#        |dz   «      ¬7«      }t        j                  t        j                  d8d9d3«      t        j                  d8d9d3«      «      \  }	}
|	j                  «       }	|
j                  «       }
t        j                  ||«      }t        j                  ||«      }t        j                  ||d¬«      } ||	|
«      }t        j$                   ||	|
«      |z
  «      }||fD ]ƒ  }t        j$                   ||	|
«      |z
  «      }t        j&                  |«      dt        j&                  |«      z  k\  sJ ‚t        j(                  ||«      d:t        j(                  ||«      z  k\  rŒƒJ ‚ y );NrN   ç®Gáz®ó?ç)\�Âõ(@rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÞ   rß   rá   râ   r   r–   rc   Úgeom©Úkindrµ   ç      @rs   )rµ   rz   rå   r  )g      Ð¿rä   ç      ü?ræ   Tr	  )rµ   rz   rä   r	  r   )r  g)\�Âõ(Àç333333ã?c                 óD   •— ‰| dz
  dz  z  ‰|dz
  dz  z  z   ‰| z  |z  z   S )Nr’   r   r7   ©r+   r,   r   r   r½   s     €€€r-   Úquadztest_triinterp.<locals>.quadÛ  s3   ø€ Ø�!�C‘%˜!‘‰|˜a  3¡¨¡
™lÑ*¨Q¨q©S°©UÑ2Ð2r/   c                 óH   •— d‰z  | dz
  z  ‰|z  z   d‰z  |dz
  z  ‰| z  z   fS )Nr   r’   r7   r  s     €€€r-   Úgradient_quadz%test_triinterp.<locals>.gradient_quadÞ  s8   ø€ Ø�!‘�Q�s‘U‘˜a ™cÑ! 1 Q¡3¨¨#©¡;°°1±Ñ#4Ð5Ð5r/   )rù   ç&jjÙZÕ?çœÄ °rhå?rO   rP   rP   rO   )ç333333Ó?çHPüs×é?çX9´Èv¾Û?rO   rO   rP   rP   r   ©r   r   rN   ©rN   r   r   ©rN   r   rM   ©r   rM   r   ©rs   rM   r   ©rs   r   r   ©rs   r   r   rO   rP   rM   Úuser©r  Údzrn   r   rõ   rô   éd   )rQ   rR   r[   rT   rú   rU   r   r   ÚLinearTriInterpolatorÚCubicTriInterpolatorrS   r   r   r   ÚmatestrŒ   ÚgradientÚmeshgrid_trianglesÚabsrW   Údot)r+   r,   Úzr   r   rI   Úlinear_interpÚcubic_min_EÚ
cubic_geomrý   rþ   ÚinterpÚzsr  r  r  Ú
cubic_userÚ	interp_zsÚinterp_dzsdxÚinterp_dzsdyÚdzsdxÚdzsdyÚnÚdiff_linÚ
diff_cubicr   r   r½   s                            @@@r-   Útest_triinterpr6  ¬  s  ú€ ä�;‰;”r—y‘y “|¤R§Y¡Y¨q£\Ó2�D€A€qØ	�‰‹	€AØ	�‰‹	€AØˆQ‰��a‘‰€AÚšI¢y²)ºYÚšI¢y²)ºZÚš[ª*²kÂ;Úš|ª\ð;€Iô �8‰8”C˜	“NÓ#€DØ€Dˆˆ2€JÜ×Ñ  1 i°Ó6€FÜ×.Ñ.¨v°qÓ9€MÜ×+Ñ+¨F°AÓ6€KÜ×*Ñ*¨6°1¸6ÔB€Jä	�‰�T˜4 Ó	#€BÚ	!€BÜ�[‰[˜˜RÓ �F€BˆØ  +¨zÐ:ò ;ˆÙ�B˜‹^ˆÜ! " t¨B¡w°°b±Ñ'8Õ:ð;ò
 
#€BØ	€BÜ�[‰[˜˜RÓ �F€BˆØ  +¨zÐ:ò 2ˆÙ˜2˜rÓ"ˆÜ˜2Ÿ7™7 d V¨A¡X J¨q¡LÕ1ð2ô
 
�‰�T˜4 Ó	#€BÚ	!€BÜ�[‰[˜˜RÓ �F€BˆØ  +¨zÐ:ò *ˆÙ�B˜‹^ˆÜ×(Ñ(¨¨d°2©g¸¸R¹Ñ.?ÔAØ�a‘˜B !™GÑ$¨¨a©Ñ0°B¸!±GÑ<ˆÜ˜2Ÿ7™7 DÕ)ð	*ð #�I€Qˆˆ1ö3ö6ô 	�‰Ò6Ó7€AÜ
�‰Ò7Ó8€AÜ—‘š)¢Y²	º9Ú#¢Y²	º9ðFó G€Iä×Ñ  1 iÓ0€FÙˆQ�‹
€AÙ	�q˜!Ó	€Bä	�‰�R˜˜QÓ	€BÜ	�‰�R˜˜QÓ	€BÜ�[‰[˜˜RÓ �F€BˆÜ×*Ñ*¨6°1¸6ÀbÔI€JÙ˜2˜rÓ"€IÜ˜i©¨b°"«Ô6Ø#-×#6Ñ#6°q¸!Ó#<Ñ €\�<Ù" 1 aÓ(�N€UˆEÜ˜l¨EÔ2Ü˜l¨EÔ2ð 	€AÜ�;‰;”r—{‘{ 2 r¨1¨Q©3Ó/´·±¸RÀÀQÀqÁSÓ1IÓJ�D€A€qØ	�‰‹	€AØ	�‰‹	€AÙˆQ�‹
€AÜ×Ñ  1Ô0BÀ1ÀQÁ3Ó0GÔH€FÜ�[‰[œŸ™ S¨#¨qÓ1´2·;±;¸sÀCÈÓ3KÓL�F€BˆØ	�‰‹€BØ	�‰‹€BÜ×.Ñ.¨v°qÓ9€MÜ×+Ñ+¨F°AÓ6€KÜ×*Ñ*¨6°1¸6ÔB€JÙ	ˆb�"‹€BÜ�v‰v‘m B¨Ó+¨bÑ0Ó1€HØ 
Ð+ò 6ˆÜ—V‘V™F 2 r›N¨RÑ/Ó0ˆ
Ü�v‰v�hÓ 2¬¯©¨zÓ(:Ñ#:Ò:Ð:Ð:Ü—‘�x Ó*Ø”b—f‘f˜Z¨Ó4Ñ4ó5ð 	6ð 5ñ6r/   c                  ó  — dd„} d\  }}d\  }}d\  }}t        j                  |||ddddg«      }t        j                  |||ddddg«      }t        j                  g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g«      }	t        j                  |||	«      }
t	        d«      D �]í  }t        j
                  dt         j                  ¬«      }t        j
                  dt         j                  ¬«      }t        j
                  dt         j                  ¬«      }t        j
                  ddgt         j                  ¬«      }|dz  }d|||dz  f<   |dk(  rd||<   n|dk(  r	d||dz  <   n|dk(  rd||dz  <   t        j                  |
|d||f¬«      } | |||f|d d …df   «        | |||f|d d …df   «        | |||f|d d …df   «        | |||z   dz  ||z   dz  f«        | |||z   dz  ||z   dz  f«        | |||z   dz  ||z   dz  f«        | |||z   |z   dz  ||z   |z   dz  f«        | |d|z  |z   |z   dz  d|z  |z   |z   dz  f«        | ||d|z  z   |z   dz  |d|z  z   |z   dz  f«        | |||z   d|z  z   dz  ||z   d|z  z   dz  f«       �Œð y )Nc           	      ó‚  — d}d}d}|\  }}||t        j                  t        j                  ddt         j                  z  |«      «      z  z   }||t        j                  t        j                  ddt         j                  z  |«      «      z  z   }	 | |g|g«      d   }
| j                  |g|g«      \  }}|�3t        |
|d   «       t        |d   |d   «       t        |d   |d   «        | ||	«      |
z
  }| j                  ||	«      \  }}||z
  }||z
  }t        |||z  «       t        |||z  «       t        |||z  «       y)	aJ  
        Checks the continuity of interpolator (and its derivatives) near
        location loc. Can check the value at loc itself if *values* is
        provided.

        *interpolator* TriInterpolator
        *loc* location to test (x0, y0)
        *values* (optional) array [z0, dzx0, dzy0] to check the value at *loc*
        é   ç»½×Ùß|Û=g      Y@rO   r   r   Nr   )rQ   ÚcosrS   ÚpiÚsinr#  r   r   )ÚinterpolatorÚlocÚvaluesÚn_starÚepsilonrš   Úloc_xÚloc_yÚstar_xÚstar_yr'  ÚdzxÚdzyÚdiff_zÚtab_dzxÚtab_dzyÚdiff_dzxÚdiff_dzys                     r-   Úcheck_continuityz;test_triinterpcubic_C1_continuity.<locals>.check_continuity  sA  € ð ˆØˆØˆØ‰ˆ�Ø˜¤§¡¬¯©°B¸¼"¿%¹%¹ÀÓ(HÓ!IÑIÑIˆØ˜¤§¡¬¯©°B¸¼"¿%¹%¹ÀÓ(HÓ!IÑIÑIˆÙ˜%˜ 5 'Ó*¨1Ñ-ˆØ!×*Ñ*¨E¨7°U°GÓ<‰
ˆˆcØÐÜ% a¨°©Ô3Ü% c¨!¡f¨f°Q©iÔ8Ü% c¨!¡f¨f°Q©iÔ8Ù˜f fÓ-°Ñ1ˆØ)×2Ñ2°6¸6ÓBÑˆ�'Ø˜S‘=ˆØ˜S‘=ˆÜ˜& '¨!¡)Ô,Ü˜( G¨A¡IÔ.Ü˜( G¨A¡IÕ.r/   )rù   r  )r  r  )r  r  rO   rP   r   r  r  r  r  r  r  r  r•   rd   rÆ   r   r   r   r   r  r  r’   rë   ç      @g      @rv   )rQ   rŒ   r   r   Úrangerú   Úfloat64r!  )rN  r²   ÚayÚbxÚbyÚcxÚcyr+   r,   r   rI   Úidofr'  rG  rH  r@  Úcaser+  s                     r-   Ú!test_triinterpcubic_C1_continuityrY    sÒ  € ó/ð> �H€RˆØ!�H€RˆØ�H€RˆÜ
�‰�"�b˜"˜b " b¨"Ð-Ó.€AÜ
�‰�"�b˜"˜b " b¨"Ð-Ó.€AÜ—‘š)¢Y²	º9Ú#¢Y²	º9ðFó G€Iä×Ñ  1 iÓ0€Fä�a“ó GˆÜ�H‰H�QœbŸj™jÔ)ˆÜ�h‰h�q¤§
¡
Ô+ˆÜ�h‰h�q¤§
¡
Ô+ˆÜ—‘˜1˜a˜&¬¯
©
Ô3ˆØ�Q‰wˆØ!$ˆˆt�T˜A‘Xˆ~ÑØ�1Š9ØˆAˆdŠGØ�QŠYØˆC��q‘ŠMØ�QŠYØˆC��q‘‰MÜ×*Ñ*¨6°1¸6Ø/2°C¨jô:ˆñ 	˜ " b ¨6²!°Q°$©<Ô8Ù˜ " b ¨6²!°Q°$©<Ô8Ù˜ " b ¨6²!°Q°$©<Ô8á˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ô<Ù˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ô<Ù˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ô<á˜ 2 b¡5¨¡8¨R¡-°"°R±%¸±(¸B±Ð!?Ô@á˜ 2 b¡5¨¡8¨B¡;°Ñ"2°R¸±U¸2±X¸b±[À"Ñ4DÐ!EÔFÙ˜ 2 b¨¡e¡8¨B¡;°Ñ"2°R¸¸2¹±X¸b±[À"Ñ4DÐ!EÔFÙ˜ 2 b¡5¨¨B©¡;°Ñ"2°R¸±U¸2¸b¹5±[À"Ñ4DÐ!EÖFñ9Gr/   c            	      óÆ  — d„ } d\  }}t        j                  j                   | ||«      Ž }|j                  «        |j	                  «       }t        ||z  «      D ]‹  }t        j                  ||z  t        j                  ¬«      }d||<   t         j                  j                  ||t        j                  ||z  «      d¬«      \  }}t        t        j                  ||«      |«       Œ� d\  }	}
 | ||«      \  }}}}|d||	k\  z  z   d||
k\  z  z   }|d||	k\  z  z   d||
k\  z  z   }t        j                  ||	|	dz
  |
|
dz
  gg«      }t        j                  ||	dz
  |	|
dz
  |
gg«      }t        j                  |g d	¢g«      }t         j                  j                  |||||z  d
z   ||z  d
z   f«      }|j                  «        |j	                  «       }t        ||z  d
z   «      D ]‘  }t        j                  ||z  d
z   t        j                  ¬«      }d||<   t         j                  j                  ||t        j                  ||z  d
z   «      d¬«      \  }}t        t        j                  ||«      |«       Œ“ t        j                  dt        j                  ¬«      }t        j                  g d¢t        j                  ¬«      }t        j                  g d¢t        j                  ¬«      }d}t         j                  j                  ||||«      }|j                  «        |j	                  «       }t        |t        j                  g d¢g d¢g d¢gt        j                  ¬«      «       y )Nc                 ó€  — || z  }t        j                  t        j                  |t         j                  ¬«      t        j                  |dz
  t         j                  ¬«      t        j                  d|t         j                  ¬«      t        j                  || z
  t         j                  ¬«      t        j                  | |t         j                  ¬«      g«      }t        j                  t        j                  |t         j                  ¬«      t        j                  d|t         j                  ¬«      t        j                  |dz
  t         j                  ¬«      t        j                  | |t         j                  ¬«      t        j                  || z
  t         j                  ¬«      g«      }t        j                  dt        j                  |t         j
                  ¬«      z  t        j                  |dz
  t         j
                  ¬«       t        j                  |dz
  t         j
                  ¬«       t        j                  || z
  t         j
                  ¬«       t        j                  || z
  t         j
                  ¬«       g«      }d||d|z  dz
   |dz
  d|…<   d|d|z  dz
  d|z  dz
   |dz
  d|…<   |||| |z  | |z  ffS )zè
        Return the sparse, (n*m, n*m) matrix in coo format resulting from the
        discretisation of the 2-dimensional Poisson equation according to a
        finite difference numerical scheme on a uniform (n, m) grid.
        rÆ   r   rN   rO   r   Nr   )rQ   Úconcatenater[   rÈ   ÚonesrQ  )r3  ÚmÚlÚrowsÚcolsÚvalss         r-   Úpoisson_sparse_matrixz<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrixe  sû  € ð ˆa‰CˆÜ�~‰~Ü�I‰I�aœrŸx™xÔ(Ü�I‰I�a˜‘c¤§¡Ô*¬B¯I©I°a¸Ä"Ç(Á(Ô,KÜ�I‰I�a˜‘c¤§¡Ô*¬B¯I©I°a¸Ä"Ç(Á(Ô,KðMó Nˆô �~‰~Ü�I‰I�aœrŸx™xÔ(Ü�I‰I�a˜¤"§(¡(Ô+¬R¯Y©Y°q¸±sÄ"Ç(Á(Ô-KÜ�I‰I�a˜¤"§(¡(Ô+¬R¯Y©Y°q¸±sÄ"Ç(Á(Ô-KðMó Nˆô �~‰~ØŒb�g‰g�aœrŸz™zÔ*Ñ*Ü�W‰W�Q�q‘S¤§
¡
Ô+Ð+¬b¯g©g°a¸±cÄÇÁÔ.LÐ-LÜ�W‰W�Q�q‘S¤§
¡
Ô+Ð+¬b¯g©g°a¸±cÄÇÁÔ.LÐ-LðNó Oˆð
 !#ˆˆQˆq�‰s�1‰uˆ�a˜‘c�f˜1�fÑØ$&ˆˆQˆq‰S�‰U�1�Q‘3�q‘5Ð˜!˜A™#˜&˜q˜&Ñ!Ø�T˜4 ! A¡# q¨¡s Ð+Ð+r/   )rÛ   rN   rÆ   rP   r:  )ÚAr   Úx0Útol)rÛ   é1   r   )rP   rP   rP   rP   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   )rP   ro   rO   )ro   rP   ç      @)rO   rh  rP   )r   Ú_triinterpolateÚ_Sparse_Matrix_cooÚcompress_cscÚto_denserP  rQ   rú   rQ  Ú_cgr   r&  r\  r]  rŒ   rÈ   )rc  r3  r^  ÚmatÚ	mat_denseÚitestr   r+   Ú_Úi_zeroÚj_zerorb  r`  ra  Údims                  r-   Útest_triinterpcubic_cg_solverru  a  s	  € ò,ð2 �F€QˆÜ
×
Ñ
×
1Ñ
1Ñ3HÈÈAÓ3NÐ
O€CØ×ÑÔØ—‘“€Iä�q˜‘s“ò ;ˆÜ�H‰H�Q�q‘S¤§
¡
Ô+ˆØˆˆ%‰Ü×#Ñ#×'Ñ'¨#°´r·x±xÀÀ!Á³}Ø,2ð (ó 4‰ˆˆ1ä!¤"§&¡&¨°AÓ"6¸Õ:ð;ð  Ñ€VˆVÙ/°°1Ó5Ñ€Dˆ$��aØ�!�T˜V‘^Ñ$Ñ$ q¨$°&©.Ñ'9Ñ9€DØ�!�T˜V‘^Ñ$Ñ$ q¨$°&©.Ñ'9Ñ9€Dä�>‰>˜4 &¨&°©(°F¸FÀ1¹HÐ!EÐFÓG€DÜ�>‰>˜4 &¨¡(¨F°F¸1±H¸fÐ!EÐFÓG€DÜ�>‰>˜4Ò!1Ð2Ó3€DÜ
×
Ñ
×
1Ñ
1°$¸¸dØ34°Q±3¸±7¸A¸a¹CÀ!¹GÐ2DóF€Cà×ÑÔØ—‘“€Iä�q˜‘s˜Q‘w“ò ;ˆÜ�H‰H�Q�q‘S˜1‘W¤B§J¡JÔ/ˆØˆˆ%‰Ü×#Ñ#×'Ñ'¨#°´r·w±w¸qÀ1¹uÀq¹yÓ7IØ,2ð (ó 4‰ˆˆ1ä!¤"§&¡&¨°AÓ"6¸Õ:ð;ô �7‰7�2œRŸZ™ZÔ(€DÜ�8‰8ÒGÜŸ(™(ô$€Dä�8‰8ÒGÜŸ(™(ô$€Dà
€CÜ
×
Ñ
×
1Ñ
1°$¸¸dÀCÓ
H€CØ×ÑÔØ—‘“€IÜ˜i¬¯©Ú’l¢Lð32Ü9;¿¹ô*Eõ Fr/   c                  óN  — d\  } }t        j                  | d| z  ddg«      }t        j                  || ddg«      }t        j                  dt         j                  ¬«      }g d¢g d¢g}t        j                  dd	g«      }t        j                  dd	t         j
                  z  d
«      D �]z  }t        j                  |«      |z  t        j                  |«      |z  z   }t        j                  |«       |z  t        j                  |«      |z  z   }	t        j                  ||	|«      }
t        j                  |
|d¬«      }t        j                  j                  |«      }|j                  «       }t        j                  |d«      dz
  |dd d …f<   t        d«      D ]/  }t        j                  |d«      d	|d d …|f   z  z
  ||dz   d d …f<   Œ1 t!        t        j"                  t        j$                  |«      d¬«      t        j                  ddgt         j                  ¬«      «       �Œ} y )N)rO   gË¡E¶óýú?r’   rO   rP   rN   rÆ   r   rø   r   rà   r  r  r   r   r   r—   )rQ   rŒ   rú   rQ  rS   r<  r;  r=  r   r   r!  ri  Ú_DOF_estimator_geomÚcompute_geom_weightsrŠ   rP  r   rV   r%  )r²   rR  r+   r,   r'  r   Úsum_wÚthetaÚx_rotÚy_rotrI   r*  Údof_estimatorÚweightsÚitris                  r-   Ú test_triinterpcubic_geom_weightsr€  ¯  sÀ  € ð
 �H€RˆÜ
�‰�"�c˜"‘f˜b "Ð%Ó&€AÜ
�‰�"�r�c˜2˜rÐ"Ó#€AÜ
�‰�œ"Ÿ*™*Ô%€AÚšIÐ&€IÜ�H‰H�a˜�VÓ€EÜ—‘˜R ¤2§5¡5¡¨"Ó-ó HˆÜ—‘�u“˜a‘¤"§&¡&¨£-°¡/Ñ1ˆÜ—‘˜“�˜qÑ ¤2§6¡6¨%£=°¡?Ñ2ˆÜ×#Ñ# E¨5°)Ó<ˆÜ×.Ñ.¨v°q¸vÔFˆ
Ü×,Ñ,×@Ñ@ÀÓLˆØ×4Ñ4Ó6ˆä—f‘f˜W aÓ(¨1Ñ,ˆˆa’ˆd‰Ü˜!“Hò 	GˆDÜ!Ÿv™v g¨qÓ1°A°gºaÀ¸gÑ6FÑ4FÑFˆE�$�q‘&š!�)Òð	Gä!¤"§&¡&¬¯©°«¸QÔ"?Ü"$§(¡(¨B°¨8¼2¿:¹:Ô"Fö	HñHr/   c                  ó8  — d} t        j                  g d¢«      }t        j                  ddddd| dg«      }ddgddgddgddgddgddgg}|D �]Ë  }|d   |z  |d   |z  z   }|d    |z  |d   |z  z   }||}}d|z  d	|z  z
  }	g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}
t        j                  |||
«      }t        j                  t        j
                  |j                  «      t        j                  |j                  «      d«      }t        j                  t        j
                  |j                  «      t        j                  |j                  «      d«      }t        j                  ||«      \  }}|j                  «       }|j                  «       } |j                  «       ||«      dk(  }t         j                  j                  d|z  d	|z  z
  |¬«      }t        j                  ||	«      }t        j                  ||	«      }t        j                  ||	d¬«      }|||fD ]  } |||«      }t        ||«       Œ d}|j                   |df   }|j                   |df   }t        j                  |j                  |   |j                  |   d«      }t        j                  |j                  |   |j                  |   d«      }d|z  d	|z  z
  }|||fD ]J  }|j#                  |||t        j$                  dt         j&                  ¬«      z  ¬«      \  }t        ||«       ŒL �ŒÎ y )NrO   rì   r   r   r   r   éþÿÿÿr  r  r9   rí   rî   rÐ   rï   rð   rñ   rò   é   r   r  r  rN   rc   rÆ   )Ú	tri_index)rQ   rŒ   r   r   rS   rV   r+   rW   r,   rR   rT   rû   Úmar   r!  r   r   Ú_interpolate_multikeysr]  rÈ   )r   re  Úy0ÚtransformationsÚtransformationr{  r|  r+   r,   r'  r   rI   rý   rþ   Úmask_outÚ	zs_targetr(  r)  r*  r+  r,  r  Úpt1Úpt2s                           r-   Útest_triinterp_colinearrŽ  É  só  € ð €Eä	�‰Ò1Ó	2€BÜ	�‰�2˜˜A  1 e¨QÐ/Ó	0€Bð ˜1�v  1˜v¨¨1 v°°1¨v¸¸B°xÀ"ÀaÀÐI€OØ)ó #5ˆØ˜qÑ! "Ñ$ ~°aÑ'8¸Ñ';Ñ;ˆØ Ñ"Ð" 2Ñ%¨°qÑ(9¸"Ñ(<Ñ<ˆØ˜ˆAˆØ�‰F�T˜!‘V‰OˆÚ¢	ª9²iÂÚ¢	ª9ð6ˆ	ä×#Ñ# A q¨)Ó4ˆÜ�[‰[œŸ™ §¡Ó)¬2¯6©6°&·(±(Ó+;¸RÓ@ˆÜ�[‰[œŸ™ §¡Ó)¬2¯6©6°&·(±(Ó+;¸RÓ@ˆÜ—‘˜R Ó$‰ˆˆBØ�X‰X‹ZˆØ�X‰X‹ZˆØ*�F×(Ñ(Ó*¨2¨rÓ2°bÑ8ˆÜ—E‘E—K‘K  R¡¨$¨r©'Ñ 1¸�KÓAˆ	ä×2Ñ2°6¸1Ó=ˆÜ×/Ñ/°¸Ó:ˆÜ×.Ñ.¨v°q¸vÔFˆ
à$ k°:Ð>ò 	5ˆFÙ˜˜B“ˆBÜ% i°Õ4ð	5ð ˆØ×Ñ˜t Q˜wÑ'ˆØ×Ñ˜t Q˜wÑ'ˆÜ�[‰[˜Ÿ™ #™¨¯©°©°rÓ:ˆÜ�[‰[˜Ÿ™ #™¨¯©°©°rÓ:ˆØ˜‘G˜d 2™gÑ%ˆ	Ø$ k°:Ð>ò 	5ˆFØ×/Ñ/Ø�B $¤r§w¡w¨r¼¿¹Ô'BÑ"Bð 0ó D‰CˆBä% i°Õ4ò	5ñA#5r/   c                  ó¨  — d} d}d}d„ }t        j                  |d|«      }t        j                  d| z   dt         j                  z  | z   | d¬	«      }t        j                  |d
t         j                  f   |d¬«      }|d d …dd d…fxx   t         j                  | z  z  cc<   |t        j
                  |«      z  j                  «       }|t        j                  |«      z  j                  «       }t        j                  ||«      } |||«      }	t        j                  ddd«      }
t        j                  ddd«      }t        j                  |
|«      \  }
}|
j                  «       }
|j                  «       }i }t        d«      D �]�  }dt         j                  z  | z  |z  }t        j
                  |«      |z  t        j                  |«      |z  z   }t        j                  |«       |z  t        j
                  |«      |z  z   }t        j
                  |«      |
z  t        j                  |«      |z  z   }t        j                  |«       |
z  t        j
                  |«      |z  z   }t        j                  |||j                  «      }t        j                  ||	«      }t        j                  ||	«      }t        j                  ||	d¬«      }|||dœ}dD ];  }||   }|dk(  r ||
|«      ||<   Œ |||«      }t!        j"                  |||   «       Œ= �Œ� d}dD ]»  }|dk(  r||z  }|}||
z  }|}n|}||z  }|
}||z  }t        j                  |||j                  «      }t        j                  ||	«      }t        j                  ||	«      }t        j                  ||	d¬«      }|||dœ}dD ]'  } ||   ||«      }t!        j"                  |||   «       Œ) Œ½ y )Nrƒ  rc   ç333333Ã?c                 ó‚  — t        j                  d| z
  d|z
  «      }t        j                  d| z
  d|z
  «      }t        j                  |  dz
  | dz
  «      }t        j                  |  dz
  | dz
  «      }dt        j                  |dz  dz  «      dz
  z  dz  t        j                  d|z  «      z  t        j                  |dz  dz  «      dz
  dz  t        j                  d|z  «      z  z   d	| dz  |dz  z   z  z    }t        j
                  |«      |z
  t        j
                  |«      t        j                  |«      z
  z  S ©
Nr’   rù   r   rc   r   g      >@ç      @g      &@ry   ©rQ   ÚhypotÚarctan2Úexpr;  rW   rV   ©r+   r,   Úr1Útheta1Úr2Útheta2r'  s          r-   r'  z)test_triinterp_transformations.<locals>.z  ó"  € Ü�X‰X�c˜A‘g˜s Q™wÓ'ˆÜ—‘˜C !™G S¨1¡WÓ-ˆÜ�X‰X�q�b˜3‘h   S¡Ó)ˆÜ—‘˜Q˜B ™H q b¨3¡hÓ/ˆØ”—‘˜˜B™ ™
Ó# AÑ%Ñ& sÑ*¬R¯V©V°B°v±IÓ->Ñ>Ü�v‰v�r˜"‘u˜q‘jÓ! !Ñ# SÑ(¬2¯6©6°#°f±*Ó+=Ñ=ñ>à�1�a‘4˜!˜Q™$‘;Ññ ð !ˆô —‘�q“	˜!‘œbŸf™f Q›i¬¯©¨q«	Ñ1Ñ2Ð2r/   çffffffî?r   r   F©Úendpoint.r   r—   ç      ð¿rP   re   r  r  )ÚlinÚmin_Er  g¬Z¤$.ArD   r+   )rQ   rS   r<  ÚrepeatÚnewaxisr;  Úflattenr=  r   r   rR   rT   rP  r   r   r!  r"  r   )Ún_anglesÚn_radiiÚ
min_radiusr'  ÚradiiÚanglesre  r‡  Útriang0Úz0Úxs0Úys0Ú	interp_z0Úi_anglerz  r+   r,   rý   rþ   rI   r(  r)  r*  Ú
dic_interpÚ
interp_keyr+  ÚinterpzÚscale_factorÚscaled_axiss                                r-   Útest_triinterp_transformationsr·    s¯  € ð €HØ€GØ€Jò3ô �K‰K˜
 D¨'Ó2€EÜ�[‰[˜˜X™ q¬¯©¡w°Ñ'9Ø!¨Eô3€Fä�Y‰Y�v˜c¤2§:¡:˜oÑ.°¸aÔ@€FØ
Š1ˆaˆd�ˆdˆ7ƒO”r—u‘u˜X‘~Ñ%ƒOØ
”—‘�v“Ñ
×	'Ñ	'Ó	)€BØ
”—‘�v“Ñ
×	'Ñ	'Ó	)€BÜ× Ñ   RÓ(€GÙ	
ˆ2ˆr‹€Bô �+‰+�c˜2˜rÓ
"€CÜ
�+‰+�c˜2˜rÓ
"€CÜ�{‰{˜3 Ó$�H€CˆØ
�)‰)‹+€CØ
�)‰)‹+€Cà€IÜ˜“8ó Hˆà”"—%‘%‘˜(Ñ" WÑ,ˆÜ�F‰F�5‹M˜"ÑœrŸv™v e›}¨RÑ/Ñ/ˆÜ�V‰V�E‹]ˆN˜2Ñ¤§¡ u£¨bÑ 0Ñ0ˆÜ�V‰V�E‹]˜3Ñ¤§¡¨£¨sÑ!2Ñ2ˆÜ�f‰f�U‹mˆ^˜CÑ¤"§&¡&¨£-°Ñ"3Ñ3ˆÜ×#Ñ# A q¨'×*;Ñ*;Ó<ˆÜ×2Ñ2°6¸2Ó>ˆÜ×/Ñ/°¸Ó;ˆÜ×.Ñ.¨v°rÀÔGˆ
Ø*Ø*Ø(ñ*ˆ
ð 3ò 	HˆJØ 
Ñ+ˆFØ˜!Š|Ù(.¨s°CÓ(8�	˜*Ò%á   R›.�Ü×0Ñ0°Ø1:¸:Ñ1FõHò	HðHð0 €LØ!ò Mˆà˜#ÒØ˜rÑ!ˆAØˆAØ Ñ#ˆBØ‰BàˆAØ˜rÑ!ˆAØˆBØ Ñ#ˆBÜ×#Ñ# A q¨'×*;Ñ*;Ó<ˆÜ×2Ñ2°6¸2Ó>ˆÜ×/Ñ/°¸Ó;ˆÜ×.Ñ.¨v°rÀÔGˆ
Ø*Ø*Ø(ñ*ˆ
ð 3ò 	MˆJØ,�j Ñ,¨R°Ó4ˆGÜ×,Ñ,¨W°iÀ
Ñ6KÕLñ	Mñ)Mr/   ztri_smooth_contouring.pngTg;ßO�—n²?)Úremove_textrf  c                  óÄ  — d} d}d}d„ }t        j                  |d|«      }t        j                  d| z   dt         j                  z  | z   | d¬	«      }t        j                  |d
t         j                  f   |d¬«      }|d d …dd d…fxx   t         j                  | z  z  cc<   |t        j
                  |«      z  j                  «       }|t        j                  |«      z  j                  «       }t        j                  ||«      } |||«      }	|j                  t        j                  ||j                     j                  d¬«      ||j                     j                  d¬«      «      |k  «       t        j                  |«      }
|
j                  |	d¬«      \  }}t        j                   ddd«      }t#        j$                  |dd¬«       t#        j&                  |||d¬«       y )Nrƒ  rc   r�  c                 ó‚  — t        j                  d| z
  d|z
  «      }t        j                  d| z
  d|z
  «      }t        j                  |  dz
  | dz
  «      }t        j                  |  dz
  | dz
  «      }dt        j                  |dz  dz  «      dz
  z  dz  t        j                  d|z  «      z  t        j                  |dz  dz  «      dz
  dz  t        j                  d|z  «      z  z   d	| dz  |dz  z   z  z    }t        j
                  |«      |z
  t        j
                  |«      t        j                  |«      z
  z  S r’  r”  r˜  s          r-   r'  z%test_tri_smooth_contouring.<locals>.zk  r�  r/   rž  r   r   FrŸ  .r   r—   rN   ©ÚsubdivrO   rP   gš™™™™™™?r’   z0.5)ÚlwÚcolorÚblack)ÚlevelsÚcolors)rQ   rS   r<  r¤  r¥  r;  r¦  r=  r   r   rH   r•  r   rž   ÚUniformTriRefinerÚrefine_fieldr[   rŸ   ÚtriplotÚ
tricontour)r§  r¨  r©  r'  rª  r«  re  r‡  r¬  r­  ÚrefinerÚtri_refiÚz_test_refirÀ  s                 r-   Útest_tri_smooth_contouringrÉ  d  sŸ  € ð €HØ€GØ€Jò3ô �K‰K˜
 D¨'Ó2€EÜ�[‰[˜˜X™ q¬¯©¡w°Ñ'9Ø!¨Eô3€Fä�Y‰Y�v˜c¤2§:¡:˜oÑ.°¸aÔ@€FØ
Š1ˆaˆd�ˆdˆ7ƒO”r—u‘u˜X‘~Ñ%ƒOØ
”—‘�v“Ñ
×	'Ñ	'Ó	)€BØ
”—‘�v“Ñ
×	'Ñ	'Ó	)€BÜ× Ñ   RÓ(€GÙ	
ˆ2ˆr‹€BØ×Ñ”R—X‘X˜b ×!2Ñ!2Ñ3×8Ñ8¸aÐ8Ó@Ø  ×!2Ñ!2Ñ3×8Ñ8¸aÐ8Ó@óBà!ñ"ô #ô
 ×$Ñ$ WÓ-€GØ#×0Ñ0°¸AÐ0Ó>Ñ€HˆkÜ�Y‰Y�r˜2˜uÓ%€FÜ‡K�K�˜C uÕ-Ü‡N�N�8˜[°ÀÖHr/   ztri_smooth_gradient.pnggZd;ßO�·?c                  óp  — d„ } d}d}d}t        j                  |d|«      }t        j                  ddt         j                  z  |d¬	«      }t        j                  |d
t         j                  f   |d¬«      }|d d …dd d…fxx   t         j                  |z  z  cc<   |t        j
                  |«      z  j                  «       }|t        j                  |«      z  j                  «       } | ||«      }t        j                  ||«      }	|	j                  t        j                  ||	j                     j                  d¬«      ||	j                     j                  d¬«      «      |k  «       t        j                  |	«      }
|
j                  |d¬«      \  }}t        j                   |	| «      }|j#                  |	j$                  |	j&                  «      \  }}t        j                  ||«      }t)        j*                  «        t)        j,                  «       j/                  d«       t)        j0                  |	d¬«       t        j2                  ddd«      }t4        j6                  d   }t)        j8                  ||||g d¢¬«       t)        j:                  |	j$                  |	j&                  ||z  ||z  ddddddd¬«       y )Nc                 óü   — | dz  |dz  z   }t        j                  || «      }t        j                  |«      |z  }t        j                  |«      |z
  t        j                  |«      t        j                  |«      z
  z  S )zAn electric dipole potential V.r   )rQ   r–  r;  rW   rV   )r+   r,   Úr_sqrz  r'  s        r-   Údipole_potentialz2test_tri_smooth_gradient.<locals>.dipole_potential�  sa   € à�!‰t�a˜‘d‰{ˆÜ—
‘
˜1˜aÓ ˆÜ�F‰F�5‹M˜$ÑˆÜ—‘�q“	˜!‘¤§¡ q£	¬"¯&©&°«)Ñ 3Ñ4Ð4r/   é   rc   rù   rž  r   r   FrŸ  .r   r—   r   r»  Úequalz0.8)r¾  rO   rP   g{®Gáz„?Úhot)ro   rP   rP   rP   )rÀ  ÚcmapÚ
linewidthsr‚   rm   Úbluegyé&1¬|?rë   rO  )ÚunitsÚscaleÚzorderr¾  ÚwidthÚ	headwidthÚ
headlength)rQ   rS   r<  r¤  r¥  r;  r¦  r=  r   r   rH   r•  r   rž   rÂ  rÃ  r!  r#  r+   r,   rŸ   r¸   ÚgcaÚ
set_aspectrÄ  r[   ÚmplÚ	colormapsrÅ  Úquiver)rÍ  r§  r¨  r©  rª  r«  r+   r,   ÚVrI   rÆ  rÇ  rÈ  ÚtciÚExÚEyÚE_normrÀ  rÑ  s                      r-   Útest_tri_smooth_gradienträ  ‹  s7  € ò5ð €HØ€GØ€JÜ�K‰K˜
 D¨'Ó2€EÜ�[‰[˜˜AœbŸe™e™G X¸Ô>€FÜ�Y‰Y�v˜c¤2§:¡:˜oÑ.°¸aÔ@€FØ
Š1ˆaˆd�ˆdˆ7ƒO”r—u‘u˜X‘~Ñ%ƒOØ	Œr�v‰v�f‹~Ñ	×&Ñ&Ó(€AØ	Œr�v‰v�f‹~Ñ	×&Ñ&Ó(€AÙ˜˜AÓ€AÜ×Ñ  1Ó%€FØ
‡O�O”B—H‘H˜Q˜v×/Ñ/Ñ0×5Ñ5¸1Ð5Ó=Ø˜v×/Ñ/Ñ0×5Ñ5¸1Ð5Ó=ó?à ñ!ô "ô
 ×$Ñ$ VÓ,€GØ#×0Ñ0°¸1Ð0Ó=Ñ€Hˆkô ×
#Ñ
# F¨Q¨BÓ
/€CØ�\‰\˜&Ÿ(™( F§H¡HÓ-�F€BˆÜ�X‰X�b˜"Ó€Fô ‡J�J„LÜ‡G�GƒI×Ñ˜Ô!Ü‡K�K�˜eÕ$ä�Y‰Y�r˜2˜tÓ$€FÜ�=‰=˜Ñ€DÜ‡N�N�8˜[°¸dÚ2õ4ô ‡J�Jˆv�x‰x˜Ÿ™ 2 f¡9¨b°©iØ ¨Q°fØ b°Rö9r/   c                  óJ  — t        j                  g d¢«      } t        j                  dddt        j                  d«      z  ddg«      }t        j                  g d¢g d¢g d	¢gt         j                  ¬
«      }t        j                  g d¢t        ¬
«      }t        j                  | |||¬«      }t        j                  |«      }t        |j                  ddg«       t        |j                  d¬«      t         j                  j                  dddt        j                  d«      z   z  t         j                  g|«      «       t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢gt         j                  ¬
«      }t        j                  | ||«      }t        j                  |«      }t        |j                  «       t        j                  dg«      «       d}d„ }t        j                  dd|dz   «      } t        j                   || d«       || d«      «      \  } }| j!                  «       } |j!                  «       }t        j                  | |t#        |dz   «      ¬«      }t        j                  |«      }|j%                  d«      }t        j&                  dt        ¬
«      }	g d¢}
d|	|
<   t)        ||	«       t        j&                  dt        ¬
«      }d|d<   |j+                  |«       |j%                  d«      }g d¢}d|	|<   t)        ||	«       y )N©rO   rP   r’   rO   ro   rO   r’   rë   r¡  rP   r   r“   r”   rÆ   ©FFTr   r   gVÍž^&á?F)Úrescalero   )rO   rP   ro   )rP   rO  r“  r•   c                 ó^   — t        j                  | «      |z  t        j                  | «      z  S rv   )rQ   r%  Úsign)r+   r   s     r-   Úpowerztest_tritools.<locals>.powerÜ  s!   € Ü�v‰v�a‹y˜!‰|œBŸG™G A›JÑ&Ð&r/   rµ   r   rù   é¢   )r   r   r   r   rà   rã   rç   rè   é   é   é"   é#   é~   é   éŽ   é�   é�   é‘   é’   é“   éž   éŸ   é    é¡   TéP   )é,   é-   é>   é?   éN   éO   rý  éQ   éR   éS   éb   r@   ét   éu   )rQ   rŒ   ÚsqrtrÈ   Úboolr   r   ÚTriAnalyzerr   Úscale_factorsÚcircle_ratiosr…  Úmasked_arrayÚnanrS   rR   rT   r$  Úget_flat_tri_maskrú   r   rH   )r+   r,   r   r   rI   Úanalyserr3  rë  Ú	mask_flatÚ
verif_maskÚcorners_indexÚcenter_indexs               r-   Útest_tritoolsr  À  ss  € ô 	�‰Ò&Ó'€AÜ
�‰�"�b˜#œbŸg™g b›k™/¨3°Ð3Ó4€AÜ—‘š)¢Y²	Ð:Ä"Ç(Á(ÔK€IÜ�8‰8Ò(´Ô5€DÜ×Ñ  1 i°dÔ;€FÜ×Ñ Ó'€HÜ˜h×4Ñ4°q¸-Ð6HÔIÜØ×Ñ uÐÓ-Ü
�‰×Ñ˜C  R¬¯©°«¡^Ñ!4´b·f±fÐ=¸tÓDôFô
 	�‰’Ó€AÜ
�‰Ò#Ó$€AÜ—‘š)˜¬B¯H©HÔ5€IÜ×Ñ  1 iÓ0€FÜ×Ñ Ó'€HÜ˜h×4Ñ4Ó6¼¿¹À"À»ÔGð 	
€Aò'ô 	�‰�C˜˜Q˜q™SÓ!€AÜ�;‰;‘u˜Q “|¡U¨1¨d£^Ó4�D€A€qØ	�‰‹	€AØ	�‰‹	€Aä×Ñ  1Ô0BÀ1ÀQÁ3Ó0GÔH€FÜ×Ñ Ó'€HØ×*Ñ*¨3Ó/€IÜ—‘˜#¤TÔ*€JòG€Mà $€Jˆ}ÑÜ�y *Ô-ô �8‰8�CœtÔ$€DØ€Dˆ�HØ
‡O�O�DÔØ×*Ñ*¨3Ó/€IÚM€LØ#€Jˆ|ÑÜ�y *Õ-r/   c                  óØ  — d} d}t        j                  dd| dz   «      }t        j                  ||«      \  }}|j                  «       }|j                  «       }t        j                  d| dz  z  t
        ¬«      }d|| dz  d  t        j                  ||t        | dz   «      |¬«      }t        j                  |«      }|j                  |¬	«      }|j                  }|j                  }	| |dz  z  }
t        j                  dd|
dz   «      }t        j                  ||«      \  }}|j                  «       }|j                  «       }t        j                  t        j                  |d
|z   z  d«      t        j                  |d
|	z   z  d«      «      }t        |d«       |j                   }t        j"                  |j                  |j$                     d¬«      dz  }t        j"                  |j                  |j$                     d¬«      dz  }|j'                  «       } |||«      }|j                   |   }t        ||«       t        j(                  g d¢«      }t        j(                  g d¢«      }t        j                  ||g d¢g d¢g«      t        j                  ||g d¢g d¢g«      g}t        j*                  |dz
  |dz
  «      }g }t-        d«      D ]�  }t        j                  ||   «      }|j/                  |d¬	«      \  }}t        j0                  |j                  |j                  |f«      d   }|t        j2                  |d d …df   |d d …df   f«         }||gz  }Œ� t5        |d   |d   «       y )Nr   r   r¡  rP   r   rÆ   Tr   r»  rê   r–   r—   rë   ©rO   rP   rO   rP   ©rO   rO   rP   rP   r“   rÅ   ©r   r   r   r  rÀ   r   )rQ   rS   rR   rT   rú   r  r   r   r$  rÂ  Úrefine_triangulationr+   r,   ÚisinÚaroundr   r   rŠ   r   rû   r�   r•  rP  rÃ  ÚdstackÚlexsortr   )r3  r¼  r+   r,   r   rI   rÆ  Úrefi_triangÚx_refiÚy_refiÚn_refiÚx_verifÚy_verifÚind1dÚ	refi_maskÚrefi_tri_barycenter_xÚrefi_tri_barycenter_yÚ
tri_finderÚrefi_tri_indicesÚrefi_tri_maskr'  Úxyz_dataÚiÚrefined_triangÚ	refined_zÚxyzs                             r-   Útest_trirefiner3  ø  s  € à	€AØ€FÜ
�‰�C˜˜Q˜q™SÓ!€AÜ�;‰;�q˜!Ó�D€A€qØ	�‰‹	€AØ	�‰‹	€AÜ�8‰8�A�a˜‘d‘F¤$Ô'€DØ€DˆˆA‰ˆ€KÜ×Ñ  1Ô0BÀ1ÀQÁ3Ó0GØ%)ô+€Fä×$Ñ$ VÓ,€GØ×.Ñ.°fÐ.Ó=€KØ�]‰]€FØ�]‰]€Fà�˜‘‰]€FÜ�k‰k˜#˜r 6¨!¡8Ó,€GÜ—{‘{ 7¨GÓ4Ñ€GˆWØ�m‰m‹o€GØ�m‰m‹o€GÜ�G‰G”B—I‘I˜g s¨7¡{Ñ3°QÓ7Ü—I‘I˜f c¨&¡jÑ1°1Ó5ó7€Eä�u˜dÔ#ð × Ñ €IÜŸF™F ;§=¡=°×1FÑ1FÑ#GØ()ô+Ø-/ñ0ÐäŸF™F ;§=¡=°×1FÑ1FÑ#GØ()ô+Ø-/ñ0Ðà×%Ñ%Ó'€JÙ!Ð"7Ø"7ó9Ðà—K‘KÐ 0Ñ1€MÜ�y -Ô0ô 	�
‰
Ò'Ó(€AÜ
�
‰
Ò'Ó(€AÜ× Ñ   Aª	²9Ð'=Ó>Ü× Ñ   Aª	²9Ð'=Ó>ð@€Fä
�‰��S‘˜!˜c™'Ó"€Aà€HÜ�1‹Xò ˆÜ×(Ñ(¨°©Ó3ˆØ$+×$8Ñ$8¸À1Ð$8Ó$EÑ!ˆ˜	Ü�i‰i˜×)Ñ)¨>×+;Ñ+;¸YÐGÓHÈÑKˆØ”"—*‘*˜c¢! Q $™i¨ªQ°¨T©Ð3Ó4Ñ5ˆØ�S�EÑ‰ðô ˜h q™k¨8°A©;Õ7r/   r>  ÚlinearÚcubic)Úidsc                 ó†  — t         j                  d d…d d…f   \  }}t        j                  |j                  «       d«      }t        j                  |j                  «       d«      }t        j                  |«      }t        j                  ||«      }t        j                  |«      } | ||«      }|j                  ||d¬«       y )Nr   )Útriinterpolatorr¼  )	rQ   Úmgridr¤  r¦  Ú
zeros_liker   r   rÂ  rÃ  )r>  r+   r,   r'  rˆ   rÆ  r+  s          r-   Útest_trirefine_maskedr;  0  sŸ   € ô �8‰8�B�Q�B˜˜˜�FÑ�D€A€qÜ
�	‰	�!—)‘)“+˜qÓ!€AÜ
�	‰	�!—)‘)“+˜qÓ!€Aä
�‰�aÓ€AÜ
×
Ñ
˜Q Ó
"€CÜ×$Ñ$ SÓ)€GÙ˜#˜qÓ!€FØ×Ñ˜¨F¸1ÐÕ=r/   c                 ó  — g }t        | dz
  «      D ]N  }t        | dz
  «      D ];  }||| z  z   }|dz   || z  z   }||dz   | z  z   }|dz   |dz   | z  z   }||||g|||ggz  }Œ= ŒP t        j                  |t        j                  ¬«      S )zU
    Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
    r   rÆ   )rP  rQ   rŒ   rÈ   )r3  rˆ   r/  Újr   r   r½   Úds           r-   r$  r$  B  s­   € ð €CÜ�1�Q‘3‹Zò *ˆÜ�q˜‘s“ò 	*ˆAØ�A�a‘C‘ˆAØ�1‘˜˜!™‘ˆAØ�Q�q‘S˜!‘G‘ˆAØ�1‘˜˜1™˜a™‘ˆAØ�Q˜˜1�I  1 a˜yÐ)Ñ)‰Cñ	*ð*ô �8‰8�CœrŸx™xÔ(Ð(r/   c                  ó¾   — t        j                  «       j                  «       } t        j                  g d¢g d¢g d¢g d¢g¬«      }| j                  |d«      €J d«       ‚y )Nr  r  r“   rÅ   r   zb-z(triplot should return the artist it adds)rŸ   r¸   r¹   r   r   rÄ  )r²   rI   s     r-   Útest_triplot_returnr@  Q  sW   € ä	�‰‹×	!Ñ	!Ó	#€BÜ×ÑÚÒ2ÚšiÐ(ô*€Fð �:‰:�f˜dÓ#Ð/ð 3Ø2ó3Ñ/r/   c                  óZ  — t        j                  g d¢g d¢g«      } t        j                  | «      rJ ‚t        j                  | dd¬«      }t        j                  |«      sJ ‚t        j                  g d¢«      }t        j                  g d¢«      }t        j                  ||| «      }t        j                  |||«      }t        j
                  |«      }t        j
                  |«      }|j                  d¬	«      }|j                  d¬	«      }	t        |j                  |	j                  «       y )
Nr  )r   r   r   TÚF)rÉ   Úorder)gö(\�ÂõØ?gáz®Gáâ?g…ëQ¸…Û?g{®GázÔ?)g…ëQ¸þ@@gáz®GA@g¸…ëQA@g×£p=
A@r   r»  )	rQ   rŒ   Ú	isfortranr   r   rÂ  r  r   r   )
Ú
triangles1Ú
triangles2r+   r,   Útriang1Útriang2Úrefiner1Úrefiner2Úfine_triang1Úfine_triang2s
             r-   Ú,test_trirefiner_fortran_contiguous_trianglesrM  [  sï   € ô —‘š9¢iÐ0Ó1€JÜ�|‰|˜JÔ'Ð'Ð'ä—‘˜*¨4°sÔ;€JÜ�<‰<˜
Ô#Ð#Ð#ä
�‰Ò)Ó*€AÜ
�‰Ò-Ó.€AÜ× Ñ   A zÓ2€GÜ× Ñ   A zÓ2€Gä×%Ñ% gÓ.€HÜ×%Ñ% gÓ.€Hà×0Ñ0¸Ð0Ó:€LØ×0Ñ0¸Ð0Ó:€Lä�|×-Ñ-¨|×/EÑ/EÕFr/   c                  ó@  — t        j                  ddd«      } t        t         j                  t        j                  | | «      «      \  }}||dz
  kD  |dk  z  |dkD  z  }||   ||   }}t        j
                  d«      }|t        j                  |«      z  |t        j                  |«      z  z
  }|t        j                  |«      z  |t        j                  |«      z  z   }t        j                  ||«      }|j                  }d |_        |j                  }	t        ||	«       y )Nr‚  r   r  r   g333333ÿ¿g333333ó¿é   )rQ   rS   ÚmaprT   rR   Úradiansr;  r=  r   r   rG   rY   r   )
Úxir+   r,   Úwrz  Úx1Úy1rI   Úqhull_neighborsÚown_neighborss
             r-   Útest_qhull_triangle_orientationrX  r  sô   € ä	�‰�R˜˜CÓ	 €BÜŒr�x‰xœŸ™ R¨Ó,Ó-�D€A€qØ	
ˆQ�‰U‰�q˜5‘yÑ! Q¨¡XÑ.€AØˆQ‰4��1‘€q€AÜ�J‰J�r‹N€EØ	
Œ2�6‰6�%‹=‰˜1œRŸV™V E›]™?Ñ	*€BØ	
Œ2�6‰6�%‹=‰˜1œRŸV™V E›]™?Ñ	*€Bô ×Ñ  BÓ'€Fð ×&Ñ&€Oð €FÔØ×$Ñ$€Mä�¨Õ6r/   c                  ó¤  — t        j                  g d¢«      } t        j                  dddt        j                  d«      z  ddg«      }t        j                  g d¢g d¢g d	¢gt         j                  ¬
«      }t        j                  g d¢t        ¬
«      }t        j                  | |||¬«      }t        j                  |«      }|j                  «        y )Nræ  rO   r’   rë   r¡  rP   r   r“   r”   rÆ   rç  r   )	rQ   rŒ   r
  rÈ   r  r   r   r  Ú_get_compressed_triangulation)r+   r,   r   r   rI   r  s         r-   Ú#test_trianalyzer_mismatched_indicesr[  ‰  s–   € ä
�‰Ò&Ó'€AÜ
�‰�"�b˜#œbŸg™g b›k™/¨3°Ð3Ó4€AÜ—‘š)¢Y²	Ð:Ä"Ç(Á(ÔK€IÜ�8‰8Ò(´Ô5€DÜ×Ñ  1 i°dÔ;€FÜ×Ñ Ó'€Hð ×*Ñ*Õ,r/   c                  óÔ   — g d¢} g d¢}g d¢}t        j                  «        t        j                  t        «      5  t        j
                  | ||ddg«       d d d «       y # 1 sw Y   y xY w)N)rO   rP   rP   )rO   rO   rP   )rù   rÀ   r
  rP   rO   )rŸ   r¸   r3   rB   rC   Útricontourf)r+   r,   r'  s      r-   Ú"test_tricontourf_decreasing_levelsr^  –  sQ   € â€AÚ€AÚ€AÜ‡J�J„LÜ	�‰”zÓ	"ñ -Ü�‰˜˜1˜a # s Ô,÷-÷ -ñ -ús   ºAÁA'c                  ó˜  — ddl m}  t        j                  t        d¬«      5  t
        j                  j                  «        d d d «       t        j                  t        d¬«      5  t
        j                  j                  t        j                  g «      t        j                  dg«      t        j                  g g«      dddd«       d d d «       t        j                  g d	¢t        j                  ¬
«      }t        j                  g d¢t        j                  ¬
«      }t        j                  t        d¬«      5  t
        j                  j                  ||t        j                  ddgg«      dddd«       d d d «       t        j                  g d¢gt        j                  ¬
«      }t        j                  t        d¬«      5  t
        j                  j                  |||t        j                  ddg«      ddd«       d d d «       t        j                  t        d¬«      5  t
        j                  j                  |||dt        j                  dgg«      dd«       d d d «       t        j                  t        d¬«      5  t
        j                  j                  |||ddt        j                  dgg«      d«       d d d «       t
        j                  j                  |||dddd«      }t        j                  t        d¬«      5  |j                  g «       d d d «       ddgd fD ]7  }t        j                  t        d¬«      5  |j                  |«       d d d «       Œ9 |j                  t        j                  dg«      «       t        |j                  «       t        j                   d«      «       |j                  d«       t        |j                  «       ddgddgddgg«       t        j                  t        d¬«      5  t
        j                  j#                  «        d d d «       t        j                  t        d¬«      5  t
        j                  j#                  |t        j                  dg«      «       d d d «       t        j                  g d¢«      }t
        j                  j#                  ||«      }t        j                  t        d¬«      5  |j%                  dd«       d d d «       t        j                  t        d¬«      5  t
        j                  j'                  «        d d d «       t
        j                  j'                  |«      }t        j                  t        d¬«      5  |j)                  t        j                  dg«      t        j                  ddg«      «       d d d «       y # 1 sw Y   �ŒexY w# 1 sw Y   �ŒîxY w# 1 sw Y   �ŒNxY w# 1 sw Y   �ŒÕxY w# 1 sw Y   �Œ„xY w# 1 sw Y   �Œ3xY w# 1 sw Y   �ŒæxY w# 1 sw Y   �ŒíxY w# 1 sw Y   �ŒøxY w# 1 sw Y   �Œ­xY w# 1 sw Y   �ŒMxY w# 1 sw Y   �ŒxY w# 1 sw Y   y xY w)Nr   )Ú_triz1__init__\(\): incompatible constructor arguments.r=   z,x and y must be 1D arrays of the same lengthr   r7   F)r   r   r   rÆ   r:   z.triangles must be a 2D array of shape \(\?,3\)r   zCmask must be a 1D array with the same length as the triangles arrayz,edges must be a 2D array with shape \(\?,2\)zGneighbors must be a 2D array with the same shape as the triangles arrayr   zMz must be a 1D array with the same length as the triangulation x and y arraysT)r   r   r   z?z must be a 1D array with the same length as the x and y arraysz(filled contour levels must be increasingz*x and y must be array-like with same shape)Ú
matplotlibr`  r3   rB   r°   rÜ  r   rC   rQ   rŒ   rQ  Úint_Úcalculate_plane_coefficientsrH   r   Ú	get_edgesÚemptyÚTriContourGeneratorÚcreate_filled_contourÚTrapezoidMapTriFinderÚ	find_many)	r`  r+   r,   rÿ   rI   r   r'  Útcgrü   s	            r-   Útest_internal_cpp_apirk     s÷  € åô 
�‰ÜØFô
Hñ !ô 	�‰×ÑÔ ÷!ô
 
�‰ÜÐMô
Oñ &ä�‰×ÑœrŸx™x¨›|¬R¯X©X°q°c«]¼B¿H¹HÀbÀT»NÈBÐPRÐTVØ$ô	&÷&ô
 	�‰’¤"§*¡*Ô-€AÜ
�‰’¤"§*¡*Ô-€AÜ	�‰ÜØCô
Eñ Lô 	�‰×Ñ˜q !¤R§X¡X°°1¨v¨hÓ%7¸¸RÀÀUÔK÷Lô
 �8‰8’Y�K¤r§w¡wÔ/€DÜ	�‰Üð%ô
&ñ Lô 	�‰×Ñ˜q ! T¬2¯8©8°Q¸°FÓ+;¸RÀÀUÔK÷	Lô 
�‰ÜÐMô
Oñ Kä�‰×Ñ˜q ! T¨2¬r¯x©x¸!¸¸«ÀÀEÔJ÷Kô 
�‰Üð%ô
&ñ Lô 	�‰×Ñ˜q ! T¨2¨r´2·8±8¸b¸T¸FÓ3CÀUÔK÷	Lô �X‰X×#Ñ# A q¨$°°B¸¸EÓB€Fä	�‰Üð2ô
3ñ 0ð 	×+Ñ+¨BÔ/÷	0ð �Q�˜�ò "ˆÜ�]‰]Üð)ô*ñ 	"ð �O‰O˜DÔ!÷		"ð 	"ð"ð ‡O�O”B—H‘H˜d˜VÓ$Ô%Ü�v×'Ñ'Ó)¬2¯8©8°FÓ+;Ô<à
‡O�O�BÔÜ�v×'Ñ'Ó)¨Q°¨F°Q¸°F¸QÀ¸FÐ+CÔDô 
�‰ÜØFô
Hñ 'ô 	�‰×$Ñ$Ô&÷'ô
 
�‰ÜØTô
Vñ <ô 	�‰×$Ñ$ V¬R¯X©X°q°c«]Ô;÷<ô
 	�‰’Ó€AÜ
�(‰(×
&Ñ
& v¨qÓ
1€Cä	�‰ÜÐIô
Kñ (à×!Ñ! ! QÔ'÷(ô
 
�‰ÜØFô
Hñ )ô 	�‰×&Ñ&Ô(÷)ô
 —‘×.Ñ.¨vÓ6€Iä	�‰ÜÐKô
Mñ =à×ÑœBŸH™H a S›M¬2¯8©8°Q¸°FÓ+;Ô<÷=ð =÷c!ñ !ú÷
&ñ &ú÷Lñ Lú÷Lñ Lú÷Kñ Kú÷Lñ Lú÷0ñ 0ú÷	"ñ 	"ú÷'ñ 'ú÷
<ñ <ú÷(ñ (ú÷
)ñ )ú÷=ð =úsœ   ¢V$Á$A!V1Ä6<V>Æ=;WÈ;WÉ9;W%Ë<W2Ì:W?Ï7XÐ95XÓX&Ó>X3Õ<Y Ö$V.Ö1V;Ö>W×W×W"×%W/×2W<×?X		ØXØX#Ø&X0Ø3X=Ù Y	c                  ó"  — t        j                  g d¢«      } t        j                  g d¢«      }d}t        j                  | |«      }t        j                  | |z   ||z   «      }t	        |j
                  «      t	        |j
                  «      k(  sJ ‚y )N)r   r   r   r   r’   )r   r   r   r   r’   g    _ B)rQ   r�   r   r   rU   r   )r+   r,   ÚoffsetrI   Útriang_offsets        r-   Útest_qhull_large_offsetro  û  su   € ä
�
‰
Ò$Ó%€AÜ
�
‰
Ò$Ó%€Aà€FÜ×Ñ  1Ó%€FÜ×&Ñ& q¨6¡z°1°v±:Ó>€MÜˆv×ÑÓ ¤C¨×(?Ñ(?Ó$@Ò@Ð@Ñ@r/   c            	      óN  — g d¢} g d¢}t        j                  | |«      }t        j                  «        t	        j
                  t        d¬«      5  t        j                  |dddt        j                  g«       d d d «       t	        j
                  t        d¬«      5  t        j                  |dddt        j                   g«       d d d «       t	        j
                  t        d¬«      5  t        j                  |dddt        j                  g«       d d d «       t	        j
                  t        d¬«      5  t        j                  |t        j                  j                  g d	¢g d
¢¬«      «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   ŒÀxY w# 1 sw Y   Œ€xY w# 1 sw Y   y xY w)Nrö   r÷   zCz array must not contain non-finite values within the triangulationr=   r   r   r   z9z must not contain masked points within the triangulation)r   r   r   r   )r   r   r   r   r   )r   r   rŸ   r¸   r3   rB   rC   r]  rQ   Úinfr  r…  rŒ   )r+   r,   rI   s      r-   Útest_tricontour_non_finite_zrr    sQ  € â€AÚ€AÜ×Ñ  1Ó%€FÜ‡J�J„Lä	�‰”zð *Kô 
Lñ 3ä�‰˜  A q¬"¯&©&Ð 1Ô2÷3ô 
�‰”zð *Kô 
Lñ 4ä�‰˜  A q¬2¯6©6¨'Ð 2Ô3÷4ô 
�‰”zð *Kô 
Lñ 3ä�‰˜  A q¬"¯&©&Ð 1Ô2÷3ô 
�‰”zð *Dô 
Eñ Nä�‰˜¤§¡§¡ªLº| Ó LÔM÷Nð N÷3ñ 3ú÷4ð 4ú÷3ð 3ú÷Nð Nús0   Á)E6Â*FÃ')FÄ3:FÅ6F ÆFÆFÆF$c                  ó&  — g d¢} g d¢}g d¢}t        j                  «       \  }}|j                  | ||«      }|j                  | ||«      }|j                  |j                  k7  sJ ‚|j                  ||«      }|j                  |j                  k(  sJ ‚y )N)rO   r’   rP   )rO   rP   rO   )rP   ro   rë   )rŸ   r¯   r]  rÅ  Ú_contour_generator)r+   r,   r'  r±   r²   Útcs1Útcs2Útcs3s           r-   Útest_tricontourset_reuserx    sŠ   € ò 	€AÚ€AÚ€AÜ�l‰l‹n�G€CˆØ�>‰>˜!˜Q Ó"€DØ�=‰=˜˜A˜qÓ!€DØ×"Ñ" d×&=Ñ&=Ò=Ð=Ð=Ø�=‰=˜˜qÓ!€DØ×"Ñ" d×&=Ñ&=Ò=Ð=Ñ=r/   c                 óª   — g d¢}g d¢}g d¢g}| j                  «       j                  |||d¬«       |j                  «       j                  |||d¬«       y )Nr9   r:   r   z--)Úls)Ú	linestyle)r¯   rÄ  )Úfig_testÚfig_refr+   r,   Údatas        r-   Útest_triplot_with_lsr  ,  sS   € â€AÚ€AÚˆ;€DØ×ÑÓ×Ñ  1 d¨tÐÔ4Ø×ÑÓ×Ñ˜q ! T°TÐÕ:r/   c                  óä   — g d¢} g d¢}g d¢g}t        j                  «       \  }}|j                  | ||d¬«      \  }}|j                  «       \  }}|dgk(  sJ ‚t	        |«      dk(  sJ ‚|d   |u sJ ‚y )Nr9   r:   r   Úlabel)r�  r   r   )rŸ   r¯   rÄ  Úget_legend_handles_labelsrU   )	r+   r,   r~  r±   r²   ÚlinesÚmarkersÚhandlesÚlabelss	            r-   Útest_triplot_labelr‡  5  s‚   € Ú€AÚ€AÚˆ;€DÜ�l‰l‹n�G€CˆØ—Z‘Z  1 d°'�ZÓ:�N€Eˆ7Ø×2Ñ2Ó4�O€GˆVØ�g�YÒÐÐÜˆw‹<˜1ÒÐÐØ�1‰:˜ÑÐÑr/   c                  óÎ  — g d¢} g d¢}t        j                  | |«      }t        j                  «       \  }}|j	                  |g d¢dg¬«      }|j                  «       }t        |«      dk(  sJ ‚ddgddgddgg}t        |d   j                  |«       t        |d   j                  g d	¢«       t        |d   j                  d
¬«      |g«       |j	                  |g d¢dg¬«      }|j                  «       }t        |«      dk(  sJ ‚ddgddgddgddgddgg}t        |d   j                  |«       t        |d   j                  g d¢«       t        |d   j                  «       |g«       y )N©r   rN   rN   r   r   ©r   r   rN   rN   r   ©r   r   r   r   r   r’   ©rÀ  r   r   r   rt   F)Úclosed_only©r   r   r   r   r   r   ©r   r   r   r   r  )r   r   rŸ   r¯   rÅ  Ú	get_pathsrU   r   Úverticesr   ÚcodesÚto_polygons©r+   r,   rI   rq  r²   ÚcsÚpathsÚexpected_verticess           r-   Útest_tricontour_pathr˜  A  s_  € Ú€AÚ€AÜ×Ñ  1Ó%€FÜ�L‰L‹N�E€A€rð 
�‰�vš¸°uˆÓ	=€BØ�L‰L‹N€EÜˆu‹:˜Š?Ðˆ?Ø˜Q˜ ! Q ¨!¨Q¨Ð0ÐÜ˜e A™h×/Ñ/Ð1BÔCÜ�u˜Q‘x—~‘~¢yÔ1ÜØˆa‰×Ñ¨ÐÓ/Ð2CÐ1DôFð 
�‰�vš¸°uˆÓ	=€BØ�L‰L‹N€EÜˆu‹:˜Š?Ðˆ?Ø˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸Ð@ÐÜ˜e A™h×/Ñ/Ð1BÔCÜ�u˜Q‘x—~‘~Ò'7Ô8Ü˜e A™h×2Ñ2Ó4Ð7HÐ6IÕJr/   c                  óV  — g d¢} g d¢}t        j                  | |«      }t        j                  «       \  }}|j	                  |g d¢ddg¬«      }|j                  «       }t        |«      dk(  sJ ‚ddgddgddgddgddgg}t        |d	   j                  |«       t        |d	   j                  g d
¢«       t        |d	   j                  «       |g«       |j	                  |g d¢ddg¬«      }|j                  «       }t        |«      dk(  sJ ‚dd	gddgd	dgd	d	gdd	gg}t        |d	   j                  |«       t        |d	   j                  g d
¢«       t        |d	   j                  «       |g«       |j	                  |g d¢ddg¬«      }|j                  «       }t        |«      dk(  sJ ‚d	d	gdd	gddgd	dgd	d	gddgddgddgddgddgg
}t        |d	   j                  |«       t        |d	   j                  g d¢«       t        |d	   j                  «       t        j                  |dg«      «       y )Nr‰  rŠ  rŽ  r’   ré   rŒ  r   r   r   r�  r‹  r   g      à¿rN   )
r   r   r   r   r  r   r   r   r   r  rM   )r   r   rŸ   r¯   r]  r�  rU   r   r‘  r   r’  r“  rQ   Úsplitr”  s           r-   Útest_tricontourf_pathr›  [  s2  € Ú€AÚ€AÜ×Ñ  1Ó%€FÜ�L‰L‹N�E€A€rð 
�‰˜¢¸¸c¸
ˆÓ	C€BØ�L‰L‹N€EÜˆu‹:˜Š?Ðˆ?Ø˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸Ð@ÐÜ˜e A™h×/Ñ/Ð1BÔCÜ�u˜Q‘x—~‘~Ò'7Ô8Ü˜e A™h×2Ñ2Ó4Ð7HÐ6IÔJð 
�‰˜¢¸¸c¸
ˆÓ	C€BØ�L‰L‹N€EÜˆu‹:˜Š?Ðˆ?Ø˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸Ð@ÐÜ˜e A™h×/Ñ/Ð1BÔCÜ�u˜Q‘x—~‘~Ò'7Ô8Ü˜e A™h×2Ñ2Ó4Ð7HÐ6IÔJð 
�‰˜¢¸¸s¸ˆÓ	D€BØ�L‰L‹N€EÜˆu‹:˜Š?Ðˆ?Ø˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸Ø˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸ðAÐä˜e A™h×/Ñ/Ð1BÔCÜ�u˜Q‘x—~‘~Ò'GÔHÜ˜e A™h×2Ñ2Ó4´b·h±hÐ?PÐSTÐRUÓ6VÕWr/   )ÚreturnN)DÚnumpyrQ   Únumpy.testingr   r   r   Únumpy.ma.testutilsr…  Ú	testutilsr"  r3   ra  rÜ  Úmatplotlib.pyplotÚpyplotrŸ   Úmatplotlib.trirˆ   r   Úmatplotlib.pathr   Úmatplotlib.testing.decoratorsr   r   r
   r;   rE   rK   ra   rk   rr   r4   r5   rw   r�   r§   r³   r¾   rÃ   rÌ   r  r6  rY  ru  r€  rŽ  r·  rÉ  rä  r  r3  r   r!  r;  r$  r@  rM  rX  r[  r^  rk  ro  rr  rx  r  r‡  r˜  r›  r7   r/   r-   ú<module>r¦     s$  ðÛ ÷Fñ Fç #Ð #Û ã Ý Ý Ý  ß O÷'ñ 'ò:ò/ò("ò.'HòTAò(ð ‡�×Ñ˜àˆ€HØ€Sˆ1ˆ#€JØˆ€Vˆa�ˆVÐò ’	ÐÚ’	ÐÚÒ+Ð,ð
"ó 
ñ!ó
ð!ò
*FñZ Ð#Ð$Ó%ñó &ðò6*ò<*ò	=ò1òd.òN\6ò~SGòlKFò\Hò4;5ò|ZMñz Ð.Ð/¸TÀuÔMñ#Ió Nð#IñL Ð,Ð-¸4ÀUÔKñ/9ó Lð/9òh5.òp58ðp ‡�×Ñ˜Ø×4Ñ4Ø×3Ñ3ð5à&¨Ð0ð ó 2ñ>ó	2ð>ò)ò3òGò.7ò.
-ò-óX=òvAòNò0>ñ Óñ;ó ð;ò	òKó4 Xr/   