3
rY]v                 @   s   d dl Z d dlmZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlZedZedZG dd	 d	e jZd
d Zedkre  dS )    N)support)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)random)atan2isnancopysigninfnanc               @   s  e Zd Zdd Zd=ddZdd Zd>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ejd d! Zd"d# Zd$d% Zd&d' Zd(d) Zejd*d+ Zd,d- Zd.d/ Zd0d1 Zejd2d3 Zejd4d5 Zejd6d7 Zejd8d9 Z d:d; Z!d<S )?ComplexTestc             C   s   t |trdt |tr>tjj| |j|j tjj| |j|j qtjj| |j| tjj| |jd n@t |trtjj| ||j tjj| d|j ntjj| || d S )Ng        )
isinstancecomplexunittestTestCaseassertAlmostEqualrealimag)selfab r   "lib/python3.6/test/test_complex.pyr      s    


zComplexTest.assertAlmostEqual&.>c             C   s`   t |t |kr|| }}|dkr.t ||k S |dkrBt ||k S | jt || | |k  dS )z+Return true iff floats x and y "are close".r   N)abs
assertTrue)r   xyepsr   r   r   assertCloseAbs   s    
zComplexTest.assertCloseAbsc             C   st   d}t |st |r*t |r^t |r^dS n4||kr^|dkr>dS td|td|krVdS |d7 }| j|j|| dS )a#  assert that floats x and y are identical, in the sense that:
        (1) both x and y are nans, or
        (2) both x and y are infinities, with the same sign, or
        (3) both x and y are zeros, with the same sign, or
        (4) x and y are both finite and nonzero, and x == y

        z&floats {!r} and {!r} are not identicalNg        g      ?z: zeros have different signs)r   r   failformat)r   r   r   msgr   r   r   assertFloatsAreIdentical+   s    z$ComplexTest.assertFloatsAreIdenticalc             C   s(   | j |j|j| | j |j|j| dS )z.Return true iff complexes x and y "are close".N)r   r   r   )r   r   r   r   r   r   r   assertCloseB   s    zComplexTest.assertClosec             C   sp   || }|dkr:|| }| j || |j|}| j || |dkrl|| }| j || |j|}| j || dS )z8Compute complex z=x*y, and check that z/x==y and z/y==x.r   N)r#   __truediv__)r   r   r   zqr   r   r   	check_divG   s    

zComplexTest.check_divc                s:  dd t ddD   fdd D }x&|D ]}x|D ]}| j|| q6W q,W | jtddd | jtd	d	d x0t d
D ]$}| jtt t tt t  q|W | jttjdd | jtjddd | jttjdd xXdtftdfttfgD ]>\}}tddt|| }| j	t
|j | j	t
|j  qW d S )Nc             S   s   g | ]}t |qS r   )float).0ir   r   r   
<listcomp>V   s    z,ComplexTest.test_truediv.<locals>.<listcomp>      c                s    g | ]} D ]}t ||qqS r   )r   )r)   r   r   )simple_realr   r   r+   W   s    gZbti   y                gN~hd   y              ?r      y      ?        y      ?        y      ?      ?y                y       @        y      ?      ?y      ?      y      ?      ?y                )ranger'   r   r   assertRaisesZeroDivisionErrorr$   r   NANr   r   r   r   )r   Zsimple_complexr   r   r*   Z
denom_realZ
denom_imagr%   r   )r.   r   test_truedivU   s"    

 zComplexTest.test_truedivc             C   s(   | j ttjdd | j ttjdd d S )	N   y                g      ?r   y      @        y      ?        y      @        y                )r4   	TypeErrorr   __floordiv__)r   r   r   r   test_floordivr   s    zComplexTest.test_floordivc             C   s  | j tjddd> d | j tjdd t | j tjddd | j tjddd | j tjddd | j tjddd x~tddD ]p}|d	 }| j tj|d
 |d | j tj|d
 |d | j tjt|||d | j tjt|||d qW | j tjddt | j tjddt | j tjddt | j tj	ddt | j
ttjdd | j
ttjdd  | j
ttjd!d" | j
ttjd#d$ | j tjd%d&d | j tjd'd(d | j tjd)d*d | j tjd+d,d d S )-Nr/   y              ?i'  FTr1   y               @r0   g      Y@y                y      ?      ?y      ?      ?y      ?      ?y      ?      ?y      ?      ?y       @       @y      ?      ?y      ?      ?y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y       @       @y      ?      ?y      ?      ?y      ?      ?y       @       @y      ?      ?y      ?      ?y      ?      ?y       @       @)assertIsr   __eq____lt__NotImplemented__ne__r3   __le____gt____ge__r4   r9   operatorltlegtgeeqne)r   r*   fr   r   r   test_richcomparev   s0    zComplexTest.test_richcomparec                s   dfdd	}x`t ddD ]R}d| }d|  |d| t dd fd	d
 |d| t dddd
 t| qW |dt dddd
  d S )N        c                sV   xP|D ]H}| | }t ||} jt j||||  jt j||||  qW d S )N)r   r<   r=   r@   )nZdeltasZis_equalr   deltar*   r%   )r   r   r   check   s
    

