§
    ƒÛg¡  ã                   óì   — d dl Zd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlZd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de	¦  «        Z G d„ de	¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Úcompile_isolated)Újit)Útypes)ÚTestCaseÚtagc                 ó    — t          | ¦  «        S ©N)Úbool©Úas    úQ/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_numberctor.pyÚdoboolr      s   € Ý�‰7Œ7€Nó    c                 ó    — t          | ¦  «        S r	   )Úintr   s    r   Údointr      s   € Ýˆq‰6Œ6€Mr   c                 ó    — t          | ¦  «        S r	   )Úfloatr   s    r   Údofloatr      s   € Ý�‰8Œ8€Or   c                 ó    — t          | ¦  «        S r	   ©Úcomplexr   s    r   Ú	docomplexr      s   € Ý�1‰:Œ:Ðr   c                 ó"   — t          | |¦  «        S r	   r   )r   Úbs     r   Ú
docomplex2r      s   € Ý�1�a‰=Œ=Ðr   c                 óJ   — t          | ¦  «        }|j        dz  |j        dz  z   S ©Né   ©r   ÚrealÚimag)r   Úzs     r   Úcomplex_calcr$      s$   € Ý�‰
Œ
€AØŒ6�Q‰;˜œ 1™Ñ$Ð$r   c                 óL   — t          | |¦  «        }|j        dz  |j        dz  z   S r   r    )r   r   r#   s      r   Úcomplex_calc2r&   $   s&   € Ý��1‰Œ€AØŒ6�Q‰;˜œ 1™Ñ$Ð$r   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó   •—  ‰| ¦  «        S r	   © )r   Útps    €r   Úfzconverter.<locals>.f*   s   ø€ Øˆr�!‰uŒuˆr   r)   )r*   r+   s   ` r   Ú	converterr,   )   s!   ø€ ðð ð ð ð à€Hr   c               #   ó   K  — dD ]} | V — Œd S )N)Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64ÚintcÚuintcÚintpÚuintpÚfloat32Úfloat64Úbool_r)   ©Útp_names    r   Úreal_np_typesr?   /   s.   è è € ð3ð ð ˆð ˆˆˆˆð	ð r   c               #   ó   K  — dD ]} | V — Œd S )N)Ú	complex64Ú
complex128r)   r=   s    r   Úcomplex_np_typesrC   6   s*   è è € Ø.ð ð ˆØˆˆˆˆðð r   c                   óN   — e 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S )ÚTestScalarNumberCtorz*
    Test <number class>(some scalar)
    c                 ó,  — t           j        t           j        t           j        t           j        t           j        g}g d¢}t          ||¦  «        D ]E\  }}t          ||g¦  «        }|j        }|  	                     ||¦  «         ||¦  «        ¦  «         ŒFd S )N)é   r   éè  çffffff(@çffffff7@)
