Ë
    âQ(hi8  ã                   ó|  — d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	Z	d dl
mZ 	 d dlZ G d„ d«      Z G d„ d«      Z G d	„ d
«      Z G d„ d«      Zd„ Z G d„ d«      Zd„ Zd„ Zd„ Zd„ Zd„ Z	 d dlZd ee«      v Z G d„ de«      Zdej<                  dfd„Zd„ Z d„ Z!dd„Z"y# e$ r Y Œ�w xY w# e$ r dZY Œ;w xY w) é    N)Úzip_longest)Úassert_)Úassert_func_equalc                   óV   — e Zd ZdZej
                   ej
                  ddfd„Zd„ Zd„ Zy)ÚArgz‚Generate a set of numbers on the real axis, concentrating on
    'interesting' regions and covering all orders of magnitude.

    Tc                 óF  — ||kD  rt        d«      ‚|t        j                   k(  r&dt        j                  t        «      j
                  z  }|t        j                  k(  r&dt        j                  t        «      j
                  z  }||c| _        | _        ||c| _        | _	        y )Nz#a should be less than or equal to bg      à¿ç      à?)
Ú
ValueErrorÚnpÚinfÚfinfoÚfloatÚmaxÚaÚbÚinclusive_aÚinclusive_b)Úselfr   r   r   r   s        úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/special/_mptestutils.pyÚ__init__zArg.__init__   s~   € ØˆqŠ5ÜÐBÓCÐCØ”—‘�Š<Ø”R—X‘Xœe“_×(Ñ(Ñ(ˆAØ”—‘Š;Ø”B—H‘HœU“O×'Ñ'Ñ'ˆAØ˜AˆˆŒ�”à-8¸+Ð*ˆÔ˜$Õ*ó    c                 óx  — |dk  rt        d«      ‚|dz  dk(  r|dz  }|}n
|dz  }|dz   }|dk\  r?t        j                  t        j                  |«      t        j                  |«      |«      }�n¸|dkD  r|dk  rt        j                  |||«      }�n•|dkD  r\t        j                  |d|d¬«      }t        j                  dt        j                  |«      |«      }t        j
                  ||f«      }�n4|dk(  rw|dk  rrt        j                  d||«      }|j                  dkD  rt        j                  |d   «      }	nd}	t        j                  d|	|d¬«      }t        j
                  ||f«      }n¸|dz  dk(  r|dz  }
|
}n
|dz  }
|
dz   }t        j                  dd|d¬«      }|j                  dkD  rt        j                  |d   «      }	nd}	t        j                  d|	|
d¬«      }t        j                  dt        j                  |«      |«      }t        j
                  |||f«      }t        j                  |«      S )	Nr   za should be positiveé   é   é
   F)Úendpointiâÿÿÿ)r
   r   ÚlogspaceÚlog10ÚlinspaceÚhstackÚsizeÚsort)r   r   r   ÚnÚnlogptsÚnlinptsÚptsÚlinptsÚlogptsÚrightÚnlogpts1Únlogpts2Úlogpts1Úlogpts2s                 r   Ú_positive_valueszArg._positive_values'   só  € ØˆqŠ5ÜÐ3Ó4Ð4ð ˆq‰5�AŠ:Ø˜‘dˆGØ‰Gà˜‘dˆGØ ‘kˆGà�Š7ä—+‘+œbŸh™h q›k¬2¯8©8°A«;¸Ó:ŠCØ�ŠU�q˜2’vä—+‘+˜a  AÓ&ŠCØ�ŠUô —[‘[  B¨¸%Ô@ˆFÜ—[‘[ ¤B§H¡H¨Q£K°Ó9ˆFÜ—)‘)˜V VÐ,Ó-ŠCØ�!ŠV˜˜Ršô —[‘[  A wÓ/ˆFØ�{‰{˜QŠÜŸ™ ¨¡Ó+‘à�Ü—[‘[  e¨W¸uÔEˆFÜ—)‘)˜V VÐ,Ó-‰Cð
 ˜‰{˜aÒØ" A™:�Ø#‘à" A™:�Ø# a™<�Ü—[‘[  B¨¸%Ô@ˆFØ�{‰{˜QŠÜŸ™ ¨¡Ó+‘à�Ü—k‘k # u¨hÀÔGˆGÜ—k‘k !¤R§X¡X¨a£[°(Ó;ˆGÜ—)‘)˜W f¨gÐ6Ó7ˆCä�w‰w�s‹|Ðr   c                 ó2  — | j                   | j                  }}||k(  rt        j                  |«      S | j                  s|dz  }| j
                  s|dz  }|dz  dk(  r|dz  }|}n
