U
    #cI                     @   s^   d Z ddlZ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
mZmZ G dd dZdS )z! Test printing of scalar types.

    N)TemporaryFile)assert_assert_equalassert_raisesc                   @   sh   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
e d dddd Zdd Zdd ZdS )TestRealScalarsc           	   
   C   s   ddddt jt j t jg}t jt jt jt jg}ddddgddddgddddgddddgd	d	d	d	gd
d
d
d
gddddgg}t||D ]J\}}t||D ]6\}}dt 	|j
t|}tt||||d qqd S )Ng        g          0.0z-0.01.0-1.0infz-infnanzfor str({}({})))err_msg)npr   r   float16float32float64Z
longdoublezipformatZdtypenamereprr   str)	selfZsvalsZstypswantedZwantsvalZwantZstypmsg r   E/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_scalarprint.pytest_str   s    






	zTestRealScalars.test_strc                 C   s<   dd }|d |d |d |d |d |d d S )	Nc                 S   sd   t tt| t|  t tt| t|  t tt| t|  t tt| t|  d S N)r   r   r   r   r   )vr   r   r   check"   s    z2TestRealScalars.test_scalar_cutoffs.<locals>.checkgfotӭ?gEa-&?gh㈵>g-C6?g  4&kCg 7yACr   )r   r!   r   r   r   test_scalar_cutoffs   s    z#TestRealScalars.test_scalar_cutoffsc              
      s   t d}td$}t||d |d | }W 5 Q R X t|t|d  dd }|  d fd	d
	}tdn}tdZ}tj	tj
 }}	|| t_	t_
tjdt i|dd ||	 t_	t_
|d |  }
W 5 Q R X W 5 Q R X t|
tt d d S )Ng?zr+t)filer   
c                   s   s   dV  t d S )Nz
np.sqrt(2))EOFErrorr   r   r   r   	userinputK   s    z7TestRealScalars.test_py2_float_print.<locals>.userinput c                    s   t  S r   )next)promptgenr   r   <lambda>O       z6TestRealScalars.test_py2_float_print.<locals>.<lambda>r   )localZreadfuncZbanner   )r'   )r   doubler   printseekreadr   r   sysstdoutstderrcodeZinteractstripr   sqrt)r   xfoutputr&   Z
input_funcfoZfeorig_stdoutorig_stderrcapturer   r*   r   test_py2_float_print2   s"    



 z$TestRealScalars.test_py2_float_printc                 C   sL  dd }dd }dd }dd }dd }t |dd t |dd	 t |d
d
 t |dd t |d