z6ComplexTest.test_richcompare_boundaries.<locals>.checkr/   
   4   r1   e   c                s   |   dkS )Nr   r   )rO   )multr   r   <lambda>   s    z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>c             S   s   dS )NFr   )rO   r   r   r   rU      s    5   r0   r   c             S   s   dS )NTr   )rO   r   r   r   rU      s    )rM   l          i)r3   r(   )r   rP   r*   powr   )rT   r   r   test_richcompare_boundaries   s    	$z'ComplexTest.test_richcompare_boundariesc             C   s4   | j tdjd	 | j tdd  | j td
jd d S )Nr/   y              ?r   y                c               S   s   dd S )Ngp=
ף
@y        Q@r   yp=
ף
@Q@r   r   r   r   r   rU      s    z&ComplexTest.test_mod.<locals>.<lambda>y        333333@y      ?      ?y                y      ?      ?)r4   r9   __mod__)r   r   r   r   test_mod   s    zComplexTest.test_modc             C   s$   | j ttdd | j ttdd d S )	Nr/   y              ?y                r   y      ?      ?y      ?        y      ?      ?y                )r4   r9   divmod)r   r   r   r   test_divmod   s    zComplexTest.test_divmodc             C   sf  | j tddd | j tddd | jttdd | j tddd | j tddd | jttddd d}| j|d d | j|d d d | jdd | jdd yd|  W n tk
r   Y nX | jd ydd   W n tk
 r   Y nX | jd | j|d |d  | j|d! |d"  | j|d# |d$  | jd%d d&}| jtt||d d S )'Nr/   y              ?r   y                g      ?r1   g           gp=
ף
@y        Q@y              @z,should fail 0.0 to negative or complex powerr8   y               @i      gffffff@y        ffffff@y      ?      ?y                y                y       @        y                y              y      ?      ?y      ?      ?y      ?      ?yp=
ף
@Q@y      ?        y      ?        y      @       iiiiy      ?        yffffff@ffffff@)r   rW   r4   r5   
ValueErrorassertEqualr   )r   r   r   r   r   r   test_pow   s6    

