o
    W۷iS                     @  s   d dl mZ d dlmZ dd Zdd ZdZejdd	efd
dddddddddfdeddZed Z	ejdd	efd
dddddddddfde	ddZ
dS )    )annotations)_corec                   C     t d)Nz*gcd cannot be computed with boolean arrays	TypeError r   r   I/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupy/_math/rational.py_negative_gcd_error      r	   c                   C  r   )Nz*lcm cannot be computed with boolean arraysr   r   r   r   r   _negative_lcm_error
   r
   r   z
template <typename T> inline __device__ T gcd(T in0, T in1) {
  T r;
  while (in1 != 0) {
    r = in0 % in1;
    in0 = in1;
    in1 = r;
  }
  if (in0 < 0)
    return -in0;
  return in0;
}
cupy_gcdz??->?zbb->bzBB->Bzhh->hzHH->Hzii->izII->Izll->lzLL->Lzqq->qzQQ->Qzout0 = gcd(in0, in1)zXComputes gcd of ``x1`` and ``x2`` elementwise.

    .. seealso:: :data:`numpy.gcd`

    )preambledocz
template <typename T> inline __device__ T lcm(T in0, T in1) {
  T r = gcd(in0, in1);
  if (r == 0)
    return 0;
  r = in0 / r * in1;
  if (r < 0)
    return -r;
  return r;
}
cupy_lcmzout0 = lcm(in0, in1)zXComputes lcm of ``x1`` and ``x2`` elementwise.

    .. seealso:: :data:`numpy.lcm`

    N)
__future__r   cupyr   r	   r   _gcd_preamblecreate_ufuncgcd_lcm_preamblelcmr   r   r   r   <module>   s4    
