ó
    {ñ:iù×  ã                   óÆ  • S SK rS SKJrJrJr  S SKJs  Jr	  S SK
r
S SKrS SKJr  S SKJr  S SKJr  S SKJrJr   " S S5      rS rS rS	 rS
 rS rS r\
R>                  RA                  S/ / 4S/S/4SS/SS/4/ SQ/ SQ4/ SQ/ SQ4/ SQ/ SQ4/5      S 5       r!S r"\" S/5      S 5       r#S r$S r%S r&S r'S  r(S! r)S" r*S# r+S$ r,S% r-S& r.\" S'/S(S)S*9S+ 5       r/\" S,/S(S-S*9S. 5       r0S/ r1S0 r2\
R>                  RA                  S1\Rf                  \Rh                  /S2S3/S49S5 5       r5S6 r6S7 r7S8 r8S9 r9S: r:S; r;SFS< jr<S= r=S> r>S? r?\" S@/SA9SB 5       r@SC rASD rBSE rCg)Gé    N)Úassert_array_equalÚassert_array_almost_equalÚassert_array_less)ÚPath)Úimage_comparisonÚcheck_figures_equalc                   ó  • \ rS rSr/ SQr/ SQr/ SQ/ SQ/rSS/r\R                  R                  S\\/0 \\S	S	/4\\\/0 \\\S	/4\\/\" \S
9\\\S	/4\\/\" \S9\\S	\/4\\\/\" \S9\\\\/4\\/\" \\S9\\\\/4/5      S 5       rSrg	)ÚTestTriangulationParamsé   ©éÿÿÿÿr   é   r   ©r   r   r   r   ©r   r   é   ©r   r   é   FTzargs, kwargs, expectedN©Ú	triangles©Úmask©r   r   c                 óÊ   • SS/nSSS.n[         R                  R                  X-   0 UEUE5      u  pgp‰p«Uu  pÍpïXlL d   eX}L d   e[        XŽ5        XŸL d   eX¤:X  d   eXµ:X  d   eg )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                   Úf/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/matplotlib/tests/test_triangulation.pyÚ!test_extract_triangulation_paramsÚ9TestTriangulationParams.test_extract_triangulation_params   s‘   € ð ˜�Vˆ
Ø SÑ)ˆä×Ñ×<Ñ<ØÑ!Ð#= fÐ#=°Ð#=ó?ñ 	2ˆ�
 5ð !)ÑˆˆiØŠwˆˆwØŠwˆˆwÜ˜:Ô1ØŠ}Ðˆ}ØÓ"Ð"Ð"ØÓ&Ð&Ñ&ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r,   r-   r   r   ÚpytestÚmarkÚparametrizeÚdictr/   Ú__static_attributes__r2   r1   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ó ñ'óó'r1   r
   c                  ó†   • S/n / SQ/ SQ/ SQ/U /n[         R                  R                  U0 5      u  p#pEpgUb   eX`/:X  d   eg )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?   +   sP   € àˆ6€DÚ’y¢9 +¨tÐ4€Dä×Ñ×8Ñ8¸¸rÓBñ .€BˆJ˜uà‰=Ðˆ=Ø�F‹?Ð‰?r1   c                  ó  • / SQn / SQn[         R                  " [        SS9   [        R                  " U SS/5        S S S 5        [         R                  " [        SS9   [        R                  " X/ SQ5        S S S 5        [         R                  " [        S	S9   [        R                  " XS
5        S S S 5        [         R                  " [        SS9   [        R                  " X/ SQ/5        S S S 5        [         R                  " [        SS9   [        R                  " X/ SQ/5        S S S 5        g ! , (       d  f       Nû= f! , (       d  f       NÑ= f! , (       d  f       N©= f! , (       d  f       N~= f! , (       d  f       g = f)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   ©r7   ÚraisesÚ
ValueErrorr   r   ©r,   r-   s     r.   Útest_triangulation_initrI   7   s  € Ú€AÚ€AÜ	�Š”zÐ)GÓ	HÜ×Ò˜1˜q !˜fÔ%÷ 
Iä	�ŠÜðó
ô 	×Ò˜1¢Ô+÷	
ô
 
�ŠÜØHó
Jô 	×Ò˜1 Ô)÷
Jô 
�Š”zÐ)9Ó	:Ü×Ò˜1¢* Ô.÷ 
;ä	�Š”zÐ)9Ó	:Ü×Ò˜1¢* Ô.÷ 
;Ð	:÷ 
IÕ	Hú÷
õ 
ú÷

Jõ 
Jú÷ 
;Õ	:úç	:Õ	:ús;   ¢D1ÁEÂEÃE$ÄE5Ä1
D?Å
EÅ
E!Å$
E2Å5
Fc                  óÒ  • / SQn / SQn/ SQ/ SQ/n[         R                  " XU5      n[        UR                  / SQ/ SQ/5        UR	                  SS/5        [        UR
                  SS/5        UR	                  S 5        UR
                  b   eS	n/ S
QS/S/SS4 H6  n[        R                  " [        US9   UR	                  U5        S S S 5        M8     g ! , (       d  f       MJ  = f)Nr   r   r   )r   r   r   )r   r   r   )r   r   r   FTz3mask array must have same length as triangles array)FTFrA   )	r   r   r   Ú	neighborsÚset_maskr   r7   rF   rG   )r,   r-   r   ÚtriangÚmsgr   s         r.   Útest_triangulation_set_maskrO   K   sÉ   € Ú€AÚ€AÚšIÐ&€IÜ×Ò  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Ô!÷ 2Ñ1ò Eß1Ö1ús   Â8CÃ
C&	c                  ó"  • Sn Sn[         R                  " [         R                  " SSU 5      [         R                  " SSU5      5      u  p#UR                  5       nUR                  5       nX-  nSU S-
  -  US-
  -  nSU -  U-  SU -  -
  SU-  -
  S-   n[        R
                  " X#5      n[        UR                  U5        [        UR                  U5        [        UR                  5      U:X  d   e[         R                  " UR                  5      S:X  d   e[         R                  " UR                  5      US-
  :X  d   e[        UR                  5      U:X  d   e[         R                  " UR                  5      S:X  d   e[         R                  " UR                  5      US-
  :X  d   eUR                  nS Ul        [!        UR                  U5        [!        [         R"                  " UR                  5      [         R$                  " U5      5        g )	Né   é   ç        ç      ð?r   r   r   r   )ÚnpÚmeshgridÚlinspaceÚravelr   r   r   r,   r-   Úlenr   ÚminÚmaxÚedgesrK   Ú
_neighborsr   ÚuniqueÚarange)	ÚnxÚnyr,   r-   ÚnpointsÚ
ntrianglesÚnedgesrM   rK   s	            r.   Útest_delaunayre   b   s³  € à	
€BØ	
€BÜ�;Š;”r—{’{ 3¨¨RÓ0´"·+²+¸cÀ3ÈÓ2KÓL�D€AØ	�‰‹	€AØ	�‰‹	€AØ‰e€GØ�b˜‘d‘˜r !™tÑ$€JØˆr‰T�"‰W�q˜‘t‰^˜a ™dÑ" QÑ&€Fô ×Ò Ó%€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ÕGr1   c                  ó´  • Sn SnSn[         R                  R                  S5        [         R                  R                  U 5      n[         R                  R                  U 5      nX2   X1'   XB   XA'   [        R                  " X45      n[        [         R                  " UR                  5      [         R                  " [         R                  " U 5      U5      5        g )Né
   é   r   é   )
rU   ÚrandomÚseedr   r   r   r^   r   Údeleter_   )rb   Ú	duplicateÚduplicate_ofr,   r-   rM   s         r.   Útest_delaunay_duplicate_pointsro   Œ   s    € Ø€GØ€IØ€Lä‡I�I‡N�N�2ÔÜ
�	‰	×Ñ˜Ó!€AÜ
�	‰	×Ñ˜Ó!€AØ‘?€A�LØ‘?€A�Lô ×Ò Ó%€Fô ”r—y’y ×!1Ñ!1Ó2Ü—y’y¤§¢¨7Ó!3°YÓ?õAr1   c                  ó€  • [         R                  " SSS5      n [         R                  " SSS5      n[        R                  " [        5         [
        R                  " X5        S S S 5        [         R                  " U S5      n [         R                  " US5      n[
        R                  " X5        g ! , (       d  f       NS= f)NrS   ç      $@é   ç       @g       @)rU   rW   r7   rF   ÚRuntimeErrorr   r   ÚappendrH   s     r.   Útest_delaunay_points_in_linerv       s€   € ô 	�Š�C˜˜rÓ"€AÜ
�Š�C˜˜rÓ"€AÜ	�Š”|Õ	$Ü×Ò˜1Ô ÷ 
%ô 	�	Š	�!�SÓ€AÜ
�	Š	�!�SÓ€AÜ×Ò�qÕ÷ 
%Õ	$ús   ÁB/Â/
B=zx, yr   rQ   r   é   )r   r   r   )rQ   rw   rQ   ©r   r   r   )rQ   rw   rw   )r   r   r   r   r   r   )rQ   rQ   rQ   rw   rQ   rw   c                 ó˜   • [         R                  " [        5         [        R                  " X5        S S S 5        g ! , (       d  f       g = f©NrE   rH   s     r.   Ú!test_delaunay_insufficient_pointsr{   ®   s*   € ô 
�Š”zÕ	"Ü×Ò˜1Ô ÷ 
#×	"Ö	"ús	   ›;»
A	c            
      ó†  ^• [         R                  " SS/SS/SS/SS/SS/S	S
/SS//5      n [         R                  " SS/SS/SS/SS/SS/SS/SS//5      nS mU4S jn[        R                  " U S S 2S4   U S S 2S4   5      nU H  nU" X45      S:X  a  M   e   [        R                  " U SS 2S4   U SS 2S4   5      ng )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   • [         R                  " X45      R                  n[        U5      R	                  U5      $ rz   )rU   ÚvstackÚTr   Úcontains_point)ÚxtriÚytriÚxyÚ
tri_pointss       r.   Útri_contains_pointÚ0test_delaunay_robust.<locals>.tri_contains_pointÕ   s.   € Ü—Y’Y ˜|Ó,×.Ñ.ˆ
Ü�JÓ×.Ñ.¨rÓ2Ð2r1   c                 óJ   >^ ^• [        UU U4S jT R                   5       5      $ )Nc              3   ól   >#   • U  H)  nT" TR                   U   TR                  U   T5      v •  M+     g 7frz   rH   )Ú.0Útrirˆ   rM   r†   s     €€€r.   Ú	<genexpr>ÚCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>Ý   s4   øé € ð 0Ú.�sñ & f§h¡h¨s¡m°V·X±X¸c±]ÀB×GÐGÚ.ùs   ƒ14)Úsumr   )rM   r†   rˆ   s   ``€r.   Útris_contain_pointÚ0test_delaunay_robust.<locals>.tris_contain_pointÜ   s#   ú€ Üö 0Ø$×.Ò.ó0ó 0ð 	0r1   r   r   )rU   ÚarrayÚasarrayr   r   )r‡   Útest_pointsr‘   rM   Ú
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�Fr1   ztripcolor1.pngc                  óŠ  • [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/
5      n[        R                  " XU5      nU SU-  -   nXR                     R                  SS9nXR                     R                  SS9nSU-  U-   n[        R                  " S5        [        R                  " X4SS9  [        R                  " S5        [        R                  " S5        [        R                  " X7SS9  [        R                  " S5        g )N)
r   ç      à?r   r   r™   r   r   r™   r   r~   )
r   r   r   r™   r™   r™   r   r   r   r~   ©r   r   r   )r   rR   r   ©r   r   rR   )r   rQ   rR   )r   rR   rw   )rR   rh   rw   )rR   rQ   é	   )rh   rR   rœ   )é   rh   rœ   )rQ   r�   rœ   r™   r   ©Úaxiséy   Úk)Ú
edgecolorszpoint colorséz   )Ú
facecolorsr¢   r¤   )
rU   r”   r   r   r   ÚmeanÚpltÚsubplotÚ	tripcolorÚtitle)r,   r-   r   rM   ÚCpointsÚxmidÚymidÚCfacess           r.   Útest_tripcolorr®   ë   sý   € ä
�
Š
Ò>Ó?€AÜ
�
Š
Ò>Ó?€AÜ—
’
Ú’9Ú’9Ú’9Ú’9šiªð	4ó 5€Iô ×Ò  iÓ0€Fà�#�a‘%‰i€Gà×ÑÑ×#Ñ#¨Ð#Ð+€DØ×ÑÑ×#Ñ#¨Ð#Ð+€DØ�‰X˜‰_€Fä‡K‚K�ÔÜ‡M‚M�&¨cÒ2Ü‡I‚IˆnÔä‡K‚K�ÔÜ‡M‚M�&¸Ò<Ü‡I‚IˆlÕr1   c                  ó¸  • / SQn / SQn[         R                  " 5       u  p#[        R                  " [        SS9   UR                  X5        S S S 5        [        R                  " [        SS9   UR                  X/ SQ5        S S S 5        [        R                  " [        SS9   UR                  X/ SQS	9  S S S 5        [        R                  " [        S
S9   UR                  XSS/SS9  S S S 5        [        R                  " [        S
S9   UR                  XSS/SS9  S S S 5        [        R                  " [        SS9   UR                  X/ SQS9  S S S 5        [        R                  " [        SS9   UR                  XSS/S5        S S S 5        UR                  X/ SQ5        UR                  X/ SQSS9  UR                  XSS/5        UR                  XSS/S	9  g ! , (       d  f       GNœ= f! , (       d  f       GNx= f! , (       d  f       GNV= f! , (       d  f       GN3= f! , (       d  f       GN= f! , (       d  f       Ní= f! , (       d  f       NÇ= f)Nr   r   z!tripcolor\(\) missing 1 required rA   z!The length of c must match either©r   r   r   z,length of facecolors must match .* triangles)r   r   r   rR   ©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¦   Úsubplotsr7   rF   Ú	TypeErrorr¨   rG   )r,   r-   ÚfigÚaxs       r.   Útest_tripcolor_colorrº     sÒ  € Ú€AÚ€AÜ�lŠl‹n�G€CÜ	�Š”yÐ(LÓ	MØ
�‰�QÔ÷ 
Nä	�Š”zÐ)LÓ	MØ
�‰�Qš9Ô%÷ 
Nä	�Š”zØKó
Mà
�‰�Q¢lˆÑ3÷
Mô 
�Š”zØLó
Nà
�‰�Q q¨! f°iˆÑ@÷
Nô 
�Š”zØLó
Nà
�‰�Q˜A˜q˜6¨9ˆÑ5÷
Nô 
�Š”yØJó
Là
�‰�Qš\ˆÑ*÷
Lô 
�Š”yÐ(IÓ	JØ
�‰�Q˜A˜q˜6Ð#6Ô7÷ 
Kð ‡L�L�’|Ô$Ø‡L�L�’|¨Y€LÑ7Ø‡L�L�˜˜1�vÔØ‡L�L� 1 a &€LÒ)÷/ 
NÖ	Múç	MÖ	Mú÷
Mö 
Mú÷
Nö 
Nú÷
Nö 
Nú÷
Lõ 
Lú÷ 
KÕ	JúsS   ¹G Á,G2Â"HÃHÄH(Å H:Å4IÇ 
G/Ç2
HÈ
HÈ
H%È(
H7È:
IÉ
Ic                  ó´  • [         R                  R                  S5        [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      p!n [        R
                  " 5       R                  5       nSnUR                  XX$S9R                  nUR                  UR                  4U:X  d   eg )Ni!N,rg   )ç      Ð?r~   )Úclim)rU   rj   rk   Ú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ˆ!€Aä	�Š‹×	!Ñ	!Ó	#€BØ€DØ�<‰<˜˜aˆ<Ð+×0Ñ0€DØ�I‰I�t—y‘yÐ! TÓ)Ð)Ñ)r1   c                  óX  • / SQn / SQnSS/n[         R                  " 5       u  p4[        R                  " [        SS9   UR                  XX"S9  S S S 5        [        R                  " [        SS9   UR                  XSUS9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)	Nr   r   çš™™™™™Ù?r™   z"Positional parameter c .*no effectrA   r±   zinterpreted as c)r¦   r¶   r7   Ú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ˆÑ+÷ 
Oä	�Š”kÐ)MÓ	NØ
�‰�QÐ-¸!ˆÑ<÷ 
OÐ	N÷ 
OÕ	Núç	NÕ	Nús   ½B
Á/BÂ

BÂ
B)c                  ó  • [         R                  " / SQ/ SQ/[         R                  S9n [         R                  " / SQ5      nU R                  5       n[        R
                  " US S 2S4   US S 2S4   U 5      R                    [        X 5        g )N©r   r   r   )r   r   r   ©Údtype))r   r   )r   gš™™™™™ñ?)r   r   )r   r   r   r   )rU   r“   Úint32Úcopyr   r   r\   r   )r   ÚpointsÚold_triangless      r.   Útest_no_modifyrÓ   ;  sf   € ä—’š)¢YÐ/´r·x±xÑ@€IÜ�XŠXÒ8Ó9€Fà—N‘NÓ$€MÜ×Ò�vša ˜d‘| VªA¨q¨D¡\°9Ó=×CÒCÜ�}Õ0r1   c                  ó˜  • [         R                  " [         R                  " S5      [         R                  " S5      5      u  pU R                  5       n UR                  5       n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[         R                  " [        U5      5      nSUSS& [        R                  " XX#5      nUR                  5       n/ SQn/ SQn[         R                  " Xg5      u  pgUR                  5       nUR                  5       nU" Xg5      n[        U/ SQ5        U" US-
  US-
  5      n[        U/ SQ5        / SQn/ SQnU" Xg5      n[        U/ SQ5        SS/nSS/nU" Xg5      n[        US S!/5        Sn	/ S"Qn S#S S S S U	S/n/ S$Q/ S%Q/ S&Q/ SQ/ S'Q/ S(Q/ S)Q/ S*Q/n[        R                  " XU5      nUR                  5       n/ S+QnS,S-/n[         R                  " Xg5      u  pgU" Xg5      n[        U/ S.Q/ S/Q/5        Sn	S#U	* S S S S S/n / S0Qn/ S1Q/ S2Q/ S3Q/ S4Q/ S5Q/ S6Q/ S7Q/ S*Q/n[        R                  " XU5      nUR                  5       nS,S-/n/ S+Qn[         R                  " Xg5      u  pgU" Xg5      n[        US#S#/S S8/S S8/S S9/SS9/SS:/S#S#//5        / S;Qn / S<Qn/ S1Q/ S=Q/n[        R                  " XU5      nUR                  5       n/ S>Qn/ S?QnU" Xg5      n[        U/ S@Q5        UR                  SS /5        XTR                  5       :X  d   eU" Xg5      n[        U/ SAQ5        g )BNrR   ©r   r   rR   ©r   rQ   rR   ©r   r   rQ   ©r   rw   rQ   ©r   r   rw   ©r   rh   rw   ©rR   rQ   r�   ©rQ   rœ   r�   ©rQ   rw   rœ   ©rw   rg   rœ   ©rw   rh   rg   ©rh   rr   rg   ©r�   rœ   é   ©rœ   é   râ   ©rœ   rg   rä   ©rg   r   rä   ©rg   rr   r   ©rr   é   r   r   r�   rg   )r¼   ç      ô?ç      @ç      
@)r   r   rR   r   rw   r   rg   r   râ   r   é   r   r   r   r   r   r™   )r   r   r   r   r   r   r   rQ   r   rh   r   rr   r   rä   ré   é   )r™   ç      ø?ç      @r™   rï   rð   rï   rï   rS   rT   rs   ç      @)rS   rS   rS   rñ   rñ   rñ   rT   rs   rï   rï   rï   rï   )r   r   rR   rä   ré   rî   r   r   rw   rh   rg   rr   rS   rñ   r   rî   ©rï   r   r   r   r   rï   rï   r   r=   ©r   r   r   ©r   rR   r   ©r   r   rQ   ©r   rR   rQ   ©r   rQ   rw   ©rR   rw   rQ   )çš™™™™™¹¿rÇ   çÍÌÌÌÌÌì?gffffffö?gffffffþ?g333333@g333333@rù   çš™™™™™¹?)r   r   r   r   r   r   r   )r   rw   rw   rw   rh   rh   r   )rï   rï   r   r   r   r   rï   r   )r   r   rQ   r°   )r   r   rR   )r   rR   rQ   )r   rw   r   )r   rw   rR   rQ   rw   rh   ©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   )rU   rV   r_   rX   ÚzerosrY   r   r   Úget_trifinderr   rL   )
r,   r-   r   r   rM   Ú	trifinderÚxsÚysÚtrisÚdeltas
             r.   Útest_trifinderr  E  sB  € ä�;Š;”r—y’y “|¤R§Y¢Y¨q£\Ó2�D€AØ	�‰‹	€AØ	�‰‹	€AÚšI¢y²)ºYÚšI¢y²)ºZÚš[ª*²kÂ;Úš|ª\ð;€Iô �8Š8”C˜	“NÓ#€DØ€Dˆˆ2€JÜ×Ò  iÓ6€FØ×$Ñ$Ó&€Iâ	!€BÚ	!€BÜ�[Š[˜Ó �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ä×Ò  iÓ0€FØ×$Ñ$Ó&€Iâ	-€BØ
�ˆ€BÜ�[Š[˜Ó �F€BÙ�RÓ€DÜ�tÒ5Ú5ð7ô 8ð €Eà	ˆeˆV�Q˜˜Q  1Ð%€AÚ'€AÚšI¢y²)ºYÚšI¢yð2€Iä×Ò  iÓ0€FØ×$Ñ$Ó&€Ià
�ˆ€BÚ	-€BÜ�[Š[˜Ó �F€BÙ�RÓ€DÜ�t˜r 2˜h¨¨A¨°°A°¸¸A¸ÀÀAÀÈÈAÈØ! 2˜hð(ô )ò
 	€AÚ€AÚšIÐ&€IÜ×Ò  iÓ0€FØ×$Ñ$Ó&€Iâ	€BÚ	€BÙ�RÓ€DÜ�tš^Ô,à
‡O�O�Q˜�FÔØ×,Ñ,Ó.Ó.Ð.Ð.Ù�RÓ€DÜ�tš_Õ-r1   c                  óD  ^^^• [         R                  " [         R                  " S5      [         R                  " S5      5      u  pU R                  5       n UR                  5       nSU -  SU-  -
  n/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[         R                  " [        U5      5      nSUSS& [        R                  " XX45      n[        R                  " XR5      n[        R                  " XR5      n[        R                  " XRSS9n[         R                  " SSS5      n	/ SQn
[         R                  " Xš5      u  pšXgU4 H   nU" Xš5      n[        USU	-  SU
-  -
  5        M"     / SQn	U	n
[         R                  " Xš5      u  pšXgU4 H)  nU" Xš5      n[        UR                  S /S-  /S-  5        M+     [         R                  " SS!S5      n	/ S"Qn
[         R                  " Xš5      u  pšXgU4 HX  nU" Xš5      n[        R                  " USU	-  SU
-  -
  5        U	S:¬  U	S#:*  -  U
S:¬  -  U
S#:*  -  n[        UR                  U5        MZ     S$u  mmmUUU4S% jnUUU4S& jn[         R                  " / S'Q5      n [         R                  " / S(Q5      n[         R                  " / S)Q/ S*Q/ S+Q/ S,Q/ S-Q/ S.Q/ S/Q/ S0Q/5      n[        R                  " XU5      nU" X5      nU" X5      n[         R                  " S1S2S35      n	[         R                  " S1S2S35      n
[         R                  " Xš5      u  pš[        R                  " XRS4US59nU" Xš5      n[        UU" Xš5      5        UR!                  X5      u  nnU" X5      u  nn[        UU5        [        UU5        S6n[         R                  " [         R                  " S1S2US-   5      [         R                  " S1S2US-   5      5      u  pU R                  5       n UR                  5       nU" X5      n[        R                  " X[#        US-   5      S79n[         R                  " [         R                  " S8S9S35      [         R                  " S8S9S35      5      u  pšU	R                  5       n	U
R                  5       n
[        R                  " XR5      n[        R                  " XR5      n[        R                  " XRSS9nU" Xš5      n[         R$                  " U" Xš5      U-
  5      nXx4 HŠ  n[         R$                  " U" Xš5      U-
  5      n[         R&                  " U5      S[         R&                  " U5      -  :¼  d   e[         R(                  " UU5      S:[         R(                  " UU5      -  :¼  a  MŠ   e   g );NrR   ç®Gáz®ó?ç)\�Âõ(@rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   rã   rå   ræ   rç   rè   r   r�   rg   Úgeom©Úkindr¼   ç      @rw   )r¼   r~   rë   r  )g      Ð¿rê   ç      ü?rì   Tr  )r¼   r~   rê   r  r   )r	  g)\�Âõ(Àç333333ã?c                 óD   >• TU S-
  S-  -  TUS-
  S-  -  -   TU -  U-  -   $ )Nr™   r   r2   ©r,   r-   r   r   rÄ   s     €€€r.   ÚquadÚtest_triinterp.<locals>.quadÛ  s3   ø€ Ø�!�C‘%˜!‘‰|˜a  3¡¨¡
™lÑ*¨Q¨q©S°©UÑ2Ð2r1   c                 óH   >• ST-  U S-
  -  TU-  -   ST-  US-
  -  TU -  -   4$ )Nr   r™   r2   r  s     €€€r.   Úgradient_quadÚ%test_triinterp.<locals>.gradient_quadÞ  s8   ø€ Ø�!‘�Q�s‘U‘˜a ™cÑ! 1 Q¡3¨¨#©¡;°°1±Ñ#4Ð5Ð5r1   )rÿ   ç&jjÙZÕ?çœÄ °rhå?rS   rT   rT   rS   )ç333333Ó?çHPüs×é?çX9´Èv¾Û?rS   rS   rT   rT   r   ©r   r   rR   ©rR   r   r   ©rR   r   rQ   ©r   rQ   r   ©rw   rQ   r   ©rw   r   r   ©rw   r   r   rS   rT   rQ   Úuser©r  Údzrr   r   rû   rú   éd   )rU   rV   r_   rX   r   rY   r   r   ÚLinearTriInterpolatorÚCubicTriInterpolatorrW   r   r   r   Úmatestr“   ÚgradientÚmeshgrid_trianglesÚabsr[   Údot)r,   r-   Úzr   r   rM   Ú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_triinterpr>  ¬  s°  ú€ ä�;Š;”r—y’y “|¤R§Y¢Y¨q£\Ó2�D€AØ	�‰‹	€AØ	�‰‹	€AØˆQ‰��a‘‰€AÚšI¢y²)ºYÚšI¢y²)ºZÚš[ª*²kÂ;Úš|ª\ð;€Iô �8Š8”C˜	“NÓ#€DØ€Dˆˆ2€JÜ×Ò  iÓ6€FÜ×.Ò.¨vÓ9€MÜ×+Ò+¨FÓ6€KÜ×*Ò*¨6¸6ÑB€Jä	�Š�T˜4 Ó	#€BÚ	!€BÜ�[Š[˜Ó �F€BØ ¨zÓ:ˆÙ�B‹^ˆÜ! " t¨B¡w°°b±Ñ'8Ö:ñ ;ò
 
#€BØ	€BÜ�[Š[˜Ó �F€BØ ¨zÓ:ˆÙ˜2Ó"ˆÜ˜2Ÿ7™7 d V¨A¡X J¨q¡LÖ1ñ ;ô
 
�Š�T˜4 Ó	#€BÚ	!€BÜ�[Š[˜Ó �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ä×Ò  iÓ0€FÙˆQ‹
€AÙ	�qÓ	€Bä	�Š�R˜˜QÓ	€BÜ	�Š�R˜˜QÓ	€BÜ�[Š[˜Ó �F€BÜ×*Ò*¨6¸6ÀbÑI€JÙ˜2Ó"€IÜ˜i©¨b«Ô6Ø#-×#6Ñ#6°qÓ#<Ñ €\�<Ù" 1Ó(�N€UˆEÜ˜l¨EÔ2Ü˜l¨EÔ2ð 	€AÜ�;Š;”r—{’{ 2 r¨1¨Q©3Ó/´·²¸RÀÀQÀqÁSÓ1IÓJ�D€AØ	�‰‹	€AØ	�‰‹	€AÙˆQ‹
€AÜ×Ò Ô0BÀ1ÀQÁ3Ó0GÑH€FÜ�[Š[œŸš S¨#¨qÓ1´2·;²;¸sÀCÈÓ3KÓL�F€BØ	�‰‹€BØ	�‰‹€BÜ×.Ò.¨vÓ9€MÜ×+Ò+¨FÓ6€KÜ×*Ò*¨6¸6ÑB€JÙ	ˆb‹€BÜ�vŠv‘m BÓ+¨bÑ0Ó1€HØÓ+ˆÜ—V’V™F 2›N¨RÑ/Ó0ˆ
Ü�vŠv�hÓ 2¬¯ª¨zÓ(:Ñ#:Ó:Ð:Ð:Ü—’�x Ó*Ø”b—f’f˜Z¨Ó4Ñ4õ5ð 	6ð 5ò ,r1   c                  óê  • SS jn Su  pSu  p4Su  pV[         R                  " XUSSSS/5      n[         R                  " X$USSSS/5      n[         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/5      n	[        R                  " XxU	5      n
[	        S5       GHÕ  n[         R
                  " S[         R                  S9n[         R
                  " S[         R                  S9n[         R
                  " S[         R                  S9n[         R
                  " SS/[         R                  S9nUS-  nSUUUS-  4'   US:X  a  SXË'   OUS:X  a  SXÛS-  '   OUS:X  a  SXëS-  '   [        R                  " X¬SXÞ4S9nU " UX4US S 2S4   5        U " UX44US S 2S4   5        U " UXV4US S 2S4   5        U " UX-   S-  X$-   S-  45        U " UX-   S-  X&-   S-  45        U " UXS-   S-  Xd-   S-  45        U " UX-   U-   S-  X$-   U-   S-  45        U " USU-  U-   U-   S-  SU-  U-   U-   S-  45        U " UUSU-  -   U-   S-  USU-  -   U-   S-  45        U " UX-   SU-  -   S-  X$-   SU-  -   S-  45        GMØ     g )Nc           	      ór  • SnSnSnUu  pgXd[         R                  " [         R                  " SS[         R                  -  U5      5      -  -   nXt[         R                  " [         R                  " SS[         R                  -  U5      5      -  -   n	U " U/U/5      S   n
U R                  U/U/5      u  p¼Ub2  [        X¢S   5        [        US   US   5        [        US   US   5        U " X‰5      U
-
  nU R                  X‰5      u  pïXë-
  nXü-
  n[        XÔU-  5        [        UXE-  5        [        UXE-  5        g)	a  
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@rS   r   r   Nr   )rU   ÚcosrW   Ú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_continuityÚ;test_triinterpcubic_C1_continuity.<locals>.check_continuity  s'  € ð ˆØˆØˆØ‰ˆØ¤§¢¬¯ª°B¸¼"¿%¹%¹ÀÓ(HÓ!IÑIÑIˆØ¤§¢¬¯ª°B¸¼"¿%¹%¹ÀÓ(HÓ!IÑIÑIˆÙ˜%˜ 5 'Ó*¨1Ñ-ˆØ!×*Ñ*¨E¨7°U°GÓ<‰
ˆØÑÜ% a°©Ô3Ü% c¨!¡f¨f°Q©iÔ8Ü% c¨!¡f¨f°Q©iÔ8Ù˜fÓ-°Ñ1ˆØ)×2Ñ2°6ÓBÑˆØ‘=ˆØ‘=ˆÜ˜&¨!¡)Ô,Ü˜( G¡IÔ.Ü˜( G¡IÕ.r1   )rÿ   r  )r  r  )r  r  rS   rT   r   r  r  r  r   r!  r"  r#  rœ   rh   rÍ   r   r   r   r   r$  r%  r™   rñ   ç      @g      @rz   )rU   r“   r   r   Úranger   Úfloat64r)  )rV  r¹   ÚayÚbxÚbyÚcxÚcyr,   r-   r   rM   Úidofr/  rO  rP  rH  Úcaser3  s                     r.   Ú!test_triinterpcubic_C1_continuityrb    s›  € ô/ð> �H€RØ!�H€RØ�H€RÜ
�Š�"˜"˜b " b¨"Ð-Ó.€AÜ
�Š�"˜"˜b " b¨"Ð-Ó.€AÜ—’š)¢Y²	º9Ú#¢Y²	º9ðFó G€Iä×Ò  iÓ0€Fä�a—ˆÜ�HŠH�QœbŸj™jÑ)ˆÜ�hŠh�q¤§
¡
Ñ+ˆÜ�hŠh�q¤§
¡
Ñ+ˆÜ—’˜1˜a˜&¬¯
©
Ñ3ˆØ�Q‰wˆØ!$ˆˆt�T˜A‘Xˆ~ÑØ�1‹9ØˆAŠGØ�Q‹YØˆC�q‘ŠMØ�Q‹YØˆC�q‘‰MÜ×*Ò*¨6¸6Ø/2¨jñ:ˆñ 	˜ " ¨6²!°Q°$©<Ô8Ù˜ " ¨6²!°Q°$©<Ô8Ù˜ " ¨6²!°Q°$©<Ô8á˜ 2¡5¨#¡+°±°s©{Ð!;Ô<Ù˜ 2¡5¨#¡+°±°s©{Ð!;Ô<Ù˜ 2¡5¨#¡+°±°s©{Ð!;Ô<á˜ 2¡5¨¡8¨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¡5¨¨B©¡;°Ñ"2°R±U¸2¸b¹5±[À"Ñ4DÐ!E×Fò9 r1   c            	      óx  • S n Su  p[         R                  R                  " U " X5      6 nUR                  5         UR	                  5       n[        X-  5       Hƒ  n[        R                  " X-  [        R                  S9nSXe'   [         R                  R                  X6[        R                  " X-  5      SS9u  px[        [        R                  " XG5      U5        M…     Su  pšU " X5      u  p¼pØUSXÉ:¬  -  -   SXÊ:¬  -  -   nUSXÙ:¬  -  -   SXÚ:¬  -  -   n[        R                  " XÉU	S-
  XªS-
  //5      n[        R                  " XÙS-
  XšS-
  U
//5      n[        R                  " U/ S	Q/5      n[         R                  R                  X¼UX-  S
-   X-  S
-   45      nUR                  5         UR	                  5       n[        X-  S
-   5       H‰  n[        R                  " X-  S
-   [        R                  S9nSXe'   [         R                  R                  X6[        R                  " X-  S
-   5      SS9u  px[        [        R                  " XG5      U5        M‹     [        R                  " S[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nSn[         R                  R                  X¼XÞ5      nUR                  5         UR	                  5       n[        U[        R                  " / SQ/ SQ/ SQ/[        R                  S95        g )Nc                 ó4  • X-  n[         R                  " [         R                  " U[         R                  S9[         R                  " US-
  [         R                  S9[         R                  " SU[         R                  S9[         R                  " X -
  [         R                  S9[         R                  " X[         R                  S9/5      n[         R                  " [         R                  " U[         R                  S9[         R                  " SU[         R                  S9[         R                  " US-
  [         R                  S9[         R                  " X[         R                  S9[         R                  " X -
  [         R                  S9/5      n[         R                  " S[         R                  " U[         R
                  S9-  [         R                  " US-
  [         R
                  S9* [         R                  " US-
  [         R
                  S9* [         R                  " X -
  [         R
                  S9* [         R                  " X -
  [         R
                  S9* /5      nSXRSU-  S-
   US-
  SU2'   SUSU-  S-
  SU-  S-
   US-
  SU2'   XSX@U-  X-  44$ )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   rR   rS   r   Nr   )rU   Úconcatenater_   rÏ   ÚonesrZ  )r;  ÚmÚlÚrowsÚcolsÚvalss         r.   Úpoisson_sparse_matrixÚ<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrixe  så  € ð ‰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‘S¤§
¡
Ñ+Ð+¬b¯gªg°a±cÄÇÁÑ.LÐ-LðNó Oˆð
 !#ˆˆq�‰s�1‰uˆ�a˜‘c�f˜1�fÑØ$&ˆˆQˆq‰S�‰U�1�Q‘3�q‘5Ð˜!˜A™#˜&˜q˜&Ñ!Ø˜4 A¡# q¡s Ð+Ð+r1   )râ   rR   rÍ   rT   rB  )ÚAr   Úx0Útol)râ   é1   r   )rT   rT   rT   rT   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   )rT   rs   rS   )rs   rT   ç      @)rS   rr  rT   )r   Ú_triinterpolateÚ_Sparse_Matrix_cooÚcompress_cscÚto_denserY  rU   r   rZ  Ú_cgr   r.  re  rf  r“   rÏ   )rl  r;  rg  ÚmatÚ	mat_denseÚitestr   r,   Ú_Úi_zeroÚj_zerork  ri  rj  Údims                  r.   Útest_triinterpcubic_cg_solverr  a  s½  € ò,ð2 �F€QÜ
×
Ñ
×
1Ò
1Ñ3HÈÓ3NÐ
O€CØ×ÑÔØ—‘“€Iä�q‘s–ˆÜ�HŠH�Q‘S¤§
¡
Ñ+ˆØˆ‰Ü×#Ñ#×'Ñ'¨#´r·x²xÀÁ³}Ø,2ð (ð 4‰ˆä!¤"§&¢&¨Ó"6¸Ö:ñ ð  Ñ€VÙ/°Ó5Ñ€D�Ø�!�T‘^Ñ$Ñ$ q¨$©.Ñ'9Ñ9€DØ�!�T‘^Ñ$Ñ$ q¨$©.Ñ'9Ñ9€Dä�>Š>˜4¨&°©(°FÀ1¹HÐ!EÐFÓG€DÜ�>Š>˜4¨¡(¨F¸1±H¸fÐ!EÐFÓG€DÜ�>Š>˜4Ò!1Ð2Ó3€DÜ
×
Ñ
×
1Ñ
1°$¸dØ34±3¸±7¸A¹CÀ!¹GÐ2DóF€Cà×ÑÔØ—‘“€Iä�q‘s˜Q‘w–ˆÜ�HŠH�Q‘S˜1‘W¤B§J¡JÑ/ˆØˆ‰Ü×#Ñ#×'Ñ'¨#´r·w²w¸q¹uÀq¹yÓ7IØ,2ð (ð 4‰ˆä!¤"§&¢&¨Ó"6¸Ö:ñ  ô �7Š7�2œRŸZ™ZÑ(€DÜ�8Š8ÒGÜŸ(™(ñ$€Dä�8Š8ÒGÜŸ(™(ñ$€Dà
€CÜ
×
Ñ
×
1Ñ
1°$¸dÓ
H€CØ×ÑÔØ—‘“€IÜ˜i¬¯ªÚ’l¢Lð32Ü9;¿¹ñ*Eõ Fr1   c            	      óT  • Su  p[         R                  " U SU -  SS/5      n[         R                  " X* SS/5      n[         R                  " S[         R                  S9n/ SQ/ SQ/n[         R                  " SS	/5      n[         R                  " SS	[         R
                  -  S
5       GH|  n[         R                  " U5      U-  [         R                  " U5      U-  -   n[         R                  " U5      * U-  [         R                  " U5      U-  -   n	[        R                  " X‰U5      n
[        R                  " X¤SS9n[        R                  R                  U5      nUR                  5       n[         R                  " US5      S-
  USS S 24'   [        S5       H0  n[         R                  " US5      S	US S 2U4   -  -
  XnS-   S S 24'   M2     [!        [         R"                  " [         R$                  " U5      SS9[         R                  " SS/[         R                  S95        GM     g )N)rS   gË¡E¶óýú?r™   rS   rT   rR   rÍ   r   rþ   r   r   r  r  r   r   r   rž   )rU   r“   r   rZ  rW   rD  rC  rE  r   r   r)  rs  Ú_DOF_estimator_geomÚcompute_geom_weightsr�   rY  r   rZ   r-  )r¹   r[  r,   r-   r/  r   Úsum_wÚthetaÚx_rotÚy_rotrM   r2  Údof_estimatorÚweightsÚitris                  r.   Ú test_triinterpcubic_geom_weightsrŠ  ¯  s¨  € ð
 �H€RÜ
�Š�"�c˜"‘f˜b "Ð%Ó&€AÜ
�Š�"�c˜2˜rÐ"Ó#€AÜ
�Š�œ"Ÿ*™*Ñ%€AÚšIÐ&€IÜ�HŠH�a˜�VÓ€EÜ—’˜R ¤2§5¡5¡¨"×-ˆÜ—’�u“˜a‘¤"§&¢&¨£-°¡/Ñ1ˆÜ—’˜“�˜qÑ ¤2§6¢6¨%£=°¡?Ñ2ˆÜ×#Ò# E°)Ó<ˆÜ×.Ò.¨v¸vÑFˆ
Ü×,Ñ,×@Ñ@ÀÓLˆØ×4Ñ4Ó6ˆä—f’f˜W aÓ(¨1Ñ,ˆˆa’ˆd‰Ü˜!–HˆDÜ!Ÿvšv g¨qÓ1°A°gºaÀ¸gÑ6FÑ4FÑFˆE�q‘&š!�)Óñ ä!¤"§&¢&¬¯ª°«¸QÑ"?Ü"$§(¢(¨B°¨8¼2¿:¹:Ñ"F÷	Hò .r1   c                  ó6  • Sn [         R                  " / SQ5      n[         R                  " SSSSSU S/5      nSS/SS/SS/SS/SS/SS//nU GHÇ  nUS   U-  US   U-  -   nUS   * U-  US   U-  -   nXVp‡SU-  S	U-  -
  n	/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n
[        R                  " XxU
5      n[         R                  " [         R
                  " UR                  5      [         R                  " UR                  5      S5      n[         R                  " [         R
                  " UR                  5      [         R                  " UR                  5      S5      n[         R                  " XÍ5      u  pÍUR                  5       nUR                  5       nUR                  5       " XÍ5      S:H  n[         R                  R                  SU-  S	U-  -
  US9n[        R                  " X¹5      n[        R                  " X¹5      n[        R                  " X¹SS9nUUU4 H  nU" XÍ5      n[        UU5        M     SnUR                   US4   nUR                   US4   n[         R                  " UR                  U   UR                  U   S5      n[         R                  " UR                  U   UR                  U   S5      nSU-  S	U-  -
  nUUU4 HE  nUR#                  XÍU[         R$                  " S[         R&                  S9-  S9u  n[        UU5        MG     GMÊ     g )NrS   rò   r   r   r   r   éþÿÿÿr	  r
  r=   ró   rô   r×   rõ   rö   r÷   rø   é   r   r  r  rR   rg   rÍ   )Ú	tri_index)rU   r“   r   r   rW   rZ   r,   r[   r-   rV   rX   r  Úmar(  r)  r   r   Ú_interpolate_multikeysrf  rÏ   )r  ro  Úy0ÚtransformationsÚtransformationr…  r†  r,   r-   r/  r   rM   r  r  Úmask_outÚ	zs_targetr0  r1  r2  r3  r4  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Ü)ˆØ˜qÑ! "Ñ$ ~°aÑ'8¸Ñ';Ñ;ˆØ Ñ"Ð" 2Ñ%¨°qÑ(9¸"Ñ(<Ñ<ˆØˆAØ�‰F�T˜!‘V‰OˆÚ¢	ª9²iÂÚ¢	ª9ð6ˆ	ä×#Ò# A¨)Ó4ˆÜ�[Š[œŸš §¡Ó)¬2¯6ª6°&·(±(Ó+;¸RÓ@ˆÜ�[Š[œŸš §¡Ó)¬2¯6ª6°&·(±(Ó+;¸RÓ@ˆÜ—’˜RÓ$‰ˆØ�X‰X‹ZˆØ�X‰X‹ZˆØ×(Ñ(Ô*¨2Ó2°bÑ8ˆÜ—E‘E—K‘K  R¡¨$¨r©'Ñ 1¸�KÐAˆ	ä×2Ò2°6Ó=ˆÜ×/Ò/°Ó:ˆÜ×.Ò.¨v¸vÑFˆ
à$ k°:Ó>ˆFÙ˜“ˆBÜ% i°Ö4ñ ?ð ˆØ×Ñ˜t Q˜wÑ'ˆØ×Ñ˜t Q˜wÑ'ˆÜ�[Š[˜Ÿ™ #™¨¯©°©°rÓ:ˆÜ�[Š[˜Ÿ™ #™¨¯©°©°rÓ:ˆØ˜‘G˜d 2™gÑ%ˆ	Ø$ k°:Ó>ˆFØ×/Ñ/Ø $¤r§w¢w¨r¼¿¹Ñ'BÑ"Bð 0ð D‰CˆBä% i°Ö4ô ?òA *r1   c                  óÒ  • Sn SnSnS n[         R                  " USU5      n[         R                  " SU -   S[         R                  -  U -   U SS	9n[         R                  " US
[         R                  4   USS9nUS S 2SS S24==   [         R                  U -  -  ss'   U[         R
                  " U5      -  R                  5       nU[         R                  " U5      -  R                  5       n[        R                  " Xg5      nU" Xg5      n	[         R                  " SSS5      n
[         R                  " SSS5      n[         R                  " X«5      u  p«U
R                  5       n
UR                  5       n0 n[        S5       GH›  nS[         R                  -  U -  U-  n[         R
                  " U5      U-  [         R                  " U5      U-  -   n[         R                  " U5      * U-  [         R
                  " U5      U-  -   n[         R
                  " U5      U
-  [         R                  " U5      U-  -   n[         R                  " U5      * U
-  [         R
                  " U5      U-  -   n[        R                  " UUUR                  5      n[        R                  " UU	5      n[        R                  " UU	5      n[        R                  " UU	SS9nUUUS.nS H>  nUU   nUS:X  a  U" X«5      UU'   M  U" UU5      n[         R"                  " UUU   5        M@     GMž     SnS HÁ  nUS:X  a  UU-  nUnUU
-  nUnOUnUU-  nU
nUU-  n[        R                  " UUUR                  5      n[        R                  " UU	5      n[        R                  " UU	5      n[        R                  " UU	SS9nUUUS.nS H)  nUU   " UU5      n[         R"                  " UUU   5        M+     MÃ     g )Nr�  rg   ç333333Ã?c                 ó˜  • [         R                  " SU -
  SU-
  5      n[         R                  " SU -
  SU-
  5      n[         R                  " U * S-
  U* S-
  5      n[         R                  " U * S-
  U* S-
  5      nS[         R                  " US-  S-  5      S-
  -  S-  [         R                  " SU-  5      -  [         R                  " US-  S-  5      S-
  S-  [         R                  " SU-  5      -  -   S	U S-  US-  -   -  -   * n[         R
                  " U5      U-
  [         R
                  " U5      [         R                  " U5      -
  -  $ ©
Nr™   rÿ   r   rg   r   g      >@ç      @g      &@r}   ©rU   ÚhypotÚarctan2ÚexprC  r[   rZ   ©r,   r-   Úr1Útheta1Úr2Útheta2r/  s          r.   r/  Ú)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Ð2r1   çffffffî?r   r   F©Úendpoint.r   rž   ç      ð¿rT   ri   r  r  )ÚlinÚmin_Er  g¬Z¤$.ArH   r,   )rU   rW   rD  ÚrepeatÚnewaxisrC  ÚflattenrE  r   r   rV   rX   rY  r   r(  r)  r*  r   )Ún_anglesÚn_radiiÚ
min_radiusr/  ÚradiiÚanglesro  r‘  Útriang0Úz0Úxs0Úys0Ú	interp_z0Úi_angler„  r,   r-   r  r  rM   r0  r1  r2  Ú
dic_interpÚ
interp_keyr3  Ú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Ü× Ò  Ó(€GÙ	
ˆ2‹€Bô �+Š+�c˜2˜rÓ
"€CÜ
�+Š+�c˜2˜rÓ
"€CÜ�{Š{˜3Ó$�H€CØ
�)‰)‹+€CØ
�)‰)‹+€Cà€IÜ˜—8ˆà”"—%‘%‘˜(Ñ" 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ˆJØ 
Ñ+ˆFØ˜!‹|Ù(.¨sÓ(8�	˜*Ó%á   R›.�Ü×0Ò0°Ø1:¸:Ñ1FöHô 3ñ ð0 €LÛ!ˆà˜#ÓØ˜rÑ!ˆAØˆAØ Ñ#ˆBØ‰BàˆAØ˜rÑ!ˆAØˆBØ Ñ#ˆBÜ×#Ò# A q¨'×*;Ñ*;Ó<ˆÜ×2Ò2°6¸2Ó>ˆÜ×/Ò/°¸Ó;ˆÜ×.Ò.¨v°rÀÑGˆ
Ø*Ø*Ø(ñ*ˆ
ó 3ˆJØ  Ò,¨R°Ó4ˆGÜ×,Ò,¨W°iÀ
Ñ6KÖLó 3ò) "r1   ztri_smooth_contouring.pngTg;ßO�—n²?)Úremove_textrp  c            	      ó¤  • Sn SnSnS n[         R                  " USU5      n[         R                  " SU -   S[         R                  -  U -   U SS	9n[         R                  " US
[         R                  4   USS9nUS S 2SS S24==   [         R                  U -  -  ss'   U[         R
                  " U5      -  R                  5       nU[         R                  " U5      -  R                  5       n[        R                  " Xg5      nU" Xg5      n	UR                  [         R                  " XhR                     R                  SS9XxR                     R                  SS95      U:  5        [        R                  " U5      n
U
R                  U	SS9u  p¼[         R                   " SSS5      n["        R$                  " USSS9  ["        R&                  " X¼USS9  g )Nr�  rg   rš  c                 ó˜  • [         R                  " SU -
  SU-
  5      n[         R                  " SU -
  SU-
  5      n[         R                  " U * S-
  U* S-
  5      n[         R                  " U * S-
  U* S-
  5      nS[         R                  " US-  S-  5      S-
  -  S-  [         R                  " SU-  5      -  [         R                  " US-  S-  5      S-
  S-  [         R                  " SU-  5      -  -   S	U S-  US-  -   -  -   * n[         R
                  " U5      U-
  [         R
                  " U5      [         R                  " U5      -
  -  $ rœ  rž  r¢  s          r.   r/  Ú%test_tri_smooth_contouring.<locals>.zk  r¨  r1   r©  r   r   Frª  .r   rž   rR   ©ÚsubdivrS   rT   gš™™™™™™?r™   z0.5)ÚlwÚcolorÚblack)ÚlevelsÚcolors)rU   rW   rD  r¯  r°  rC  r±  rE  r   r   rL   rŸ  r   r¥   ÚUniformTriRefinerÚrefine_fieldr_   r¦   ÚtriplotÚ
tricontour)r²  r³  r´  r/  rµ  r¶  ro  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Ü× Ò  Ó(€GÙ	
ˆ2‹€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Ü�YŠY�r˜2˜uÓ%€FÜ‡K‚K�˜C uÒ-Ü‡N‚N�8°ÀÓHr1   ztri_smooth_gradient.pnggZd;ßO�·?c                  óN  • S n SnSnSn[         R                  " USU5      n[         R                  " SS[         R                  -  USS	9n[         R                  " US
[         R                  4   USS9nUS S 2SS S24==   [         R                  U-  -  ss'   U[         R
                  " U5      -  R                  5       nU[         R                  " U5      -  R                  5       nU " Xg5      n[        R                  " Xg5      n	U	R                  [         R                  " XiR                     R                  SS9XyR                     R                  SS95      U:  5        [        R                  " U	5      n
U
R                  USS9u  p¼[        R                   " X˜* 5      nUR#                  U	R$                  U	R&                  5      u  pï[         R                  " Xï5      n[(        R*                  " 5         [(        R,                  " 5       R/                  S5        [(        R0                  " U	SS9  [         R2                  " SSS5      n[4        R6                  S   n[(        R8                  " X¼UU/ SQS9  [(        R:                  " U	R$                  U	R&                  UU-  UU-  SSSSSSSS9  g )Nc                 ó  • U S-  US-  -   n[         R                  " X5      n[         R                  " U5      U-  n[         R                  " U5      U-
  [         R                  " U5      [         R                  " U5      -
  -  $ )zAn electric dipole potential V.r   )rU   r   rC  r[   rZ   )r,   r-   Úr_sqr„  r/  s        r.   Údipole_potentialÚ2test_tri_smooth_gradient.<locals>.dipole_potential�  s_   € à�!‰t�a˜‘d‰{ˆÜ—
’
˜1Ó ˆÜ�FŠF�5‹M˜$ÑˆÜ—’�q“	˜!‘¤§¢ q£	¬"¯&ª&°«)Ñ 3Ñ4Ð4r1   é   rg   rÿ   r©  r   r   Frª  .r   rž   r   rÇ  Úequalz0.8)rÊ  rS   rT   g{®Gáz„?Úhot)rs   rT   rT   rT   )rÌ  ÚcmapÚ
linewidthsr†   rq   Úbluegyé&1¬|?rñ   rX  )ÚunitsÚscaleÚzorderrÊ  ÚwidthÚ	headwidthÚ
headlength)rU   rW   rD  r¯  r°  rC  r±  rE  r   r   rL   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-   ÚVrM   rÒ  rÓ  rÔ  ÚtciÚExÚEyÚE_normrÌ  rÞ  s                      r.   Útest_tri_smooth_gradientrñ  ‹  s%  € ò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Ü×Ò Ó%€FØ
‡O�O”B—H’H˜Q×/Ñ/Ñ0×5Ñ5¸1Ð5Ð=Ø×/Ñ/Ñ0×5Ñ5¸1Ð5Ð=ó?à ñ!ô "ô
 ×$Ò$ VÓ,€GØ#×0Ñ0°¸1Ð0Ð=Ñ€Hô ×
#Ò
# F¨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ó9r1   c                  ó0  • [         R                  " / SQ5      n [         R                  " SSS[         R                  " S5      -  SS/5      n[         R                  " / SQ/ SQ/ S	Q/[         R                  S
9n[         R                  " / SQ[        S
9n[
        R                  " XX#S9n[
        R                  " U5      n[        UR                  SS/5        [        UR                  SS9[         R                  R                  SSS[         R                  " S5      -   -  [         R                  /U5      5        [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ/[         R                  S
9n[
        R                  " XU5      n[
        R                  " U5      n[        UR                  5       [         R                  " S/5      5        SnS n[         R                  " SSUS-   5      n [         R                  " U" U S5      U" U S5      5      u  pU R!                  5       n UR!                  5       n[
        R                  " X[#        US-   5      S9n[
        R                  " U5      nUR%                  S5      n[         R&                  " S[        S
9n	/ SQn
SXš'   [)        X‰5        [         R&                  " S[        S
9nSUS'   UR+                  U5        UR%                  S5      n/ SQnSX›'   [)        X‰5        g )N©rS   rT   r™   rS   rs   rS   r™   rñ   r¬  rT   r   rš   r›   rÍ   ©FFTr   r   gVÍž^&á?F)Úrescalers   )rS   rT   rs   )rT   rX  r�  rœ   c                 ób   • [         R                  " U 5      U-  [         R                  " U 5      -  $ rz   )rU   r-  Úsign)r,   r   s     r.   ÚpowerÚtest_tritools.<locals>.powerÜ  s!   € Ü�vŠv�a‹y˜!‰|œBŸGšG A›JÑ&Ð&r1   r¼   r   rÿ   é¢   )r   r   r   r   r   ré   rí   rî   é   é   é"   é#   é~   é   éŽ   é�   é�   é‘   é’   é“   éž   éŸ   é    é¡   TéP   )é,   é-   é>   é?   éN   éO   r  éQ   éR   éS   éb   rD   ét   éu   )rU   r“   ÚsqrtrÏ   Úboolr   r   ÚTriAnalyzerr   Úscale_factorsÚcircle_ratiosr�  Úmasked_arrayÚnanrW   rV   rX   r,  Úget_flat_tri_maskr   r   rL   )r,   r-   r   r   rM   Úanalyserr;  rø  Ú	mask_flatÚ
verif_maskÚcorners_indexÚcenter_indexs               r.   Útest_tritoolsr%  À  sa  € ô 	�ŠÒ&Ó'€AÜ
�Š�"�b˜#œbŸgšg b›k™/¨3°Ð3Ó4€AÜ—’š)¢Y²	Ð:Ä"Ç(Á(ÑK€IÜ�8Š8Ò(´Ñ5€DÜ×Ò  iÑ;€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Ü×Ò  iÓ0€FÜ×Ò Ó'€HÜ˜h×4Ñ4Ó6¼¿ºÀ"À»ÔGð 	
€Aò'ô 	�Š�C˜˜Q˜q™SÓ!€AÜ�;Š;‘u˜Q “|¡U¨1¨d£^Ó4�D€AØ	�‰‹	€AØ	�‰‹	€Aä×Ò Ô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Õ-r1   c                  óÎ  • Sn Sn[         R                  " SSU S-   5      n[         R                  " X"5      u  p#UR                  5       nUR                  5       n[         R                  " SU S-  -  [
        S9nSX@S-  S & [        R                  " X#[        U S-   5      US9n[        R                  " U5      nUR                  US	9nUR                  nUR                  n	XS-  -  n
[         R                  " SSU
S-   5      n[         R                  " X»5      u  p¼UR                  5       nUR                  5       n[         R                  " [         R                  " US
U-   -  S5      [         R                  " US
U	-   -  S5      5      n[        US5        UR                   n[         R"                  " UR                  UR$                     SS9S-  n[         R"                  " UR                  UR$                     SS9S-  nUR'                  5       nU" UU5      nUR                   U   n[        UU5        [         R(                  " / SQ5      n[         R(                  " / SQ5      n[        R                  " X#/ SQ/ SQ/5      [        R                  " X#/ SQ/ SQ/5      /n[         R*                  " US-
  US-
  5      n/ n[-        S5       HŽ  n[        R                  " UU   5      nUR/                  USS	9u  nn[         R0                  " UR                  UR                  U45      S   nU[         R2                  " US S 2S4   US S 2S4   45         nUU/-  nM�     [5        US   US   5        g )Nr   r   r¬  rT   r   rÍ   Tr   rÇ  rð   r�   rž   rñ   ©rS   rT   rS   rT   ©rS   rS   rT   rT   rš   rÌ   ©r   r   r   r  rÇ   r   )rU   rW   rV   rX   r   r  r   r   r,  rÎ  Úrefine_triangulationr,   r-   ÚisinÚaroundr   r   r�   r   r  r”   rŸ  rY  rÏ  ÚdstackÚlexsortr   )r;  rÈ  r,   r-   r   rM   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_trirefinerA  ø  s  € à	€AØ€FÜ
�Š�C˜˜Q˜q™SÓ!€AÜ�;Š;�qÓ�D€AØ	�‰‹	€AØ	�‰‹	€AÜ�8Š8�A�a˜‘d‘F¤$Ñ'€DØ€DˆA‰ˆ€KÜ×Ò Ô0BÀ1ÀQÁ3Ó0GØ%)ñ+€Fä×$Ò$ VÓ,€GØ×.Ñ.°fÐ.Ð=€KØ�]‰]€FØ�]‰]€Fà˜‘‰]€FÜ�kŠk˜#˜r 6¨!¡8Ó,€GÜ—{’{ 7Ó4Ñ€GØ�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Ü× Ò  ª	²9Ð'=Ó>Ü× Ò  ª	²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©;Õ7r1   rF  ÚlinearÚcubic)Úidsc                 ó‚  • [         R                  S S2S S24   u  p[         R                  " UR                  5       S5      n[         R                  " UR                  5       S5      n[         R                  " U5      n[
        R                  " X5      n[
        R                  " U5      nU " XC5      nUR                  X6SS9  g )Nr   )ÚtriinterpolatorrÈ  )	rU   Úmgridr¯  r±  Ú
zeros_liker   r   rÎ  rÏ  )rF  r,   r-   r/  r�   rÒ  r3  s          r.   Útest_trirefine_maskedrI  0  s—   € ô �8‰8�B�Q�B˜˜˜�FÑ�D€AÜ
�	Š	�!—)‘)“+˜qÓ!€AÜ
�	Š	�!—)‘)“+˜qÓ!€Aä
�Š�aÓ€AÜ
×
Ò
˜QÓ
"€CÜ×$Ò$ SÓ)€GÙ˜#Ó!€FØ×Ñ˜¸1ÐÒ=r1   c                 ó  • / n[        U S-
  5       HK  n[        U S-
  5       H6  nX#U -  -   nUS-   X0-  -   nX#S-   U -  -   nUS-   US-   U -  -   nXXW/XGU//-  nM8     MM     [        R                  " U[        R                  S9$ )zM
Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
r   rÍ   )rY  rU   r“   rÏ   )r;  r�   r=  Újr   r   rÄ   Úds           r.   r,  r,  B  s—   € ð €CÜ�1�Q‘3ŽZˆÜ�q˜‘s–ˆAØ�a‘C‘ˆAØ�1‘˜™‘ˆAØ�q‘S˜!‘G‘ˆAØ�1‘˜˜1™˜a™‘ˆAØ˜�I  a˜yÐ)Ñ)ŠCó ñ ô �8Š8�CœrŸx™xÑ(Ð(r1   c                  ó¾   • [         R                  " 5       R                  5       n [        R                  " / SQ/ SQ/ SQ/ SQ/S9nU R                  US5      c   S5       eg )Nr'  r(  rš   rÌ   r   zb-z(triplot should return the artist it adds)r¦   r¿   rÀ   r   r   rÐ  )r¹   rM   s     r.   Útest_triplot_returnrN  Q  sW   € ä	�Š‹×	!Ñ	!Ó	#€BÜ×ÒÚÒ2ÚšiÐ(ñ*€Fð �:‰:�f˜dÓ#Ñ/ð 3Ø2ó3Ñ/r1   c                  ól  • [         R                  " / SQ/ SQ/5      n [         R                  " U 5      (       a   e[         R                  " U SSS9n[         R                  " U5      (       d   e[         R                  " / SQ5      n[         R                  " / SQ5      n[        R                  " X#U 5      n[        R                  " X#U5      n[        R
                  " U5      n[        R
                  " U5      nUR                  SS	9nUR                  SS	9n	[        UR                  U	R                  5        g )
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Ç  )	rU   r“   Ú	isfortranr   r   rÎ  r*  r   r   )
Ú
triangles1Ú
triangles2r,   r-   Útriang1Útriang2Úrefiner1Úrefiner2Úfine_triang1Úfine_triang2s
             r.   Ú,test_trirefiner_fortran_contiguous_trianglesr[  [  sñ   € ô —’š9¢iÐ0Ó1€JÜ�|Š|˜J×'Ñ'Ð'Ð'ä—’˜*¨4°sÑ;€JÜ�<Š<˜
×#Ñ#Ð#Ð#ä
�ŠÒ)Ó*€AÜ
�ŠÒ-Ó.€AÜ× Ò   zÓ2€GÜ× Ò   zÓ2€Gä×%Ò% gÓ.€HÜ×%Ò% gÓ.€Hà×0Ñ0¸Ð0Ð:€LØ×0Ñ0¸Ð0Ð:€Lä�|×-Ñ-¨|×/EÑ/EÕFr1   c                  ó@  • [         R                  " SSS5      n [        [         R                  [         R                  " X 5      5      u  pXS-
  :„  US:  -  US:„  -  nX   X#   p![         R
                  " S5      nU[         R                  " U5      -  U[         R                  " U5      -  -
  nU[         R                  " U5      -  U[         R                  " U5      -  -   n[        R                  " XV5      nUR                  nS Ul        UR                  n	[        X‰5        g )NrŒ  r   r'  r   g333333ÿ¿g333333ó¿é   )rU   rW   ÚmaprX   rV   ÚradiansrC  rE  r   r   rK   r]   r   )
Úxir,   r-   Úwr„  Úx1Úy1rM   Úqhull_neighborsÚown_neighborss
             r.   Útest_qhull_triangle_orientationrf  r  sä   € ä	�Š�R˜˜CÓ	 €BÜŒr�x‰xœŸš RÓ,Ó-�D€AØ	
�‰U‰�q˜5‘yÑ! Q¨¡XÑ.€AØ‰4�‘€qÜ�JŠJ�r‹N€EØ	
Œ2�6Š6�%‹=‰˜1œRŸVšV E›]™?Ñ	*€BØ	
Œ2�6Š6�%‹=‰˜1œRŸVšV E›]™?Ñ	*€Bô ×Ò Ó'€Fð ×&Ñ&€Oð €FÔØ×$Ñ$€Mä�Õ6r1   c                  óœ  • [         R                  " / SQ5      n [         R                  " SSS[         R                  " S5      -  SS/5      n[         R                  " / SQ/ SQ/ S	Q/[         R                  S
9n[         R                  " / SQ[        S
9n[
        R                  " XX#S9n[
        R                  " U5      nUR                  5         g )Nró  rS   r™   rñ   r¬  rT   r   rš   r›   rÍ   rô  r   )	rU   r“   r  rÏ   r  r   r   r  Ú_get_compressed_triangulation)r,   r-   r   r   rM   r   s         r.   Ú#test_trianalyzer_mismatched_indicesri  ‰  s’   € ä
�ŠÒ&Ó'€AÜ
�Š�"�b˜#œbŸgšg b›k™/¨3°Ð3Ó4€AÜ—’š)¢Y²	Ð:Ä"Ç(Á(ÑK€IÜ�8Š8Ò(´Ñ5€DÜ×Ò  iÑ;€FÜ×Ò Ó'€Hð ×*Ñ*Õ,r1   c                  óâ   • / SQn / SQn/ SQn[         R                  " 5         [        R                  " [        5         [         R
                  " XUSS/5        S S S 5        g ! , (       d  f       g = f)N)rS   rT   rT   )rS   rS   rT   )rÿ   rÇ   r  rT   rS   )r¦   r¿   r7   rF   rG   Útricontourf)r,   r-   r/  s      r.   Ú"test_tricontourf_decreasing_levelsrl  –  sF   € â€AÚ€AÚ€AÜ‡J‚J„LÜ	�Š”zÕ	"Ü�Š˜˜a # s Ô,÷ 
#×	"Ö	"ús   ¼A Á 
A.c                  óî  • SSK Jn   [        R                  " [        SS9   [
        R                  R                  5         S S S 5        [        R                  " [        SS9   [
        R                  R                  [        R                  " / 5      [        R                  " S/5      [        R                  " / /5      SSSS5        S S S 5        [        R                  " / S	Q[        R                  S
9n[        R                  " / SQ[        R                  S
9n[        R                  " [        SS9   [
        R                  R                  X[        R                  " SS//5      SSSS5        S S S 5        [        R                  " / SQ/[        R                  S
9n[        R                  " [        SS9   [
        R                  R                  XU[        R                  " SS/5      SSS5        S S S 5        [        R                  " [        SS9   [
        R                  R                  XUS[        R                  " S//5      SS5        S S S 5        [        R                  " [        SS9   [
        R                  R                  XUSS[        R                  " S//5      S5        S S S 5        [
        R                  R                  XUSSSS5      n[        R                  " [        SS9   UR                  / 5        S S S 5        SS/S 4 H6  n[        R                  " [        SS9   UR                  U5        S S S 5        M8     UR                  [        R                  " S/5      5        [        UR                  5       [        R                   " S5      5        UR                  S5        [        UR                  5       SS/SS/SS//5        [        R                  " [        SS9   [
        R                  R#                  5         S S S 5        [        R                  " [        SS9   [
        R                  R#                  U[        R                  " S/5      5        S S S 5        [        R                  " / SQ5      n[
        R                  R#                  XF5      n[        R                  " [        SS9   UR%                  SS5        S S S 5        [        R                  " [        SS9   [
        R                  R'                  5         S S S 5        [
        R                  R'                  U5      n[        R                  " [        SS9   UR)                  [        R                  " S/5      [        R                  " SS/5      5        S S S 5        g ! , (       d  f       GNU= f! , (       d  f       GNâ= f! , (       d  f       GNM= f! , (       d  f       GNÝ= f! , (       d  f       GN“= f! , (       d  f       GNI= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN!= f! , (       d  f       GNÜ= f! , (       d  f       GNƒ= f! , (       d  f       GNU= f! , (       d  f       g = f)Nr   )Ú_triz1__init__\(\): incompatible constructor arguments.rA   z,x and y must be 1D arrays of the same lengthr   r2   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)Ú
matplotlibrn  r7   rF   r·   ré  r   rG   rU   r“   rZ  Úint_Úcalculate_plane_coefficientsrL   r   Ú	get_edgesÚemptyÚTriContourGeneratorÚcreate_filled_contourÚTrapezoidMapTriFinderÚ	find_many)	rn  r,   r-   r  rM   r   r/  Útcgr  s	            r.   Útest_internal_cpp_apiry     s±  € åô 
�ŠÜØFó
Hô 	�‰×ÑÔ ÷
Hô
 
�ŠÜÐMó
Oä�‰×ÑœrŸxšx¨›|¬R¯XªX°q°c«]¼B¿HºHÀbÀT»NÈBÐPRÐTVØ$ô	&÷
Oô
 	�Š’¤"§*¡*Ñ-€AÜ
�Š’¤"§*¡*Ñ-€AÜ	�ŠÜØCó
Eô 	�‰×Ñ˜q¤R§X¢X°°1¨v¨hÓ%7¸¸RÀÀUÔK÷
Eô
 �8Š8’Y�K¤r§w¡wÑ/€DÜ	�ŠÜð%ó
&ô 	�‰×Ñ˜q T¬2¯8ª8°Q¸°FÓ+;¸RÀÀUÔK÷	
&ô 
�ŠÜÐMó
Oä�‰×Ñ˜q T¨2¬r¯xªx¸!¸¸«ÀÀEÔJ÷
Oô 
�ŠÜð%ó
&ô 	�‰×Ñ˜q T¨2¨r´2·8²8¸b¸T¸FÓ3CÀUÔK÷	
&ô �X‰X×#Ñ# A¨$°°B¸¸EÓB€Fä	�ŠÜð2ó
3ð 	×+Ñ+¨BÔ/÷	
3ð �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ô 	�‰×$Ñ$Ô&÷
Hô
 
�ŠÜØTó
Vô 	�‰×$Ñ$ V¬R¯XªX°q°c«]Ô;÷
Vô
 	�Š’Ó€AÜ
�(‰(×
&Ñ
& vÓ
1€Cä	�ŠÜÐIó
Kà×!Ñ! ! QÔ'÷
Kô
 
�ŠÜØFó
Hô 	�‰×&Ñ&Ô(÷
Hô
 —‘×.Ñ.¨vÓ6€Iä	�ŠÜÐKó
Mà×ÑœBŸHšH a S›M¬2¯8ª8°Q¸°FÓ+;Ô<÷
Mð 
M÷c
Hö 
Hú÷

Oö 
Oú÷
Eö 
Eú÷
&ö 
&ú÷
Oö 
Oú÷
&ö 
&ú÷
3ö 
3ú÷*÷ *ú÷
Hö 
Hú÷

Vö 
Vú÷
Kö 
Kú÷

Hö 
Hú÷
Mõ 
Músœ    VÁ A$VÄ/<V1Æ2;WÈ;WÉ*;W'Ë*W9Ì&XÏ%XÐ%6X0Ò3YÓ'YÕ>Y&Ö
VÖ
V.Ö1
W ×
W×
W$×'
W6×9
XØ
X	Ø
X-Ø0
X?Ù
YÙ
Y#Ù&
Y4c                  ó&  • [         R                  " / SQ5      n [         R                  " / SQ5      nSn[        R                  " X5      n[        R                  " X-   X-   5      n[	        UR
                  5      [	        UR
                  5      :X  d   eg )N)r   r   r   r   r™   )r   r   r   r   r™   g    _ B)rU   r”   r   r   rY   r   )r,   r-   ÚoffsetrM   Útriang_offsets        r.   Útest_qhull_large_offsetr}  û  so   € ä
�
Š
Ò$Ó%€AÜ
�
Š
Ò$Ó%€Aà€FÜ×Ò Ó%€FÜ×&Ò& q¡z°1±:Ó>€MÜˆv×ÑÓ ¤C¨×(?Ñ(?Ó$@Ó@Ð@Ñ@r1   c            	      óh  • / SQn / SQn[         R                  " X5      n[        R                  " 5         [        R
                  " [        SS9   [        R                  " USSS[        R                  /5        S S S 5        [        R
                  " [        SS9   [        R                  " USSS[        R                  * /5        S S S 5        [        R
                  " [        SS9   [        R                  " USSS[        R                  /5        S S S 5        [        R
                  " [        SS9   [        R                  " U[        R                  R                  / S	Q/ S
QS95        S S S 5        g ! , (       d  f       Nÿ= f! , (       d  f       NÄ= f! , (       d  f       NŠ= f! , (       d  f       g = f)Nrü   rý   zCz array must not contain non-finite values within the triangulationrA   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¿   r7   rF   rG   rk  rU   Úinfr  r�  r“   )r,   r-   rM   s      r.   Útest_tricontour_non_finite_zr€    sC  € â€AÚ€AÜ×Ò Ó%€FÜ‡J‚J„Lä	�Š”zð *Kó 
Lä�Š˜  A q¬"¯&©&Ð 1Ô2÷
Lô 
�Š”zð *Kó 
Lä�Š˜  A q¬2¯6©6¨'Ð 2Ô3÷
Lô 
�Š”zð *Kó 
Lä�Š˜  A q¬"¯&©&Ð 1Ô2÷
Lô 
�Š”zð *Dó 
Eä�Š˜¤§¡§¡ªLº| Ð LÔM÷
Eð 
E÷
Lõ 
Lú÷
Lõ 
Lú÷
Lõ 
Lú÷
Eõ 
Eús0   Á*E0Â+FÃ$*FÄ/8F#Å0
E>Æ
FÆ
F Æ#
F1c                  ó$  • / SQn / SQn/ SQn[         R                  " 5       u  p4UR                  XU5      nUR                  XU5      nUR                  UR                  :w  d   eUR                  XR5      nUR                  UR                  :X  d   eg )N)rS   r™   rT   )rS   rT   rS   )rT   rs   rñ   )r¦   r¶   rk  rÑ  Ú_contour_generator)r,   r-   r/  r¸   r¹   Útcs1Útcs2Útcs3s           r.   Útest_tricontourset_reuser†    s‚   € ò 	€AÚ€AÚ€AÜ�lŠl‹n�G€CØ�>‰>˜! Ó"€DØ�=‰=˜˜qÓ!€DØ×"Ñ" d×&=Ñ&=Ó=Ð=Ð=Ø�=‰=˜Ó!€DØ×"Ñ" d×&=Ñ&=Ó=Ð=Ñ=r1   Úpng)Ú
extensionsc                 óš   • / SQn/ SQn/ SQ/nU R                  5       R                  X#USS9  UR                  5       R                  X#USS9  g )Nr=   r>   r   z--)Úls)Ú	linestyle)r¶   rÐ  )Úfig_testÚfig_refr,   r-   Údatas        r.   Útest_triplot_with_lsr�  ,  sO   € â€AÚ€AÚˆ;€DØ×ÑÓ×Ñ  d¨tÐÑ4Ø×ÑÓ×Ñ˜q T°TÐÒ:r1   c                  óÞ   • / SQn / SQn/ SQ/n[         R                  " 5       u  p4UR                  XUSS9u  pVUR                  5       u  pxUS/:X  d   e[	        U5      S:X  d   eUS   UL d   eg )Nr=   r>   r   Úlabel)r‘  r   r   )r¦   r¶   rÐ  Úget_legend_handles_labelsrY   )	r,   r-   rŽ  r¸   r¹   ÚlinesÚmarkersÚhandlesÚlabelss	            r.   Útest_triplot_labelr—  5  sz   € Ú€AÚ€AÚˆ;€DÜ�lŠl‹n�G€CØ—Z‘Z  d°'�ZÐ:�N€EØ×2Ñ2Ó4�O€GØ�g�YÓÐÐÜˆw‹<˜1ÓÐÐØ�1‰:˜ÒÐÑr1   c                  óÀ  • / SQn / SQn[         R                  " X5      n[        R                  " 5       u  p4UR	                  U/ SQS/S9nUR                  5       n[        U5      S:X  d   eSS/SS/SS//n[        US   R                  U5        [        US   R                  / S	Q5        [        US   R                  S
S9U/5        UR	                  U/ SQS/S9nUR                  5       n[        U5      S:X  d   eSS/SS/SS/SS/SS//n[        US   R                  U5        [        US   R                  / SQ5        [        US   R                  5       U/5        g )N©r   rR   rR   r   r   ©r   r   rR   rR   r   ©r   r   r   r   r   r™   ©rÌ  r   r   r   rx   F)Úclosed_only©r   r   r   r   r   r   ©r   r   r   r   r  )r   r   r¦   r¶   rÑ  Ú	get_pathsrY   r   Úverticesr   ÚcodesÚto_polygons©r,   r-   rM   r{  r¹   ÚcsÚpathsÚexpected_verticess           r.   Útest_tricontour_pathr¨  A  s[  € Ú€AÚ€AÜ×Ò Ó%€FÜ�LŠL‹N�E€Að 
�‰�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ÕJr1   c                  óL  • / SQn / SQn[         R                  " X5      n[        R                  " 5       u  p4UR	                  U/ SQSS/S9nUR                  5       n[        U5      S:X  d   eSS/SS/SS/SS/SS//n[        US	   R                  U5        [        US	   R                  / S
Q5        [        US	   R                  5       U/5        UR	                  U/ SQSS/S9nUR                  5       n[        U5      S:X  d   eSS	/SS/S	S/S	S	/SS	//n[        US	   R                  U5        [        US	   R                  / S
Q5        [        US	   R                  5       U/5        UR	                  U/ SQSS/S9nUR                  5       n[        U5      S:X  d   eS	S	/SS	/SS/S	S/S	S	/SS/SS/SS/SS/SS//
n[        US	   R                  U5        [        US	   R                  / SQ5        [        US	   R                  5       [        R                  " US/5      5        g )Nr™  rš  rž  r™   rï   rœ  r   r   r   rŸ  r›  r   g      à¿rR   )
r   r   r   r   r  r   r   r   r   r  rQ   )r   r   r¦   r¶   rk  r   rY   r   r¡  r   r¢  r£  rU   Úsplitr¤  s           r.   Útest_tricontourf_pathr«  [  s.  € Ú€AÚ€AÜ×Ò Ó%€FÜ�LŠL‹N�E€Að 
�‰˜¢¸¸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ÕWr1   )ÚreturnN)DÚnumpyrU   Únumpy.testingr   r   r   Únumpy.ma.testutilsr�  Ú	testutilsr*  r7   ro  ré  Úmatplotlib.pyplotÚpyplotr¦   Úmatplotlib.trir�   r   Úmatplotlib.pathr   Úmatplotlib.testing.decoratorsr   r   r
   r?   rI   rO   re   ro   rv   r8   r9   r{   r—   r®   rº   rÅ   rÊ   rÓ   r  r>  rb  r  rŠ  r˜  rÂ  rÕ  rñ  r%  rA  r(  r)  rI  r,  rN  r[  rf  ri  rl  ry  r}  r€  r†  r�  r—  r¨  r«  r2   r1   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r1   