
    dafR                     "   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
 d dlZ ed      Z ed      ZdZ G d	 d
      Z G d d      Z G d de      Z G d d      Z G d de j*                        Zedk(  r e j0                          yy)    N)support)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)random)isnancopysigninfnan))      ?      ?                )r           )r   r   )      ?r   )   r   c                       e Zd Zd Zd Zy)	WithIndexc                     || _         y Nvalueselfr   s     ,/root/Python-3.12.4/Lib/test/test_complex.py__init__zWithIndex.__init__   	    
    c                     | j                   S r   r   r   s    r   	__index__zWithIndex.__index__       zzr   N)__name__
__module____qualname__r   r    r   r   r   r          r   r   c                       e Zd Zd Zd Zy)	WithFloatc                     || _         y r   r   r   s     r   r   zWithFloat.__init__   r   r   c                     | j                   S r   r   r   s    r   	__float__zWithFloat.__float__    r   r   N)r    r!   r"   r   r)   r#   r   r   r&   r&      r$   r   r&   c                       e Zd Zy)ComplexSubclassNr    r!   r"   r#   r   r   r+   r+   #   s    r   r+   c                       e Zd Zd Zd Zy)WithComplexc                     || _         y r   r   r   s     r   r   zWithComplex.__init__'   r   r   c                     | j                   S r   r   r   s    r   __complex__zWithComplex.__complex__)   r   r   N)r    r!   r"   r   r1   r#   r   r   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d Zd Zd Zej8                  d        Zd Zd Zd Z d Z!d Z"d Z#ej8                  d         Z$d! Z%d" Z&d# Z'ej8                  d$        Z(ej8                  d%        Z)ej8                  d&        Z*ej8                  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r   abs      r   r9   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?r   c                     t        |      t        |      kD  r||}}|dk(  rt        |      |k  S |dk(  rt        |      |k  S | j                  t        ||z
  |z        |k         y)z+Return true iff floats x and y "are close".r   N)abs