|dz  }|dz   }|dk\  r| j                  |||«      }g }nN|dk  rg }| j                  | | |«       }n0| j                  d||«      }| j                  d| |dz   «       }|dd }t        j                  |ddd…   |f«      }| j                  s|dd }| j
                  s|dd }|S )z%Return an array containing n numbers.r   r   r   Néÿÿÿÿ)r   r   r   Úzerosr   r   r.   r    )	r   r#   r   r   Ún1Ún2ÚposptsÚnegptsr&   s	            r   Úvaluesz
Arg.values_   sB  € à�v‰v�t—v‘vˆ1ˆØ�Š6Ü—8‘8˜A“;Ðà×ÒØ�‰FˆAØ×ÒØ�‰FˆAàˆq‰5�AŠ:Ø�A‘ˆBØ‰Bà�A‘ˆBØ�a‘ˆBà�Š6Ø×*Ñ*¨1¨a°Ó3ˆFØ‰FØ�!ŠVØˆFØ×+Ñ+¨Q¨B°°°AÓ6Ð6‰Fà×*Ñ*¨1¨a°Ó4ˆFØ×+Ñ+¨A°¨r°2¸±6Ó:Ð:ˆFà˜A˜B�ZˆFÜ�i‰i˜¡ " ™ vÐ.Ó/ˆà×ÒØ�a�b�'ˆCØ×ÒØ�c�r�(ˆCØˆ
r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r.   r6   © r   r   r   r      s-   „ ñð
 Ÿ&™&˜ B§F¡F¸È$ó 	Fò6óp#r   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚFixedArgc                 ó8   — t        j                  |«      | _        y ©N)r   ÚasarrayÚ_values)r   r6   s     r   r   zFixedArg.__init__†   s   € Ü—z‘z &Ó)ˆ�r   c                 ó   — | j                   S r?   )rA   )r   r#   s     r   r6   zFixedArg.values‰   s   € Ø�|‰|Ðr   N©r7   r8   r9   r   r6   r;   r   r   r=   r=   …   s   „ ò*ór   r=   c                   óŽ   — e Zd Z eej
                   ej
                   «       eej
                  ej
                  «      fd„Zd„ Zy)Ú
ComplexArgc                 ó˜   — t        |j                  |j                  «      | _        t        |j                  |j                  «      | _        y r?   )r   ÚrealÚimag©r   r   r   s      r   r   zComplexArg.__init__Ž   s.   € Ü˜Ÿ™ §¡Ó'ˆŒ	Ü˜Ÿ™ §¡Ó'ˆ�	r   c                 ó  — t        t        j                  t        j                  |«      «      «      }| j                  j                  |«      }| j                  j                  |dz   «      }|d d …d f   d|d d d …f   z  z   j                  «       S )Nr   y              ð?)Úintr   ÚfloorÚsqrtrG   r6   rH   Úravel)r   r#   ÚmÚxÚys        r   r6   zComplexArg.values’   sq   € Ü”—‘œŸ™ ›Ó$Ó%ˆØ�I‰I×Ñ˜QÓˆØ�I‰I×Ñ˜Q ™UÓ#ˆØ’!�D�&‘	˜B˜q ¢a ™y™LÑ(×/Ñ/Ó1Ð1r   N)r7   r8   r9   Úcomplexr   r   r   r6   r;   r   r   rE   rE   �   s3   „ Ù  "§&¡& ¨2¯6©6¨'Ó2±g¸b¿f¹fÀbÇfÁfÓ6Mó (ó2r   rE   c                   ó   — e Zd Zdd„Zd„ Zy)ÚIntArgc                 ó    — || _         || _        y r?   )r   r   rI   s      r   r   zIntArg.__init__š   s   € ØˆŒØˆ�r   c                 óp  — t        | j                  | j                  «      j                  t	        d|dz  z   |dz
  «      «      j                  t        «      }t        j                  dd«      }t        j                  t        j                  ||f   «      }||| j                  k\  || j                  k  z     }|S )Nr   r   é   éûÿÿÿ)r   r   r   r6   r   ÚastyperK   r   ÚarangeÚuniqueÚr_)r   r#   Úv1Úv2Úvs        r   r6   zIntArg.valuesž   s�   € Ü�—‘˜Ÿ™Ó ×'Ñ'¬¨A°°1±©H°a¸±cÓ(:Ó;×BÑBÄ3ÓGˆÜ�Y‰Y�r˜1ÓˆÜ�I‰I”b—e‘e˜B ˜F‘mÓ$ˆØˆq�D—F‘F‰{˜q 4§6¡6™zÑ*Ñ+ˆØˆr   N)iüÿÿiè  rC   r;   r   r   rT   rT   ™   s   „ óór   rT   c           	      ó:  — t        | t        j                  «      r| j                  «       }|S t	        | «      }t        j
                  | D �cg c]  }t        |t        «      rdnd‘Œ c}«      }||t        |«      z  z  j                  t        «      dz   }t        | |«      D ��cg c]  \  }}|j                  |«      ‘Œ }}}t        j                  t        j                  t        j                  |Ž Ž «      j                  |d«      j                   }|S c c}w c c}}w )Ng      ø?g      ð?r   r0   )Ú
