o
    1ή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}g dg dg dg dg d	g d
g dg}t||D ]%\}}t||D ]\}}dt 	|j
t|}tt||||d q<q3d S )Ng        g          )0.0r	   r	   r	   )-0.0r
   r
   r
   )1.0r   r   r   )-1.0r   r   r   )infr   r   r   )-infr   r   r   )nanr   r   r   zfor str({}({})))err_msg)npr   r   float16float32float64
longdoublezipformatdtypenamereprr   str)	selfsvalsstypswantedwantsvalwantstypmsg r%   H/tmp/pip-target-vg8gfxp4/lib/python/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 d    n1 s#w   Y  t|t|d  dd }|  d fd	d
	}tdF}td2}tj	tj
}}	||t_	t_
tjdt i|dd ||	t_	t_
|d |  }
W d    n1 s}w   Y  W d    n1 sw   Y  t|
tt d d S )Ng?zr+t)filer   
c                   s   s    dV  t )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   s    z6TestRealScalars.test_py2_float_print.<locals>.<lambda>r   )localreadfuncbanner   )r0   )r   doubler   printseekreadr   r   sysstdoutstderrcodeinteractstripr   sqrt)r   xfoutputr/   
input_funcfofeorig_stdoutorig_stderrcapturer%   r3   r&   test_py2_float_print2   s*   




 z$TestRealScalars.test_py2_float_printc                 C   s  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 |dZi |dd t |d[i |dd t |d\i |dd t |d]i |dd t |d]i |dd  t |d]i |dd! t |d]i |dd" t |d^i |d$d% t |d^i |d$d& t |d^i |d$d' t |d^i |d$d& t |d]i |d(d) t |d]i |d*d+ t |dd, t |d-d.d/d0d1 t |d2d.d3d0d4 ttjj}t ||fi |dd5 t |ttjjfi |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 )_Nc                 [      t jt | fi |S r(   )r   format_float_positionalr   rE   kr%   r%   r&   r5   b       z.TestRealScalars.test_dragon4.<locals>.<lambda>c                 [   rO   r(   )r   format_float_scientificr   rQ   r%   r%   r&   r5   c   rS   c                 [   rO   r(   )r   rP   r   rQ   r%   r%   r&   r5   d   rS   c                 [   rO   r(   )r   rT   r   rQ   r%   r%   r&   r5   e   rS   c                 S   s
   d| dS )NFunique	precisionr%   )precr%   r%   r&   r5   g   s   
 r   1.z1.e+00z10.234z-10.234z
1.0234e+01z-1.0234e+01z1000.0z1000.r   )rW   z10.z-10.z1.e+01z-1.e+01r9   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   rU   z0.00000000000000000000000000000000000000000000140129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125g       i2  a4  0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625z(340282346638528859811704183484516925440.a6  179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.z(340282350000000000000000000000000000000.T)rV   
fractionalrW      )rV   re   
min_digitsz,340282346638528859811704183484516925440.0000)rV   re   rg   rW   z(340300000000000000000000000000000000000.   z(340282346638528859810000000000000000000.   z(340282346638529000000000000000000000000.z-1p-97)rV   z-6.310887241768095e-30z-6.310887241768094e-30)rV   rg   )rV   rW   rg      z-6.31088724176809e-30z-6.3108872417680944e-301e120   )rg   z
1.000e+1201e100z
1.000e+100z1.000z	1.000e+00z1.5z1.500z	1.500e+00324)rV   rW   re   z324.00)rZ   )r\   )r]   )r^   )r`   )	r   r   finfor   maxr   r   
ValueErrorfromhex)r   fpos32fsci32fpos64fsci64preckwdf32xar%   r%   r&   test_dragon4^   s.  	



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rdn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d t	||ddddd|t jkrdnd t	||dddd t	||ddddd qd S )Nfloat128r   rf   )pad_left	pad_rightz	   1.    r   z	  -1.    z-10.2z	 -10.2   z1.23e1ra   )
exp_digitsz1.23e+00001FrU   z1.0000z
1.0000e+00rY   rR   )rV   rW   trim.z1.2z1.20020)r   -1z1.001r   )rW   r   )
r   r   r   r   hasattrappendr{   rP   rT   r   )r   tpsfposfscitpr%   r%   r&   test_dragon4_interface  sV   

z&TestRealScalars.test_dragon4_interfaceppc64z#only applies to ppc float128 values)reasonc                    sx   t d  fddtddD }g d}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 )2e)r   r   r{   ).0irE   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	   r	   23)r   r{   ranger   r   r   )r   gotexpectedry   br%   r   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   rE   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+   rN   rz   r   pytestmarkskipifplatformmachine
startswithr   r   r   r%   r%   r%   r&   r      s    , +/
:r   )__doc__rA   r   r   r>   tempfiler   numpyr   numpy.testingr   r   r   r   r%   r%   r%   r&   <module>   s    