B
    <ZíB  ã               @   s|   d dl T dd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Ú*c              C   s‚  dt _tdƒtddƒkst‚tdƒtddƒks2t‚tdƒtddƒkrHt‚tddƒtddƒks`t‚ttdƒƒdkstt‚ttdƒƒdksˆt‚tdd	ƒ} d| ksžt‚d| ksªt‚d	| ks¶t‚d
| ksÂt‚d| ksÎt‚tdd	ƒ| ksàt‚tddƒ| ksòt‚td
dƒ| kst‚tddƒ| kst‚tt tƒ}tddƒ|ks:t‚tdtƒ|ksNt‚tddƒtddƒksht‚d	tt dƒks~t‚d S )Né   é   éþÿÿÿéÿÿÿÿé   z0.1z1[0.099999999999999991673, 0.10000000000000000555]z2mpi('0.099999999999999992', '0.10000000000000001')é   gš™™™™™ñ¿gÍÌÌÌÌÌ@r   g      @éûÿÿÿé   é
   )ÚivÚdpsÚmpiÚAssertionErrorÚstrÚreprÚinf)ÚuÚw© r   ú9lib/python3.7/site-packages/mpmath/tests/test_interval.pyÚtest_interval_identity   s,    
r   c               C   s®   t tdƒƒt dƒkst‚t tdƒƒt dƒks0t‚t tddƒƒt tddƒƒksPt‚t t d¡ƒt dƒksjt‚t t dd¡ƒt dƒks†t‚t t dd¡ƒt t dd¡ƒksªt‚d S )Nr   g      
@é   y      @      @)r   r   )r   r   )Úhashr   r   r   Úmpcr   r   r   r   Útest_interval_hash   s     r   c              C   sÌ  dt _tdƒtddƒ tddƒks&t‚tddƒd tddƒksBt‚tdƒtdd	ƒ tdtd
ƒƒksft‚ddtdƒ  } | jd  k rŽ| jk s”n t‚tdƒtdƒ } t  jd7  _t  d¡}t  jd8  _| j|  k râ| jk sèn t‚tdƒtdtƒ sþt‚tddƒt tddƒkst‚tdƒt dks2t‚tdƒd tt tƒksPt‚ttƒd tt tƒksnt‚tdƒt tt tƒksŒt‚dtdtƒ tddƒksªt‚t	tddƒtddƒ d ƒdksÐt‚tddƒd tddƒksît‚tddƒj
dkst‚dt _tt jƒ}dt _|
 }|j|jk s2t‚|j|jksDt‚tt jƒ}||
 ks^t‚ttddƒƒtddƒks|t‚ttddƒƒtddƒksšt‚ttddƒƒtddƒks¸t‚ttddƒƒtddƒksÖt‚tdƒtddƒ tdƒksöt‚tddƒtdƒ tdƒkst‚tddƒjdks,t‚tddƒtddƒ tddƒksPt‚tt dƒtdtƒ tt dƒksxt‚tt dƒtt tƒ tt tƒks¢t‚tdtƒtt dƒ tdtƒksÈt‚d S )Nr   r   r   r   r
   é   r   r   g¸ÔJzî5z1.0000000000000002g      à?é2   iöÿÿÿz0[-166.66666666666668561, -166.66666666666665719]é@   é   r   éýÿÿÿg      à¿)r   r   r   r   ÚmpfÚaÚbZsqrtr   r   ZmidÚpiÚabsZdelta)ÚxZsqr"   r#   r   r   r   Útest_interval_arithmetic#   sR     $


  $(*r'   c               C   s€  t ddƒt t t dƒkst‚t ddƒt  t dtƒks<t‚t ddƒt t dtƒksXt‚t ddƒt dtƒ t dtƒkszt‚t ddƒt t t tƒks˜t‚t ddƒt dtƒ t t tƒks¼t‚t ddƒt t tƒ t t tƒksât‚t t dƒt ddƒ t t dƒks
t‚t t dƒt ddƒ t t dƒ s2t‚t t dƒt t tƒ t t tƒks\t‚t ddƒt ddƒ t ddƒks€t‚t d	d
ƒt dd	ƒ t ddƒks¤t‚t ttƒd t t tƒksÄt‚t t t ƒd t t tƒksèt‚t dƒt t d	ƒ t t tƒkst‚t dƒt dtƒ t t tƒks2t‚t dtƒt dƒ t t tƒksVt‚t t d	ƒt dƒ t t tƒks|t‚d S )Nr   r   r   r	   iàÿÿÿé   itÿÿÿé    r   r   r    r   r   )r   r   r   r   r   r   r   Útest_interval_mulN   s$    "$&((*$$ $&$$r*   c               C   s`  t dƒd t ddƒkst‚t dƒd t ddƒks4t‚t ddƒd t ddƒksPt‚t ddƒd t ddƒkslt‚t ddƒd t ddƒksˆt‚t ddƒd t ddƒks¤t‚t d	dƒd t ddƒksÀt‚t ddƒd t ddƒksÜt‚t d
ƒd t ddƒksöt‚t dƒd t ddƒkst‚t d
ƒd	 t ddƒks.t‚t dƒd	 t ddƒksJt‚t ddƒt t ddƒksht‚t ddƒt  t dtƒksˆt‚t dtƒt t dtƒks¦t‚t dtƒt  t dtƒksÆt‚t dtƒt t dtƒksät‚t dtƒt  t ddƒkst‚t ddƒd t ddƒks"t‚t ddƒd dks:t‚t ddƒt dƒ t ddƒks\t‚d S )Nr   r   é	   r    r   r   r   iåÿÿÿr   r   g      Ð?éüÿÿÿg      Ð¿g      °?)r   r   r   r   r   r   r   Útest_interval_powc   s*       r-   c               C   s   t dƒd t dƒkst‚d S )Nr   g      à?r   )r   r   r   r   r   r   Útest_interval_sqrtz   s    r.   c               C   sÀ	  t ddƒt ddƒ t t dƒks$t‚t ddƒt ddƒ t dtƒksFt‚t ttƒt ttƒ t dtƒksht‚t ttƒt dtƒ t dtƒksŠt‚t ttƒt ddƒ t ttƒks¬t‚t dtƒt dtƒ t dtƒksÎt‚t dtƒt ddƒ t dtƒksðt‚t dtƒt ddƒ t dtƒkst‚t dtƒt dtƒ t dtƒks8t‚t ddƒt dtƒ t ddƒks\t‚t ddƒt dtƒ t d	d
ƒks€t‚t t dƒt dtƒ t t d
ƒks¨t‚t t tƒt dtƒ t t tƒksÐt‚t dtƒt dtƒ t dtƒksôt‚t d	tƒt dtƒ t dtƒkst‚t ddƒt ttƒ t ddƒks<t‚t ddƒt ttƒ t ddƒks`t‚t ddƒt ttƒ t ddƒks„t‚t t dƒt ttƒ t t dƒks¬t‚t t dƒt ttƒ t t dƒksÔt‚t t tƒt ttƒ t t tƒksüt‚t d	tƒt ttƒ t dtƒks t‚t dtƒt ttƒ t dtƒksDt‚t dtƒt ttƒ t dtƒksht‚t ttƒt ttƒ t dtƒksŒt‚t ddƒt ddƒ t t t
 ƒks´t‚t ddƒt ddƒ t dt
 ƒksÚt‚t ddƒt ddƒ t t dƒks t‚t ddƒt ddƒ t t dƒks&t‚t ddƒt ddƒ t dt
 ƒksLt‚t ddƒt ddƒ t dt
 ƒksrt‚t ddƒt ddƒ t t dƒks˜t‚t ddƒt ddƒ t t dƒks¾t‚t ddƒt ddƒ t t t
 ƒksæt‚t ddƒt ddƒ t t t
 ƒkst‚t ddƒt ddƒ t t t
 ƒks6t‚t ddƒt ddƒ t t t
 ƒks^t‚t ddƒt ddƒ t t t
 ƒks†t‚t ddƒt ddƒ t t t
 ƒks®t‚t ddƒt ddƒ t t t
 ƒksÖt‚t ddƒt ddƒ t t t
 ƒksþt‚t ddƒt ddƒ t t t
 ƒks&t‚t ddƒt ddƒ t t dƒksLt‚t ddƒt ddƒ t dt
 ƒksrt‚t ddƒt ddƒ t dt
 ƒks˜t‚t ddƒt ddƒ t t dƒks¾t‚t ddƒt ddƒ t t dƒksät‚t ddƒt ddƒ t dt
 ƒks
t‚t ddƒt ddƒ t dt
 ƒks0t‚t ddƒt ddƒ t ddƒksTt‚t ddƒt ddƒ t ddƒksxt‚t ddƒt ddƒ t ddƒksœt‚t ddƒt ddƒ t ddƒksÀt‚t ddƒt ddƒ t ddƒksät‚t ddƒt ddƒ t ddƒkst‚t ddƒt ddƒ t ddƒks,t‚t ddƒt ddƒ t ddƒksPt‚t ddƒt ddƒ t ddƒkstt‚t ddƒt ddƒ t ddƒks˜t‚t ddƒt ddƒ t ddƒks¼t‚t ddƒt ddƒ t ddƒksàt‚t ddƒt ddƒ t ddƒk	st‚t ddƒt ddƒ t ddƒk	s(t‚t ddƒt ddƒ t ddƒk	sLt‚t ddƒt ddƒ t ddƒk	spt‚t ddƒt ddƒ t t tƒk	s–t‚t ddƒt ddƒ t t tƒk	s¼t‚d S )Ng      à?r   r   r   g      à¿r   r,   é   iøÿÿÿé   iðÿÿÿg        g      Ð¿r   r   g      Ð?g       Àg      @g       @g      ð¿g       @g       Àg      Àg      À?g      ð?)r   r   r   r   r   r   r   Útest_interval_div}   s†    $""""""$$$$(($$$$$((($$$$(&&&&&&&(((((((((&&&&&&&$$$$$$$$$$$$$$$$&r1   c        
      C   sæ  dt _t j} t j}t j}t j}| tdƒƒdks2t‚|tdƒƒdksFt‚| tddƒƒtddƒksbt‚|tddƒƒtddƒks~t‚| tddƒƒtdd	ƒksšt‚|tddƒƒtd
dƒks¶t‚|tddƒƒtddƒksÒt‚| tddƒƒtddƒksît‚| tddƒƒtddƒkst‚| tddƒƒtddƒks*t‚|tddƒƒtddƒksHt‚|tddƒƒtddƒksft‚tddƒ|tddƒƒks„t‚tddƒ|tddƒƒks¢t‚| tddƒƒs¶t‚| tddƒƒtddƒksÔt‚| tddƒƒtddƒksòt‚tddƒ|tddƒƒkst‚|tddƒƒtdd ƒks.t‚|tddƒƒtd!d"ƒksLt‚d#t _dd$d%  tdƒ }xÀd&D ]¸}|t _d|dt|ƒ ƒkst‚d|dd$d%  t|ƒ ƒks²t‚d| d't|ƒ ƒksÌt‚d| |t|ƒ ƒksæt‚d| dt|ƒ ƒks t‚d| dd$d%  t|ƒ ƒkslt‚qlW dt _| tdtƒƒtddƒksLt‚|tdtƒƒtddƒksjt‚| tt dƒƒtddƒksŠt‚|tt dƒƒtddƒksªt‚|tddƒƒ}t	|j
ƒ t d¡¡sÔt‚t	|jƒ t d¡¡sðt‚t  tddƒ¡}t	|j
ƒ t d¡¡st‚t	|jƒ t d¡¡s8t‚xŽtd(d)dƒD ]~}t  |t j ¡}	d|	ksht‚|	dksvt‚|	dks„t‚t  |d t j ¡}	d|	ks¦t‚|	dks´t‚|	dksFt‚qFW x”td*d+dƒD ]„}t  |t j ¡}	d|	ksøt‚|	dkst‚|r|	dkst‚t  |d t j ¡}	d|	ks<t‚|	dksJt‚|	dksÖt‚qÖW x‚td*d)ƒD ]t}t  |d t j ¡}	|	j
d  k rž|	jk s¤n t‚t  |t j ¡}	|rj|	j
d  k rÖ|	jk sjn t‚qjW d S ),Nr   r   r   g‹µ(Já?g      ð?gï	Tíê?r   grSW&¢Ú¿gŒµ(Já?gî	Tíê?g      @g°ÊÏ¯&ã?r   g      à?g      ø?g§ùÅOÕ²?gï	Tíê¿gðKtè®Þ?g0Žä.ÿ++g0Žä.ÿ;«g      @r   g_Át÷í¿gÀ$Û¦êä¿r
   g      @gÙJkp…'Ò?gIÔ<l­æ?g±ÊÏ¯&ã?gF´Ñêöí?g¯ÜÝ¹7è¿gbº~;sÖ¿g4™àõ¯î¿gV°
NÉ“æ¿é7   r   r   )r   é(   éP   g      @r	   é   iúÿÿÿr/   )r   r   ÚcosÚsinÚtanr$   r   r   r   r!   r"   ÚaeÚmpr#   ZcotÚrange)
r6   r7   r8   r$   r   Úpr   ÚvÚnr&   r   r   r   Útest_interval_cos_sinÃ   sŽ    
"(  "r?   c               C   sh  dt _dt_t  dd¡dks t‚t  dd¡dks4t‚t  dd¡dksHt‚dt  ddgddg¡ksdt‚d	t  ddgddg¡ks€t‚t  dd¡d
 dks˜t‚t  ddgddg¡d d t  ddgddg¡ksÌt‚t  ddgddg¡d t  ddgddg¡ksüt‚t  ddgddg¡d t  ddgddg¡ks.t‚t  ddgddg¡d t  ddgddg¡ks`t‚t  d¡ t d¡¡s|t‚t  d¡ t d¡¡s˜t‚t  dd¡t  dd¡  t dd¡t dd¡ ¡sÐt‚d