isinstancer   ÚndarrayÚcopyÚlenr@   rE   ÚsumrY   rK   Úzipr6   ÚarrayÚbroadcast_arraysÚix_ÚreshapeÚT)Úargspecr#   ÚargsÚnargsÚspecÚmsrO   s          r   Úget_argsrq   ¦   så   € Ü�'œ2Ÿ:™:Ô&Ø�|‰|‹~ˆð €Kô �G“ˆÜ�Z‰ZØFMÖN¸d”J˜t¤ZÔ0‰S°cÑ9ÒNó
ˆð �"”S˜“W‘*‰o×%Ñ%¤cÓ*¨QÑ.ˆä.1°'¸2Ó.>×?¡7 4¨�—‘˜A•Ð?ˆÑ?Ü�x‰xœ×+Ñ+¬R¯V©V°T¨]Ð;Ó<×DÑDÀUÈBÓO×QÑQˆà€Kùò Oùó @s   ÁDÂ#Dc                   ó(   — e Zd Z	 	 	 	 dd„Zd„ Zd„ Zy)Ú
MpmathDataNc           	      óÚ  — |€0	 t        t        j                  j                  dd«      «      }|rdnd}|| _        || _        || _        || _        || _	        || _
        || _        |	| _        |
| _        || _        t        | j                  t         j"                  «      r>t!        j$                  | j                  j&                  t         j(                  «      | _        n6t-        | j                  D �cg c]  }t        |t.        «      ‘Œ c}«      | _        |
| _        || _        |r|dk(  rt3        |dd «      }|r|dk(  rt3        |dd «      }|| _        || _        y # t        $ r d}Y �Œ7w xY wc c}w )NÚSCIPY_XSLOWÚ0Fiˆ  iô  z<lambda>r7   )rK   ÚosÚenvironÚgetr
   Ú
scipy_funcÚmpmath_funcÚarg_specÚdpsÚprecr#   ÚrtolÚatolÚignore_inf_signÚnan_okra   r   rb   Ú
issubdtypeÚdtypeÚcomplexfloatingÚ
is_complexÚanyrE   Údistinguish_nan_and_infÚgetattrÚnameÚparam_filter)r   rz   r{   r|   rŠ   r}   r~   r#   r   r€   r�   rˆ   r‚   r‹   Úis_xslowÚargs                   r   r   zMpmathData.__init__·   s?  € ð ˆ9ð!ÜœrŸz™zŸ~™~¨m¸SÓAÓB�ñ !‘ cˆAà$ˆŒØ&ˆÔØ ˆŒØˆŒØˆŒ	ØˆŒØˆŒ	ØˆŒ	Ø.ˆÔØˆŒÜ�d—m‘m¤R§Z¡ZÔ0Ü Ÿm™m¨D¯M©M×,?Ñ,?Ä×ASÑASÓTˆD�Oä!Ø8<¿¹ÖF°”˜C¤Õ,ÒFóˆDŒOð  /ˆÔØ'>ˆÔ$Ù�t˜zÒ)Ü˜: z°4Ó8ˆDÙ�t˜zÒ)Ü˜;¨
°DÓ9ˆDØˆŒ	Ø(ˆÕøô9 ò !Ø “ð!üò& Gs   „)E Ã.E(ÅE%Å$E%c                 ó|  ‡ ‡
‡— t         j                  j                  d«       t        ‰ j                  ‰ j
                  «      }t        j                  j                  t        j                  j                  }}	 ‰ j                  �‰ j                  g}ndg}‰ j                  �‰ j                  t        j                  _	        t        j                  |j                  t         j                  «      r
