
    %YHh[                     F    d Z ddlZddlZddlmZ ddlmZ d Zed        Z	y)aD  Contains information on how to translate different ufuncs for the CUDA
target. 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 get_ufunc_info() to get the information related to a ufunc.
    N)	lru_cache)typingc                     t               |    S N)ufunc_db)	ufunc_keys    J/var/www/html/planif/env/lib/python3.12/site-packages/numba/cuda/ufuncs.pyget_ufunc_infor
      s    :i      c                  %   ddl m} m}m} ddlm ddlm} ddlm	m
 fdfdfd}fd	}fd
}fdfdfd}fd}fd}	fd}
fd}fd}fdfd}fdfd}fd}fd}fd}fd}fd}i }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.                  <   ||d|t        j0                  <   ||d|t        j2                  <   ||d|t        j4                  <   ||d|t        j6                  <   ||||d|t        j8                  <   ||| j:                  | j:                  d|t        j<                  <   ||j>                  j>                  d|t        j@                  <   ||| jB                  | jB                  d|t        jD                  <   |jF                  |jF                  d|t        jH                  <   |t        jH                     |t        jJ                  <   |jL                  |jL                  d|t        jN                  <   |t        jN                     |t        jP                  <   |jR                  |jT                  |jR                  |jT                  |jR                  |jT                  |jR                  |jT                  |jR                  |jT                  |jR                  |jV                  |jV                  jX                  jX                  d|t        jZ                  <   |d k\  rC|t        jZ                     j]                  |j_                  d!      |ja                  d!      d"       |jb                  |jd                  |jb                  |jd                  |jb                  |jd                  |jb                  |jd                  |jb                  |jd                  |jb                  |jf                  |jf                  jh                  jh                  d|t        jj                  <   |d k\  rC|t        jj                     j]                  |j_                  d#      |ja                  d#      d"       |jl                  |jn                  |jl                  |jn                  |jl                  |jn                  |jl                  |jn                  |jl                  |jn                  |jl                  |jp                  |jp                  jr                  jr                  d|t        jt                  <   |d k\  rC|t        jt                     j]                  |j_                  d$      |ja                  d$      d"       |jv                  |jx                  |jv                  |jx                  |jv                  |jx                  |jv                  |jx                  |jv                  |jx                  |jv                  |jz                  |jz                  j|                  j|                  d|t        j~                  <   |d k\  rC|t        j~                     j]                  |j_                  d%      |ja                  d%      d"       |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  j                  j                  d|t        j                  <   |d k\  rC|t        j                     j]                  |j_                  d&      |ja                  d&      d"       |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  j                  j                  d|t        j                  <   |d k\  rC|t        j                     j]                  |j_                  d'      |ja                  d'      d"       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                  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                  <   ||j                  j                  d|t        j                  <   ||j                  j                  d|t        j                  <   ||j                  j                  d|t        j                  <   |S )-Nr   )	cmathimplmathimplnumbers)npyfuncs)numpy_version)get_unary_impl_for_fn_and_tyget_binary_impl_for_fn_and_tyc                 l    j                  ||d        | |j                  d         } |||||      S )N   r   _check_arity_and_homogeneityargs)fncontextbuildersigr   implr   r   s         r	   np_unary_implzufunc_db.<locals>.np_unary_impl   s:    --c4;+B<GWc400r   c                 l    j                  ||d        | |j                  d         } |||||      S )N   r   r   )r   r   r   r   r   r   r   r   s         r	   np_binary_implz ufunc_db.<locals>.np_binary_impl!   s:    --c4;,R!=GWc400r   c                 8     t         j                  | |||      S r   )mathlogr   r   r   r   r   s       r	   np_real_log_implz"ufunc_db.<locals>.np_real_log_impl&       TXXwdCCr   c                 8     t         j                  | |||      S r   )r#   log2r%   s       r	   np_real_log2_implz#ufunc_db.<locals>.np_real_log2_impl)       TYY#tDDr   c                 8     t         j                  | |||      S r   )r#   log10r%   s       r	   np_real_log10_implz$ufunc_db.<locals>.np_real_log10_impl,       TZZ'3EEr   c                 8     t         j                  | |||      S r   )r#   sinr%   s       r	   np_real_sin_implz"ufunc_db.<locals>.np_real_sin_impl/   r'   r   c                 8     t         j                  | |||      S r   )r#   cosr%   s       r	   np_real_cos_implz"ufunc_db.<locals>.np_real_cos_impl2   r'   r   c                 8     t         j                  | |||      S r   )r#   tanr%   s       r	   np_real_tan_implz"ufunc_db.<locals>.np_real_tan_impl5   r'   r   c                 8     t         j                  | |||      S r   )r#   asinr%   s       r	   np_real_asin_implz#ufunc_db.<locals>.np_real_asin_impl8   r+   r   c                 8     t         j                  | |||      S r   )r#   acosr%   s       r	   np_real_acos_implz#ufunc_db.<locals>.np_real_acos_impl;   r+   r   c                 8     t         j                  | |||      S r   )r#   atanr%   s       r	   np_real_atan_implz#ufunc_db.<locals>.np_real_atan_impl>   r+   r   c                 8     t         j                  | |||      S r   )r#   atan2r   r   r   r   r!   s       r	   np_real_atan2_implz$ufunc_db.<locals>.np_real_atan2_implA       djj'7CFFr   c                 8     t         j                  | |||      S r   )r#   hypotrD   s       r	   np_real_hypot_implz$ufunc_db.<locals>.np_real_hypot_implD   rF   r   c                 8     t         j                  | |||      S r   )r#   sinhr%   s       r	   np_real_sinh_implz#ufunc_db.<locals>.np_real_sinh_implG   r+   r   c                    j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
 | |||