t  d¡d ksèt‚d
t  d¡d ks t‚t	t  d¡ƒdkst‚t	t  t
¡ƒt
ks0t‚t	t  dd¡ƒdksJt‚t	t  d¡ƒdksbt‚t	t  dd¡ƒdks|t‚t	t  dddg¡ƒt  ddg¡ks¤t‚t	t  dddg¡ƒt  ddg¡ksÌt‚t	t  ddgddg¡ƒt  ddg¡ksøt‚t	t  ddgddg¡ƒt  ddg¡ks$t‚t  dd¡d dks>t‚t  dd¡d dksXt‚t  dd¡d dksrt‚t  dd¡d dksŒt‚t  dd¡d dks¦t‚t  dd¡d dksÀt‚t  dd¡d dksÚt‚t  dd¡d dksôt‚t  d¡ t d¡¡st‚t  d¡ t d¡¡s,t‚t  d¡ t d¡¡sHt‚t  d¡ t d¡¡sdt‚d S )Nr   r   r   y       @      @y       @      @y      ð?      @r   r   y       @      @y              ð?y              @r
   r   r/   y               @iøÿÿÿr,   r   r   g      à?r   r    é   é   y      À      (@y      GÀ      "@y     À]À      ^Ày     €^@     ¨‚Ày      Ð?      Ð¿y              À¿)r   r   r:   r   r   Úexpr9   Úlogr!   r%   r   r6   r7   r   r   r   r   Útest_interval_complex  sL    40228((,,rD   c              C   s$  dt _dt_t d¡dkst‚t d¡dks0t‚t ddg¡dksFt‚t d¡ t¡sZt‚t d¡ t d¡¡stt‚t ddgddg¡} t | ¡}|j t  d	¡¡s¨t‚|j	 t  d
¡¡s¾t‚t ddgddg¡} t | ¡}|j t  d¡¡sòt‚|j	 t  d
¡¡s
t‚t ddgddg¡} t | ¡}|j t  d¡¡s@t‚|j	 t  d¡¡sXt‚t ddgddg¡} t | ¡}|j t  d¡¡sŽt‚|j	 t  d¡¡s¦t‚t ddgddg¡} t | ¡}|j t  d¡¡sÜt‚|j	 t  d¡¡sôt‚t ddgddg¡} t | ¡}|j t  d¡¡s*t‚|j	 t  d¡¡sBt‚t ddgddg¡} t | ¡}|j t  d¡¡sxt‚|j	 t  d¡¡st‚t ddgddg¡} t | ¡}|j t j ¡sÄt‚|j	 t j¡sØt‚t ddgddg¡} t | ¡}|j t j ¡st‚|j	 t j¡s t‚d S )Nr   r   r   r    y       @      @r   r   r   y      ð¿      @y       À      @r   y      ð?      @r   y      ð?      @y      ð?       Àr,   y      ð?      Ày       @      Ày      ð¿      Ày       À      Ày      ð¿      À)
r:   r   r   Úargr   r9   r$   r   r"   r#   )ÚzÚtr   r   r   Útest_interval_complex_arg9  sV    