t        Šd„ Š
nd„ Š
d„ Št        |«      D ]|  \  }}|t        j                  _        	 t        ‰ j                   ˆ
ˆˆ fd„|d‰ j"                  ‰ j$                  ‰ j&                  ‰ j(                  ‰ j*                  ‰ j,                  ¬«
        n ||ct        j                  _        t        j                  _	        y # t.        $ rN |t1        |«      d	z
  k\  r9t3        j4                  «       \  }}}	|j6                  |	ur|j9                  |	«      ‚|‚Y �Œw xY w# ||ct        j                  _        t        j                  _	        w xY w)
NiÒ  é   c                 ó>   — t        j                  t        | «      «      S r?   )ÚmpmathÚmpcrR   ©rP   s    r   Úmptypez MpmathData.check.<locals>.mptypeö   s   € Ü!Ÿ:™:¤g¨a£jÓ1Ð1r   c                 ó>   — t        j                  t        | «      «      S r?   )r‘   Úmpfr   r“   s    r   r”   z MpmathData.check.<locals>.mptypeù   s   € Ü!Ÿ:™:¤e¨A£hÓ/Ð/r   c                 ó®   — t        | j                  «      ddt        | j                  «      z   z  kD  rt        j                  S t        | j                  «      S )Ng¼‰Ø—²Òœ<r   )ÚabsrH   rG   r   ÚnanÚ	mpf2floatr“   s    r   Úpytypez MpmathData.check.<locals>.pytypeü   s;   € Ü˜1Ÿ6™6“{ U¨A´°A·F±F³©OÑ%<Ò<Ü!Ÿv™v˜ä(¨¯©Ó0Ð0r   c                  óB   •—  ‰ ‰j                   t        ‰| «      Ž «      S r?   )r{   Úmap)r   r”   r›   r   s    €€€r   ú<lambda>z"MpmathData.check.<locals>.<lambda>	  s    ø€ ¡6Ð*:¨$×*:Ñ*:¼CÀÈ»NÐ*KÓ#L€ r   F)Ú
vectorizedr   r€   r�   rˆ   r‚   r‹   r   )r   ÚrandomÚseedrq   r|   r#   r‘   Úmpr}   r~   rƒ   r„   r…   Úmpc2complexÚ	enumerater   rz   r   r€   r�   rˆ   r‚   r‹   ÚAssertionErrorrd   ÚsysÚexc_infoÚ__traceback__Úwith_traceback)r   ÚargarrÚold_dpsÚold_precÚdps_listÚjr}   ÚtpÚvalueÚtbr”   r›   s   `         @@r   ÚcheckzMpmathData.checkà   s³  ú€ Ü
�	‰	�‰�tÔô ˜$Ÿ-™-¨¯©Ó0ˆô #ŸI™IŸM™M¬6¯9©9¯>©>�ˆð4	>Ø�x‰xÐ#Ø ŸH™H˜:‘à˜4�Ø�y‰yÐ$Ø!%§¡”—	‘	”ô
 �}‰}˜VŸ\™\¬2×+=Ñ+=Ô>Ü$�ó2ò0ò1ô $ HÓ-ò $‘��3Ø #”—	‘	”ð$Ü%ØŸ™ÝLØØ#(Ø!ŸY™YØ!ŸY™YØ(,×(<Ñ(<Ø04×0LÑ0LØ#Ÿ{™{Ø%)×%6Ñ%6õñ ð!$ð2 -4°XÐ)ŒF�I‰IŒMœ6Ÿ9™9�>øô &ò $ØœC ›M¨!™OÒ+ä(+¯©«™˜˜E 2Ø ×.Ñ.°bÑ8Ø"'×"6Ñ"6°rÓ":Ð:Ø#˜ò ,ð$ûð -4°XÐ)ŒF�I‰IŒMœ6Ÿ9™9�>ús3   Á8B,H Ä%A F4ÆH Æ4AHÈH È