r   Úbooleanr0   r1   r:   r;   Úzipr   Úentry_pointÚassertPreciseEqual©ÚselfÚpyfuncÚx_typesÚx_valuesÚtyÚxÚcresÚcfuncs           r   Úcheck_int_constructorz*TestScalarNumberCtor.check_int_constructor@   s”   € åŒM�5œ;­¬µU´]ÅEÄMð
ˆð ,Ð+Ð+ˆå˜ (Ñ+Ô+ð 	9ð 	9‰EˆB�Ý# F¨R¨DÑ1Ô1ˆDØÔ$ˆEØ×#Ò# F F¨1¡I¤I¨u¨u°Q©x¬xÑ8Ô8Ð8Ð8ð	9ð 	9r   c                 ó:   — |                       t          ¦  «         d S r	   )rX   r   ©rP   s    r   Ú	test_boolzTestScalarNumberCtor.test_boolK   s   € Ø×"Ò"¥6Ñ*Ô*Ð*Ð*Ð*r   c                 ó:   — |                       t          ¦  «         d S r	   )rX   r   rZ   s    r   Útest_intzTestScalarNumberCtor.test_intN   s   € Ø×"Ò"¥5Ñ)Ô)Ð)Ð)Ð)r   c                 óH  — t           }t          j        t          j        t          j        t          j        g}g d¢}t          ||¦  «        D ]W\  }}t          ||g¦  «        }|j        }|  	                     ||¦  «         ||¦  «        |t          j        u rdnd¬¦  «         ŒXd S )N©rG   rH   rI   rJ   ÚsingleÚexact©Úprec)
r   r   r0   r1   r:   r;   rL   r   rM   rN   rO   s           r   Ú
test_floatzTestScalarNumberCtor.test_floatQ   s¿   € Ýˆõ ŒK�œ¥e¤mµU´]ð
ˆð )Ð(Ð(ˆå˜ (Ñ+Ô+ð 	Cð 	C‰EˆB�Ý# F¨R¨DÑ1Ô1ˆDØÔ$ˆEØ×#Ò# F F¨1¡I¤I¨u¨u°Q©x¬xØ!#¥u¤}Ð!4Ð!4�X�X¸'ð $ñ Cô Cð Cð Cð	Cð 	Cr   c                 ó¶  — t           }t          j        t          j        t          j        t          j        t          j        t          j        g}g d¢}t          ||¦  «        D ]m\  }}t          ||g¦  «        }|j
        } ||¦  «        } ||¦  «        }	|                       ||¦  «         ||¦  «        |t          j        u rdnd¬¦  «         Œnt          }d}t          |t          j        g¦  «        }|j
        }|                       ||¦  «        d¦  «         t          |t          j        g¦  «        }|j
        }|                       ||¦  «        d¦  «         d S )N)rG   rH   rI   rJ   y      ø?      Ày      ð?      Àr`   ra   rb   ç     ð?ç      ð?)r   r   r0   r1   r:   r;   rA   rB   rL   r   rM   rN   r$   ÚassertGreater)
rP   rQ   rR   rS   rT   rU   rV   rW   ÚgotÚexpecteds
             r   Útest_complexz!TestScalarNumberCtor.test_complex_   s[  € Ýˆõ ŒK�œ¥e¤mµU´]ÝŒO�UÔ-ð
ˆð :Ð9Ð9ˆå˜ (Ñ+Ô+ð 	Cð 	C‰EˆB�Ý# F¨R¨DÑ1Ô1ˆDØÔ$ˆEØ�%˜‘(”(ˆCØ�v˜a‘y”yˆHØ×#Ò# F F¨1¡I¤I¨u¨u°Q©x¬xØ!#¥u¤}Ð!4Ð!4�X�X¸'ð $ñ Cô Cð Cð Cõ
 ˆØˆÝ ­¬¨Ñ8Ô8ˆØÔ ˆØ×Ò   a¡¤¨#Ñ.Ô.Ð.å ­¬¨Ñ8Ô8ˆØÔ ˆØ×Ò˜5˜5 ™8œ8 SÑ)Ô)Ð)Ð)Ð)r   c                 ó°  — t           }t          j        t          j        t          j        t          j        g}g d¢}d„ |D ¦   «         }t          |||¦  «        D ][\  }}}t          |||g¦  «        }|j        }	|  	                     |||¦  «         |	||¦  «        |t          j        u rdnd¬¦  «         Œ\t          }d}t          |t          j        t          j        g¦  «        }|j        }	|  	                     |	||¦  «        d¦  «         t          |t          j        t          j        g¦  «        }|j        }	|                       |	||¦  «        d¦  «         d S )Nr_   c                 ó   — g | ]}|d z
  ‘ŒS )é   r)   )Ú.0rU   s     r   ú
<listcomp>z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>ƒ   s   € Ð,Ð,Ð,˜a�A˜‘EÐ,Ð,Ð,r   r`   ra   rb   rf   g       @)r   r   r0   r1   r:   r;   rL   r   rM   rN   r&   rh   )
rP   rQ   rR   rS   Úy_valuesrT   rU   ÚyrV   rW   s
             r   Útest_complex2z"TestScalarNumberCtor.test_complex2|   sb  € Ýˆõ ŒK�œ¥e¤mµU´]ð
