
    z%i                         d dl Z 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dZ G d	 d
e j"                        Zedk(  r e j(                          yy)    N)support)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)random)atan2isnancopysigninfnan))      ?      ?                )r           )r   r   )      ?r   )   r   c                      e Zd Zd Zd%dZd Zd%dZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej2                  d        Zd Zd Zd Zd Zd Zej2                  d        Z d Z!d Z"ej2                  d        Z#ej2                  d         Z$ej2                  d!        Z%ej2                  d"        Z&d# Z'y$)&ComplexTestc                    t        |t              rt        |t              rkt        j                  j	                  | |j
                  |j
                         t        j                  j	                  | |j                  |j                         y t        j                  j	                  | |j
                  |       t        j                  j	                  | |j                  d       y t        |t              rWt        j                  j	                  | ||j
                         t        j                  j	                  | d|j                         y t        j                  j	                  | ||       y )Nr   )
isinstancecomplexunittestTestCaseassertAlmostEqualrealimagselfabs      E/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_complex.pyr   zComplexTest.assertAlmostEqual   s    a!!W%!!33D!&&!&&I!!33D!&&!&&I!!33D!&&!D!!33D!&&"E!W%!!33D!QVVD!!33D"affE!!33D!Q?    c                     	 t        |      t        |      kD  r||}}|dk(  rt        |      |k  S |dk(  rt        |      |k  S | j                  t        ||z
  |z        |k         y Nr   )abs
assertTruer   xyepss       r   assertCloseAbszComplexTest.assertCloseAbs(   sd    9q6CF?aqA6q6C<6q6C<QqS!Gs*+r    c                     	 d}t        |      st        |      rt        |      r6t        |      r+y ||k(  r%|dk7  ry t        d|      t        d|      k(  ry |dz  }| j                  |j                  ||             y )Nz&floats {!r} and {!r} are not identicalr   r   z: zeros have different signs)r   r	   failformat)r   r&   r'   msgs       r   assertFloatsAreIdenticalz$ComplexTest.assertFloatsAreIdentical4   sw    	 78uQxQxE!H!VCx#q!Xc1%5555		#**Q"#r    c                     	 | j                  |j                  |j                  |       | j                  |j                  |j                  |       y N)r)   r   r   r%   s       r   assertClosezComplexTest.assertCloseK   s9    <AFFAFFC0AFFAFFC0r    c                    	 ||z  }|dk7  r:||z  }| j                  ||       |j                  |      }| j                  ||       |dk7  r;||z  }| j                  ||       |j                  |      }| j                  ||       y y r"   )r1   __truediv__)r   r&   r'   zqs        r   	check_divzComplexTest.check_divP   s    FE6AAQ"a AQ"6AAQ"a AQ"	 r    c           	      R   t        dd      D cg c]  }t        |       }}|D cg c]  }|D ]  }t        ||        }}}|D ]  }|D ]  }| j                  ||         | j                  t        dd      d       | j                  t        dd      d       t        d      D ]H  }| j                  t        t	               t	                     t        t	               t	                            J | j                  t        j                  dd      d	       d
t        ft        d
ft        t        ffD ]f  \  }}t        d
d
      t        ||      z  }| j                  t        |j                               | j                  t        |j                               h y c c}w c c}}w )N   gZbti      ?        N~hd          @        r   y      ?      r   )rangefloatr   r6   r   r   r3   NANr$   r   r   r   )	r   isimple_realr&   r'   simple_complex