rH   c              C   s  dt _t  ddg¡} |  d¡d ks&t‚|  d¡d ks8t‚|  d¡d ksJt‚|  d¡dks\t‚|  d¡dksnt‚t  d¡} |  d¡d	ksŠt‚|  d
¡d	ksœt‚|  d¡d	ks®t‚|  d¡dksÀt‚|  d¡dksÒt‚|  t  ddg¡¡d ksît‚|  t  ddg¡¡d kst‚d S )Nr   r   r   g      ø?g®Gáz @Fg®Gáz®ï?g      @Tg     @gþÿÿÿÿÿ@g5^ºI@gË¡E¶óý@g     @)r   r   r!   r9   r   )r&   r   r   r   Útest_interval_aef  s    
rI   c              C   s.  d t _} tddƒ}t j|| ddddks.t‚t j|| dddd	d
ksJt‚t j|| dddksbt‚t j|| ddddks|t‚t j|| ddddks–t‚tddƒ}t j|| dddks¸t‚t jt  tdƒ¡| ddddksÜt‚t jtddƒ| dddksút‚t j}t jt  tdƒ¡| dddks$t‚dt _d S )Nr   r   r   Z	plusminusr   )ÚmodeÚ	error_dpsz
1.5 +- 0.5F)rJ   Ú
use_spacesrK   z1.5+-0.5Zpercent)rJ   z1.5 (33.33%)Úbrackets)rJ   rL   z	[1.0,2.0])ú<ú>)rJ   rM   z
<1.0, 2.0>z5.2582327113062393041z5.2582327113062749951Zdiffz5.2582327113062[393041, 749951]z*0.54030230586813971740093660744[2955,3053]Z1e123Z1e129z[1.0e+123, 1.0e+129]z5000.1z-3.2797365856787867069110487[0926, 1191]e+2171r   )r   r   r   Znstrr   r6   rB   )r>   r&   rB   r   r   r   Útest_interval_nstrw  s    