ˆð )Ð(Ð(ˆØ,Ð, 8Ð,Ñ,Ô,ˆå˜G X¨xÑ8Ô8ð 	Cð 	C‰HˆB��1Ý# F¨R°¨HÑ5Ô5ˆDØÔ$ˆEØ×#Ò# F F¨1¨a¡L¤L°%°%¸¸1±+´+Ø!#¥u¤}Ð!4Ð!4�X�X¸'ð $ñ Cô Cð Cð Cõ
 ˆØˆÝ ­¬½¼Ð(FÑGÔGˆØÔ ˆØ×Ò   a¨¡¤¨SÑ1Ô1Ð1å ­¬½¼Ð(FÑGÔGˆØÔ ˆØ×Ò˜5˜5  A™;œ;¨Ñ,Ô,Ð,Ð,Ð,r   c           	      ó„  ‡— t          |¦  «        } t          d¬¦  «        |¦  «        }t          ‰t          j        ¦  «        rˆfd„}n‰}t          j        ‰¦  «        }|D ]]}|j        dk    rt          |t          ¦  «        r|dk     rŒ) ||¦  «        }	 ||¦  «        }
|  	                    |
|	d‰›d|›�¬¦  «         Œ^d S )	NT©Únopythonc                 ó>   •—  ‰t          j        | ¦  «        ¦  «        S r	   )Únpr1   )rU   Únp_types    €r   ú<lambda>z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>Ÿ   s   ø€  W W­R¬X°a©[¬[Ñ%9Ô%9€ r   Úug        z	for type z
 with arg )Úmsg)