assertTruer   xyepss       r   assertCloseAbszComplexTest.assertCloseAbs=   sc     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)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 identicalNr   r   z: zeros have different signs)r   r   failformat)r   rC   rD   msgs       r   assertFloatsAreIdenticalz$ComplexTest.assertFloatsAreIdenticalI   sr     78uQxQxE!H!VCx#q!Xc1%5555		#**Q"#r   c                     | j                  |j                  |j                  |       | j                  |j                  |j                  |       y)z.Return true iff complexes x and y "are close".N)rF   r:   r;   rB   s       r   assertClosezComplexTest.assertClose`   s6    AFFAFFC0AFFAFFC0r   c                    ||z  }|dk7  r:||z  }| j                  ||       |j                  |      }| j                  ||       |dk7  r;||z  }| j                  ||       |j                  |      }| j                  ||       yy)z8Compute complex z=x*y, and check that z/x==y and z/y==x.r   N)rM   __truediv__)r   rC   rD   zqs        r   	check_divzComplexTest.check_dive   s    E6AAQ"a AQ"6AAQ"a AQ"	 r   c           	         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	       | j                  t        t        j                  d
d        | j                  t        t        j                  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floatr6   rR   r   r9   rO   assertRaises	TypeErroroperatortruedivNANrA   r   r:   r;   )	r   isimple_realrC   rD   simple_complex
denom_real
denom_imagrP   s	            r   test_truedivzComplexTest.test_truedivs   s   ).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)X%5%5r4@)X%5%5tR@()3x#qC:&F 	+"J
1
J ??AOOE!&&M*OOE!&&M*	+) 7Rs
   G*G/c                 ~    t         D ](  \  }}| j                  t              5  ||z   d d d        * y # 1 sw Y   5xY wr   )ZERO_DIVISIONr]   ZeroDivisionErrorr<   s      r   test_truediv_zero_divisionz&ComplexTest.test_truediv_zero_division   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   rV   r   r   r]   r^   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r   ri   r]   r^   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       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       | j                  t        j"                  dd
      d       y )Nr   r   i'  FTy       @       @rX   g      Y@r          @)assertIsr6   __eq____lt__NotImplemented__ne__r[   __le____gt____ge__r]   r^   r_   ltlegtgeeqne)r   rb   fs      r   test_richcomparezComplexTest.test_richcompare   s   gnnT1e84e<gnnT40.A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4hkk$,e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 r   )r6   rw   rx   r{   )ndeltasis_equalr;   deltarb   rP   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 )Nr   r#   )r   mults    r   <lambda>z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>   s    9J r   c                      y)NFr#   r   s    r   r   z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>       r   l          ir   c                      y)NTr#   r   s    r   r   z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>   r   r   )r   )r[   r\   )r   r   rb   powr   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                  dt        d      z   t        dd             | j                  dt        d      z   t        dd             | j                  t        t
        j                  dddz         | j                  t        t
        j                  dd        | j                  t        t
        j                  d d       y NrZ   r   r     )assertEqualintr6   r]   OverflowErrorr_   addr^   r   s    r   test_addzComplexTest.test_add   s    c"gwr1~6c"gwr1~6-r2t8D)X\\2t<)X\\4<r   c                    | j                  dt        d      z
  t        dd             | j                  dt        d      z
  t        dd             | j                  t        t
        j                  dddz         | j                  t        t
        j                  dd        | j                  t        t
        j                  d d       y r   )r   r   r6   r]   r   r_   subr^   r   s    r   test_subzComplexTest.test_sub   s    c"gwr1~6c"gwq!}5-r2t8D)X\\2t<)X\\4<r   c                    | j                  dt        d      z  t        dd             | j                  dt        d      z  t        dd             | j                  t        t
        j                  dddz         | j                  t        t
        j                  dd        | j                  t        t
        j                  d d       y )NrZ      r   r   r   r   )r   r   r6   r]   r   r_   mulr^   r   s    r   test_mulzComplexTest.test_mul   s    c"gwq"~6c"gwq"~6-r2t8D)X\\2t<)X\\4<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   r   s    r   test_modzComplexTest.test_mod   s    y) 	dO	y) 	SL	y) 	QJ	y) 	4L	y) 	J	 		 		 		 		 		 	rq   c                 ~    t         D ](  \  }}| j                  t              5  ||z   d d d        * y # 1 sw Y   5xY wr   rs   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   )r]   r^   divmodr   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 r   )ri   r]   r^   r   r<   s      r   test_divmod_zero_divisionz%ComplexTest.test_divmod_zero_division   s)    ! 	7DAqiA6	7r   c                    | 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        t        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       | j                  t        t        d	d        | j                  t        t        d d	       | j                  t        d	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   rY   r   y     @@        r   r   rZ   iy                 r   yZbti      ?      ?y;f?;f?yp=