zComplexTest.test_powc             C   sD   x,t dD ] }| jtt d t d  q
W | jtdd  d S )Nr0   gư>g        )r3   r   r   r   )r   r*   r   r   r   test_boolcontext   s     zComplexTest.test_boolcontextc             C   s   | j tddj d d S )Ng333333@g#@y        #@y333333@#)r#   r   	conjugate)r   r   r   r   test_conjugate   s    zComplexTest.test_conjugatec       
         sr  G dd d}G dd dt }| jt|dcdd | jt|dedf | jtt|d  | jtt|d  | jtti  | jtt|d | jtt|d | jtddg | jtd	dh | jtddi | jtd	dj | jtdkdl | jtdd	dm | jtdd	dn | jtdddo | jtdd	dp | jtdd	dq | jtdddr | jtdd	ds | jtdd	dt | jtdddu | jtdvdw | jtddx | jtddy | jtddz | jtd{d
d| | jtddd} | jtddd~ | jtddd | jtd
dd | jtddd | jtd
dd | jtddd | jtdd | jtdd | jt d | jtdd | jtdd | jtdd | jtdd | jtdd | jtdd | jtd d | jtd!d | jtd"d | jtd#d | jtd$d | jtd%d | jtd&d | jtd'd | jtd(d G d)d* d*t}| jt|dd | jtd+d,d-d | jtdd/d | jtdd,d-d | jtddd-d d4d5 }| j|tddj|d | j|tddj|d | j|tddj|d | j|tddj|d d}| jt||k ~| jttdd | jttdd | jt	td6 | jtt
d | jtt
d | jttd | jt	td9 | jttd  | jtd:td  | jt	td; | jt	td< | jttdd= | jttdd> | jttdd= | jt	td? | jt	td@ | jt	tdA | jt	tdB | jt	tdC | jt	tdD | jt	tdE | jt	tdF | jt	tdG | jt	tdH | jt	tdI | jt	tdJ | jtdKtddLid | jtdMtdddLi | jt	tdN | jt	tdO | jt	tdP | jttddQ t | jtdRd | jt	tdS G dTdU dUt G  fdVdWdW}| j t|  G dXdY dY}| jt|dZd> | jt|d[|d\d-d | jtt|d  G d]d^ d^t}G d_d` d`t}	G dad* d*t}| jt|ddb | jt|	dd | jtt|d d S )Nc               @   s   e Zd Zdd Zdd ZdS )z(ComplexTest.test_constructor.<locals>.OSc             S   s
   || _ d S )N)value)r   rg   r   r   r   __init__   s    z1ComplexTest.test_constructor.<locals>.OS.__init__c             S   s   | j S )N)rg   )r   r   r   r   __complex__   s    z4ComplexTest.test_constructor.<locals>.OS.__complex__N)__name__
__module____qualname__rh   ri   r   r   r   r   OS   s   rm   c               @   s   e Zd Zdd Zdd ZdS )z(ComplexTest.test_constructor.<locals>.NSc             S   s
   || _ d S )N)rg   )r   rg   r   r   r   rh      s    z1ComplexTest.test_constructor.<locals>.NS.__init__c             S   s   | j S )N)rg   )r   r   r   r   ri      s    z4ComplexTest.test_constructor.<locals>.NS.__complex__N)rj   rk   rl   rh   ri   r   r   r   r   NS   s   rn   r/   y              $@g      ?z1+10jrQ   y                g      $@g      ?gQ	@i:  g     s@g        r   y        Q	@11jy              ?z-1z+1z(1+2j)y               @z
