B
      ›\¼ˆ  ã               @   sH   d Z ddlmZmZmZ ddlZdadd„ Zdd„ Z	dd	„ Z
d
d„ ZdS )aQ  This file contains information on how to translate different ufuncs
into numba. It is a database of different ufuncs and how each of its
loops maps to a function that implements the inner kernel of that ufunc
(the inner kernel being the per-element function).

Use the function get_ufunc_info to get the information related to the
ufunc
é    )Úprint_functionÚdivisionÚabsolute_importNc               C   s   t d kri a tt ƒ d S )N)Ú	_ufunc_dbÚ_fill_ufunc_db© r   r   ú5lib/python3.7/site-packages/numba/targets/ufunc_db.pyÚ_lazy_init_db   s    r	   c               C   s   t ƒ  t ¡ S )z+obtain a list of supported ufuncs in the db)r	   r   Úkeysr   r   r   r   Ú
get_ufuncs   s    r   c             C   s   t ƒ  t|  S )aƒ  get the lowering information for the ufunc with key ufunc_key.

    The lowering information is a dictionary that maps from a numpy
    loop string (as given by the ufunc types attribute) to a function
    that handles code generation for a scalar version of the ufunc
    (that is, generates the "per element" operation").

    raises a KeyError if the ufunc is not in the ufunc_db
    )r	   r   )Z	ufunc_keyr   r   r   Úget_ufunc_info!   s    
