o
    1ήc2                     @   s"  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ eejZejeejjk Zdej ZeeeekZ[dd ZeeedZejjejd ekd	d
dd Zejjedd
dd Zejjedd
ejdejej e!e"fdd Z#dd Z$ejjedd
dd Z%dd Z&dd Z'dd Z(dd Z)G dd  d Z*d!d" Z+ejjed#d
ejjedd
d$d% Z,ejjed#d
ejjedd
d&d' Z-ejjed(d
ejjedd
d)d* Z.G d+d, d,eZ/ejd-dd. d gd/d0 Z0ejd1d2d3gd4d5 Z1dS )6    N)assert_assert_equalassert_raisesassert_warnsassert_array_equaltemppath)CommaDecimalPointLocale   c                  C   s,   dt j } t| | | g}t|d |  dS )z?Confirm that extracting a value doesn't convert to python floatr	   N)LD_INFOepsnparrayr   )oa r   G/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_longdouble.pytest_scalar_extraction   s   
r   g?   z%repr precision not enough to show epsreasonc                  C   s,   dt j } ttt| | dt|   d S )Nr	   zrepr was %s)r
   r   r   r   
longdoublereprr   r   r   r   test_repr_roundtrip!   s   
"r   Need strtold_lc                  C   s(   dt j } ttt| d|  d S )Nr	   ascii)r
   r   r   r   r   r   encoder   r   r   r   test_repr_roundtrip_bytes)   s   
r   strtypec                 C   s   dt j }| tjtfv r| t|d}n| t|}|t|ks%J tj|gd | d}||	tjk
 s;J ||k
 sCJ t|gd 	| |k
 sTJ dS )z
    Test that string representations of long-double roundtrip both
    for array casting and scalar coercion, see also gh-15608.
    r	   r      dtypeN)r
   r   r   bytes_bytesr   r   r   asarrayastypeall)r   r   o_stro_strarrr   r   r   #test_array_and_stringlike_roundtrip/   s   
&r)   c                   C   s    t ttjd t ttjd d S )Nspamz1.0 flub)r   
ValueErrorr   r   r   r   r   r   test_bogus_stringI   s   r,   c                  C   sN   dt j } dt|  d }t| gd }ttj|dtjd|d| d d S )Nr	       sepr!   zreading '%s')err_msg)r
   r   r   r   r   r   
fromstringr   )r   sr   r   r   r   test_fromstringN   s   

r4   c               	   C   s  dD ]} t tjdd| dtg d t tjdd| dtg d t tjdd| dtg d	 tt t tjd
| ddtdg W d    n1 sSw   Y  tt t tjd| ddtdg W d    n1 svw   Y  tt t tjd| ddtdg W d    n1 sw   Y  tt t tjd| ddtdg W d    n1 sw   Y  tt t tjd| ddtdg W d    n1 sw   Y  tt t tjd| ddtdg W d    n	1 sw   Y  qd S )Ncomplexcdoublecfloatz1, 2 ,  3  ,4,r/         ?       @      @g      @z1j, -2j,  3j, 4e1j              ?y              y              @y              D@z1+1j,2-2j, -3+3j,  -4e1+4jy      ?      ?y       @       y            @y      D      @z1+2 j,3r!   r0   r;   z1+ 2j,3z1 +2j,3z1+jz1+z1j+1r?   )r   r   r2   r   r   DeprecationWarning)ctyper   r   r   test_fromstring_complexW   sT   












rD   c                   C   sN   t t ttjdtddtg d W d    d S 1 s w   Y  d S )Nz1. 2. 3. flop 4.r-   rA   r;   r<   r=   r   rB   r   r   r2   floatr   r   r   r   r   test_fromstring_bogusw   s
   
"rH   c                   C   sH   t t ttjdddtg  W d    d S 1 sw   Y  d S )Nxxxxxxr0   r   rB   r   r   r2   r   r   r   r   r   test_fromstring_empty}   s
   
"rM   c                   C   sJ   t t ttjdddtdg W d    d S 1 sw   Y  d S )N
1xx3x4x5x6rJ   rK   r	   rL   r   r   r   r   test_fromstring_missing   s
   