g      } | |||	g      } | |||
g      } | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S Nr   r   r    
r   r   underlying_floatr   	signaturemake_complexrealimagfmul	_getvalue)r   r   r   r   tyftyfsig1xoutxrxisxishxrcxichxrr5   np_real_cosh_implr2   rL   r   s                  r	   np_complex_sinh_implz&ufunc_db.<locals>.np_complex_sinh_implJ        	--c4;XXa[!!  3%!),  "d1g6""7B/VVVVw= '52$?w= '52$?<<T*<<T*}}r   c                 8     t         j                  | |||      S r   )r#   coshr%   s       r	   rb   z#ufunc_db.<locals>.np_real_cosh_impla   r+   r   c                    j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
 | |||
g      } | |||	g      } | |||
g      } | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S rN   rO   )r   r   r   r   rW   rX   rY   rZ   r[   r\   r]   r`   ra   r^   r_   r5   rb   r2   rL   r   s                  r	   np_complex_cosh_implz&ufunc_db.<locals>.np_complex_cosh_impld   rd   r   c                 8     t         j                  | |||      S r   )r#   tanhr%   s       r	   np_real_tanh_implz#ufunc_db.<locals>.np_real_tanh_impl{   r+   r   c                    "j                  ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |d      }| j                  |||d         }| j                  ||      }	|j                  }
|j                  }  | |||g      } | |||g      } !| |||
g      } | |||
g      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      |	_        |j                  ||      |	_        |	j                         S )Nr   r   r    g      ?)r   r   rP   r   rQ   get_constantrR   rS   rT   rU   faddfdivfsubrV   )#r   r   r   r   rW   rX   rY   ONErZ   r[   r\   r]   sicishrchr_rsis_rcicsqr_rcsqr_icdinv_drs_rcis_icis_rcrs_icnumrnumir5   rb   r2   rL   r   s#                                 r	   np_complex_tanh_implz&ufunc_db.<locals>.np_complex_tanh_impl~   s    	--c4;XXa[!!  3%!),""3,  "d1g6""7B/VVVVgwt<gwt<%"> '52$?\\"c"ll2t$\\"d#\\"c"b"%b"%LL(S!$R$S"%S"%R$||E5)||E5)<<e,<<e,}}r   c                 8     t         j                  | |||      S r   )r#   asinhr%   s       r	   np_real_asinh_implz$ufunc_db.<locals>.np_real_asinh_impl   r/   r   c                 8     t         j                  | |||      S r   )r#   acoshr%   s       r	   np_real_acosh_implz$ufunc_db.<locals>.np_real_acosh_impl   r/   r   c                 8     t         j                  | |||      S r   )r#   atanhr%   s       r	   np_real_atanh_implz$ufunc_db.<locals>.np_real_atanh_impl   r/   r   )f->fd->dzF->FzD->D)ff->fdd->d)r   r   )??->?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->?)r      >)zqQ->?zQq->?z>=<z<=z!=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->?)r   bb->bBB->Bhh->hHH->Hii->iII->Ill->lLL->Lqq->qQQ->Qr   r   zFF->FzDD->D)r   r   r   r   r   r   r   r   r   r   r   )r   zb->bzB->Bzh->hzH->Hzi->izI->Izl->lzL->Lzq->qzQ->Q)
r   r   r   r   r   r   r   r   r   r   )vnumba.cpythonr   r   r   numba.npr   numba.np.numpy_supportr   numba.cuda.mathimplr   r   np_complex_sin_implnpr1   np_complex_cos_implr4   tan_implr7   	asin_implarcsin	acos_implarccos	atan_implarctanarctan2rH   rK   rf   rj   
asinh_implarcsinhnp_complex_acosh_implarccosh
atanh_implarctanhradians_float_impldeg2radradiansdegrees_float_implrad2degdegreesint_ugt_implint_sgt_implreal_gt_implnp_complex_gt_implgreaterupdateint_signed_unsigned_cmpint_unsigned_signed_cmpint_uge_implint_sge_implreal_ge_implnp_complex_ge_implgreater_equalint_ult_implint_slt_implreal_lt_implnp_complex_lt_impllessint_ule_implint_sle_implreal_le_implnp_complex_le_impl
less_equalint_ne_implreal_ne_implnp_complex_ne_impl	not_equalint_eq_implreal_eq_implnp_complex_eq_implequalnp_logical_and_implnp_complex_logical_and_impllogical_andnp_logical_or_implnp_complex_logical_or_impl
logical_ornp_logical_xor_implnp_complex_logical_xor_impllogical_xornp_logical_not_implnp_complex_logical_not_impllogical_notnp_int_smax_implnp_int_umax_implnp_real_maximum_implnp_complex_maximum_implmaximumnp_int_smin_implnp_int_umin_implnp_real_minimum_implnp_complex_minimum_implminimumnp_real_fmax_implnp_complex_fmax_implfmaxnp_real_fmin_implnp_complex_fmin_implfminint_and_implbitwise_andint_or_impl
bitwise_orint_xor_implbitwise_xorint_invert_implinvertint_shl_impl
left_shiftint_shr_implright_shiftnp_complex_log_implr$   np_complex_log2_implr)   np_complex_log10_implr-   )r   r   r   r   r&   r*   r.   r8   r;   r>   rA   rE   rI   rc   rh   rk   r   r   r   r   dbr   r   r!   r5   rb   r2   rL   r   r   s                        @@@@@@@@@r	   r   r      s)    ;:!4D1
1
DEFDDDEEEGGE .E .E$ $LFFF 
B ! ,,,,	BrvvJ ! ,,,,	BrvvJ ! """"	BrvvJ "!####	BryyM "!####	BryyM "!####	BryyM $#BrzzN $#BrxxL "!$$	BrwwK "!$$	BrwwK "!$$	BrwwK #"$$$$	BrzzN #"....	BrzzN #"$$$$	BrzzN ++++BrzzN
 

^BrzzN ++++BrzzN
 

^BrzzN %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,BrzzN" 
2::44S944S9; 	<
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,Br" 
2##44T:44T:%< 	=
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,BrwwK" 
27744S944S9; 	<
 %%%%%%%%%%%%%%%%%%%%%%%%%%,,,,Br}}" 
2==  44T:44T:"< 	=
 $$$$$$$$$$$$$$$$$$$$$$%%%%,,,,Br||" 
2<<44T:44T:!< 	=
 $$$$$$$$$$$$$$$$$$$$$$%%%%,,,,BrxxL" 
28844T:44T:< 	=
 --------------------------5555Br~~& ,,,,,,,,,,,,,,,,,,,,,,,,,,4444Br}}& --------------------------5555Br~~& ,,,,,,,,,,,,,,,,,,,,,,,,,,4444Br~~& ,,********************....1111BrzzN& --********************....1111BrzzN& ,,********************++++....BrwwK& --********************++++....BrwwK& %%%%%%%%%%%%%%%%%%%%%%Br~~ $$$$$$$$$$$$$$$$$$$$$$Br}} %%%%%%%%%%%%%%%%%%%%%%Br~~ ''''''''''''''''''''''BryyM %%%%%%%%%%%%%%%%%%%%Br}} %%%%%%%%%%%%%%%%%%%%Br~~ ! ,,,,	BrvvJ "!----	BrwwK #"....	BrxxL Ir   )
__doc__r#   numpyr   	functoolsr   
numba.corer   r
   r    r   r	   <module>r     s3       ! B
 B
r   