r   c             C   sV  ddl m}m}m}m} ddlm} |j}|j|j	|j	|j	|j	|j	|j	|j	|j	|j	|j	|j
|j
|j|jdœ| tj< |j|j|j|j|j|j|j|j|j|j|j|j|j|j|jdœ| tj< |j|j|j|j|j|j|j|j|j|j|j|j|j|jdœ| tj< |j|j|j|j|j|j|j|j|j|j|j|j|j|j|jdœ| tj< |j|j|j|j|j|j|j|j|j|j|j|j|j|j|jdœ| tj < |j!|j"|j"|j"|j"|j"|j"|j"|j"|j"|j"|j#|j#|j$|j$dœ| tj%< tj&tj'kr(|j(|j)|j(|j)|j(|j)|j(|j)|j(|j)|j*|j*|j+|j+d	œ| tj&< |j,|j,|j,|j,|j,|j,|j,|j,|j,|j,|j*|j*|j+|j+d
œ| tj'< |j(|j)|j(|j)|j(|j)|j(|j)|j(|j)|j-|j-|j.|j.d	œ| tj/< |j0|j1|j0|j1|j0|j1|j0|j1|j0|j1|j2|j2dœ| tj3< |j4|j4|j4|j4|j4|j4|j4|j4|j4|j4|j5|j5dœ| tj6< |j7|j7dœ| tj8< |j9|j9dœ| tj:< |j;|j;|j;|j;|j;|j;|j;|j;|j;|j;|j<|j<|j=|j=d	œ| tj>< |j?|j?|j@|j@dœ| tjA< |jB|jB|jB|jB|jB|jB|jB|jB|jB|jB|jB|jB|jC|jCdœ| tjD< |jE|jE|jF|jFdœ| tjG< |jH|jH|jI|jIdœ| tjJ< |jK|jK|jL|jLdœ| tjM< |jN|jN|jO|jOdœ| tjP< |jQ|jQ|jR|jRdœ| tjS< |jT|jT|jU|jUdœ| tjV< |jW|jW|jX|jXdœ| tjY< |jZ|jZ|j[|j[dœ| tj\< |j]|j]|j]|j]|j]|j]|j]|j]|j]|j]|j^|j^|j_|j_dœ| tj`< |ja|ja|ja|ja|ja|ja|ja|ja|ja|ja|jb|jb|jc|jcdœ| tjd< |je|je|jf|jfdœ| tjg< |jh|jh|ji|jidœ| tjj< |dkr¤|jkn|jl}|jm|jm||dœ| tjn< |dkrÒ|jon|jp}|jq|jq||dœ| tjr< |js|js|jt|jtdœ| tju< |dkr|jvn|jw}	|jx|jx|	|	dœ| tjy< |jz|jzdœ| tj{< |j||j|dœ| tj}< |j~|j~|j|jdœ| tj€< |j|j|j‚|j‚dœ| tjƒ< |j„|j„|j…|j…dœ| tj†< |dkrÆ|j‡n|jˆ}
|j‰|j‰|
|
dœ| tjŠ< |j‹|j‹|jŒ|jŒdœ| tj< |dkr|jŽn|j}|j|j||dœ| tj‘< |j’|j’dœ| tj“< | tj“ | tj”< |j•|j•dœ| tj–< | tj– | tj—< |j˜|j˜dœ| tj™< |jš|jšdœ| tj›< |jœ|jœdœ| tj< |jž|jždœ| tjŸ< |j |j¡|j |j¡|j |j¡|j |j¡|j |j¡|j |j¢|j¢|j£|j£dœ| tj¤< |j¥|j¦|j¥|j¦|j¥|j¦|j¥|j¦|j¥|j¦|j¥|j§|j§|j¨|j¨dœ| tj©< |jª|j«|jª|j«|jª|j«|jª|j«|jª|j«|jª|j¬|j¬|j­|j­dœ| tj®< |j¯|j°|j¯|j°|j¯|j°|j¯|j°|j¯|j°|j¯|j±|j±|j²|j²dœ| tj³< |j´|j´|j´|j´|j´|j´|j´|j´|j´|j´|j´|jµ|jµ|j¶|j¶dœ| tj·< |j¸|j¸|j¸|j¸|j¸|j¸|j¸|j¸|j¸|j¸|j¸|j¹|j¹|jº|jºdœ| tj»< |j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j¼|j½|j½dœ| tj¾< |j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|j¿|jÀ|jÀdœ| tjÁ< |jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÂ|jÃ|jÃdœ| tjÄ< |jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÅ|jÆ|jÆdœ| tjÇ< |j¿|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÊ|jÊ|jË|jËdœ| tjÌ< |j¼|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÏ|jÏ|jÐ|jÐdœ| tjÑ< |j¿|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÈ|jÉ|jÒ|jÒ|jÓ|jÓdœ| tjÔ< |j¼|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÍ|jÎ|jÕ|jÕ|jÖ|jÖdœ| tj×< |jØ|jØ|jÙ|jÙdœ| tjÚ< |jÛ|jÛ|jÜ|jÜdœ| tjÝ< |jÞ|jÞ|jß|jßdœ| tjà< |já|jádœ| tjâ< |jã|jãdœ| tjä< |jå|jådœ| tjæ< |jç|jçdœ| tjè< |jé|jé|jé|jédœ| tjê< |j!|j!|j!|j!|j!|j!|j!|j!|j!|j!|j!dœ| tjë< |j|j|j|j|j|j|j|j|j|j|jdœ| tjì< |j|j|j|j|j|j|j|j|j|j|jdœ| tjí< |j|j|j|j|j|j|j|j|j|j|jdœ| tjî< |jï|jï|jï|jï|jï|jï|jï|jï|jï|jïdœ
| tjð< |jñ|jñ|jñ|jñ|jñ|jñ|jñ|jñ|jñ|jñdœ
| tjò< ddl mó} | tj  ôd|jõi¡ | tj  ôd|jöi¡ | tj  ôd|j÷i¡ | tj  ô|jø|jù|júdœ¡ | tj   ô|jû|jü|jýdœ¡ | tj%  ô|jþ|jþ|jÿ|jÿdœ¡ tj&tj'krœ| tj&  ô|j |j |jdœ¡ | tj'  ô|j |j |jdœ¡ | tj/  ô|j |j dœ¡ |jdkr| tj/  ôd |ji¡ | tj»  ô|j|jd!œ¡ | tj·  ô|j|jd!œ¡ | tj®  ô|j|jd!œ¡ | tj³  ô|j	|j
d!œ¡ | tj¤  ô|j|jd!œ¡ | tj©  ô|j|jd!œ¡ | tjÌ  ô|j|jd"œ¡ | tjÑ  ô|j|jd"œ¡ | tjÔ  ô|j|jd"œ¡ | tj×  ô|j|jd"œ¡ |jdkrR| tj3  ôd#|ji¡ d S )$Né   )ÚnumbersÚnpyfuncsÚmathimplÚ	cmathimplr   )Únumpy_support)z?->?zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Qzf->fzd->dzF->FzD->D)z?->?zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Qzf->fzd->dzF->fzD->d)zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Qzf->fzd->dzF->FzD->D)z??->?zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Qzff->fzdd->dzFF->FzDD->D)zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Qzff->fzdd->dzFF->FzDD->D)zbb->dzBB->dzhh->dzHH->dzii->dzII->dzll->dzLL->dzqq->dzQQ->dzff->fzdd->dzFF->FzDD->D)zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Qzff->fzdd->d)zff->fzdd->d)zf->fzd->dzF->FzD->D)r   é
   )zf->fzd->d)z??->?zbb->?zBB->?zhh->?zHH->?zii->?zII->?zll->?zLL->?zqq->?zQQ->?zff->?zdd->?zFF->?zDD->?)z?->?zb->?zB->?zh->?zH->?zi->?zI->?zl->?zL->?zq->?zQ->?zf->?zd->?zF->?zD->?)zf->?zd->?zF->?zD->?)zf->?zd->?)zfi->fzfl->fzdi->dzdl->d)z??->?zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Q)z?->?zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Q)
zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Q)Ú
npdatetimezm->m)zmm->mzMm->MzmM->M)zmm->mzMm->MzMM->m)zmq->mzmd->mzqm->mzdm->m)zmq->mzmd->mzmm->d)zmq->mzmd->m)r   é   zmm->q)zMM->?zmm->?)zMM->Mzmm->mzmm->m(  Ú r   r   r   r   Znumbar   ÚversionZint_invert_implZint_negate_implZreal_negate_implZcomplex_negate_implÚnpÚnegativeZint_abs_implZuint_abs_implZreal_abs_implZcomplex_abs_implZabsoluteZint_sign_implZreal_sign_implZnp_complex_sign_implZsignZint_or_implZint_add_implZreal_add_implZcomplex_add_implÚaddZint_xor_implZint_sub_implZreal_sub_implZcomplex_sub_implÚsubtractZint_and_implZint_mul_implZreal_mul_implZcomplex_mul_implZmultiplyZdivideZtrue_divideZnp_int_sdiv_implZnp_int_udiv_implZnp_real_div_implZnp_complex_div_implZnp_int_truediv_implZnp_real_floor_div_implZnp_complex_floor_div_implZfloor_divideZnp_int_srem_implZnp_int_urem_implZnp_real_mod_implZ	remainderZnp_int_fmod_implZnp_real_fmod_implZfmodZnp_real_logaddexp_implZ	logaddexpZnp_real_logaddexp2_implZ
logaddexp2Zint_power_implZreal_power_implZnp_complex_power_implZpowerZnp_real_rint_implZnp_complex_rint_implZrintZreal_conjugate_implZcomplex_conjugate_implÚ	conjugateZnp_real_exp_implZnp_complex_exp_implZexpZnp_real_exp2_implZnp_complex_exp2_implZexp2Znp_real_log_implZnp_complex_log_implÚlogZnp_real_log2_implZnp_complex_log2_implZlog2Znp_real_log10_implZnp_complex_log10_implZlog10Znp_real_expm1_implZnp_complex_expm1_implZexpm1Znp_real_log1p_implZnp_complex_log1p_implZlog1pZnp_real_sqrt_implZnp_complex_sqrt_implZsqrtZnp_int_square_implZnp_real_square_implZnp_complex_square_implZsquareZnp_int_reciprocal_implZnp_real_reciprocal_implZnp_complex_reciprocal_implZ
reciprocalZnp_real_sin_implZnp_complex_sin_implZsinZnp_real_cos_implZnp_complex_cos_implZcosÚtan_implZnp_complex_tan_implZnp_real_tan_implZtanZ	asin_implZnp_complex_asin_implZnp_real_asin_implZarcsinZnp_real_acos_implZ	acos_implZarccosZ	atan_implZnp_complex_atan_implZnp_real_atan_implZarctanZnp_real_atan2_implZarctan2Znp_real_hypot_implZhypotZnp_real_sinh_implZnp_complex_sinh_implZsinhZnp_real_cosh_implZnp_complex_cosh_implZcoshZnp_real_tanh_implZnp_complex_tanh_implZtanhZ
asinh_implZnp_complex_asinh_implZnp_real_asinh_implZarcsinhZnp_real_acosh_implZnp_complex_acosh_implZarccoshZ
atanh_implZnp_complex_atanh_implZnp_real_atanh_implZarctanhZradians_float_implZdeg2radZradiansZdegrees_float_implZrad2degZdegreesZnp_real_floor_implZfloorZnp_real_ceil_implZceilZnp_real_trunc_implZtruncZnp_real_fabs_implZfabsZint_ugt_implZint_sgt_implZreal_gt_implZnp_complex_gt_implZgreaterZint_uge_implZint_sge_implZreal_ge_implZnp_complex_ge_implZgreater_equalZint_ult_implZint_slt_implZreal_lt_implZnp_complex_lt_implZlessZint_ule_implZint_sle_implZreal_le_implZnp_complex_le_implZ
less_equalZint_ne_implZreal_ne_implZnp_complex_ne_implZ	not_equalZint_eq_implZreal_eq_implZnp_complex_eq_implZequalZnp_logical_and_implZnp_complex_logical_and_implZlogical_andZnp_logical_or_implZnp_complex_logical_or_implZ
logical_orZnp_logical_xor_implZnp_complex_logical_xor_implZlogical_xorZnp_logical_not_implZnp_complex_logical_not_implZlogical_notZnp_int_smax_implZnp_int_umax_implZnp_real_maximum_implZnp_complex_maximum_implZmaximumZnp_int_smin_implZnp_int_umin_implZnp_real_minimum_implZnp_complex_minimum_implZminimumZnp_real_fmax_implZnp_complex_fmax_implZfmaxZnp_real_fmin_implZnp_complex_fmin_implZfminZnp_real_isnan_implZnp_complex_isnan_implZisnanZnp_real_isinf_implZnp_complex_isinf_implZisinfZnp_real_isfinite_implZnp_complex_isfinite_implZisfiniteZnp_real_signbit_implZsignbitZnp_real_copysign_implZcopysignZnp_real_nextafter_implZ	nextafterZnp_real_spacing_implZspacingZnp_real_ldexp_implZldexpZbitwise_andZ
bitwise_orZbitwise_xorÚinvertZint_shl_implZ
left_shiftZint_shr_implZright_shiftr   ÚupdateZtimedelta_neg_implZtimedelta_abs_implZtimedelta_sign_implZtimedelta_add_implZdatetime_plus_timedeltaZtimedelta_plus_datetimeZtimedelta_sub_implZdatetime_minus_timedeltaZdatetime_minus_datetimeZtimedelta_times_numberZnumber_times_timedeltaZtimedelta_over_numberZtimedelta_over_timedeltaZtimedelta_floor_div_timedeltaZdatetime_eq_datetime_implZtimedelta_eq_timedelta_implZdatetime_ne_datetime_implZtimedelta_ne_timedelta_implZdatetime_lt_datetime_implZtimedelta_lt_timedelta_implZdatetime_le_datetime_implZtimedelta_le_timedelta_implZdatetime_gt_datetime_implZtimedelta_gt_timedelta_implZdatetime_ge_datetime_implZtimedelta_ge_timedelta_implZdatetime_max_implZtimedelta_max_implZdatetime_min_implZtimedelta_min_implZtimedelta_mod_timedelta)Zufunc_dbr   r   r   r   r   Úvr   Zarcsin_implZarctan_implZarcsinh_implZarctanh_implr   r   r   r   r   /   sr   




















r   )Ú__doc__Z
__future__r   r   r   Znumpyr   r   r	   r   r   r   r   r   r   r   Ú<module>   s   