ף
@Q@rV   z,should fail 0.0 to negative or complex powery      @       i   iyffffff@ffffff@r:   r;   )r9   r   r   r]   rj   
ValueErrorr   r^   rH   sysmaxsizesubTestr6   )r   r=   r>   valuesr:   r;   cs          r   test_powzComplexTest.test_pow  s-   s44s44T7+S1Qs+R,+S$;+S$>s2r{D1s2s|Q/*c4t<-hA)S"d3)S$3s2s|-ST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   L2 5M M0M M!2	L?>L?	MM	M	M0M	M0!	M-	*M0,M-	-M00M9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   )irT   r   r   r   r            )r   exponentoverflow)r6   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_exponentsE  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              | j                  d       y )NrX   gư>r   rZ   )r[   rA   r6   r   )r   rb   s     r   test_boolcontextzComplexTest.test_boolcontexta  sX    s 	GAOOGFHtOVX_EF	GGC--.r   c                 X    | j                  t        dd      j                         d       y )Ng333333@g#@y333333@#)rM   r6   	conjugater   s    r   test_conjugatezComplexTest.test_conjugateg  s"    c*446Ar   c           	      ,     fd} |t               dd        |t        d      dd        |t        d      dd        |t        d      dd        |t        d      dd        |t        t        d            dd        |t        t        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        dd      dd        |t        t        d      d      dd        |t        t        d      d      dd        |t        dd      dd        |t        dd      dd        |t        dd      dd        |t        dt        d            dd        j                  t        d      5  t        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        |t        d      dd        |t        d      dd        |t        d      dd        |t        dd      dd        |t        dd      dd       dD ]1  }dD ]*  } |t        ||      ||        |t        ||      ||       , 3 t        dd      } j                  t        |      |       t        |      } j                  ||        j                  t        |      t               ~~ j                  t        dt         i         j                  t        dt         d         j                  t        dt         d	did        j                  t        dt         dd        j                  t        dt         dd	di        j                  t        dt         dd        j                  t        t         t        d              j                  t        t         t        d	              j                  t        t         t        d               j                  t        t         t        d      t                       j                  t        t         t        d      t                       j                  t        t         t        d	      t                       j                  t        t         t        d       t                       G d dt               G fd d!      } j                  t          |               |t        t        d            dd        |t        t        d      d      dd        |t        dt        d            dd        j                  t        t         t        d"              j                  t        t         t        d"      d        j                  t        t         dt        d"              j                  t        t         t        d               j                  t        t         t        d       d        j                  t        t         dt        d               |t        t        d"            d#d        |t        t        d"      d      d#d        |t        dt        d"            dd#        j                  t        t         t        dd$z                j                  t        t         t        dd$z        d        j                  t        t         dt        dd$z                j                  t        t         t        d               j                  t        t         t        d       d        j                  t        t         dt        d               G d% d&      } j                  t        t          |               j                  t        t          |       d        j                  t        t         d |               G d' d(t               } G d) d*t               }	 G d+ d,t               }
 |t         |d-            dd#        j                  t              5   |t         |	d-            dd.       d d d         j                  t        t          |
d-             y # 1 sw Y   xY w# 1 sw Y   8xY w)/Nc                     j                  t        |       t               j                  | j                  |       j                  | j
                  |       y r   rw   typer6   rK   r:   r;   rP   rC   rD   r   s      r   r   z+ComplexTest.test_constructor.<locals>.checkk  =    MM$q'7+))!&&!4))!&&!4r   r   r   g      $@      @y      @        y      @      ?r   r   r   r   y              @r   z3second argument must be a number, not 'WithComplex'g      )r:   y      @      ?      ?)r;   r   )r         r          z7first argument must be a string or a number, not 'dict'z;first argument must be a string or a number, not 'NoneType'r   z*can't take second arg if first is a string1z,second argument must be a number, not 'dict'zsecond arg can't be a stringc                       e Zd Zy)-ComplexTest.test_constructor.<locals>.EvilExcNr,   r#   r   r   EvilExcr     s    r   r   c                       e Zd Z fdZy)1ComplexTest.test_constructor.<locals>.evilcomplexc                     r   r#   )r   r   s    r   r1   z=ComplexTest.test_constructor.<locals>.evilcomplex.__complex__  s    r   N)r    r!   r"   r1   )r   s   r   evilcomplexr     s    r   r   *   g      E@i  c                       e Zd Zd Zy)+ComplexTest.test_constructor.<locals>.MyIntc                      y)Nr   r#   r   s    r   __int__z3ComplexTest.test_constructor.<locals>.MyInt.__int__  s    r   N)r    r!   r"   r   r#   r   r   MyIntr     s    r   r   c                       e Zd ZdZd Zy).ComplexTest.test_constructor.<locals>.complex0z:Test usage of __complex__() when inheriting from 'complex'c                      y)Ny              E@r#   r   s    r   r1   z:ComplexTest.test_constructor.<locals>.complex0.__complex__  s    r   Nr    r!   r"   __doc__r1   r#   r   r   complex0r     s
    Lr   r   c                       e Zd ZdZddZd Zy).ComplexTest.test_constructor.<locals>.complex1z3Test usage of __complex__() with a __new__() methodc                 4    t         j                  | d|z        S )Nr   )r6   __new__r   s     r   r   z6ComplexTest.test_constructor.<locals>.complex1.__new__  s    tQuW55r   c                     | S r   r#   r   s    r   r1   z:ComplexTest.test_constructor.<locals>.complex1.__complex__  s    r   N)r   )r    r!   r"   r   r   r1   r#   r   r   complex1r     s    E6r   r   c                       e Zd ZdZd Zy).ComplexTest.test_constructor.<locals>.complex2z`Make sure that __complex__() calls fail if anything other than a
            complex is returnedc                      y r   r#   r   s    r   r1   z:ComplexTest.test_constructor.<locals>.complex2.__complex__  s    r   Nr   r#   r   r   complex2r     s    #r   r   rZ   rv   )r6   r+   r.   assertRaisesRegexr^   rw   r   r   r]   object	Exceptionr&   r   r   assertWarnsDeprecationWarning)r   r   rC   rD   r   c2r   r   r   r   r   r   s   `          @r   test_constructorzComplexTest.test_constructorj  sB   	5
 	gi#s#gbk4%gdmT3'ggc*gi $,goi014=gk),-tS9ganc4(gaT*gaT*gc2T*gdBt,gc4 #t,gdC $,ggq!4-gog.2D#>gk'*A.c:geQd+gb$d+ga!3-ga12C>##IEG 	-A{7+,	- 	gc5!5#.ggr"D#.geR #t,gb'"C.gb% %-g4 $,g7#T3/g9%tS1g3c*g4c*D#6gd%tS1  	+A +gamQ*gamQ*+	+
 D#gaj!$QQd2h0ryER	 	yIT	 	yEaUA	 	y8S!	 	y:Q1	 	y.Q	 	)Wk#.>?)Wk!n=)Wk$.?@)Wk'.BFHM)Wk#.>I)Wk!nfhG)Wk$.?J	i 		 	 	'7KM:gio&c2gios+T37gc9T?+S$7)Wim<)WimSA)Wc9R=A)Wio>)WiosC)Wc9T?Cgim$dC0gimS)45gc9R=)35-)AtG2DE-)AtG2DcJ-#yD7IJ)Wio>)WiosC)Wc9T?C	 	 	)Weg6)Wegs;)Wc57;	w 	
	w 		w 	 	ghrl#S$/01 	3'(2,'c2	3)Whrl;g	- 	-b	3 	3s   'c=9d
=d
dc                 R   d}| j                  |j                         |       | j                  t        |j                               t               t	        d      }| j                  |j                         d       | j                  t        |j                               t               y )Ny      @      @)r   r1   r   r6   r+   )r   rP   s     r   test___complex__zComplexTest.test___complex__  ss    !,ammo.8F#&1ammo.8r   c           	         ddt         t          t        fD ]  }ddt         t          t        fD ]  }| j                  ||      5  t        ||      }| j	                  |j
                  |       | j	                  |j                  |       t        ||      }| j                  t        |      t               | j	                  |j
                  |       | j	                  |j                  |       t        t        ||            }| j                  t        |      t               | j	                  |j
                  |       | j	                  |j                  |       t        t        ||            }| j                  t        |      t               | j	                  |j
                  |       | j	                  |j                  |       d d d          y # 1 sw Y   xY w)Nr   r   )rC   rD   )
r   ra   r   r6   rK   r:   r;   r+   rw   r   )r   rC   rD   rP   s       r    test_constructor_special_numbersz,ComplexTest.test_constructor_special_numbers  sr   dC#s* 	=A$cT3. =\\A\+ =1A11!&&!<11!&&!<'1-AMM$q'?;11!&&!<11!&&!<1 56AMM$q'7311!&&!<11!&&!<'16AMM$q'?;11!&&!<11!&&!<= ==	== =s   F GGc                 8     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        |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        |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        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        t         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        t         d.        j                  t        t         d/        j                  t        t         d0        j                  t        t         d1        j                  t        t         d2        j                  t        t         d3        j                  t	        t        d4            t                 j                  t        d5      d6        j                  t        t         d7       y )8Nc                     j                  t        |       t               j                  | j                  |       j                  | j
                  |       y r   r   r   s      r   r   z7ComplexTest.test_constructor_from_string.<locals>.check  r   r   r   r   r   1jz-1r   z+1z1+2jrv   z(1+2j)z(1.5+4.25j)r   r   z4.25+1Jz ( +4.25-6J )g      z ( +4.25-J )z ( +4.25+j )Jz( j )z+Jz( -j)z1-1j1Jz1e-500z-1e-500jr   z1e-500+1e-500jz-1e-500+1e-500jz1e-500-1e-500jz-1e-500-1e-500jz1+1j j  z3 9z1+z1+1j+1jz--z(1+2jz1+2j)z1+(2j)z	(1+2j)123rC   z1j+21e1ejz1e++1ejz)1+2j(z1..1jz1.11.1jz1e1.1j  11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111u    ( 1+1j ) r   u   こんにちは)r6   r]   r   rw   r   r   )r   r   s   ` r   test_constructor_from_stringz(ComplexTest.test_constructor_from_string  s)   	5
 	gclC%gdmS#&gdmT3'gdmS#&gfosC(ghc*gm$c40gi $,go&d3gn%tT2gn%tS1gclC%ggS)gdmS#&ggT*gfosD)gdmS#&ghc*gj!3-g&'c2g'($4g&'d3g'($5 	*gy9*gr2*gt4*gv6*gt4*gy9*gt4*gw7*gw7*gx8*g{;*gs3*gv6*gw7*gy9*gx8*gw7*gy9*gx8 	d77+,g6!CDdK 	*g/OPr   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   r6   r:   r;   r   s    r   *test_constructor_negative_nans_from_stringz6ComplexTest.test_constructor_negative_nans_from_stringX  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r   r#   .0chlits     r   	<genexpr>z/ComplexTest.test_underscores.<locals>.<genexpr>a       4RrSy4   xXoObB_r  )0_709_99c              3   &   K   | ]  }|v  
 y wr   r#   r  s     r   r  z/ComplexTest.test_underscores.<locals>.<genexpr>g  r  r  )	r   anyr   r6   evalreplacer   r]   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 | j	                  t        d      d       y )Nr      r         @r   y    >A      r   )r[   r   hashr6   assertNotEqual)r   rC   s     r   	test_hashzComplexTest.test_hashj  su    sB 	<AT!Wd71a=&9:HAT!Wd71b>&:;	<
 	D.3r   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      @r   r   )r[   r6   r9   r:   r;   r@   )r   rC   rD   numsnums        r   test_abszComplexTest.test_absr  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 r   reprr   vexpectedtest_fns      r   testz'ComplexTest.test_repr_str.<locals>.testx      DGX&CFH%r         ?      @z(1+6j)y      ?      z(1-6j)y             z(-1+-0j))r9  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   r+  r6   r   ra   r5  r   r:  s     r   test_repr_strzComplexTest.test_repr_strw  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 r   r4  r6  s      r   r:  z5ComplexTest.test_negative_zero_repr_str.<locals>.test  r;  r   r   r   r  r   z(-0+1j)r   z-1jz(-0-1j)0jz-0jz(-0+0j)z(-0-0j))r   r6   r?  s     r   test_negative_zero_repr_strz'ComplexTest.test_negative_zero_repr_str  s    &*&6&6 	& 	WR_%WS"	*WR&WS#	*WR_%WR&WS"	*WS#	*r   c                     | j                  dd       | j                  t        dd      d       | j                  t        t        dd            t               y )Nr<  r   rU   )r   r+   rw   r   r6   r   s    r   test_poszComplexTest.test_pos  sI    $'/!Q//6dOAq112G<r   c                 (    | j                  dd       y )Ny            )r   r   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 )Ny      ?       @)r   rv   y      ?       )r   g       y               @)r   rv                 r   r   r   )r   __getnewargs__r6   r   r   s    r   test_getnewargszComplexTest.test_getnewargs  s    $..0*=$..0+>",,.
;#--/=C779C:Fa779C:Fr   c                 ~    d\  }}| j                  |j                  d       | j                  |j                  d       y )N)r   rJ  r   r   )rK   r;   )r   z1z2s      r   test_plus_minus_0jzComplexTest.test_plus_minus_0j  s5     B%%bggs3%%bggt4r   c                 j   d}d}d}| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t                y )NrJ  y             y             r   g      )rK   r:   r;   r   )r   z0rN  rO  s       r   test_negated_imaginary_literalz*ComplexTest.test_negated_imaginary_literal  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   r6   r   r   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    rW   g(0?go!	@gd~QJr	   r
   )	r   ra   r6   r5  rK   r:   r;   r\   r$  )r   valsr7  rC   rD   rP   	roundtripr	   r
   r=  r>  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)  2r   rv   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-20jr   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   rI   r   r6   r]   r   
__format__ra   r   )r   rP   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"   r9   rF   rK   rM   rR   rg   rk   rp   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   requires_IEEE_754r  r  r  r&  r,  r1  r@  rD  rF  rH  rL  rP  rS  rV  rZ  rh  r#   r   r   r3   r3   ,   sZ   @
,$.1
#+4


58;"===
67AFE8BP<d9 = =(<Q|G
<4R
/8 + +=
)G 5 5 5 5 I I
 D D6wIr   r3   __main__)r7   r   r:  r   test.test_grammarr   r   r   mathr   r   r_   r\   r   ra   ri   r   r&   r6   r+   r.   r8   r3   r    mainr#   r   r   <module>rn     s     
 <    ElEl  	g 	 wI(## wIt zHMMO r   