
    `i                     f    d dl Z d dlZd Zd Zd Zd ZddZd fd	Zd
 Zd Z	d Z
	 	 ddZd ZdS )    Nc                     | |j         j        dv S t          | t          j                  r| j         j        dv S t          j         |           j        dv S )Niu)dtypekind
isinstancecupyndarray)outputinputs     m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/scipy/ndimage/_util.py_is_integer_outputr      sS    ~{4''	FDL	)	) )| D((:f"d**    c                 d    | dk    r%|r%t          j        |          st          d          d S d S d S )Nconstantz@Non-finite cval is not supported for outputs with integer dtype.)r   isfiniteNotImplementedError)modecvalinteger_outputs      r   _check_cvalr      sP    znT]45H5H! #@ A A 	A r   c                     | j         j        dk    r)t          j        | j        j         t          j                  S t          j        | j        j         t          j                  S )zInitialize filter weights based on the input array.

    This helper is only used during initialization of some internal filters
    like prewitt and sobel to avoid costly double-precision computation.
    c)r   r   r   promote_typesreal	complex64float32)r   s    r   _init_weights_dtyper      sH     {3!%*"2DNCCCej.===r   c                    |j         j        dk    s| j         j        dk    r)t          j        | j        j         t          j                  S |j         j        dv rt          j        S t          j        | j        j         t          j                  S )Nr   iub)r   r   r   r   r   r   float64r   )r   weightss     r   _get_weights_dtyper"      sm    }S  EK$4$;$;!%*"2DNCCC		u	$	$|ej.===r   Fc                    ||j         n|}| F|r%t          j        |j        t          j                  }n|j        }t          j        ||          } n!t          | t          t          j        f          ri|rPt          j        |           j        dk    r3t          j
        d           t          j        | t          j                  } t          j        ||           } nt          | t                    rGt          j        |           } |r| j        dk    rt          d          t          j        ||           } n;| j         |k    rt          d          |r| j        j        dk    rt          d          | S )N)r   r   z+promoting specified output dtype to complexzoutput must have complex dtypezoutput shape not correct)shaper   r   r   r   emptyr   typer   warningswarnstrRuntimeError)r
   r   r$   complex_output_dtypes        r   _get_outputr-   (   si    =EKKeE~ 	!'T^DDFF[FE000	FT4:.	/	/ = 	@dj005<<MGHHH'??FE000	FC	 	  =F## 	AfkS00?@@@E000			5666	 =FL-44;<<<Mr   c                     | S )N )xs    r   <lambda>r1   A   s    a r   c                 :   t          | t                    r |           g|z  S 	 t          |           } n# t          $ r  |           g|z  cY S w xY wfd| D             }t	          |          |k    r$d                    |          }t          |          |S )Nc                 &    g | ]} |          S r/   r/   ).0r0   convs     r   
<listcomp>z%_fix_sequence_arg.<locals>.<listcomp>H   s!    
 
 
 q4477
 
 
 r   z'{} must have length equal to input rank)r   r)   iter	TypeErrorlenformatr*   )argndimnamer5   lstmsgs      `  r   _fix_sequence_argr@   A   s    #s "S		{T!!"3ii " " "S		{T!!!!"
 
 
 
 C
 
 
 C
3xx47>>tDD3Js   7 AAc                 r    t          |           } |dz  | z   dk     s|dz  | z   |k    rt          d          | S )N   r   zinvalid origin)int
ValueError)originwidths     r   _check_originrG   O   sH    [[F
VaUaZ&%8E%A%A)***Mr   c                 8    | dvrd|  d}t          |          | S )N)reflectr   nearestmirrorwrapgrid-mirror	grid-wrapzgrid-reflectz%boundary mode not supported (actual: ))r*   )r   r?   s     r   _check_moderP   V   s:     @ @ @=d===3Kr   c                     t          d t          | j        | j                  D                       | j        j        z   }|dk     rdndS )Nc              3   F   K   | ]\  }}|d z
  t          |          z  V  dS )   N)abs)r4   r0   strides      r   	<genexpr>z_get_inttype.<locals>.<genexpr>c   sE       2 2yq&!A#s6{{" 2 2 2 2 2 2r   l        rC   	ptrdiff_t)sumzipr$   stridesr   itemsize)r   nbytess     r   _get_inttyper]   ^   s_    
  2 2U[%-002 2 2 2 249K4HIFg&&55K7r   rC   c                    |rdnd}|rdnd}| dv rd                     |||          }n| dk    rd	                     |||          }n| d
k    r#d                     |||||dk    rdnd          }nX| dk    rd                     ||          }n:| dk    rd                     |||          }n| dv rd                     ||          }|S )Nfminminfmaxmax)rI   rM   z
        if ({ix} < 0) {{
            {ix} = - 1 -{ix};
        }}
        {ix} %= {xsize} * 2;
        {ix} = {min}({ix}, 2 * {xsize} - 1 - {ix});)ixxsizer`   rK   a  
        if ({xsize} == 1) {{
            {ix} = 0;
        }} else {{
            if ({ix} < 0) {{
                {ix} = -{ix};
            }}
            {ix} = 1 + ({ix} - 1) % (({xsize} - 1) * 2);
            {ix} = {min}({ix}, 2 * {xsize} - 2 - {ix});
        }}rJ   zD
        {ix} = {min}({max}(({T}){ix}, ({T})0), ({T})({xsize} - 1));rC   z	long long)rc   rd   r`   rb   TrN   z]
        {ix} %= {xsize};
        while ({ix} < 0) {{
            {ix} += {xsize};
        }})rc   rd   rL   z
        if ({ix} < 0) {{
            {ix} += ({sz} - 1) * (({int_t})(-{ix} / ({sz} - 1)) + 1);
        }} else if ({ix} > ({sz} - 1)) {{
            {ix} -= ({sz} - 1) * ({int_t})({ix} / ({sz} - 1));
        }};)rc   szint_t)r   zgrid-constantzP
        if (({ix} < 0) || {ix} >= {xsize}) {{
            {ix} = -1;
        }}r:   )r   rc   rd   rg   float_ixmin_funcmax_funcopss           r    _generate_boundary_condition_opsrm   h   sW   !,vvuH!,vvuH)))7
 8>vH 8> 8. 8. 	 
			 f%Xf66 	 
		GGMvH( uuK	 HN H: H: 	 
		 f%f((	 	
 

 vUv33 	 
.	.	. f%f(( 	 Jr   c                     dfdt          | dz
  dd          D             }d                    d                    |          d                   S )	Nz<{type} ind_{j} = _i % ysize_{j} - {offset}; _i /= ysize_{j};c                 L    g | ] }                     ||                    !S ))r&   joffsetrh   )r4   rp   codeint_typeoffsetss     r   r6   z)_generate_indices_ops.<locals>.<listcomp>   s?     + + + KKX71:K>> + + +r   rS   r   z3{type} _i = i;
{body}
{type} ind_0 = _i - {offset};
)r&   bodyrq   )ranger:   join)r<   rs   rt   rw   rr   s    `` @r   _generate_indices_opsrz      s    ID+ + + + + +461b))+ + +DBIIDIIdOOGAJ J @ @ @r   )NF)rC   F)r'   r   r   r   r   r"   r-   r@   rG   rP   r]   rm   rz   r/   r   r   <module>r{      s     + + +A A A> > >> > >   2 -8K        8 8 8 =B.30 0 0 0f@ @ @ @ @r   