§
    ƒÛ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	 d dl
Z
d dlZd„ Zd„ Zd„ Zd	„ Zd
„ Z G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Úcompile_isolated)ÚTypingError)Únjit)Útypesc                 ó*   — t          j        | ¦  «        S ©N)r   Úint32©Úxs    úN/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_casting.pyÚfloat_to_intr   
   s   € ÝŒ;�q‰>Œ>Ðó    c                 ó0   — t          j        | ¦  «        dz  S )Né   )r   Úfloat64r
   s    r   Úint_to_floatr      s   € ÝŒ=˜ÑÔ˜aÑÐr   c                 ó*   — t          j        | ¦  «        S r   )r   Úuint32r
   s    r   Úfloat_to_unsignedr      s   € ÝŒ<˜‰?Œ?Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Ú
complex128r
   s    r   Úfloat_to_complexr      s   € ÝÔ˜AÑÔÐr   c                  óR   — t          j        t          j        d¦  «        ¦  «         d S )N)é   )Únpr	   Úzeros© r   r   Únumpy_scalar_cast_errorr      s    € Ý„H�RŒX�d‰^Œ^ÑÔÐÐÐr   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestCastingc                 óü  — t           }t          |t          j        g¦  «        }|j        }|                      |j        j        t          j        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t          d¦  «        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t          d¦  «        ¦  «         d S )Nçš™™™™™(@gš™™™™™(À)
r   r   r   Úfloat32Úentry_pointÚassertEqualÚ	signatureÚreturn_typer	   Úint©ÚselfÚpyfuncÚcrÚcfuncs       r   Útest_float_to_intzTestCasting.test_float_to_int   sØ   € ÝˆÝ˜f¥u¤} oÑ6Ô6ˆØ”ˆà×Ò˜œÔ1µ5´;Ñ?Ô?Ð?Ø×Ò˜˜˜t™œ f f¨T¡l¤lÑ3Ô3Ð3Ø×Ò˜˜˜t™œ¥c¨$¡i¤iÑ0Ô0Ð0Ø×Ò˜˜˜u™œ v v¨e¡}¤}Ñ5Ô5Ð5Ø×Ò˜˜˜u™œ¥s¨5¡z¤zÑ2Ô2Ð2Ð2Ð2r   c                 ó:  — t           }t          |t          j        g¦  «        }|j        }|                      |j        j        t          j        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        d¦  «         d S )NiA  g     d@)	r   r   r   Úint64r$   r%   r&   r'   r   r)   s       r   Útest_int_to_floatzTestCasting.test_int_to_float)   sˆ   € ÝˆÝ˜f¥u¤{ mÑ4Ô4ˆØ”ˆà×Ò˜œÔ1µ5´=ÑAÔAÐAØ×Ò˜˜˜s™œ V V¨C¡[¤[Ñ1Ô1Ð1Ø×Ò˜˜˜s™œ XÑ.Ô.Ð.Ð.Ð.r   c           
      ó’  — t           }t          |t          j        g¦  «        }|j        }|                      |j        j        t          j        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t          j
        dt          j        dd¦  «        ¦  «        d         ¦  «         d S )Ng®Gáz®	@ÚIÚié   r   )r   r   r   r#   r$   r%   r&   r'   r   ÚstructÚunpackÚpackr)   s       r   Útest_float_to_unsignedz"TestCasting.test_float_to_unsigned2   sÅ   € Ý"ˆÝ˜f¥u¤} oÑ6Ô6ˆØ”ˆà×Ò˜œÔ1µ5´<Ñ@Ô@Ð@Ø×Ò˜˜˜t™œ f f¨T¡l¤lÑ3Ô3Ð3Ø×Ò˜˜˜t™œ¥f¤m°C½¼ÀSØFGñ:Iô :Iñ 'Jô 'JØJKô'Mñ 	Nô 	Nð 	Nð 	Nð 	Nr   c                 ó:  — t           }t          |t          j        g¦  «        }|j        }|                      |j        j        t          j        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        d¦  «         d S )Ng®Gáz®	Ày®Gáz®	À        )	r   r   r   r   r$   r%   r&   r'   r   r)   s       r   Útest_float_to_complexz!TestCasting.test_float_to_complex<   s‰   € Ý!ˆÝ˜f¥u¤} oÑ6Ô6ˆØ”ˆØ×Ò˜œÔ1µ5Ô3CÑDÔDÐDØ×Ò˜˜˜u™œ v v¨e¡}¤}Ñ5Ô5Ð5Ø×Ò˜˜˜u™œ zÑ2Ô2Ð2Ð2Ð2r   c                 óp  ‡— t          d¦  «        d„ ¦   «         Š‰                     ¦   «          t          d¦  «        ˆfd„¦   «         }t          j        dgt          j        ¬¦  «        }|                       ||¦  «        |d         ¦  «         |                      t          ‰j        ¦  «        d¦  «         d	S )