"rO   c                   @   s   e Zd Zdej Zeegd Zd	dd eD Z
dd Zdd	 Zejjed
ddd Zejjed
ddd Zejjed
ddd Zejjed
ddd ZdS )TestFileBasedr	   r.    c                 C   s   g | ]}t |d  qS )
)r   ).0tr   r   r   
<listcomp>   s    zTestFileBased.<listcomp>c              	   C   s   t  >}t|d}|d W d    n1 sw   Y  tt tj|tdd}W d    n1 s5w   Y  W d    n1 sDw   Y  t|t	g d d S )Nwtz1. 2. 3. flop 4.
r-   rA   rE   )
r   openwriter   rB   r   fromfilerG   r   r   selfpathfresr   r   r   test_fromfile_bogus   s   
z!TestFileBased.test_fromfile_bogusc              
   C   s  dD ]}t  *}t|d}|d W d    n1 sw   Y  tj||dd}W d    n1 s5w   Y  t|tg d t  *}t|d}|d W d    n1 s]w   Y  tj||dd}W d    n1 stw   Y  t|tg d t  *}t|d}|d	 W d    n1 sw   Y  tj||dd}W d    n1 sw   Y  t|tg d
 t  >}t|d}|d W d    n1 sw   Y  tt tj||dd}W d    n1 sw   Y  W d    n	1 sw   Y  t|tdg t  @}t|d}|d W d    n	1 s/w   Y  tt tj||dd}W d    n	1 sLw   Y  W d    n	1 s\w   Y  t|tdg t  @}t|d}|d W d    n	1 sw   Y  tt tj||dd}W d    n	1 sw   Y  W d    n	1 sw   Y  t|tdg t  @}t|d}|d W d    n	1 sw   Y  tt tj||dd}W d    n	1 sw   Y  W d    n	1 sw   Y  t|tdg t  @}t|d}|d W d    n	1 s.w   Y  tt tj||dd}W d    n	1 sKw   Y  W d    n	1 s[w   Y  t|tdg t  @}t|d}|d W d    n	1 sw   Y  tt tj||dd}W d    n	1 sw   Y  W d    n	1 sw   Y  t|tdg qd S )Nr5   rV   z1, 2 ,  3  ,4
r9   rA   r:   z1j, -2j,  3j, 4e1j
r>   z1+1j,2-2j, -3+3j,  -4e1+4j
r@   z1+2 j,3
r;   z1+ 2j,3
z1 +2j,3
z1+j
z1+
z1j+1
r?   )	r   rW   rX   r   rY   r   r   r   rB   )r[   rC   r\   r]   r^   r   r   r   test_fromfile_complex   s   