d t |dd t |dd t |dddd t |dddd	 t |d
ddd t |dddd t |d
ddd t |dddd t |d
ddd t |dddd t |dZ|dd t |d[|dd t |d\|dd t |d]|dd t |d^|dd  t |d_|dd! t |d`|dd" t |da|d$d% t |db|d$d& t |dc|d$d' t |dd|d$d& t |de|d(d) t |df|d*d+ t |dd, t |d-d.d/d0d1 t |d2d.d3d0d4 ttjj}t ||f|dd5 t |ttjjf|dd6 t ||d7 t ||d8d8dd9d7 t ||d8d8d:d9d7 t ||d8d8dd;d5 t ||d8d8d:d;d< t ||d8d8d:d:d=d< tt||d8d.dd9 t ||d8d.d:d9d> t ||d8d.d?d9d7 t ||d8d.d:d;d7 t ||d8d.d?d;d@ t ||d8d.dAd;dB t ||d.d.d:d9d> tjdC}t ||d8dDdE t ||d.dAd0dF t ||d8dAd0dE t ||d8dAdGdE t ||d8dAdAdHdE t ||d8dId0dJ t ||d8ddGdK t ||d8dd0dE t ||d8dIdGdE t |dLdMdNdO t |dPdMdNdQ t |dd.dMd0dR t |dd.dMd0dR t |dd.dMd0dS t |dd.dMd0dS t |dTd.dMd0dU t |dTd.dMd0dU t |dTd.dMd0dV t |dTd.dMd0dV t |dWd.d$d.dXdY d S )gNc                 [   s   t jt | f|S r   )r   format_float_positionalr   r:   kr   r   r   r,   b   r-   z.TestRealScalars.test_dragon4.<locals>.<lambda>c                 [   s   t jt | f|S r   )r   format_float_scientificr   rC   r   r   r   r,   c   r-   c                 [   s   t jt | f|S r   )r   rB   r   rC   r   r   r   r,   d   r-   c                 [   s   t jt | f|S r   )r   rE   r   rC   r   r   r   r,   e   r-   c                 S   s
   d| dS )NFunique	precisionr   )precr   r   r   r,   g   r-   r
   1.z1.e+00z10.234z-10.234z
1.0234e+01z-1.0234e+01z1000.0z1000.r   )rH   z10.z-10.z1.e+01z-1.e+01r/   z10.23z	-1.02e+019.9999999999999995e-08   9.8813129168249309e-3249.9999999999999694e-3113.14159265358979323846
   z3.1415927410z3.1415927410e+00z3.1415926536z3.1415926536e+00299792458.0   z299792448.00000z2.99792e+08z299792458.00000   z3.14159274101257324218750002   z43.14159265358979311599796346854418516159057617187500z3.141592653589793g      6F   rF   z0.00000000000000000000000000000000000000000000140129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125g       i2  a4  0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625z(340282346638528859811704183484516925440.a6  179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.z(340282350000000000000000000000000000000.T)rG   
fractionalrH      )rG   rV   
min_digitsz,340282346638528859811704183484516925440.0000)rG   rV   rX   rH   z(340300000000000000000000000000000000000.   z(340282346638528859810000000000000000000.   z(340282346638529000000000000000000000000.z-1p-97)rG   z-6.310887241768095e-30z-6.310887241768094e-30)rG   rX   )rG   rH   rX      z-6.31088724176809e-30z-6.3108872417680944e-30Z1e120   )rX   z
1.000e+120Z1e100z
1.000e+100z1.000z	1.000e+00z1.5z1.500z	1.500e+00Z324)rG   rH   rV   z324.00)rK   )rM   )rN   )rO   )rO   )rO   )rO   )rQ   )rQ   )rQ   )rQ   )rO   )rO   )	r   r   Zfinfor   maxr   r   
ValueErrorfromhex)r   Zfpos32Zfsci32Zfpos64Zfsci64ZpreckwdZf32xar   r   r   test_dragon4^   s0   	
 


zTestRealScalars.test_dragon4c                 C   s  t jt jt jg}tt dr&|t j t j}t j}|D ]}t	||ddddd t	||ddddd t	||ddddd	 t	||d
ddd t	||ddddd t	||ddddd t	||dddddd t	||dddddd t	||ddddd|t jkr"dnd t	||dddddd t	||ddddd|t jkrfdnd t	||dddd t	||dddddd t	||ddddd|t jkrdnd t	||dddd t	||ddddd q6d S )Nfloat128r
   rW   )Zpad_leftZ	pad_rightz	   1.    r   z	  -1.    z-10.2z	 -10.2   z1.23e1rR   )Z
exp_digitsz1.23e+00001FrF   z1.0000z
1.0000e+00rJ   rD   )rG   rH   trim.z1.2z1.20020)rc   -1z1.001r   )rH   rc   )
r   r   r   r   hasattrappendrb   rB   rE   r   )r   ZtpsZfposZfscitpr   r   r   test_dragon4_interface  sV    


 z&TestRealScalars.test_dragon4_interfaceppc64z#only applies to ppc float128 values)reasonc              (      s   t d  fddtddD }dddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d,g(}t|| t d-t d. }t t|}tt|t| t||k d S )/Nz(2.123123123123123123123123123123123e-286c              	      s&   g | ]}t  td t |  qS )Z2e)r   r   rb   ).0ir:   r   r   
<listcomp>?  s     zCTestRealScalars.test_ppc64_ibm_double_double128.<locals>.<listcomp>r   (   z'1.06156156156156156156156156156157e-286z'1.06156156156156156156156156156158e-287z'1.06156156156156156156156156156159e-288z&1.0615615615615615615615615615616e-289z'1.06156156156156156156156156156157e-290z'1.06156156156156156156156156156156e-291z&1.0615615615615615615615615615616e-292z&1.0615615615615615615615615615615e-293z%1.061561561561561561561561561562e-294z$1.06156156156156156156156156155e-295z#1.0615615615615615615615615616e-296z!1.06156156156156156156156156e-297z!1.06156156156156156156156157e-298z 1.0615615615615615615615616e-299z1.06156156156156156156156e-300z1.06156156156156156156155e-301z1.0615615615615615615616e-302z1.061561561561561561562e-303z1.06156156156156156156e-304z1.0615615615615615618e-305z1.06156156156156156e-306z1.06156156156156157e-307z1.0615615615615616e-308z1.06156156156156e-309z1.06156156156157e-310z1.0615615615616e-311z1.06156156156e-312z1.06156156154e-313z1.0615615616e-314z1.06156156e-315z1.06156155e-316z1.061562e-317z1.06156e-318z1.06155e-319z1.0617e-320z	1.06e-321z	1.04e-322z1e-323r	   23)r   rb   ranger   r   r   )r   gotexpectedr`   br   rp   r   test_ppc64_ibm_double_double1287  s`    
)
z/TestRealScalars.test_ppc64_ibm_double_double128c                 C   sT   t d}t d}tt|t|k tt t|| tt t|| d S )Ng   @g   @)r   r   r   r   r   )r   r:   yr   r   r   float32_roundtrips  s
    

z!TestRealScalars.float32_roundtripc                 C   s6   t ttdtd tttdtdk d S )Ng?g?g?)r   r   r   r   r   )r   r   r   r   float64_vs_python{  s    z!TestRealScalars.float64_vs_pythonN)__name__
__module____qualname__r   r"   rA   ra   rk   pytestmarkZskipifplatformmachine
startswithry   r{   r|   r   r   r   r   r      s   , +/
:r   )__doc__r7   r   r   r4   tempfiler   Znumpyr   Znumpy.testingr   r   r   r   r   r   r   r   <module>   s   