z<Make sure this compiles.

        Cast C to A array
        z	f8(f8[:])c                 ó   — | d         S )Nr   r   r
   s    r   Úinnerz.TestCasting.test_array_to_array.<locals>.innerI   s   € à�Q”4ˆKr   zf8(f8[::1])c                 ó   •—  ‰| ¦  «        S r   r   )r   r>   s    €r   Údriverz/TestCasting.test_array_to_array.<locals>.driverO   s   ø€ à�5˜‘8”8ˆOr   iÒ  ©Údtyper   é   N)r   Údisable_compiler   Úarrayr   r%   ÚlenÚ	overloads)r*   r@   r   r>   s      @r   Útest_array_to_arrayzTestCasting.test_array_to_arrayD   sÉ   ø€ õ
 
ˆkÑ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×ÒÑÔÐå	ˆmÑ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	õ ŒH�d�V¥2¤:Ð.Ñ.Ô.ˆØ×Ò˜˜ ™œ A a¤DÑ)Ô)Ð)Ø×Ò�˜Uœ_Ñ-Ô-¨qÑ1Ô1Ð1Ð1Ð1r   c                 óÌ  — t           d„ ¦   «         }t          j        dft          j        dft          j        dft          j        dft          j        dft          j        dft          j        t          j        dd¦  «        ft          j	        t          j	        d¦  «        fd	g	}|D ]@\  }}t          j
        ||¬
¦  «        }|                       ||¦  «        |d         ¦  «         ŒAd S )Nc                 ó6   — | j                              | ¦  «        S r   )rB   Útyper
   s    r   r>   z-TestCasting.test_0darrayT_to_T.<locals>.innerX   s   € à”7—<’< ‘?”?Ð"r   Tr"   é   y      @       @r5   Úhz
2016-01-01)z<U3ÚABCrA   r   )r   r   Úbool_r#   r   r0   Ú	complex64r   Útimedelta64Ú
datetime64rE   r%   )r*   r>   ÚinputsÚTÚinpr   s         r   Útest_0darrayT_to_TzTestCasting.test_0darrayT_to_TW   sä   € Ý	ð	#ð 	#ñ 
Œð	#õ ŒX�tÐÝŒZ˜ÐÝŒZ˜ÐÝŒX�rˆNÝŒ\˜4Ð ÝŒ]˜DÐ!ÝŒ^�Rœ^¨A¨sÑ3Ô3Ð4ÝŒ]�BœM¨,Ñ7Ô7Ð8Øð

ˆð ð 	.ð 	.‰HˆQ�Ý”˜ AÐ&Ñ&Ô&ˆAØ×Ò˜U˜U 1™XœX q¨¤uÑ-Ô-Ð-Ð-ð	.ð 	.r   c                 óä   — |                       t          ¦  «        5 }t          t          d¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         dS )zv
        Ensure that a TypingError exception is raised if
        user tries to convert numpy array to scalar
        r   Nz?Casting array(float64, 1d, C) to int32 directly is unsupported.)ÚassertRaisesr   r   r   ÚassertInÚstrÚ	exception)r*   Úraisess     r   Útest_array_to_scalarz TestCasting.test_array_to_scalarl   s®   € ð ×Ò�{Ñ+Ô+ð 	:¨vÝÕ4°bÑ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	�ŠÐWÝ˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-s   ›=½AÁAc                 ó>  — t          j        t           j        ¦  «        }t          j        t           j        ¦  «        } ||¦  «        }t	          |¦  «        d„ ¦   «         }|                       |d¦  «        d¦  «         |                       |d¦  «        ¦  «         dS )z�
        Test error due mishandling of Optional to Optional casting

        Related issue: https://github.com/numba/numba/issues/1718
        c                 ó   — | S r   r   )Úas    r   Úfooz2TestCasting.test_optional_to_optional.<locals>.fooƒ   s   € àˆHr   r   N)r   ÚOptionalÚintpr   r   r%   ÚassertIsNone)r*   Úopt_intÚopt_fltÚsigra   s        r   Útest_optional_to_optionalz%TestCasting.test_optional_to_optionalx   s–   € õ ”.¥¤Ñ,Ô,ˆÝ”.¥¤Ñ/Ô/ˆØˆg�gÑÔˆå	ˆc‰Œð	ð 	ñ 
Œð	ð 	×Ò˜˜˜Q™œ Ñ#Ô#Ð#Ø×Ò˜#˜#˜d™)œ)Ñ$Ô$Ð$Ð$Ð$r   N)Ú__name__Ú
__module__Ú__qualname__r.   r1   r9   r;   rH   rV   r]   rh   r   r   r   r    r       s�   € € € € € ð	3ð 	3ð 	3ð/ð /ð /ðNð Nð Nð3ð 3ð 3ð2ð 2ð 2ð&.ð .ð .ð*
-ð 
-ð 
-ð%ð %ð %ð %ð %r   r    Ú__main__)Únumpyr   Únumba.core.compilerr   Únumba.core.errorsr   Únumbar   Ú
numba.corer   r6   Úunittestr   r   r   r   r   ÚTestCaser    ri   Úmainr   r   r   ú<module>ru      s  ðØ Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€ðð ð ð ð  ð  ðð ð ðð ð ðð ð ðk%ð k%ð k%ð k%ð k%�(Ô#ñ k%ô k%ð k%ð\ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   