$$rP   c               C   s¢   dt _t  d¡ttdƒtdƒƒks&t‚tddƒt  d¡ks>t‚t  d¡tddƒksVt‚t  d	¡td
dƒksnt‚t  d¡tddƒks†t‚t  d¡tddƒksžt‚d S )Nr   z
1.5 +- 0.5z1.0z2.0r   r   z'1.5 (33.33333333333333333333333333333%)z[1, 2]z1[2, 3]r@   rA   z1.[23,46]e-8z1.23e-8z1.46e-8z12[3.4,5.9]e4z123.4e+4z125.9e4)r   r   Zconvertr   r!   r   r   r   r   r   Útest_mpi_from_strˆ  s     rQ   c              C   s¬  dt _dt_t d¡dkst‚t d¡dks0t‚t d¡dksBt‚t d¡dksTt‚t d¡dksft‚t d¡t tgks~t‚t d¡dkst‚t d¡dks¢t‚t d¡dks´t‚dt d¡ksÆt‚t d¡dksØt‚t d¡dksêt‚d	t d¡ksüt‚t 	ddgdd
g¡t 	ddgddg¡t 	ddgdd
g¡t 	ddgddg¡t 	ddgdd
g¡t 	ddgdd
g¡t 	ddgddg¡g} x&| D ]}t  t  	|j
|j¡¡t  t  	|j|j¡¡t  t  	|j
|j¡¡t  t  	|j|j¡¡g}d|jkr|t  |j
¡t  |j¡g7 }tdd„ |D ƒƒ}tdd„ |D ƒƒ}tdd„ |D ƒƒ}tdd„ |D ƒƒ}t |¡}|j
 |¡slt‚|j |¡s~t‚|j |¡st‚|j |¡s†t‚q†W d S )Nr   r   r   r   r   r   gkï´‘ø[Àg      à¿gï9úþB.æ?r   r,   r   r    r   c             S   s   g | ]
}|j ‘qS r   )Úreal)Ú.0Úyr   r   r   ú
<listcomp>±  s    z'test_interval_gamma.<locals>.<listcomp>c             S   s   g | ]
}|j ‘qS r   )rR   )rS   rT   r   r   r   rU   ²  s    c             S   s   g | ]
}|j ‘qS r   )Úimag)rS   rT   r   r   r   rU   ³  s    c             S   s   g | ]
}|j ‘qS r   )rV   )rS   rT   r   r   r   rU   ´  s    )r:   r   r   Zrgammar   ZfacZgammar   Zloggammar   r"   Úcr#   ÚdrV   ÚminÚmaxr9   )Zxsr&   ZysZmin_realZmax_realZmin_imagZmax_imagrF   r   r   r   Útest_interval_gamma‘  sL    
r[   N)Zmpmathr   r   r'   r*   r-   r.   r1   r?   rD   rH   rI   rP   rQ   r[   r   r   r   r   Ú<module>   s   +FM)-	