denom_real
denom_imagr4   s	            r   test_truedivzComplexTest.test_truediv^   se   ).r16AuQx661<RAkR'!Q-R-RR 	%A# %q!$%	% 	wue,d3wvv.5 s 	8ANN768VX6"68VX68	8 	w224>E()3x#qC:&F 	+"J
1
J ??AOOE!&&M*OOE!&&M*	+% 7Rs
   FF#c                 ~    t         D ](  \  }}| j                  t              5  ||z   d d d        * y # 1 sw Y   5xY wr0   )ZERO_DIVISIONassertRaisesZeroDivisionErrorr   s      r   test_truediv_zero_divisionz&ComplexTest.test_truediv_zero_divisionv   sE    ! 	DAq""#45 A 	    3<	c                    | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   QxY w# 1 sw Y   y xY wNr   r:   r   r   rI   	TypeErrorr   s    r   test_floordivzComplexTest.test_floordiv{   s    y) 	t	y) 	cM	y) 	aK	y) 	DM	y) 	$K	 		 		 		 		 		 	:   B1B=C	?C"C!1B:=C	CC!C*c                 ~    t         D ](  \  }}| j                  t              5  ||z   d d d        * y # 1 sw Y   5xY wr0   rH   rI   rP   r   s      r   test_floordiv_zero_divisionz'ComplexTest.test_floordiv_zero_division   sD    ! 	DAq""9- Q 	 rL   c           	         | j                  t        j                  dddz        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       t        dd      D ]  }|dz  }| j                  t        j                  |d	z   |      d       | j                  t        j                  |d	z   |      d       | j                  t        j                  t        ||      |      d       | j                  t        j                  t        ||      |      d        | 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       y )
Nr   r   i'  FTy       @       @r<   g      Y@r   )assertIsr   __eq____lt__NotImplemented__ne__r>   __le____gt____ge__rI   rP   operatorltlegtgeeqne)r   rA   fs      r   test_richcomparezComplexTest.test_richcompare   s^   gnnT1e84e<gnnT40.AgnnT40$7gnnT40%8gnnT40%8gnnT40$7q# 	BAE	AMM'..2q148MM'..2q159MM'..A:EBMM'..A:DA	B 	gnnT40.AgnnT40.AgnnT40.AgnnT40.A)X[[$=)X[[$=)X[[$=)X[[$=hkk$-t4hkk$-u5hkk$-u5hkk$-t4r    c           	           d fd	}t        dd      D ]H  }d|z   }d|z   |d|z  t        dd      fd        |d|z  t        dd      d t        |             J  |d	t        d
d      d        y )Nc                     |D ]l  }| |z   }t        ||      }j                  t         j                  ||       ||             j                  t         j                  ||       ||              n y r0   )r   rX   rY   r\   )ndeltasis_equalr   deltarA   r4   r   s          r   checkz6ComplexTest.test_richcompare_boundaries.<locals>.check   sf     IIAt$gnnQ2HUODgnnQ24GH	Ir    r   
   4      e   c                     | z  dk(  S r"    )rn   mults    r   <lambda>z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>   s    9J r    c                      y)NFru   rn   s    r   rw   z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>       r    l          ir   c                      y)NTru   ry   s    r   rw   z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>   rz   r    )r   )r>   r?   )r   ro   rA   powrv   s   `   @r   test_richcompare_boundariesz'ComplexTest.test_richcompare_boundaries   s}    	I q" 	JAq&C6D!s(E!SM+JK!s(E!SM+>aI		J
 	guT1~'9:r    c                    | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        | j                  t              5  ddz   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   QxY w# 1 sw Y   y xY wrN   rO   rQ   s    r   test_modzComplexTest.test_mod   s    y) 	dO	y) 	SL	y) 	QJ	y) 	4L	y) 	J	 		 		 		 		 		 	rS   c                 ~    t         D ](  \  }}| j                  t              5  ||z   d d d        * y # 1 sw Y   5xY wr0   rU   r   s      r   test_mod_zero_divisionz"ComplexTest.test_mod_zero_division   sD    ! 	DAq""9- A 	 rL   c                    | j                  t        t        dd       | j                  t        t        dd       | j                  t        t        dd       | j                  t        t        dd       | j                  t        t        dd       y rN   )rI   rP   divmodrQ   s    r   test_divmodzComplexTest.test_divmod   sf    )VT48)VT37)VT15)VS$7)VQ5r    c                 X    t         D ]!  \  }}| j                  t        t        ||       # y r0   )rH   rI   rP   r   r   s      r   test_divmod_zero_divisionz%ComplexTest.test_divmod_zero_division   s)    ! 	7DAqiA6	7r    c                 p   | 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       | j                  t
        t        dd       d}| j                  |dz  d
       | j                  |dz  dz   d
       | j                  dd
       | j                  dd
       	 d|z   | j                  d       	 ddz   | j                  d       | j                  |dz  |dz         | j                  |dz  |dz         | j                  |dz  |dz         | j                  dd
       d}| j                  t        t        ||d       t        j                  t        j                  d
z   t        j                  d
z
  t        j                   t        j                   d
z   t        j                   d
z   f}|D ]=  }|D ]6  }| j                  ||      5  t        ||      }	 ||z   	 ||z   d d d        8 ? y # t        $ r Y Jw xY w# t        $ r Y Cw xY w# t
        $ r Y >w xY w# t
        $ r Y Gw xY w# 1 sw Y   xY w)Nr   r   r   r=   r                 ?y                 r   yZbti      ?yp=