z#TestFileBased.test_fromfile_complexr   r   c              	   C   s~   t  ,}t|d}|| j W d    n1 sw   Y  tj|tjdd}W d    n1 s2w   Y  t|| j d S )NrV   rR   rA   )	r   rW   rX   outr   rY   r   r   tgtrZ   r   r   r   test_fromfile   s   zTestFileBased.test_fromfilec              	   C   |   t  +}t|d}|| j W d    n1 sw   Y  tj|tjd}W d    n1 s1w   Y  t|| j d S NrV   r    )	r   rW   rX   ra   r   
genfromtxtr   r   rb   rZ   r   r   r   test_genfromtxt      zTestFileBased.test_genfromtxtc              	   C   rd   re   )	r   rW   rX   ra   r   loadtxtr   r   rb   rZ   r   r   r   test_loadtxt   rh   zTestFileBased.test_loadtxtc                 C   sX   t  }| jj|dd tj|tjdd}W d    n1 sw   Y  t|| j d S )Nr-   rK   rA   )r   rb   tofiler   rY   r   r   )r[   r\   r^   r   r   r   test_tofile_roundtrip  s
   z#TestFileBased.test_tofile_roundtripN)__name__
__module____qualname__r
   r   ldblr   r   rb   joinra   r_   r`   pytestmarkskipifstring_to_longdouble_inaccuraterc   rg   rj   rl   r   r   r   r   rP      s,    
	R


rP   c                  C   s   dt j } tt| dk d S )Nr	   1)r
   r   r   r   r   r   r   r   test_repr_exact  s   
rw   z	BUG #2376c                  C   s    dt j } td| dk d S )Nr	   z{0:.40g}rv   )r
   r   r   formatr   r   r   r   test_format  s   
ry   c                  C   s   dt j } td|  dk d S )Nr	   z%.40grv   )r
   r   r   r   r   r   r   test_percent  s   
rz   zarray repr problemc                  C   sV   dt j } t| g}tjdgtjd}t||kstdtt|t|k d S )Nr	   r    zprecision loss creating arrays)	r
   r   r   r   r   r&   r+   r   r   )r   r   br   r   r   test_array_repr&  s   
r|   c                   @   sD   e Z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 )TestCommaDecimalPointLocalec                 C   s   d}t |tt| d S )Ng      ?)r   r   r   r   )r[   r   r   r   r   test_repr_roundtrip_foreign8  s   z7TestCommaDecimalPointLocale.test_repr_roundtrip_foreignc                 C   s*   d}t jt|tdd}t|d | d S )NgX9v?r-   rA   r   )r   r2   r   rG   r   )r[   r]   r   r   r   r   test_fromstring_foreign_repr<  s   z8TestCommaDecimalPointLocale.test_fromstring_foreign_reprc                 C   sL   t t ttjdtddtdg W d    d S 1 sw   Y  d S N1,234r-   rA   r;   rF   r[   r   r   r   !test_fromstring_best_effort_floatA  s
   

"z=TestCommaDecimalPointLocale.test_fromstring_best_effort_floatc                 C   sN   t t ttjdtjddtdg W d    d S 1 s w   Y  d S r   )r   rB   r   r   r2   r   r   r   r   r   r   test_fromstring_best_effortF  s
   

"z7TestCommaDecimalPointLocale.test_fromstring_best_effortc                 C   s.   d}t j|t jdd}t|d t | d S )Nz1.234r-   rA   r   )r   r2   r   r   )r[   r3   r   r   r   r   test_fromstring_foreignK  s   z3TestCommaDecimalPointLocale.test_fromstring_foreignc                 C   s.   t g d}t jdt jdd}t|| d S )N)r	   r   r      z1,2,3,4,r9   rA   )r   r   r2   r   r   )r[   r   r{   r   r   r   test_fromstring_foreign_sepP  s   z7TestCommaDecimalPointLocale.test_fromstring_foreign_sepc                 C   sN   t t tjdtjdd}t|d d W d    d S 1 s w   Y  d S )Nr   r-   rA   r   r	   )r   rB   r   r2   r   r   )r[   r{   r   r   r   test_fromstring_foreign_valueU  s   
"z9TestCommaDecimalPointLocale.test_fromstring_foreign_valueN)
rm   rn   ro   r~   r   r   r   r   r   r   r   r   r   r   r}   6  s    r}   int_vali   c                 C   s   t | }tjddG}tddt t| t|ksJ tttjj	ttj
j	r9|rA|d jtu sIJ W d    d S W d    d S W d    d S 1 sTw   Y  d S )NT)recordalwaysrQ   r   )strwarningscatch_warningsfilterwarningsRuntimeWarningr   r   allclosefinfomaxdoublecategory)r   str_valwr   r   r   test_longdouble_from_int[  s    "r   bool_valTFc                 C   s    t | t t| ksJ d S )N)r   r   int)r   r   r   r   test_longdouble_from_boolo  s    r   )2r   rr   numpyr   numpy.testingr   r   r   r   r   r   numpy.core.tests._localesr   r   r   r
   r   r   longdouble_longer_than_double_or   ru   r   lenrepr_precisionrs   rt   	precisionr   r   parametrizestr_r"   r   r#   r)   r,   r4   rD   rH   rM   rO   rP   rw   ry   rz   r|   r}   r   r   r   r   r   r   <module>   sr     




  	%