(1.3+2.2j)g?y        @z3.14+1Jz ( +3.14-6J )y              @z ( +3.14-J )z ( +3.14+j )Jz( j )z+Jz( -j)z1e-500z-1e-500jz-1e-500+1e-500jc               @   s   e Zd ZdS )z.ComplexTest.test_constructor.<locals>.complex2N)rj   rk   rl   r   r   r   r   complex2  s    rr         )r   r   y              7@)r   y              G@r8   y              @y              @c             S   s
   t | dS )z7Function that produces different results for 0. and -0.g      ?g      )r   )r   r   r   r   split_zeros   s    z1ComplexTest.test_constructor.<locals>.split_zerosz1+1j jr,   y              @ znot 'NoneType' z3 92*   z1+z1+1j+1jz--z(1+2jz1+2j)z1+(2j)z	(1+2j)123r   z1j+2Z1e1ejz1e++1ejz)1+2j(z7first argument must be a string or a number, not 'dict'r1   z,second argument must be a number, not 'dict'z1..1jz1.11.1jz1e1.1ji  u    ( 1+1j ) u   こんにちはc               @   s   e Zd ZdS )z-ComplexTest.test_constructor.<locals>.EvilExcN)rj   rk   rl   r   r   r   r   EvilExc`  s   rz   c                   s   e Zd Z fddZdS )z1ComplexTest.test_constructor.<locals>.evilcomplexc                s    d S )Nr   )r   )rz   r   r   ri   d  s    z=ComplexTest.test_constructor.<locals>.evilcomplex.__complex__N)rj   rk   rl   ri   r   )rz   r   r   evilcomplexc  s   r{   c               @   s   e Zd Zdd Zdd ZdS )z,ComplexTest.test_constructor.<locals>.float2c             S   s
   || _ d S )N)rg   )r   rg   r   r   r   rh   j  s    z5ComplexTest.test_constructor.<locals>.float2.__init__c             S   s   | j S )N)rg   )r   r   r   r   	__float__l  s    z6ComplexTest.test_constructor.<locals>.float2.__float__N)rj   rk   rl   rh   r|   r   r   r   r   float2i  s   r}   g      E@g      1@g      7@c               @   s   e Zd ZdZdd ZdS )z.ComplexTest.test_constructor.<locals>.complex0z:Test usage of __complex__() when inheriting from 'complex'c             S   s   dS )Ny              E@r   )r   r   r   r   ri   u  s    z:ComplexTest.test_constructor.<locals>.complex0.__complex__N)rj   rk   rl   __doc__ri   r   r   r   r   complex0s  s   r   c               @   s"   e Zd ZdZdddZdd ZdS )	z.ComplexTest.test_constructor.<locals>.complex1z3Test usage of __complex__() with a __new__() method                c             S   s   t j| d| S )Nr1   )r   __new__)r   rg   r   r   r   r   z  s    z6ComplexTest.test_constructor.<locals>.complex1.__new__c             S   s   | S )Nr   )r   r   r   r   ri   |  s    z:ComplexTest.test_constructor.<locals>.complex1.__complex__N)r   )rj   rk   rl   r~   r   ri   r   r   r   r   complex1x  s   
r   c               @   s   e Zd ZdZdd ZdS )z.ComplexTest.test_constructor.<locals>.complex2z`Make sure that __complex__() calls fail if anything other than a
            complex is returnedc             S   s   d S )Nr   )r   r   r   r   ri     s    z:ComplexTest.test_constructor.<locals>.complex2.__complex__N)rj   rk   rl   r~   ri   r   r   r   r   rr     s   y              E@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      $@        y      $@        y      $@        y      $@        y      $@        y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@y      ?      $@yQ	@        yQ	@        yQ	@        y     s@        y     s@        yQ	@        yQ	@        yQ	@        y     s@        y     s@        gQ	yQ	        gQ	yQ	        y      ?        r`   r/   y      ?       @y?@yQ	@      ?yQ	@      yQ	@      yQ	@      ?y             y                y                g       y                y      ?      ?y      ?      ?y      1@      7@y      1@      7@y      1@      7@y      1@      7@y      1@      G@y      ?       @y      @      @y            @g       g       g       g       yQ	@      ?y      @      @y      @      @y      @      @y      ?      ?y      1@      7@)objectrb   r   r4   r9   r   r   r   r   ra   intr(   ZassertRaisesRegextype	Exception)
r   rm   rn   rr   ru   cr{   r}   r   r   r   )rz   r   test_constructor   s    zComplexTest.test_constructorc             C   s8  G dd dt }x ddtt tfD ]
}xddtt tfD ]}| j||d t ||}| j|j| | j|j| |||}| jt|| | j|j| | j|j| t |||}| jt|t  | j|j| | j|j| |t ||}| jt|| | j|j| | j|j| W d Q R X q>W q$W d S )Nc               @   s   e Zd ZdS )z>ComplexTest.test_constructor_special_numbers.<locals>.complex2N)rj   rk   rl   r   r   r   r   rr     s   rr   g        )r   r   g       g       )	r   INFr6   ZsubTestr"   r   r   r<   r   )r   rr   r   r   r%   r   r   r    test_constructor_special_numbers  s&    

z,ComplexTest.test_constructor_special_numbersc                s   xRt D ]J t fdddD s| jt t  | jt t jdd qW x:tD ]2  d	krhqZt fdddD sZ| jtt  qZW d S )
Nc             3   s   | ]}| kV  qd S )Nr   )r)   ch)litr   r   	<genexpr>  s    z/ComplexTest.test_underscores.<locals>.<genexpr>ZxXoObB_rv   0_709_99c             3   s   | ]}| kV  qd S )Nr   )r)   r   )r   r   r   r     s    )r   r   )	r   anyrb   r   evalreplacer   r4   ra   )r   r   )r   r   test_underscores  s    
 
zComplexTest.test_underscoresc             C   sT   xNt ddD ]@}| jt|tt|d |d }| jt|tt|d qW d S )Nr_   r   g      @g        i)r3   rb   hashr   )r   r   r   r   r   	test_hash  s    zComplexTest.test_hashc             C   sJ   dd t ddD }x0|D ](}| j|jd |jd  d t| qW d S )Nc             S   s.   g | ]&}t dd D ]}t|d |d qqS )	   g      @g      @i)r3   r   )r)   r   r   r   r   r   r+     s    z(ComplexTest.test_abs.<locals>.<listcomp>r   r1   g      ?i)r3   r   r   r   r   )r   ZnumsZnumr   r   r   test_abs  s    
zComplexTest.test_absc             C   s,  | j fdd}|dd |dd |dd| jd	 |td
td |td
t d |ttdd |tt td |ttdd |tdtd |tttd |tdtd |tdt d |tdtd | j dttd | j dttd | j dttd | j dttd d S ) Nc             S   s    |t | | |t| | d S )N)reprstr)vexpectedtest_fnr   r   r   test  s    z'ComplexTest.test_repr_str.<locals>.testr/   y              @z(1+6j)z(1-6j)y                z(-1+-0j))r   g      ?z(1+infj)z(1-infj)z(inf+1j)z(-inf+infj)z(nan+1j)z(1+nanj)z
(nan+nanj)r   infjz-infjnanjy      ?      @y      ?      y      ?        y             y      ?      y      ?      y      ?      @y      ?      @y             y             )rb   ZassertNotEqualr   r   r6   r   )r   r   r   r   r   test_repr_str  s$    

zComplexTest.test_repr_strc             C   s   | j f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ddd |tddd d S )Nc             S   s    |t | | |t| | d S )N)r   r   )r   r   r   r   r   r   r     s    z5ComplexTest.test_negative_zero_repr_str.<locals>.testg        g      ?rp   z(-0+1j)z-1jz(-0-1j)Z0jz-0jz(-0+0j)z(-0-0j)g       g      g       g      g       g       g       g       )rb   r   )r   r   r   r   r   test_negative_zero_repr_str  s    z'ComplexTest.test_negative_zero_repr_strc             C   s   | j dd d S )Nr/   y              @y      ?      @y            r`   y            )rb   )r   r   r   r   test_neg  s    zComplexTest.test_negc             C   s   d	}d
}d }zJt tjd}t|||d |j  t tjd}| j|j d||f  W d |d k	rp|j rp|j  tjtj X d S )Ngp=
ף
@y        Q@gffffff@y        ffffff@w)filerz%s %s
yp=
ף
@Q@yffffff@ffffff@)	openr   ZTESTFNprintcloserb   readclosedunlink)r   r   r   Zfor   r   r   	test_file  s    zComplexTest.test_filec             C   sx   | j dj d	 | j d
j d | j dj d | j dj d | j tdtj dtf | j ttdj tdf d S )Nr/   y               @      ?       @        y                r   y      ?       @)r   r   y      ?              )r   r   )r   r   y                     )r   r   )rb   __getnewargs__r   r   )r   r   r   r   test_getnewargs  s    zComplexTest.test_getnewargsc             C   s@   d\}}| j t|jdtdd | j t|jdtd	d
 d S )N                g      ?g                      )r   r   g      g      g      g       g      )rb   r   r   )r   z1z2r   r   r   test_plus_minus_0j  s    zComplexTest.test_plus_minus_0jc             C   sf   d}d}d}| j |jd	 | j |jd
 | j |jd | j |jd | j |jd | j |jt  d S )Ny                y              @y              g        g      @y              y             y             g       g       g       g      g       )r"   r   r   r   )r   Zz0r   r   r   r   r   test_negated_imaginary_literal  s    z*ComplexTest.test_negated_imaginary_literalc             C   sJ   | j tdttd | j tdtdt  | j tdtt t d S )NZ1e500g        z-1e500jz-1e500+1.8e308j)rb   r   r   )r   r   r   r   test_overflow  s    zComplexTest.test_overflowc       
   	   C   s  dddddddt tg	}|dd |D 7 }xP|D ]H}xB|D ]:}t||}tt|}| j|j|j | j|j|j q8W q.W td	td
 }}td|td| }}	x`|D ]X}xR|D ]J}t||}tt|}| jd|j d|j  | jd|j d|j  qW qW d S )Ng        gi    gN~hg(0?go!	@gd~QJc             S   s   g | ]
}| qS r   r   )r)   r   r   r   r   r+     s    z3ComplexTest.test_repr_roundtrip.<locals>.<listcomp>r	   r
   )	r   r6   r   r   r"   r   r   r(   r   )
r   valsr   r   r%   Z	roundtripr	   r
   r   r   r   r   r   test_repr_roundtrip  s$    





zComplexTest.test_repr_roundtripc             C   s*  | j tddtd | j tddtd | j tddtd | j tddtd | j tddtd | j tddtd | j tdd
td | j tddtd d}| j t|dt| | j t|d
t| | j t|dt| | j t|dt| tdd}| j t|dt| | j t|d
t| | j t|dt| | j t|dt| tdd}| j t|dt| | j t|d
t| | j t|dt| | j t|dt| | j tddd | j tddd | j tddd | j tddd | j tddd | j tddd | j tddd | j tddd  | j tddd! | j tddd" | j tddd$ | j tdd%d& | j tdd'd& | j tdd(d) | j tdd*d+ | j tdd,d- | j tdd0d1 | j tdd2d3 | j tdd4d5 | j tdd6d7 | j tdd8d9 | j tdd:d; | j tdd<d= | j tdd>d? | j tddBdC | j tddDdE | j tddFdE | j tddGdH | j tddGdJ | j tddKdL | j tddMdN | j tddMdP | j tddRdS | j tddUdV | j tddWdX | j tddYdZ | j tdd[d\ | j tddd_ | j tdd`da | j tddbdc | j tddddc | j tddedf | j tddgdf | j tddidj | j tdd[dk | j tddldm | j tddWdn | j tdd`do | j tddpdq | j tddrds | jtdjdt | jtdjdu xdvD ]}| jtdj| qzW | j dwjd߃dz | j ttttd%d{ | j ttdtd%d| | j tttdd%d} | j tttdd%d~ | j ttttd'd | j ttdtd'd | j tttdd'd | j tttdd'd | j ttttd%d | j ttdtd%d | j tttdd%d | j tttdd%d | j ttttd'd | j ttdtd'd | j tttdd'd | j tttdd'd d S )Nr/   y              @rv   g      ?y              @y        	@r8   y                g	@-<   g      @y              Y@Z10g        g      @rx   g       @3gz1+3jz0+3jz1.5+3.5jz+gz	+1.5+3.5jz	+1.5-3.5jz-gz1.5-3.5jz gz	 1.5+3.5jz	 1.5-3.5jz	-1.5+3.5jz	-1.5-3.5jy        ;z-1.5-3.5e-20jrK   z-1.500000-3.500000jFez-1.500000e+00-3.500000e+00jz.2ez-1.50e+00-3.50e+00jz.2Ez-1.50E+00-3.50E+00jg   By            \Az.2Gz-1.5E+10-3.5E+05jz<20gz1.5+3j              z*<20gz1.5+3j**************z>20gz              1.5+3jz^20gz       1.5+3j       z<20z(1.5+3j)            z>20z            (1.5+3j)z^20z      (1.5+3j)      g+?y        Cl@z^20.2z     (1.1-3.1j)     z20.2fz          1.50+3.00jz>20.2fz<20.2fz1.50+3.00j          g0)VC Dz150000000000000000000.00+3.00jz>40.2fz(          150000000000000000000.00+3.00jz^40,.2fz(  150,000,000,000,000,000,000.00+3.00j  g|3*+TTDz( 1,500,000,000,000,000,000,000.00+3.00j y             p@z,.2fz*1,500,000,000,000,000,000,000.00+3,000.00jy              ?z.0ez1e+00+1e+00jz#.0ez1.e+00+1.e+00jz.0fz1+1jz#.0fz1.+1.jg?y        ?z1.1+1.1jz#gz1.10000+1.10000jz.1ez1.0e+00+1.0e+00jz#.1ez.1fz1.0+1.0jz#.1fy              ?z#fz-1.500000+0.500000jz-2.+0.jz#ez-1.500000e+00+5.000000e-01jz-2.e+00+5.e-01jz-1.50000+0.500000jz.0gz-2+0.5jz#.0gz-2.+0.5jZ010fz=20ZbcdoxXz	*{0:.3f}*gn!	@y        	@z*3.142+2.718j*znan+nanjz1.000000+nanjznan+1.000000jznan-1.000000jzNAN+NANjz1.000000+NANjzNAN+1.000000jzNAN-1.000000jzinf+infjz1.000000+infjzinf+1.000000jzinf-1.000000jzINF+INFjz1.000000+INFjzINF+1.000000jzINF-1.000000jy      ?      @y      ?      @y      ?      @y      ?      @y      @        y      @        y	@        y	@        y	@        y	@        y	@        y	@        g$I$I?y        %I$I,@y$I$I?%I$I,g       y      ?      @y      ?      @y      ?      @y      ?      y      ?      y      ?      @y      ?      g      y            @g      y            g      y      g      y            g      y            g      y            g      y            g      y            g   y       \y      ?      @y      ?      @y      ?      @y      ?      @y      ?      @y      ?      @y      ?      @y+?Cly      ?      @y      ?      @y      ?      @y0)VC D      @y0)VC D      @y0)VC D      @y|3*+TTD      @y|3*+TTD     p@y      ?      ?y      ?      ?y      ?      ?y      ?      ?y??y??y      ?      ?y      ?      ?y      ?      ?y      ?      ?g      y            ?g      y            ?g      y            ?g      y            ?g      y            ?g      y            ?g      y            ?y      ?      ?y      ?      @y      ?      ?yn!	@	@r`   r`   r`   r`   )	rb   r    r   r   r4   ra   
__format__r6   r   )r   r%   tr   r   r   test_format6  s    


zComplexTest.test_formatN)r   )r   )"rj   rk   rl   r   r   r"   r#   r'   r7   r;   rL   rX   rZ   r\   rc   rd   rf   r   r   Zrequires_IEEE_754r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s<   

' 0r   c               C   s   t jt d S )N)r   Zrun_unittestr   r   r   r   r   	test_main  s    r   __main__)r   r   r   Ztest.test_grammarr   r   r   Zmathr   r   r   rD   r(   r   r6   r   r   r   rj   r   r   r   r   <module>   s         &