ף
@Q@r:   z,should fail 0.0 to negative or complex powery      @       i   iyffffff@ffffff@r   r   r   )r   r|   rI   rJ   
ValueErrorOverflowErrorassertEqualr+   sysmaxsizesubTestr   )r   r   r   valuesr   r   cs          r   test_powzComplexTest.test_pow   s   s44s44+S$;s2r{D1s2s|Q/*c4t<-hAb!$ba(1%!$	F!G IIDE	F4L IIDE 	c18,dAI.c18,A&*c1a3 ++s{{1}ckk!m;;,QQ@ 	D 
\\t$\7 	d+AT	Q	 	
	; ! 		 ! 		8 )  ) 	 	sl   I. 1I> J,JJ.	I;:I;>	J
J	J	J,J	J,	J)	&J,(J)	)J,,J5c           	      "   t        dd      t        dd      t        dt              t        t        d      g}g d}|D ]  }|D ]  }| j                  ||      5  	 ||z  }	 |t	        |      z  }	 |t        |      z  }| j                  t        |      t        |             | j                  t        |      t        |             d d d          y # t        $ r d	}Y w xY w# t        $ r d	}Y w xY w# t        $ r d	}Y w xY w# 1 sw Y   xY w)
Ng      @g      (@g\nTg;%_nTg      r   )ir8   r   r   r   rr            )valueexponentoverflow)r   INFr   r   r?   r   str)r   r   	exponentsr   r   int_pow	float_powcomplex_pows           r   %test_pow_with_small_integer_exponentsz1ComplexTest.test_pow_with_small_integer_exponents  s3    CGX&D#C	
 =	 	EE% E\\\A E-"'//$)5?$:	1&+WX->&> $$S^S\B$$S%5s7|DE EE	E
 ) -",- ) /$.	/ ) 1&01E Esm   DC C#/C4=ADC 	DC 	 D#C1	.D0C1	1D4D	?DD	DDc                     t        d      D ]3  }| j                  t        t               dz   t               dz                5 | j                  t        dd              y )Nr<   gư>r   )r>   r$   r   r   )r   rA   s     r   test_boolcontextzComplexTest.test_boolcontext,  sL    s 	GAOOGFHtOVX_EF	GGC--.r    c                 X    | j                  t        dd      j                         d       y )Ng333333@g#@y333333@#)r1   r   	conjugaterQ   s    r   test_conjugatezComplexTest.test_conjugate1  s"    c*446Ar    c           	          G d d      }| j                  t         |d            d       | j                  t        t         |d              | j                  t        t        i        | j                  t        t         |d             | j                  t        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      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	      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        d      d       | j	                  t        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      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/t              }| j	                  t         |d0            d0       | j	                  t        d1d23      d4       | j	                  t        d45      d4       | j	                  t        d4d23      d6       | j	                  t        dd73      d8       d9 }| j                   |t        d
d      j
                         |d             | j                   |t        d
d:      j
                         |d:             | j                   |t        dd
      j                         |d             | j                   |t        d:d
      j                         |d:             d }| j                  t        |      |u        ~| j                  t        t        dd       | j                  t        t        dd       | j                  t        t        d;       | j                  t        t        d<       | j                  t        t        d<       | j                  t        t        d<       | j                  t        t        d=       | j                  t        t        d        | j                  t        d>t        d        | j                  t        t        d?       | j                  t        t        d@       | j                  t        t        ddA       | j                  t        t        ddB       | j                  t        t        ddA       | 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        t        dK       | j                  t        t        dL       | j                  t        t        dM       | j                  t        t        dN       | j                  t        dOt        ddPid       | j                  t        dQt        dddPi       | j                  t        t        dR       | j                  t        t        dS       | j                  t        t        dT       | j                  t        t        dU            t               | j                  t        dV      d0       | j                  t        t        dW        G dX dYt               G fdZd[      }| j                  t         |               G d\ d]      }| j	                  t         |d^            dB       | j	                  t         |d_       |d`      3      d4       | j                  t        t         |d               G da db      }| j	                  t         |dB            dc       | j	                  t        dd |dB            de       | j                  t        t         |dPdfz               | j                  t        t        dd |dPdfz                G dg dh      }| j                  t        t         |              | j                  t        t        dd |               G di djt              }	 G dk dlt              }
 G dm d/t              }| j                  t         |	d            dn       | j                  t               5  | j                  t         |
d            do       d d d        | j                  t        t         |d             y # 1 sw Y   +xY w)pNc                       e Zd Zd Zd Zy)(ComplexTest.test_constructor.<locals>.NSc                     || _         y r0   r   r   r   s     r   __init__z1ComplexTest.test_constructor.<locals>.NS.__init__6  s    Etzr    c                     | j                   S r0   r   rQ   s    r   __complex__z4ComplexTest.test_constructor.<locals>.NS.__complex__7  s    $**#4r    N)__name__
__module____qualname__r   r   ru   r    r   NSr   5  s    94r    r   y      ?      $@g      ?r   z1+10jrp   y      $@        g      $@r   yQ	@        gQ	@i:  y     s@        r   r   r   y        Q	@yQ	        1r:   1jr   z-1r   z+1z(1+2j)      ?       @z
(1.3+2.2j)y?@z3.14+1JyQ	@      ?z ( +3.14-6J )yQ	@      z ( +3.14-J )yQ	@      z ( +3.14+j )Jz( j )z+Jz( -j)y             z1e-500z-1e-500jz-1e-500+1e-500jc                       e Zd Zy).ComplexTest.test_constructor.<locals>.complex2Nr   r   r   ru   r    r   complex2r   k  s    r    r   r         r   y      1@      7@)r   y      1@      G@      @      @y            @c                     	 t        | d      S )N      )r   )r&   s    r   split_zerosz1ComplexTest.test_constructor.<locals>.split_zerosu  s    IC= r           z1+1j jy      @      @ 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+21e1ejz1e++1ejz)1+2j(z7first argument must be a string or a number, not 'dict'rr   z,second argument must be a number, not 'dict'z1..1jz1.11.1jz1e1.1j  11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111u    ( 1+1j ) u   こんにちはc                       e Zd Zy)-ComplexTest.test_constructor.<locals>.EvilExcNr   ru   r    r   EvilExcr         r    r   c                       e Zd Z fdZy)1ComplexTest.test_constructor.<locals>.evilcomplexc                     r0   ru   )r   r   s    r   r   z=ComplexTest.test_constructor.<locals>.evilcomplex.__complex__  s    r    Nr   r   r   r   )r   s   r   evilcomplexr     s    r    r   c                       e Zd Zd Zd Zy),ComplexTest.test_constructor.<locals>.float2c                     || _         y r0   r   r   s     r   r   z5ComplexTest.test_constructor.<locals>.float2.__init__  	    "
r    c                     | j                   S r0   r   rQ   s    r   	__float__z6ComplexTest.test_constructor.<locals>.float2.__float__      zz!r    N)r   r   r   r   r   ru   r    r   float2r         #"r    r   g      E@g      1@g      7@c                       e Zd Zd Zd Zy)-ComplexTest.test_constructor.<locals>.MyIndexc                     || _         y r0   r   r   s     r   r   z6ComplexTest.test_constructor.<locals>.MyIndex.__init__  r   r    c                     | j                   S r0   r   rQ   s    r   	__index__z7ComplexTest.test_constructor.<locals>.MyIndex.__index__  r   r    N)r   r   r   r   r   ru   r    r   MyIndexr     r   r    r   y      E@        {   y     ^@      E@i  c                       e Zd Zd Zy)+ComplexTest.test_constructor.<locals>.MyIntc                      y)Nr   ru   rQ   s    r   __int__z3ComplexTest.test_constructor.<locals>.MyInt.__int__  s    r    N)r   r   r   r   ru   r    r   MyIntr     s    r    r   c                       e Zd Z	 d Zy).ComplexTest.test_constructor.<locals>.complex0c                      y)N              E@ru   rQ   s    r   r   z:ComplexTest.test_constructor.<locals>.complex0.__complex__  s    r    Nr   ru   r    r   complex0r     s
    Lr    r   c                       e Zd Z	 ddZd Zy).ComplexTest.test_constructor.<locals>.complex1c                 4    t         j                  | d|z        S )Nrr   )r   __new__r   s     r   r   z6ComplexTest.test_constructor.<locals>.complex1.__new__  s    tQuW55r    c                     | S r0   ru   rQ   s    r   r   z:ComplexTest.test_constructor.<locals>.complex1.__complex__  s    r    N)r   )r   r   r   r   r   ru   r    r   complex1r     s    E6r    r   c                       e Zd Z	 d Zy)r   c                      y r0   ru   rQ   s    r   r   z:ComplexTest.test_constructor.<locals>.complex2.__complex__  s    r    Nr   ru   r    r   r   z.ComplexTest.test_constructor.<locals>.complex2  s    #r    r                  @)r   r   rI   rP   r   r   r   r$   r   intr?   assertRaisesRegextype	Exceptionr   assertWarnsDeprecationWarning)r   r   r   r   r   r   r   r   r   r   r   r   s              @r   test_constructorzComplexTest.test_constructor4  s	   	5 	5 	E+U3)Wbh7)Wb1)Wbg6)Wbe4ww/7wr{E2wt}e4wr{E2wu~u5wq}e4wq}e4wq6wq}e4wq}e4wq6ws26ws26ws40%8ww/9wt}g6ws|X6ws|X6ww3W=wtS17;wsA9wsA9wr518<wsE2H=wr40%8wsD159ws|T2wt}b1wy1-wt}b1wt}b1wx0$7w|4h?wy17;w7Aw~6@w~6@ws|R0ww/4wt}b1ww/5wx0*=wz2J?w'89;G%w%wx~6=wBR8&AwF3V<wF<fEwDt<eD
	! 	WR_%9%9:KOLWR%5%:%:;[=MNWR_%9%9:KOLWS"%5%:%:;[=MN
a()Wc37)Wa5 	*gy9)S$/)S$/)UD1*gr2)Wd3y*:GTJ*gt4*gv6)Wc37)Wc26)Wa5*gt4*gy9*gt4*gw7*gw7*gx8*g{;*gs3*gv6*gw7*gy9*gx8EaUA	 	:Q1	
 	*gw7*gy9*gx8 	gg./9!CDdK 	*g/OP	i 		 	 	'7KM:	" 	" 	wvc{3R8wF3KfSkJFS)WfTl;	" 	" 	wwr{3Y?wsGBK8+F-'!T'2BC-#wq$w7GH	 	 	)Weg6)Wc57;	w 	
	w 		w 	 	".401 	8WXb\2B7	8)Whrl;	8 	8s   "ss"c                 j   d}| j                  |j                         |       | j                  t        |j                               t                G d dt              } |d      }| j                  |j                         d       | j                  t        |j                               t               y )Nr   c                       e Zd Zy)6ComplexTest.test___complex__.<locals>.complex_subclassNr   ru   r    r   complex_subclassr    r   r    r  )r   r   r   r   )r   r4   r  s      r   test___complex__zComplexTest.test___complex__  s    !,ammo.8	w 	 V$&1ammo.8r    c           	          G d dt               }ddt        t         t        fD ]  }ddt        t         t        fD ]  }| j                  ||      5  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                  |       d d d          y # 1 sw Y   xY w)Nc                       e Zd Zy)>ComplexTest.test_constructor_special_numbers.<locals>.complex2Nr   ru   r    r   r   r    r   r    r   r   r   )r&   r'   )	r   r   r@   r   r.   r   r   rX   r   )r   r   r&   r'   r4   s        r    test_constructor_special_numbersz,ComplexTest.test_constructor_special_numbers  s|   	w 	dC#s* 	=A$cT3. =\\A\+ =1A11!&&!<11!&&!< AAMM$q'8411!&&!<11!&&!<A/AMM$q'7311!&&!<11!&&!< A/AMM$q'8411!&&!<11!&&!<= ==	== =s   E/GGc                 |   | j                  t        dt        d      j                        d       | j                  t        dt        d      j                        d       | j                  t        dt        d      j                        d       | j                  t        dt        d      j                        d       y )Nr   z-nanr   z-nanjz	-nan-nanj)r   r	   r   r   r   rQ   s    r   *test_constructor_negative_nans_from_stringz6ComplexTest.test_constructor_negative_nans_from_string  s    "gfo&:&:;SA"gg&6&;&;<cB"gk&:&?&?@#F"gk&:&?&?@#Fr    c           
      v   t         D ]o  t        fddD              r| j                  t              t	                     | j                  t              t        j                  dd                   q t        D ]7  dv rt        fddD              r| j                  t        t               9 y )Nc              3   &   K   | ]  }|v  
 y wr0   ru   .0chlits     r   	<genexpr>z/ComplexTest.test_underscores.<locals>.<genexpr>       4RrSy4   xXoObB_r   )0_709_99c              3   &   K   | ]  }|v  
 y wr0   ru   r  s     r   r  z/ComplexTest.test_underscores.<locals>.<genexpr>#  r  r  )	r   anyr   r   evalreplacer   rI   r   )r   r  s    @r   test_underscoreszComplexTest.test_underscores  s    , 	NC4844  tCy9  ws{{37K/LM	N / 	<C&&4844!!*gs;		<r    c           
          t        dd      D ]c  }| j                  t        |      t        t        |d                   |dz  }| j                  t        |      t        t        |d                   e y )Nr      r         @r   )r>   r   hashr   )r   r&   s     r   	test_hashzComplexTest.test_hash&  s^    sB 	<AT!Wd71a=&9:HAT!Wd71b>&:;	<r    c           
         t        dd      D cg c]%  }t        dd      D ]  }t        |dz  |dz         ' }}}|D ]=  }| j                  |j                  dz  |j                  dz  z   dz  t        |             ? y c c}}w )Ni	   r   g      @rr   g      ?)r>   r   r   r   r   r#   )r   r&   r'   numsnums        r   test_abszComplexTest.test_abs,  s    -22a[N%1+NQ"ad#N#NN 	RC""CHHaK#((A+$=3#FCQ	R Os   *B c                    | j                   fd} |dd        |dd        |dd| j                          |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        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                   y )Nc                 L     |t        |       |        |t        |       |       y r0   reprr   vexpectedtest_fns      r   testz'ComplexTest.test_repr_str.<locals>.test2      DGX&CFH%r    y      ?      @z(1+6j)y      ?      z(1-6j)y             z(-1+-0j))r/  r   z(1+infj)z(1-infj)r   z(inf+1j)z(-inf+infj)z(nan+1j)z(1+nanj)z
(nan+nanj)r   infjz-infjnanjy             y              @)r   assertNotEqualr   r   r@   r+  r   r0  s     r   test_repr_strzComplexTest.test_repr_str1  s\   &*&6&6 	& 	T8T8Wj$*=*=>WRz*WR#
+WS!_j)WcT3/WS!_j)WQ_j)WS#-WcTC4 ,/WQ_f%WQw'WQ_f%gd4j12gd4j12WT#Y/0GDH-.r    c                 R   | j                   f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       y )Nc                 L     |t        |       |        |t        |       |       y r0   r*  r,  s      r   r0  z5ComplexTest.test_negative_zero_repr_str.<locals>.testO  r1  r    r   r   r   r   z(-0+1j)r   z-1jz(-0-1j)0jz-0jz(-0+0j)z(-0-0j))r   r   r5  s     r   test_negative_zero_repr_strz'ComplexTest.test_negative_zero_repr_strM  s    &*&6&6 	& 	WR_%WS"	*WR&WS#	*WR_%WR&WS"	*WS#	*r    c                 (    | j                  dd       y )Ny            )r   rQ   s    r   test_negzComplexTest.test_neg]  s    %(r    c                    | 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       y )Nr   )r          @y      ?       )r   g       r   )r   r>                )r   r   r   r   )r   __getnewargs__r   r   rQ   s    r   test_getnewargszComplexTest.test_getnewargs`  s    $..0*=$..0+>",,.
;#--/=C779C:Fa779C:Fr    c                     d\  }}| j                  t        |j                  d      t        dd             | j                  t        |j                  d      t        dd             y )N)r   r?  r   r   r   )r   r   r   )r   z1z2s      r   test_plus_minus_0jzComplexTest.test_plus_minus_0jh  sO     Brww,eBn=rww,eCo>r    c                 j   d}d}d}| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t                y )Nr?  y             y             r   g      )r.   r   r   r   )r   z0rC  rD  s       r   test_negated_imaginary_literalz*ComplexTest.test_negated_imaginary_literalo  s    
 	%%bggt4%%bggt4%%bggt4%%bggt4%%bggt4%%bggt4r    c                    | j                  t        d      t        t        d             | j                  t        d      t        dt                      | j                  t        d      t        t         t                     y )N1e500r   z-1e500jz-1e500+1.8e308j)r   r   r   rQ   s    r   test_overflowzComplexTest.test_overflow  s[    )73+<=+WS3$-?@!23WcT35GHr    c           	         dddddddt         t        g	}||D cg c]  }|  c}z  }|D ]u  }|D ]n  }t        ||      }t        t        |            }| j	                  |j
                  |j
                         | j	                  |j                  |j                         p w t        d      t        d      }}t        d|      t        d|      }
}	|D ]  }|D ]z  }t        ||      }t        t        |            }| j	                  d|j
                  z   d|j
                  z          | j	                  d|j                  z   d|j                  z          |  y c c}w )	Nr   gi    r;   g(0?go!	@gd~QJr
   r   )	r   r@   r   r+  r.   r   r   r?   r  )r   valsr-  r&   r'   r4   	roundtripr
   r   r2  r3  s              r   test_repr_roundtripzComplexTest.test_repr_roundtrip  sQ   VVVVVT3LT"!""  	FA FAqM#DG,	--affinnE--affinnE	F	F <uSS#&S(9d 	DA DAqM aM	--cAFFl.1INN.BD--cAFFl.1INN.BDD	D #s   
Ec                 f   | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd      t        d             | j                  t        dd	      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        dd      }| j                  t        |d      t        |             | j                  t        |d      t        |             | j                  t        |d	      t        |             | j                  t        |d      t        |             | 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      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/      d0       | j                  t        d1d2      d3       | j                  t        d1d4      d5       | j                  t        d1d6      d7       | j                  t        d1d8      d9       | j                  t        d1d:      d;       | j                  t        d1d<      d=       | j                  t        d1d>      d?       | j                  t        d@dA      dB       | j                  t        d1dC      dD       | j                  t        d1dE      dD       | j                  t        d1dF      dG       | j                  t        dHdF      dI       | j                  t        dHdJ      dK       | j                  t        dHdL      dM       | j                  t        dNdL      dO       | j                  t        dPdQ      dR       | j                  t        dSdT      dU       | j                  t        dSdV      dW       | j                  t        dSdX      dY       | j                  t        dSdZ      d[       | j                  t        d\d      d]       | j                  t        d\d^      d_       | j                  t        dSd`      da       | j                  t        dSdb      da       | j                  t        dSdc      dd       | j                  t        dSde      dd       | j                  t        dfdg      dh       | j                  t        dfdZ      di       | j                  t        dfdj      dk       | j                  t        dfdV      dl       | j                  t        dfd^      dm       | j                  t        dfdn      do       | j                  t        dfdp      dq       | j	                  t
        drj                  ds       | j	                  t
        d1j                  dt       duD ]#  }| j	                  t
        drj                  |       % | j                  dvj                  dw      dx       | j                  t        t        t        t              d%      dy       | j                  t        t        dzt              d%      d{       | j                  t        t        t        dz      d%      d|       | j                  t        t        t        d}      d%      d~       | j                  t        t        t        t              d'      d       | j                  t        t        dzt              d'      d       | j                  t        t        t        dz      d'      d       | j                  t        t        t        d}      d'      d       | j                  t        t        t        t              d%      d       | j                  t        t        dzt              d%      d       | j                  t        t        t        dz      d%      d       | j                  t        t        t        d}      d%      d       | j                  t        t        t        t              d'      d       | j                  t        t        dzt              d'      d       | j                  t        t        t        dz      d'      d       | j                  t        t        t        d}      d'      d       y )Ny      ?      @r   y      ?      @y              @y        	@y      @        y	@        -<y$I$I?%I$I,10r   r   r   r   r>  3gz1+3jz0+3jz1.5+3.5jz+gz	+1.5+3.5jy      ?      z	+1.5-3.5jz-gz1.5-3.5jz gz	 1.5+3.5jz	 1.5-3.5jy            @z	-1.5+3.5jy            z	-1.5-3.5jy      z-1.5-3.5e-20jrg   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+00jy       \z.2Gz-1.5E+10-3.5E+05jy      ?      @z<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)      y+?Clz^20.2z     (1.1-3.1j)     z20.2fz          1.50+3.00jz>20.2fz<20.2fz1.50+3.00j          y0)VC D      @z150000000000000000000.00+3.00jz>40.2fz(          150000000000000000000.00+3.00jz^40,.2fz(  150,000,000,000,000,000,000.00+3.00j  y|3*+TTD      @z( 1,500,000,000,000,000,000,000.00+3.00j y|3*+TTD     p@z,.2fz*1,500,000,000,000,000,000,000.00+3,000.00jr   z.0ez1e+00+1e+00jz#.0ez1.e+00+1.e+00jz.0fz1+1jz#.0fz1.+1.jy??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.5jy      ?      ?010fz=20bcdoxXz	*{0:.3f}*yn!	@	@z*3.142+2.718j*znan+nanjr   z1.000000+nanjznan+1.000000jr   z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.000000j)	r   r,   r   r   rI   r   
__format__r@   r   )r   r4   ts      r   test_formatzComplexTest.test_format  s)	   b)3t95"-s8}=BR1b)3t95b)3t95+S[9 	,c&k:,c&k:2A/3Q03Q04#a&1C2A/3Q03Q03Q0D#2A/3Q03Q03Q0c*F3C&1#.
;$/=$/=$/<$/=$/=	40+>	40+>s3_E	3/1FG	3/1FG	3/1NO	513HI	513HI68KL/2HI02HI/2HI/2HI.2HI.2HI.2HIg68NO02HI13IJ13IJ	846VW	846`a	957ab	957abf57cd 	e,n=f-/?@e,f5f-x8#.
;$/1CD 	e,/ABf-/ABe,z:f-z: 	T24IJV4i@T24QRV46GHT24HIU3Y?V4jA 	*x&;&;VD 	*v&9&95A  	DAj8*?*?C	D 	++,<=?OP 	S 137D35GQ5GR 0#6HS 137D35GQ5GR 0#6HS 137D35GQ5GR 0#6HS 137D35GQ5GR 0#6Hr    N)g&.>)(r   r   r   r   r)   r.   r1   r6   rF   rK   rR   rV   rh   r}   r   r   r   r   r   r   r   r   r   r  r   requires_IEEE_754r	  r  r  r"  r'  r6  r:  r<  rA  rE  rH  rK  rO  r\  ru   r    r   r   r      s>   @
,$.1
#+0


54;"
67:xE8/
B{<z
9 = =,G
<<R
/8 + +)G ? ? 5 5 I I
 D D6wIr    r   __main__)r   r   r0  r   test.test_grammarr   r   r   mathr   r   r	   r`   r?   r   r@   rH   r   r   r   mainru   r    r   <module>rb     sk     
 <  ' ' ElElAI(## AIH zHMMO r    