HÈH È-H;c                 óZ   — | j                   rd| j                  › d�S d| j                  › d�S )Nz<MpmathData: z (complex)>ú>)r†   rŠ   )r   s    r   Ú__repr__zMpmathData.__repr__  s/   € Ø�?Š?Ø" 4§9¡9 +¨[Ð9Ð9à" 4§9¡9 +¨QÐ/Ð/r   )
NNNNgH¯¼šò×z>gYóøÂn¥FTTN)r7   r8   r9   r   r²   rµ   r;   r   r   rs   rs   ¶   s   „ Ø?CØ>DØ@DØ+/ó')òR<>ó|0r   rs   c                  ó:   — t        | i |¤Ž}|j                  «        y r?   )rs   r²   )r   ÚkwÚds      r   Úassert_mpmath_equalr¹   %  s   € Ü�AÐ˜Ñ€AØ‡G�G…Ir   c                 óL   — t        j                  j                  d¬«      | «      S )Nz8    Test not yet functional (too slow), needs more work.)Úreason)ÚpytestÚmarkÚskip)Úfuncs    r   Únonfunctional_tooslowrÀ   *  s)   € Ü�;‰;×ÑØIð ó à
óð r   c                 óF   — t        t        j                  | ddd¬«      «      S )zá
    Convert an mpf to the nearest floating point number. Just using
    float directly doesn't work because of results like this:

    with mp.workdps(50):
        float(mpf("0.99999999999999999")) = 0.9999999999999999

    é   r   ©Ú	min_fixedÚ	max_fixed)r   r‘   Únstrr“   s    r   rš   rš   4  s   € ô ”—‘˜Q ¨a¸1Ô=Ó>Ð>r   c                 óf   — t        t        | j                  «      t        | j                  «      «      S r?   )rR   rš   rG   rH   r“   s    r   r£   r£   @  s!   € Ü”9˜QŸV™VÓ$¤i°·±Ó&7Ó8Ð8r   c                 ó   ‡ ‡— d„ Šˆ ˆfd„}|S )Nc                 ób   — t        | t        j                  «      rt        | «      S t	        | «      S r?   )ra   r‘   r’   rR   r   r“   s    r   Útofloatztrace_args.<locals>.tofloatE  s#   € Ü�aœŸ™Ô$Ü˜1“:Ðä˜“8ˆOr   c                  ó  •— t         j                  j                  t        t	        ‰| «      «      ›d�«       t         j                  j                  «        	  ‰| i |¤Ž}t         j                  j                  d|›�«       t         j                  j                  d«       t         j                  j                  «        |S # t         j                  j                  d«       t         j                  j                  «        w xY w)Nú: z-> ú
)r¦   ÚstderrÚwriteÚtupler�   Úflush)r   r·   Úrr¿   rÊ   s      €€r   Úwrapztrace_args.<locals>.wrapK  s¯   ø€ Ü�
‰
×ÑœE¤# g¨q£/Ó2Ð5°RÐ8Ô9Ü�
‰
×ÑÔð	Ù�a�˜2‘ˆAÜ�J‰J×Ñ˜s 1 %˜[Ô)ä�J‰J×Ñ˜TÔ"Ü�J‰J×ÑÔØˆøô �J‰J×Ñ˜TÔ"Ü�J‰J×ÑÕús   Á*B? Â??C>r;   )r¿   rÓ   rÊ   s   ` @r   Ú
trace_argsrÔ   D  s   ù€ òõ	ð €Kr   Ú	setitimerFc                   ó   — e Zd Zy)ÚTimeoutErrorN)r7   r8   r9   r;   r   r   r×   r×   _  s   „ Ør   r×   r	   Tc                 ó@   ‡ ‡‡— t         r|rd„ Šˆˆˆ fd„}|S ˆˆ fd„}|S )a  
    Decorator for setting a timeout for pure-Python functions.

    If the function does not return within `timeout` seconds, the
    value `return_val` is returned instead.

    On POSIX this uses SIGALRM by default. On non-POSIX, settrace is
    used. Do not use this with threads: the SIGALRM implementation
    does probably not work well. The settrace implementation only
    traces the current thread.

    The settrace implementation slows down execution speed. Slowdown
    by a factor around 10 is probably typical.
    c                 ó   — t        «       ‚r?   )r×   )ÚsignumÚframes     r   Úsigalrm_handlerz%time_limited.<locals>.sigalrm_handlers  s
   € Ü“.Ð r   c                 ó   •‡ — ˆ ˆˆˆfd„}|S )Nc                  ó‚  •— t        j                   t         j                  ‰«      }t        j                  t         j                  ‰«       	  ‰| i |¤Žt        j                  t         j                  d«       t        j                   t         j                  |«       S # t        $ rM ‰cY t        j                  t         j                  d«       t        j                   t         j                  |«       S w xY w# t        j                  t         j                  d«       t        j                   t         j                  |«       w xY w)Nr   )ÚsignalÚSIGALRMrÕ   ÚITIMER_REALr×   )r   r·   Úold_handlerr¿   Ú
return_valrÜ   Útimeouts      €€€€r   rÓ   z(time_limited.<locals>.deco.<locals>.wrapw  sÑ   ø€ Ü$Ÿm™m¬F¯N©N¸OÓL�Ü× Ñ ¤×!3Ñ!3°WÔ=ð?Ù ˜> b™>ô ×$Ñ$¤V×%7Ñ%7¸Ô;Ü—M‘M¤&§.¡.°+Õ>øô	 $ò &Ø%Ñ%ä×$Ñ$¤V×%7Ñ%7¸Ô;Ü—M‘M¤&§.¡.°+Õ>ð	&ûô ×$Ñ$¤V×%7Ñ%7¸Ô;Ü—M‘M¤&§.¡.°+Õ>ús%   ÁB ÂC1Â&C4 Ã0C1Ã1C4 Ã4A
D>r;   )r¿   rÓ   rã   rÜ   rä   s   ` €€€r   Údecoztime_limited.<locals>.decov  s   ù€ ÷	?ð ˆKr   c                 ó   •‡ — ˆ ˆˆfd„}|S )Nc                  óN  •‡‡— t        j                   «       Šˆˆˆfd„Št        j                  ‰«       	  ‰| i |¤Žt        j                  d «       S # t        $ r/ t        j                  d «       ‰cY t        j                  d «       S w xY w# t        j                  d «       w xY w)Nc                 óP   •— t        j                   «       ‰z
  ‰kD  r
