§
    fŠtj|  ã                   ó–   — d dl Z d dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d„ Z e j        d¬¦  «        d„ ¦   «         Z G d	„ d
¦  «        ZdS )é    N)Úassert_equalÚassert_allclose©Úlog_ndtrÚ	ndtri_exp)Úassert_func_equalc                 ó:   — t          t          | ¦  «        ¦  «        S ©Nr   ©Úys    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/special/tests/test_ndtri_exp.pyÚlog_ndtr_ndtri_expr      s   € Ý•I˜a‘L”LÑ!Ô!Ð!ó    Úclass)Úscopec                  ón   — t           j                             d¦  «        } |                      d¦  «        }|S )NiÒ  iè  )ÚnpÚrandomÚRandomStateÚrandom_sample)Úrandom_stateÚpointss     r   Úuniform_random_pointsr      s/   € å”9×(Ò(¨Ñ.Ô.€LØ×'Ò'¨Ñ-Ô-€FØ€Mr   c            
       óê   — e Zd ZdZej                             ddddd ej        e	¦  «        j
         g¦  «        d„ ¦   «         Zej                             dg d	¢¦  «        d
„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚTestNdtriExpaè  Tests that ndtri_exp is sufficiently close to an inverse of log_ndtr.

    We have separate tests for the five intervals (-inf, -10),
    [-10, -2), [-2, -0.14542), [-0.14542, -1e-6), and [-1e-6, 0).
    ndtri_exp(y) is computed in three different ways depending on if y
    is in (-inf, -2), [-2, log(1 - exp(-2))], or [log(1 - exp(-2), 0).
    Each of these intervals is given its own test with two additional tests
    for handling very small values and values very close to zero.
    Ú
test_inputg      $Àg      YÀg    _ Âg@Œµx¯Äc                 óT   — |}|d|z  dz   z  }t          t          d„ |dd¬¦  «         d S )Ng      à?c                 ó   — | S r
   © r   s    r   ú<lambda>z2TestNdtriExp.test_very_small_arg.<locals>.<lambda>&   ó   € �a€ r   ç›+¡†›„=T©ÚrtolÚnan_ok©r   r   )Úselfr   r   Úscaler   s        r   Útest_very_small_argz TestNdtriExp.test_very_small_arg   sO   € ð ˆØ˜#Ð 5Ñ5¸Ñ;Ñ<ˆÝÝØˆK˜ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   zinterval,expected_rtol)))iöÿÿÿéþÿÿÿr"   ))r*   çÌ—`�Â¿çê-�™—q=))r+   ç�íµ ÷Æ°¾g»½×Ùß|Û=))r-   r   g�íµ ÷Æ°>c                 óZ   — |\  }}||z
  |z  |z   }t          t          d„ ||d¬¦  «         d S )Nc                 ó   — | S r
   r   r   s    r   r    z/TestNdtriExp.test_in_interval.<locals>.<lambda>9   r!   r   Tr#   r&   )r'   ÚintervalÚexpected_rtolr   ÚleftÚrightr   s          r   Útest_in_intervalzTestNdtriExp.test_in_interval+   sR   € ð ‰ˆˆeØ˜$‘,Ð"7Ñ7¸$Ñ>ˆÝÝØˆK˜ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó2  — t           j                             t          j        t          ¦  «        j        ddddg¦  «        }t          j        t          ¦  «        j         }t          j        ||g¦  «        }t          |¦  «        }t          ||d¬¦  «         d S )Nr   r,   )r$   )
r   Ú	nextafterÚreduceÚfinfoÚfloatÚminÚtinyÚarrayr   r   )r'   ÚbignegÚtinynegÚxÚresults        r   Útest_extremezTestNdtriExp.test_extreme>   s~   € õ* ”×$Ò$¥b¤h­u¡o¤oÔ&9¸1¸aÀÀAÐ%FÑGÔGˆå”8�E‘?”?Ô'Ð'ˆÝŒH�g˜vÐ&Ñ'Ô'ˆÝ# AÑ&Ô&ˆÝ˜ ¨Ð.Ñ.Ô.Ð.Ð.Ð.r   c                 óˆ   — t          t          t          j         dg¦  «        t          j         t          j        g¦  «         d S )Ng        )r   r   r   Úinf©r'   s    r   Útest_asymptoteszTestNdtriExp.test_asymptotesZ   s3   € Ý•Y¥¤ ¨˜~Ñ.Ô.µ"´&°½"¼&Ð0AÑBÔBÐBÐBÐBr   c                 óL   — t          j        t          d¦  «        ¦  «        sJ ‚d S )Ng      ð?)r   Úisnanr   rD   s    r   Útest_outside_domainz TestNdtriExp.test_outside_domain]   s$   € ÝŒx�	 #™œÑ'Ô'Ð'Ð'Ð'Ð'Ð'r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpytestÚmarkÚparametrizer   r8   r9   Úmaxr)   r4   rA   rE   rH   r   r   r   r   r      sà   € € € € € ðð ð „[×ÒØ�t˜T 5¨%°(°"´(¸5±/´/Ô2EÐ1EÐFñô ð
ð 
ñô ð
ð „[×ÒØ ð	
ð 	
ð 	
ñô ð
ð 
ñô ð
ð/ð /ð /ð8Cð Cð Cð(ð (ð (ð (ð (r   r   )rM   Únumpyr   Únumpy.testingr   r   Úscipy.specialr   r   Úscipy.special._testutilsr   r   Úfixturer   r   r   r   r   ú<module>rV      sÒ   ðØ €€€Ø Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð"ð "ð "ð €„�gÐÑÔðð ñ ÔððK(ð K(ð K(ð K(ð K(ñ K(ô K(ð K(ð K(ð K(r   