r,   r   Ú
issubclassrx   ÚintegerÚdtypeÚkindÚ
isinstancer   rN   )rP   r*   ry   ÚvaluesrQ   rW   Únp_converterr   Úvalrj   ri   s     `        r   Úcheck_type_converterz)TestScalarNumberCtor.check_type_converter—   sþ   ø€ Ý˜2‘”ˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆÝ�g�rœzÑ*Ô*ð 	#ð
 :Ð9Ð9Ð9ˆLˆLà"ˆLÝ”˜Ñ!Ô!ˆØð 	Tð 	TˆCØŒz˜SÒ Ð ¥Z°µUÑ%;Ô%;Ð ÀÀcÂ	À	ð Ø#�| CÑ(Ô(ˆHØ�%˜‘*”*ˆCØ×#Ò# C¨¨ØELÀWÀWÈcÈcÐ(Rð $ñ Tô Tð Tð Tð	Tð 	Tr   c                 óX  — g d¢}t          ¦   «         D ]9}t          t          |¦  «        } ||¦  «        }|                      |||¦  «         Œ:|                     d¦  «         t          ¦   «         D ]9}t          t          |¦  «        } ||¦  «        }|                      |||¦  «         Œ:d S )N)	r   rG   éÿÿÿÿi£† l    åa$i]yþÿlýÿÿÿ åa$g      ø?g      Ày      ø?      @)r?   Úgetattrrx   r…   ÚappendrC   )rP   Ú
tp_factoryr‚   r>   ry   r*   s         r   Úcheck_number_typesz'TestScalarNumberCtor.check_number_types­   sÉ   € ðð ð ˆå$‘”ð 	;ð 	;ˆGÝ�b 'Ñ*Ô*ˆGØ�˜GÑ$Ô$ˆBØ×%Ò% b¨'°6Ñ:Ô:Ð:Ð:Ø�Š�fÑÔÐÝ'Ñ)Ô)ð 	;ð 	;ˆGÝ�b 'Ñ*Ô*ˆGØ�˜GÑ$Ô$ˆBØ×%Ò% b¨'°6Ñ:Ô:Ð:Ð:ð	;ð 	;r   c                 ó6   — d„ }|                       |¦  «         dS )z>
        Test explicit casting to Numba number types.
        c                 ó,   — t          t          | ¦  «        S r	   )rˆ   r   r=   s    r   rŠ   z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factory¾   s   € Ý�5 'Ñ*Ô*Ð*r   N©r‹   ©rP   rŠ   s     r   Útest_numba_typesz%TestScalarNumberCtor.test_numba_typesº   s+   € ð	+ð 	+ð 	+à×Ò 
Ñ+Ô+Ð+Ð+Ð+r   c                 ó6   — d„ }|                       |¦  «         dS )z>
        Test explicit casting to Numpy number types.
        c                 ó,   — t          t          | ¦  «        S r	   )rˆ   rx   r=   s    r   rŠ   z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factoryÆ   s   € Ý�2˜wÑ'Ô'Ð'r   NrŽ   r�   s     r   Útest_numpy_typesz%TestScalarNumberCtor.test_numpy_typesÂ   s+   € ð	(ð 	(ð 	(à×Ò 
Ñ+Ô+Ð+Ð+Ð+r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rX   r[   r]   rd   rk   rs   r…   r‹   r�   r“   r)   r   r   rE   rE   ;   sº   € € € € € ðð ð	9ð 	9ð 	9ð+ð +ð +ð*ð *ð *ðCð Cð Cð*ð *ð *ð:-ð -ð -ð6Tð Tð Tð,;ð ;ð ;ð,ð ,ð ,ð,ð ,ð ,ð ,ð ,r   rE   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestArrayNumberCtorz,
    Test <number class>(some sequence)
    c                 ó¸   — t          |¦  «        } t          d¬¦  «        |¦  «        }|D ].} ||¦  «        } ||¦  «        }|                      ||¦  «         Œ/d S )NTru   )r,   r   rN   )rP   ry   r‚   rQ   rW   r„   rj   ri   s           r   Úcheck_type_constructorz*TestArrayNumberCtor.check_type_constructorÐ   su   € Ý˜7Ñ#Ô#ˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆØð 	3ð 	3ˆCØ�w˜s‘|”|ˆHØ�%˜‘*”*ˆCØ×#Ò# C¨Ñ2Ô2Ð2Ð2ð	3ð 	3r   c                 ó  — ddddgdg}t          ¦   «         D ]-}t          t          |¦  «        }|                      ||¦  «         Œ.dddgg}t	          ¦   «         D ]-}t          t          |¦  «        }|                      ||¦  «         Œ.d S )N©rg   ç      @)rG   rž   rg   rž   r)   )y              ð?rž   ©r?   rˆ   rx   r›   rC   ©rP   r‚   r>   ry   s       r   Útest_1dzTestArrayNumberCtor.test_1dØ   s°   € àØØ�#ˆJØð	ˆõ %‘”ð 	9ð 	9ˆGÝ�b 'Ñ*Ô*ˆGØ×'Ò'¨°Ñ8Ô8Ð8Ð8àØ�#ˆJðˆõ (Ñ)Ô)ð 	9ð 	9ˆGÝ�b 'Ñ*Ô*ˆGØ×'Ò'¨°Ñ8Ô8Ð8Ð8ð	9ð 	9r   c                 ó  — dddgddgddgfddgg}t          ¦   «         D ]-}t          t          |¦  «        }|                      ||¦  «         Œ.t	          ¦   «         D ]-}t          t          |¦  «        }|                      ||¦  «         Œ.d S )	N)r�   )ç      @é   r�   )r£   ç      @rg   rž   r£   r¥   r)   rŸ   r    s       r   Útest_2dzTestArrayNumberCtor.test_2dê   s¯   € à"Ø˜Ð$Ø�3ˆZ˜#˜s˜Ð$Ø�ˆHð	ˆõ %‘”ð 	9ð 	9ˆGÝ�b 'Ñ*Ô*ˆGØ×'Ò'¨°Ñ8Ô8Ð8Ð8Ý'Ñ)Ô)ð 	9ð 	9ˆGÝ�b 'Ñ*Ô*ˆGØ×'Ò'¨°Ñ8Ô8Ð8Ð8ð	9ð 	9r   N)r”   r•   r–   r—   r›   r¡   r¦   r)   r   r   r™   r™   Ë   sK   € € € € € ðð ð3ð 3ð 3ð9ð 9ð 9ð$9ð 9ð 9ð 9ð 9r   r™   Ú__main__)Únumpyrx   Únumba.core.compilerr   Únumbar   Ú
numba.corer   Únumba.tests.supportr   r   Úunittestr   r   r   r   r   r$   r&   r,   r?   rC   rE   r™   r”   Úmainr)   r   r   ú<module>r¯      s‚  ðØ Ð Ð Ð à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø €€€ðð ð ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ð
%ð %ð %ð
ð ð ðð ð ðð ð ð
M,ð M,ð M,ð M,ð M,˜8ñ M,ô M,ð M,ð`+9ð +9ð +9ð +9ð +9˜(ñ +9ô +9ð +9ð\ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   