t        «       ‚‰S r?   )Útimer×   )rÛ   Úeventr�   Ú
start_timerä   Útraces      €€€r   rì   z7time_limited.<locals>.deco.<locals>.wrap.<locals>.trace‡  s#   ø€ Ü—y‘y“{ ZÑ/°'Ò9Ü*›nÐ,Ø �Lr   )ré   r¦   Úsettracer×   )r   r·   rë   rì   r¿   rã   rä   s     @@€€€r   rÓ   z(time_limited.<locals>.deco.<locals>.wrap„  s}   ú€ Ü!ŸY™Y›[�
ö!ô —‘˜UÔ#ð'Ù ˜> b™>ô
 —L‘L Õ&øô	 $ò &Ü—L‘L Ô&Ø%Ñ%ä—L‘L Õ&ð	&ûô —L‘L Õ&ús#   µA Á B
Á2B Â	B
Â
B ÂB$r;   )r¿   rÓ   rã   rä   s   ` €€r   rå   ztime_limited.<locals>.decoƒ  s   ù€ ö'ð ˆKr   )ÚPOSIX)rä   rã   Úuse_sigalrmrå   rÜ   s   ``  @r   Útime_limitedrð   c  s'   ú€ õ ‘ò	!ö	ð< €Kõ#	ð" €Kr   c                 ó   ‡ — ˆ fd„}|S )z9Decorate function to return nan if it raises an exceptionc                  óT   •— 	  ‰| i |¤ŽS # t         $ r t        j                  cY S w xY wr?   )Ú	Exceptionr   r™   )r   r·   r¿   s     €r   rÓ   zexception_to_nan.<locals>.wrap™  s.   ø€ ð	Ù˜�>˜b‘>Ð!øÜò 	Ü—6‘6ŠMð	ús   ƒ ‹'¦'r;   ©r¿   rÓ   s   ` r   Úexception_to_nanrõ   —  s   ø€ ôð
 €Kr   c                 ó   ‡ — ˆ fd„}|S )z1Decorate function to return nan if it returns infc                  ób   •—  ‰| i |¤Ž}t        j                  |«      st         j                  S |S r?   )r   Úisfiniter™   )r   r·   r_   r¿   s      €r   rÓ   zinf_to_nan.<locals>.wrap£  s)   ø€ Ù�!ˆN�r‰NˆÜ�{‰{˜1Œ~Ü—6‘6ˆMØˆr   r;   rô   s   ` r   Ú
inf_to_nanrù   ¡  s   ø€ ôð
 €Kr   c                 ó   — g }t        t        | |«      «      D ]`  \  }\  }}|�|€t        d«      ‚t        j                  ||z
  «      ||t        j                  |«      z  z   kD  sŒM|j                  |||f«       Œb t        |«      }|dkD  rôt        t        t        j                  |«      «      «      }	dg}
|
j                  d|› ddz   › d�«       |D ]Ž  \  }}}t        j                  ||	dd¬	«      }t        j                  ||	dd¬	«      }|dk(  rd
}n1t        j                  ||z
  |z  «      }t        j                  |d«      }|
j                  |› d|› d|› d|› d�«       Œ� t        ddj                  |
«      «       yy)z|
    Compare lists of mpmath.mpf's or mpmath.mpc's directly so that it
    can be done to higher precision than double.
    Nz,Lengths of inputs res and std are not equal.r   Ú zBad results (z out of r   z) for the following points:rÃ   r   é   rÌ   z != z (rdiff ú)FrÍ   )r¤   r   r
   r‘   ÚfabsÚappendrd   rK   r˜   r   r   rÆ   r   Újoin)ÚresÚstdr€   r   ÚfailuresÚkÚresvalÚstdvalÚnfailÚndigitsÚmsgÚresrepÚstdrepÚrdiffs                 r   Úmp_assert_allcloser  «  s  € ð
 €HÜ(¬°S¸#Ó)>Ó?ò 1ÑˆÑˆF�FØˆ>˜V˜^ÜÐKÓLÐLÜ�;‰;�v ‘Ó'¨$°´f·k±kÀ&Ó6IÑ1IÑ*IÓIØ�O‰O˜Q ¨Ð/Õ0ð	1ô �‹M€EØˆq‚yÜ”cœ"Ÿ(™( 4›.Ó)Ó*ˆØˆdˆØ�
‰
�] 5 '¨°!°a±%°Ð8SÐTÔUØ!)ò 	EÑˆAˆv�vÜ—[‘[ ¨¸AÈÔKˆFÜ—[‘[ ¨¸AÈÔKˆFØ˜Š{Ø‘äŸ™ V¨f¡_°fÑ$<Ó=�ÜŸ™ E¨1Ó-�Ø�J‰J˜!˜˜B˜v˜h d¨6¨(°(¸5¸'ÀÐCÕDð	Eô 	��t—y‘y “~Õ&ð r   )r   g—ÔFFõg<)#rw   r¦   ré   Ú	itertoolsr   Únumpyr   Únumpy.testingr   r¼   Úscipy.special._testutilsr   r‘   ÚImportErrorr   r=   rE   rT   rq   rs   r¹   rÀ   rš   r£   rÔ   rß   Údirrî   ró   r×   r™   rð   rõ   rù   r  r;   r   r   ú<module>r     sê   ðÛ 	Û 
Û Ý !ã Ý !Û å 6ð	Û÷lñ l÷^ñ ÷	2ñ 	2÷
ñ 
ò÷ l0ñ l0ò^ò
ò	?ò9òð(ÛØ™C ›KÐ'€Eô
	�9ô 	ð ¨¯©¸Tó 1òhòô'øð{ ò 	Ùð	ûðZ
 ò Ø‚Eðús#   ¨B& Á1B1 Â&B.Â-B.Â1B;Â:B;