
    %Vjij              
         d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZmZ erddlmZ ddlmZmZmZmZmZmZmZ 	 dddZ	 	 dddZddZddZddZd ZddZ	 dddZ	 	 	 	 ddd&Zddd'dd)Z e Z!ddd'dd*Z"ddd'dd+Z#ddd'dd,Z$	 	 dddd'd d.Z%ddd1Z&dd2Z'dd3Z(d4 Z)ddd6Z*ddd7Z+dd8Z,dd9Z-dd:Z.dd<Z/ddd>Z0	 	 	 	 	 d	d
dCZ1	 	 	 	 dd
dDZ2	 	 	 	 	 dddFZ3	 	 	 	 dddGddKZ4	 	 dddGddMZ5	 	 	 	 dddOZ6	 	 dddGddQZ7	 	 	 	 dddRZ8	 	 dddGddSZ9	 	 	 	 dddTZ:	 	 dddGddUZ;	 	 	 	 dddVZ<ddWZ=	 	 	 	 dddXdd[Z>	 	 	 	 	 	 dddXdd_Z?d` Z@dddcZAdddeZBdddgZC	 	 d d!diZDd"djZEd"dkZFdd"dlZGd"dmZHdd#dnZId#doZJd#dpZKd$d#drZLdd%dtZMddul	mNZN d
dvd&dxZOd@d
dydzd'd|ZPeQd
fdd}ZRdd#d~ZSdd#dZTddZUddZVdd(dZWdd(dZX	 	 	 d)ddGd*dZYd+ddZZd+ddZ[ddZ\dd,dZ]d,dZ^	 d-d.dZ_	 	 	 d/d0dZ`d1dZa	 d2d3dZbd4dZc	 	 d5d6dZd	 	 	 	 d7d@dd8dZed"dZfd"dZgd"dZh	 	 	 d9d:dZidd;dZjd<dZkdd"dZld=d"dZm	 	 	 	 	 d>d?dZn	 	 	 	 d@ddGddZodddGd*dZpddAdZqddAdZrdBdZsd(dZtddCdZuddZvdBddZwddDdZxddZyddDdZzdEddZ{ddd	dd
ddZ|d Z}dFdGdZ~dFdGdZ	 dHdIdńZd"dƄZd"dǄZdd"dȄZdd"dɄZdd"dʄZdJdGd˄Zdd"d̄ZdJdGd̈́Z	 	 	 	 dKdLdЄZddMd҄ZddӄZdddԜdNdքZddOdׄZeZeZdPd"dلZd"dڄZd"dۄZdd܄Zdd݄ZddބZdd߄ZddQdZddQdZddZd Zd Zd Zd Zd Zd Ze	j        e	j        e	j        gde	j        e	j        ggZe	j        de	j        de	j        de	j        de	j        diZdRdZ	 	 	 	 	 dSdTdZ	 	 	 	 	 dSdUdZ	 	 	 	 	 dSdUdZd"dZdVdWdZdS (X  zA thin pytorch / numpy compat layer.

Things imported from here have numpy-compatible signatures but operate on
pytorch tensors.
    )annotationsN)OptionalTYPE_CHECKING   )_dtypes_impl_util)Sequence)	ArrayLikeArrayLikeOrScalarCastingModes	DTypeLikeNDArrayNotImplementedTypeOutArrayKFar
   orderr   subokc                *    |                                  S Nclone)r   r   r   s      R/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_numpy/_funcs_impl.pycopyr   %   s     7799    	same_kinddstr   srccastingOptional[CastingModes]wherec                n    t          j        |f| j        |          \  }|                     |           d S )Nr   )r   typecast_tensorsdtypecopy_)r   r   r   r!   s       r   copytor'   +   s4     #SFCIwGGGFSIIcNNNNNr   arysc                 j    t          j        |  }t          |t                    rt	          |          S |S r   )torch
atleast_1d
isinstancetuplelistr(   ress     r   r+   r+   5   2    

D
!C#u Cyy
r   c                 j    t          j        |  }t          |t                    rt	          |          S |S r   )r*   
atleast_2dr,   r-   r.   r/   s     r   r3   r3   =   r1   r   c                 j    t          j        |  }t          |t                    rt	          |          S |S r   )r*   
atleast_3dr,   r-   r.   r/   s     r   r5   r5   E   r1   r   c                \    | dk    rt          d          	 ||t          d          d S d S )N z&need at least one array to concatenatezQconcatenate() only takes `out` or `dtype` as an argument, but both were provided.)
ValueError	TypeError)tupr%   outs      r   _concat_checkr<   M   sK    
byyABBB,
5,0
 
 	
 ,,r   c                x    ||||j         j        n|}nt          j        |  }t	          j        | ||          } | S )z%Figure out dtypes, cast if necessary.)r%   torch_dtyper   result_type_implr   r$   )tensorsr;   r%   r   	out_dtypes        r   _concat_cast_helperrB   Z   sK     %+-2]CI))		 17;	 $WiAAGNr   c                x    t          j        | d|i\  } }t          | |||          } t          j        | |          S )Naxis)r   axis_none_flattenrB   r*   cat)r@   rD   r;   r%   r   s        r   _concatenaterG   i   sB     +W@4@@MGT!'3w??G9Wd###r   ar_tupleSequence[ArrayLike]r;   Optional[OutArray]r%   Optional[DTypeLike]c                R    t          | ||           t          | ||||          }|S )Nr;   )rD   r;   r%   r   )r<   rG   )rH   rD   r;   r%   r   results         r   concatenaterO   r   s6     (Es++++(3eWUUUFMr   r%   r   r:   c               r    t          | |d            t          | ||          }t          j        |          S NrM   rP   )r<   rB   r*   vstackr:   r%   r   r@   s       r   rS   rS   ~   =     #u$''''!#UGDDDG<   r   c               r    t          | |d            t          | ||          }t          j        |          S rR   )r<   rB   r*   hstackrT   s       r   rW   rW      rU   r   c               r    t          | |d            t          | ||          }t          j        |          S rR   )r<   rB   r*   dstackrT   s       r   rY   rY      s=     #u$''''!#UGDDDG<   r   c               r    t          | |d            t          | ||          }t          j        |          S rR   )r<   rB   r*   column_stackrT   s       r   r[   r[      s>     #u$''''!#UGDDDGg&&&r   arraysc                   t          | ||           t          | ||          }|d         j        dz   }t          j        ||          }t          j        ||          S )NrM   rP   r   r   rD   )r<   rB   ndimr   normalize_axis_indexr*   stack)r\   rD   r;   r%   r   r@   result_ndims          r   ra   ra      sd     &%S))))!&wGGGG!*/A%K%dK88D;wT****r   arrvaluesc                    |=| j         dk    r|                                 } |                                }| j         dz
  }t          | |f|          S )Nr   r^   )r_   flattenrG   )rc   rd   rD   s      r   appendrg      sP    |8q==++--C!!x!|fD1111r   c                    t          |t                    rt          | |||          S t          |t          t          f          rt          | t          |          |          S t          dt          |                    )Nzsplit_helper: )r,   int_split_helper_intr.   r-   _split_helper_listr9   type)tensorindices_or_sectionsrD   stricts       r   _split_helperrp      sx    %s++ E )<dFKKK	'$	7	7 E!&$/B*C*CTJJJ($/B*C*CDDDr   c                v   t          |t                    st          d          t          j        || j                  }| j        |         |}}|dk    rt          ||z  dk    r|||z  }}|g|z  }n$|rt          d          ||z  ||z  dz   }}|g|z  }||dz
  g||z
  z  z  }t          j	        | ||          S )Nzsplit: indices_or_sectionsr   z0array split does not result in an equal divisionr   )
r,   ri   NotImplementedErrorr   r`   r_   shaper8   r*   split)	rm   rn   rD   ro   lnnumszlsts	            r   rj   rj      s    )3// @!">???%dFK88D <2qAAvv1uzzQ!VRdSj 	QOPPPa%a!RdSjBF8q3wC;vsD)))r   c                    t          |t                    st          d           fd|D             }t          |          t          |          z
  }|                     j                            |d         gd t          |dd          |d d                   D             z   }|dg|z  z  }t          j         |          S )Nz split: indices_or_sections: listc                6    g | ]}|j                  k    |S r7   )rs   ).0xrD   rm   s     r   
<listcomp>z&_split_helper_list.<locals>.<listcomp>   s*    
E
E
EQ&,t2D-D-D1-D-D-Dr   r   c                    g | ]
\  }}||z
  S r7   r7   )r|   r   bs      r   r~   z&_split_helper_list.<locals>.<listcomp>   s     22241aQ222r   r   )	r,   r.   rr   lenrg   rs   zipr*   rt   )rm   rn   rD   ry   	num_extras   ` `  r   rk   rk      s    )400 F!"DEEE F
E
E
E
E)
E
E
EC'((3s883IJJv|D!"""A223s122wCRC112223C A3?C;vsD)))r   aryc                $    t          | ||          S r   rp   r   rn   rD   s      r   array_splitr     s    14888r   c                (    t          | ||d          S )NTro   r   r   s      r   rt   rt     s    14EEEEr   c                z    | j         dk    rt          d          | j         dk    rdnd}t          | ||d          S )Nr   z3hsplit only works on arrays of 1 or more dimensionsr   Tr   r_   r8   rp   r   s      r   hsplitr     sG    
x1}}NOOO111!D14EEEEr   c                \    | j         dk     rt          d          t          | |dd          S )N   z3vsplit only works on arrays of 2 or more dimensionsr   Tr   r   r   rn   s     r   vsplitr     4    
x!||NOOO11TBBBBr   c                \    | j         dk     rt          d          t          | |dd          S )N   z3dsplit only works on arrays of 3 or more dimensionsr   Tr   r   r   s     r   dsplitr     r   r   r   c                ,    t          j        | |          S r   )r*   kron)r   r   s     r   r   r         :ar   r}   c                .    t          j        | ||          S r   )r*   vander)r}   N
increasings      r   r   r   #  s    <1j)))r   2   Tstartstopc                    |dk    s|s|st           |t          j                    j        }t	          j        | |||          S Nr   r%   )rr   r   default_dtypesfloat_dtyper*   linspace)r   r   rw   endpointretstepr%   rD   s          r   r   r   *  sJ     qyyGy8y!!}+--9>%s%8888r   c                   |dk    s|st           t          j        || z  d|dz
  z            }t          j        |          }t          j        t          j        |           |z  t          j        |          |z  ||          S )Nr         ?r   )base)rr   r*   powloglogspace)r   r   rw   r   r%   rD   r   logbases           r   	geomspacer   ;  s     qyyy!!9TE\3#'?33DiooG>	%7"	$'!	   r         $@c                R    |dk    s|st           t          j        | ||||          S )Nr   )r   r%   )rr   r*   r   )r   r   rw   r   r   r%   rD   s          r   r   r   O  s2     qyyy!!>%sUCCCCr   )likeOptional[ArrayLikeOrScalar]stepr   c                  |dk    rt           |	| t          |d| }} | d} |Lt          d | ||fD                       rt          j                    j        nt          j                    j        }|j        rt          j	        n|}t          d | ||fD                       rt          |dk    r| |k    s|dk     r| |k     rt          j        d|          S t          j        | |||          }t          j        ||          }|S )Nr   c              3  >   K   | ]}t          j        |          V  d S r   )r   is_float_or_fp_tensorr|   r}   s     r   	<genexpr>zarange.<locals>.<genexpr>t  s-      VVQ<5a88VVVVVVr   c              3  >   K   | ]}t          j        |          V  d S r   )r   is_complex_or_complex_tensorr   s     r   r   zarange.<locals>.<genexpr>z  s-      
U
UA<4Q77
U
U
U
U
U
Ur   r   )ZeroDivisionErrorr9   anyr   r   r   	int_dtype
is_complexr*   float64rr   emptyaranger   cast_if_needed)r   r   r   r%   r   
work_dtyperN   s          r   r   r   ]  s8    qyy|| t} } VV5$PTBUVVVVV9L'))55,..8 	
 #("2=J 
U
U%tAT
U
U
UUU "!!qUT\\taxxEDLL{1E****\%t:>>>F!&%00FMr   Cc               b    |t          j                    j        }t          j        | |          S Nr   )r   r   r   r*   r   rs   r%   r   r   s       r   r   r     /     }+--9;uE****r   	prototypec                `    t          j        | |          }||                    |          }|S r   )r*   
empty_likereshape)r   r%   r   r   rs   rN   s         r   r   r     s5     iu555F&&Mr   
fill_valuec                   t          | t                    r| f} ||j        }t          | t          t          f          s| f} t          j        | ||          S r   )r,   ri   r%   r-   r.   r*   full)rs   r   r%   r   r   s        r   r   r     s^     % } eeT]++ :eZu5555r   c                b    t          j        | ||          }||                    |          }|S r   )r*   	full_liker   )r   r   r%   r   r   rs   rN   s          r   r   r     s6     _Q
%888F&&Mr   c               b    |t          j                    j        }t          j        | |          S r   )r   r   r   r*   onesr   s       r   r   r     s/     }+--9:e5))))r   c                `    t          j        | |          }||                    |          }|S r   )r*   	ones_liker   r   r%   r   r   rs   rN   s         r   r   r     s4     _Qe,,,F&&Mr   c               b    |t          j                    j        }t          j        | |          S r   )r   r   r   r*   zerosr   s       r   r   r     r   r   c                `    t          j        | |          }||                    |          }|S r   )r*   
zeros_liker   r   s         r   r   r     s5     au---F&&Mr   c                   |d| j         z
  }|dk    r |                     d|z  | j        z             } |s| j        d         dk    r| j        } |                                 } d|j         z
  }|dk    r |                    d|z  |j        z             }|s|j        d         dk    r|j        }|                                }t          | |fd          } | S )z$Prepare inputs for cov and corrcoef.Nr   r   r   r   r^   )r_   viewrs   mTr   rG   )x_tensory_tensorrowvar
ndim_extras       r   _xy_helper_corrcoefr     s     &
>>}}TJ%6%GHHH 	#(.+q00{H>>##&
>>}}TJ%6%GHHH 	#(.+q00{H>>##8 41===Or   r   yOptional[ArrayLike]c               &   ||t           t          | ||          }|j        t          j        k    o|j        }|rt          j        }t          j        ||          }t          j	        |          }|r|
                    t          j                  }|S r   )rr   r   r%   r*   float16is_cpufloat32r   r   corrcoefto)	r}   r   r   biasddofr%   	xy_tensoris_halfrN   s	            r   r   r     s     4+!!#Aq&11I%-/EY5EG $Y66I^I&&F *5=))Mr   mfweightsaweightsc               0   t          | ||          } |
|dk    rdnd}| j        t          j        k    o| j        }|rt          j        }t          j        | |          } t          j        | |||          }	|r|		                    t          j                  }	|	S )Nr   r   )
correctionr   r   )
r   r%   r*   r   r   r   r   r   covr   )
r   r   r   r   r   r   r   r%   r   rN   s
             r   r   r   0  s     	Aq&))A|AIIqq1w%-'5QXG Q&&AYqTHxPPPF *5=))Mr   c                   t          j        | |          }t          j        | |          } t          j        ||          }|dk    r|j        d         dz
  n|}|dk    r#|j        d         dz  dk    rt          d          | d d d f         }|d d d d f         }t          j        j        	                    |||          }|dd d f         S )Nr   r   r   samer   z#mode='same' and even-length weights)padding)
r   r?   r   r   rs   rr   r*   nn
functionalconv1d)r   vmodedtr   aavvrN   s           r   _conv_corr_implr  N  s    		&q!	,	,BQ##AQ##A $agaj1nnDG&QWQZ!^q00 ""GHHH 
47B	
4qqq=	BX ''B'@@F !QQQ$<r   r   r   c                    | j         d         |j         d         k     r|| }} t          j        |d          }t          | ||          S )Nr   r   )rs   r*   flipr  r   r   r   s      r   convolver  e  sG    wqzAGAJ!1 	
1dA1a&&&r   validc                L    t          j        |          }t          | ||          S r   )r*   conj_physicalr  r  s      r   	correlater  p  s$    AA1a&&&r   weightsc                   |                                  dk    r|                     dt                    } t          j                    j        }t          j        | f|d          \  } t          j	        | ||          S )Nr   r   safer#   )
numel	new_emptyri   r   r   r   r   r$   r*   bincount)r}   r  	minlengthr   s       r   r  r  x  sh    wwyyA~~KKK%%+--7I!1$	6BBBDQ>!Wi000r   	conditionc                   |d u |d u k    rt          d          | j        t          j        k    r|                     t          j                  } ||t          j        |           }nt          j        | ||          }|S )Nz1either both or neither of x and y should be given)r8   r%   r*   boolr   r!   )r  r}   r   rN   s       r   r!   r!     sz     	
T	qDy!!LMMM%*$$LL,,	yQYY''Y1--Mr   c                    | j         S r   )r_   r   s    r   r_   r_     s	    6Mr   c                *    t          | j                  S r   )r-   rs   r  s    r   rs   rs     s    >>r   c                H    ||                                  S | j        |         S r   )r  rs   )r   rD   s     r   sizer    s!    |wwyywt}r   c                `    t          j        | j        |          }|                     |          S r   )r   expand_shapers   r   )r   rD   rs   s      r   expand_dimsr    s&    qw--E66%==r   c                    |"t          t          | j                            }nt          j        || j                  }t          j        | |          S r   )r-   ranger_   r   normalize_axis_tupler*   r  )r   rD   s     r   r  r    sD    |U16]]##)$77:ar   c                *    t          j        |           S r   )r*   flipudr   s    r   r#  r#        <??r   c                *    t          j        |           S r   )r*   fliplrr$  s    r   r'  r'    r%  r   r   r   c                b    t          j        || j                  }t          j        | ||          S r   )r   r!  r_   r*   rot90)r   kaxess      r   r*  r*    s*    %dAF33D;q!T"""r   arrayc                .    t          j        | |          S )N)r  )r*   broadcast_to)r-  rs   r   s      r   r/  r/    s    e%0000r   )broadcast_shapes)r   argsc                    t          j        | S r   )r*   broadcast_tensors)r   r1  s     r   broadcast_arraysr4    s    "D))r   xy)r   sparseindexingxic                   t          |          }|dvrt          d          d|z  fdt          |          D             }|dk    rX|dk    rR|d                             dd	d          z             |d<   |d                             d
d	d          z             |d<   |st	          j        | }| rd |D             }t          |          S )N)r5  ijz.Valid values for `indexing` are 'xy' and 'ij'.r   c                r    g | ]3\  }}|                     d |         dz   |dz   d          z             4S )N)r   r   )r   )r|   ir}   s0s      r   r~   zmeshgrid.<locals>.<listcomp>  sF    PPP$!Qaii2A2AEGG455PPPr   r5  r   r   )r   r   r   )r   r   c                6    g | ]}|                                 S r7   r   r   s     r   r~   zmeshgrid.<locals>.<listcomp>  s     ,,,!'')),,,r   )r   r8   	enumerater   r*   r3  r.   )r   r6  r7  r8  r_   outputr=  s         @r   meshgridrA    s    r77D|##IJJJ	BPPPP)B--PPPF4D1HH1I%%g122&677q	1I%%g122&677q	 2(&1 -,,V,,,<<r   c                V   t          |           } t          |           }d|z  }|rd}nt          j        |f| z   |          }t	          |           D ]V\  }}t          j        ||                              |d |         |fz   ||dz   d          z             }|r||fz   }Q|||<   W|S )Nr   r7   r   r   )r-   r   r*   r   r?  r   r   )	
dimensionsr%   r6  r   rs   r0   r<  dimidxs	            r   indicesrF    s    z""JJA1HE :k1$+5999J''  3l3e,,,44"1"Iq1uww/
 
  	,CCCFFJr   c                ,    t          j        | |          S r   )r*   trilr   r+  s     r   rH  rH    r   r   c                ,    t          j        | |          S r   )r*   triurI  s     r   rK  rK    r   r   c                8    || }t          j        | ||          S Noffset)r*   tril_indicesrv   r+  r   s      r   rP  rP    $    ya1----r   c                8    || }t          j        | ||          S rM  )r*   triu_indicesrQ  s      r   rT  rT    rR  r   c                    | j         dk    rt          d          t          j        | j        d         | j        d         |          S Nr   zinput array must be 2-dr   r   rN  )r_   r8   r*   rP  rs   rc   r+  s     r   tril_indices_fromrX    @    
x1}}2333cilCIaLCCCCr   c                    | j         dk    rt          d          t          j        | j        d         | j        d         |          S rV  )r_   r8   r*   rT  rs   rW  s     r   triu_indices_fromr[    rY  r   c               f    || }t          j        | |f|          }t          j        ||          S )Nr   )diagonal)r*   r   rH  )r   Mr+  r%   r   rm   s         r   trir_  &  s;     	yZAe,,,F:fq))))r   h㈵>:0yE>c                    t          j        | |          }t          j        | |          } t          j        ||          }t	          j        | ||||          S N)rtolatol	equal_nan)r   r?   r   r   r*   iscloser   r   rd  re  rf  r%   s         r   rg  rg  7  sS    )!Q//EQ&&AQ&&A=ADtyIIIIr   c                    t          j        | |          }t          j        | |          } t          j        ||          }t	          j        | ||||          S rc  )r   r?   r   r   r*   allcloserh  s         r   rj  rj  >  sS    )!Q//EQ&&AQ&&A>!QT	JJJJr   c                    | j         |j         k    rdS | |k    }|r,|t          j        |           t          j        |          z  z  }|                                                                S NF)rs   r*   isnanallitem)a1a2rf  conds       r   _tensor_equalrs  E  s^    	x28u8D :u{2R8988::??r   rp  rq  c                &    t          | ||          S )Nrf  )rs  )rp  rq  rf  s      r   array_equalrv  O  s    R95555r   c                x    	 t          j        | |          \  }}n# t          $ r Y dS w xY wt          ||          S rl  )r*   r3  RuntimeErrorrs  )rp  rq  a1_ta2_ts       r   array_equivr{  S  sS    ,R44
dd   uu t$$$s    
))        r   c                    |                                  rBt          j        | j        |||          }t          j        | j        |||          }|d|z  z   S t          j        | |||          S )N)nanposinfneginfy              ?)r   r*   
nan_to_numrealimag)r}   r   r~  r  r  reims          r   r  r  ]  ss     	||~~ Jaf#fVLLLaf#fVLLLBG|s6&IIIIr   raiserF  r   c                    t          j        | |          \  \  } }t          j        || j                  }t	          d           f|z  |dfz   }| |         }|S )Nr^   .)r   rE   r`   r_   slice)r   rF  rD   r;   r   rE  rN   s          r   taker  l  s\     (666JDQ$%dAF33D;;.4
7C.
0CsVFMr   c                    t          j        | |          \  \  } }t          j        || j                  }t	          j        | ||          S Nr^   )r   rE   r`   r_   r*   take_along_dim)rc   rF  rD   s      r   take_along_axisr  z  sF    *3T:::LFSD%dCH55DWd333r   c                R   |                     | j                  }|                                |                                k    rr|                                |                                z   dz
  |                                z  }|                    d                              |f|j        z             }|                                |                                k     r0|                                }|d |                                         }|                     ||           d S Nr   r   )rl   r%   r  	unsqueezeexpandrs   rf   put_)r   rF  rd   r   r   ratios         r   putr    s     	AGA }}""17799,q0QWWYY>KKNN!!5(QW"455 }}""IIKK FF7A4r   c                \   t          j        | |          \  \  } }t          j        || j                  }t	          j        ||          \  }}t          j        || j                  }t	          j        | |||          }| 	                    |
                    | j                             d S r  )r   rE   r`   r_   r*   r3  r   r%   scatterr&   r   rs   )rc   rF  rd   rD   rN   s        r   put_along_axisr    s    *3T:::LFSD%dCH55D-gv>>OGV!&#)44F]3gv66FIIfnnSY''(((4r   choicesc                    t          j        t          j                   fdt          j                  D             }| |d<   t          |                                       d          S )Nc                    g | ]D\  }}t          j        |                              d |z  |fz   d j        |z
  dz
  z  z             ES )r   r   )r*   r   r   r_   )r|   r<  rD  r  s      r   r~   zchoose.<locals>.<listcomp>  sf       As 	Stax3&047<!;Ka;O3PPQQ  r   r   )r*   ra   r3  r?  rs   r-   squeeze)r   r  r;   r   idx_lists    `   r   chooser    sx     k%17;<<G   ..  H
 HQK5??#++A...r   ru  arreturn_indexrf  c                   t          j        | |          \  \  } }t          j        || j                  }t	          j        | |||          }|S )Nr^   )return_inversereturn_countsrD  )r   rE   r`   r_   r*   unique)r  r  r  r  rD   rf  rN   s          r   r  r    sY     )"4888KER4%dBG44D\
>D  F Mr   c                .    t          j        | d          S )NTas_tuple)r*   nonzeror  s    r   r  r    s    =T****r   c                *    t          j        |           S r   )r*   argwherer  s    r   r  r        >!r   c                ^    t          j        |                               d          d         S )NTr  r   )r*   rf   r  r  s    r   flatnonzeror    s(    =##T#22155r   minmaxc                .    t          j        | ||          S r   )r*   clamp)r   r  r  r;   s       r   clipr    s     ;q#s###r   repeatsr   c                .    t          j        | ||          S r   )r*   repeat_interleave)r   r  rD   s      r   repeatr    s    "1gt444r   Ac                \    t          |t                    r|f}t          j        | |          S r   )r,   ri   r*   tile)r  repss     r   r  r    s-    $ w:ar   c                   || S t          |t                    r|f}|                                 } d}|D ]}||z  }|dk     rt          d          |                                 dk    s|dk    rt          j        || j                  S | |                                 z   }t          | f|z            d |         } t          | |          S )Nr   r   z0all elements of `new_shape` must be non-negativer   )
r,   ri   rf   r8   r  r*   r   r%   rO   r   )r   	new_shapenew_size
dim_lengthr  s        r   resizer    s     )S!! !L				AH Q Q
J>>OPPP  	wwyyA~~Q{9AG4444	QWWYY&'GQD7N##IXI.A1i   r   c                    t          j        || j                  }t          j        || j                  }t          j        | |||          S r   )r   r`   r_   r*   r]  )r   rO  axis1axis2s       r   r]  r]    s@    &uaf55E&uaf55E>!VUE222r   c                `    t          j        | |||                              d|          }|S )N)dim1dim2r   r   )r*   r]  sum)r   rO  r  r  r%   r;   rN   s          r   tracer    s4     ^AvE>>>BB2UBSSFMr   c                   |t          j                    j        }|| }t          j        | ||          }|                    |                              d           |S )Nr   r   )r   r   r   r*   r   r]  fill_)r   r^  r+  r%   r   r   zs          r   eyer    s]     }+--9yAq&&&AJJqMMHr   c               .    t          j        | |          S r   )r*   r  )rv   r%   r   s      r   identityr  +  s    9Qe$$$$r   c                ,    t          j        | |          S r   )r*   diagr   r+  s     r   r  r  /  r   r   c                ,    t          j        | |          S r   )r*   diagflatr  s     r   r  r  3  s    >!Qr   r   c                6    t          j        |           }|f|z  S r   )r*   r   )rv   r_   rE  s      r   diag_indicesr  7  s    
,q//C6D=r   c                    | j         dk    st          d          | j        }|dd          |d d         k    rt          d          t          |d         | j                   S )Nr   z input array must be at least 2-dr   r   z/All dimensions of input must be of equal lengthr   )r_   r8   rs   r  )rc   ss     r   diag_indices_fromr  <  sc    8q==;<<< 		Au#2#JKKK!ch'''r   valc                   | j         dk     rt          d          |                                dk    r|s|                     |           | S |j         dk    r|                    d          }| j         dk    r| j        d         | j        d         k    }|r|sD|                                 }|                    |d |                                                    n| j        \  }}t          j	        |||dz   z  z
            }||z  }||z  }	|d |                                         | |	|dz   z  |z   |f<   n't          |           }|d | j        d                  | |<   | S )Nr   zarray must be at least 2-dr   r   )r_   r8   r  fill_diagonal_r  rs   r]  r&   r*   r   r  )
r   r  wraptallr  max_min_rE  moddivs
             r   fill_diagonalr  G  sg   vzz5666
yy{{a	
x1}}mmA 	v{{wqzAGAJ& 
	B4 
	B::<<DJJs>TZZ\\>*++++ JD$,tdtax&8899C*C+C/2=SYY[[=/AAsdQh#%s+,,""\qwqz\"#Hr   c               v   t          j        | |          \  }}|j        dk    r|                                }|j        dk    r|                                }t	          j        ||          }|t           j        k    o|j        p|j        }|t           j        k    }|rt           j	        }n|rt           j
        }t          j        ||          }t          j        ||          }t          j        ||          }|r |                    t           j                  }n!|r|                    t           j                  }|S Nr   )r*   r+   r_   rf   r   r?   r   r   r  r   uint8r   r   vdotr   )r   r   t_at_br%   r   is_boolrN   s           r   r  r  i  s    1%%HC
x!||kkmm
x!||kkmm)#s33Eu}$C#**B
Guz!G  	 

sE
*
*C

sE
*
*CZS!!F '5=))	 '5:&&Mr   c                    t          |t          t          f          rd |D             }t          j        | |          }t          j        | |          } t          j        ||          }t          j        | ||          S )Nc                B    g | ]}t          |t                    r|gn|S r7   r,   ri   )r|   axs     r   r~   ztensordot.<locals>.<listcomp>  s-    CCC
2s++3CCCr   )dims)	r,   r.   r-   r   r?   r   r   r*   	tensordot)r   r   r,  target_dtypes       r   r  r    sy    $u&& DCCdCCC0A66LQ--AQ--A?1ad++++r   c                d   t          j        | |          }|t          j        k    }|rt          j        }t          j        | |          } t          j        ||          }| j        dk    s|j        dk    r| |z  }nt          j        | |          }|r|	                    t          j                  }|S Nr   )
r   r?   r*   r  r  r   r   r_   matmulr   )r   r   r;   r%   r  rN   s         r   dotr    s    )!Q//Euz!G Q&&AQ&&Av{{afkkQa## '5:&&Mr   c                  t          j        | |          }|t          j        k    o| j        p|j        }|t          j        k    }|rt          j        }n|rt          j        }t          j	        | |          } t          j	        ||          }t          j
        | |          }|r |                    t          j                  }n!|r|                    t          j                  }|S r   )r   r?   r*   r   r   r  r   r  r   r   innerr   )r   r   r%   r   r  rN   s         r   r  r    s    )!Q//Eu}$?!(*>ahGuz!G 	 Q&&AQ&&A[AF '5=))	 '5:&&Mr   c                ,    t          j        | |          S r   )r*   outer)r   r   r;   s      r   r  r    s    ;q!r   r   c                   |
|fdz  \  }}}t          j        || j                  }t          j        ||j                  }t          j        | |d          } t          j        ||d          }d}| j        d         dvs|j        d         dvrt          |          t          | d         j        |d         j                  }| j        d         dk    s|j        d         dk    r'|dz  }t          j        |t          |                    }t          j
        | |          }t          j        ||          }	t          j        | |          } t          j        ||          }| d         }
| d         }| j        d         dk    r| d	         }|d         }|d         }|j        d         dk    r|d	         }|	j        d
k    r)|	j        d         dk    r|	d         }|	d         }|	d	         }| j        d         dk    rT|j        d         dk    r|
|z  ||z  z
  |	d<   |	S |j        d         dk    sJ ||z  |d<   |
 |z  |d<   |
|z  ||z  z
  |d<   n| j        d         dk    sJ |j        d         dk    r+||z  ||z  z
  |d<   ||z  |
|z  z
  |d<   |
|z  ||z  z
  |d<   n2|j        d         dk    sJ | |z  |d<   ||z  |d<   |
|z  ||z  z
  |d<   t          j        |	d|          S )Nr   r   zDincompatible dimensions for cross product
(dimension must be 2 or 3))r   r   ).r   )r   r   ).r   ).r   r   r   .)r   r`   r_   r*   moveaxisrs   r8   r0  r   r   r?   r   r   )r   r   axisaaxisbaxiscrD   msgrs   r%   cpa0rp  rq  b0b1b2cp0cp1cp2s                      r   crossr    s.    #gkue &uaf55E&uaf55E 	q%$$Aq%$$A
QCwr{&  AGBKv$=$=oo QvY_aio>>Ewr{a172;!++*5#e**==)!Q//E	U%	(	(	(B 	Q&&AQ&&A 
6B	
6Bwr{avY	
6B	
6Bwr{avY	w!||))jjjwr{a72;!2gR'BsGI72;!#### BwCHsRxCHBwb(CHHwr{a72;!Bwb(CHBwb(CHBwb(CHH72;!####sRxCHBwCHBwb(CH>"b%(((r   r  )r;   r%   r   r   optimizec                   ddl m} ddlm}mm}m}	m}
  |	|          } ||          }| t          | |          st          d          |dk    rt          d          t          |d         t                     }|r|d d         d d d	         }n|d         |dd          }}fd
|D             }|t          j        | n|}|t          j        k    ot!          d |D                       }|rt          j        }|t          j        t          j        t          j        t          j        fv }|rt          j        }t/          j        |||          }ddlm} 	 |                                rct          j        j        j        }t          j        j        j        }|du rd}n|du rdt          j        j        _        |t          j        j        _        |r|dd d	         }t?          |          d	z  dk    }|r|d         }tA          tB          j"        #                    tI          ||                              }|r|%                    |           t          j&        | }nt          j&        |g|R  }|                                r,|t          j        j        _        |t          j        j        _        nE# |                                r,|t          j        j        _        |t          j        j        _        w xY w || |          } |
|          S )Nr   )ndarray)maybe_copy_tonormalize_array_likenormalize_castingnormalize_dtypewrap_tensorsz'out' must be an arrayr   z#'order' parameter is not supported.r   r   r   c                &    g | ]} |          S r7   r7   )r|   opr
  s     r   r~   zeinsum.<locals>.<listcomp>.  s%    AAAB##B''AAAr   c              3  $   K   | ]}|j         V  d S r   )r   )r|   ts     r   r   zeinsum.<locals>.<genexpr>2  s$      3N3NAH3N3N3N3N3N3Nr   )
opt_einsumTautoF)'_ndarrayr  _normalizationsr	  r
  r  r  r  r,   r9   rr   strr   r?   r*   r   rn  r   r  int8int16int32int64r   r$   torch.backendsr  is_availablebackendsstrategyenabledr   r.   	itertoolschainfrom_iterabler   rg   einsum)r;   r%   r   r   r  operandsr  r	  r  r  r  sublist_formatarray_operands
subscriptsr@   r  r   is_short_intr  old_strategyold_enabledsublistshas_sublistout
sublistoutrN   r
  s                            @r   r#  r#    sb    "!!!!!              OE""E((G
z#w770111||!"GHHH $HQK555N ? "#2#sss+ &.a[(122,N
AAAA.AAAG>Cm<0'::QVL em+N3N3Ng3N3N3N0N0NG %}EKU[%+#VVL #{$WlGDDG))))))!<""$$ 	: >4=L.3;K
 4!U""49)119EN%. 	81~H ]]Q.!3N *%b\
IO99#gx:P:PQQRRH ,
+++\8,FF\*7w777F ""$$ 	<1=EN%.0;EN%- ""$$ 	<1=EN%.0;EN%-;;;;]3''F<s   DJ/ /AK1c                    | j         j        rt          d| j          d          t          j        | |          \  \  } }t          j        || j                  }|dk    }| ||fS )Nzsorting z is not supportedr^   stable)r%   r   rr   r   rE   r`   r_   )rm   rD   kindr   r/  s        r   _sort_helperr1  h  sr    | N!"LV\"L"L"LMMM-f4@@@OIVt%dFK88DXF4r   c                j    t          | |||          \  } }}t          j        | ||          }|j        S N)rD  r/  )r1  r*   sortrd   )r   rD   r0  r   r/  rN   s         r   r4  r4  s  s9    "1dD%88OAtVZtF333F=r   c                \    t          | |||          \  } }}t          j        | ||          S r3  )r1  r*   argsort)r   rD   r0  r   r/  s        r   r6  r6  z  s2    "1dD%88OAtV=V4444r   leftsorterc                x    | j         j        rt          d| j                    t          j        | |||          S )Nzsearchsorted with dtype=)sider8  )r%   r   rr   r*   searchsorted)r   r   r:  r8  s       r   r;  r;    sE     	w H!"FQW"F"FGGGaf====r   c                    t          j        || j        d          }t          j        || j        d          }t          j        | ||          S )Nsourcedestination)r   r!  r_   r*   r  )r   r=  r>  s      r   r  r    sB    'AAF,[!&-PPK>!V[111r   c                    t          j        || j                  }t          j        || j                  }t          j        | ||          S r   )r   r`   r_   r*   swapaxes)r   r  r  s      r   r@  r@    s>    &uaf55E&uaf55E>!UE***r   c                   | j         }t          j        ||          }|dk     r||z  }d}d|cxk    r	|dz   k     s"n t          j        |d| d|dz   |fz            ||k     r|dz  }||k    r| S t	          t          d|                    }|                    |           |                    ||           |                     |          S )Nr   z5'%s' arg requires %d <= %s < %d, but %d was passed inr   r   )	r_   r   r`   	AxisErrorr.   r   removeinsertr   )r   rD   r   rv   r  r,  s         r   rollaxisrE    s     	
A%dA..Dqyy

ACQocWqb'1q5%$HHIIIe||
u}} aDKKKKt66$<<r   c                    |Dt          j        || j        d          }t          |t                    s|ft          |          z  }t          j        | ||          S )NT)allow_duplicate)r   r!  r_   r,   r-   r   r*   roll)r   shiftrD   s      r   rH  rH    sY    )$MMM%'' 	)Hs4yy(E:a%%%r   c                    |dk    r| }n^||                                  }nGt          |t                    r| }|D ]}|                      |          }n|                      |          }|S )Nr7   )r  r,   r-   )r   rD   rN   r  s       r   r  r    sx    rzz	dE"" 	%F ' '2' YYt__FMr   c                f    t          |          dk    r|d         n|}|                     |          S r  )r   r   )r   newshaper   s      r   r   r     s1    !(mmq00x{{hH99Xr   c                    |dv r/t          t          t          | j                                      }nt	          |          dk    r|d         }|                     |          S )N)r7   Nr   r   r   )r-   reversedr   r_   r   permute)r   r,  s     r   	transposerP    sW     """XeAFmm,,--	TaAw99T??r   c                *    t          j        |           S r   )r*   rf   )r   r   s     r   ravelrR    s    =r   prependrg   c                   t          j        || j                  }|dk     rt          d|           |dk    r| S |Ft	          | j                  }|j        dk    r|j        |         nd||<   t          j        ||          }|Ft	          | j                  }|j        dk    r|j        |         nd||<   t          j        ||          }t          j        | ||||          S )Nr   z#order must be non-negative but got r   )rD   rS  rg   )	r   r`   r_   r8   r.   rs   r*   r/  diff)r   rv   rD   rS  rg   rs   s         r   rU  rU    s     %dAF33D1uuBqBBCCCAvvQW-4\A-=-=gmD))1d$We44QW,2K!OOfl4((d#FE22:awvFFFFr   r  c                V    t          j        |           }|r|dt           j        z  z  }|S )N   )r*   anglepi)r  degrN   s      r   rX  rX    s,    [^^F
 +3>*Mr   c                *    t          j        |           S r   )r*   sincr}   s    r   r\  r\        :a==r   )rD   
edge_orderfc                  | j         }t          j        |          }|t          t	          |                    }nt          j        ||          }t          |          }t          |          }|dk    rdg|z  }nJ|dk    r2t          j        |d                   s|d         j         dk    r||z  }n||k    rt          |          }t          |          D ]\  }	}
t          j        |
          }
|
j         dk    r%|
j         dk    rt          d          t          |
          | j        ||	                  k    rt          d          |
j        j        s |
j        j        s|
                                }
t          j        |
          }||d         k                                    r|d         }|||	<   nt+          d          |dk    rt          d          g }t-          d           g|z  }t-          d           g|z  }t-          d           g|z  }t-          d           g|z  }| j        }t          j        |          t0          t2          fv r |                                 } t          j        }t7          ||          D ]P\  }}| j        |         |dz   k     rt          d	          t          j        | |
          }t          j        |          p
|j         dk    }t-          dd          ||<   t-          d d          ||<   t-          dd          ||<   t-          dd           ||<   |rB| t          |                   | t          |                   z
  d|z  z  |t          |          <   n|dd         }|dd          }| |||z   z  z  }||z
  ||z  z  }||||z   z  z  }dg|z  }d||<   |                    |          }|                    |          }|                    |          }|| t          |                   z  || t          |                   z  z   || t          |                   z  z   |t          |          <   |dk    rd||<   d||<   d||<   |r|n|d         }| t          |                   | t          |                   z
  |z  |t          |          <   d||<   d||<   d||<   |r|n|d         }| t          |                   | t          |                   z
  |z  |t          |          <   nqd||<   d||<   d||<   d||<   |rd|z  }d|z  }d|z  }n9|d         }|d         }d|z  |z    |||z   z  z  }||z   ||z  z  }| |||z   z  z  }|| t          |                   z  || t          |                   z  z   || t          |                   z  z   |t          |          <   d||<   d||<   d||<   d||<   |rd|z  }d|z  }d|z  }n8|d         }|d         }||||z   z  z  }||z    ||z  z  }d|z  |z   |||z   z  z  }|| t          |                   z  || t          |                   z  z   || t          |                   z  z   |t          |          <   |                    |           t-          d           ||<   t-          d           ||<   t-          d           ||<   t-          d           ||<   R|dk    r|d         S |S )Nr   r   r   z&distances must be either scalars or 1dzGwhen 1d, distances must match the length of the corresponding dimensionzinvalid number of argumentsr   z)'edge_order' greater than 2 not supportedzlShape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.r   r   g       @g      g      g      ?g       g      ?)r_   r   ndarrays_to_tensorsr-   r   r!  r   r   	is_scalarr.   r?  r*   	as_tensorr8   rs   r%   is_floating_pointr   doublerU  rn  r9   r  python_type_for_torchri   r  r   r   r   r   rg   )r`  rD   r_  varargsr   r,  len_axesrv   dxr<  	distancesdiffxoutvalsslice1slice2slice3slice4otypeax_dxr;   uniform_spacingdx1dx2r   r   crs   dx_0dx_ns                                r   gradientr|    si   	A'00G|U1XX)$224yyHGAAvvUX	
a\+GAJ7771:?a;O;Ox	
h']]%bMM 	 	LAy	22I~""1$$ !IJJJ9~~a!111 @   O5 /9S /%,,..	Jy))E q!&&(( !aBqEE'	* 5666A~~DEEE
 G Dkk]QFDkk]QFDkk]QFDkk]QFGE)%00S$K?? HHJJ4}} c# c#e74=:>))C  
 q... '077J5:? Q||tT2tQ||tQ~~t 	"#E&MM"2QuV}}5E"E#PU+!VCf"+C)C#s+,AssSy)AscCi()AC!GEE$K		%  A		%  A		%  A AeFmm$$q1U6]]+;';;a!E&MMBR>RR f
 ??F4LF4LF4L+955qD"#E&MM"2QuV}}5E"E!MCfF4LF4LF4L+:55rD"#E&MM"2QuV}}5E"E!MCf F4LF4LF4LF4L 	/5L%K5LAhAhCi#o&#s*;<3Y39-DC39-. AeFmm$$q1U6]]+;';;a!E&MMBR>RR f F4LF4LF4LF4L 	<%K5L%KBiBiSC#I./CiLC#I.3Y_c	):; AeFmm$$q1U6]]+;';;a!E&MMBR>RR f 	s T{{tT{{tT{{tT{{t1}}qzr   c                   |                                  rt          j        | |          }n^|                                 rHt          j        t          j        | j        |          t          j        | j        |                    }n| }|S )N)decimals)rg  r*   roundr   complexr  r  )r   r~  r;   rN   s       r   r  r    s     
Q222	
 K222K222
 
 Mr   d   c                    t          j        |           s| S |dk    r!|t          j        | j                  j        z  }t          j        | j                  |k     }|                                r| j        n| S r  )	r*   r   finfor%   epsabsr  rn  r  )r   tolmasks      r   real_if_closer    sm    A 
Qww EK((,,9QVs"DXXZZ&166Q&r   c                *    t          j        |           S r   )r*   r  r  s    r   r  r    r^  r   c                `    |                                  r| j        S t          j        |           S r   )r   r  r*   r   r  s    r   r  r    s*    ||~~ vAr   c                    t          j        |           r| j        dk    S t          j        | t           j                  S r   )r*   r   r  r   r  r]  s    r   	iscomplexr    s9     v{AUZ0000r   c                    t          j        |           r| j        dk    S t          j        | t           j                  S r   )r*   r   r  r   r  r]  s    r   isrealr    s8     v{?1EJ////r   c                *    t          j        |           S r   r*   r   r]  s    r   iscomplexobjr    s    Ar   c                ,    t          j        |            S r   r  r]  s    r   	isrealobjr    s    """"r   c                *    t          j        |           S r   )r*   isneginfr}   r;   s     r   r  r    r  r   c                *    t          j        |           S r   )r*   isposinfr  s     r   r  r    r  r   c                @    t           j                            |           S r   )r*   speciali0r]  s    r   r  r    s    =Ar   c                x    ddl m} 	  ||           }|                                dk    S # t          $ r Y dS w xY w)Nr   )r
  F)r  r
  r  	Exception)r   r
  r  s      r   isscalarr    s]    555555  ##wwyyA~   uus   "+ 
99c                `    t          j                    j        }t          j        | d|          S NF)periodicr%   )r   r   r   r*   hamming_windowr^  r%   s     r   hammingr    s+    '))5EE????r   c                `    t          j                    j        }t          j        | d|          S r  )r   r   r   r*   hann_windowr  s     r   hanningr    s+    '))5EQe<<<<r   c                b    t          j                    j        }t          j        | |d|          S )NF)betar  r%   )r   r   r   r*   kaiser_window)r^  r  r%   s      r   kaiserr  #  s-    '))5Eqte5IIIIr   c                `    t          j                    j        }t          j        | d|          S r  )r   r   r   r*   blackman_windowr  s     r   blackmanr  (  +    '))5E U%@@@@r   c                `    t          j                    j        }t          j        | d|          S r  )r   r   r   r*   bartlett_windowr  s     r   bartlettr  -  r  r   r@   c                 8   d}d}| D ]l}|j         }t          |          rd}|j        s
|j        sd}n,t                              |d           }|t          d          t          j        ||          }m|rt          d         |         S t          d         |         S )NFr   Tr   z+can't get common type for non-numeric arrayr   )
r%   r  rg  r   array_precisiongetr9   builtinsr  
array_type)r@   r   	precisionr   r  ps         r   common_typer  D  s    JI 
/ 
/G?? 	J# 	Oq| 	OAA##At,,Ay MNNNLA..		 (!}Y''!}Y''r   
   binsc           	        |t          d          ||j        j        rt          d          | j        j        p| j        j         }|d u p|j        j         }|r|                                 } |t          j        || j                  }t          |t          j
                  r:|j        dk    rt          j        |          }nt          j        || j                  }|)t          j        | ||t          |                    \  }}	n)t          j        | |||t          |                    \  }}	|s|r|                                }|r|	                                }	||	fS )N3normed argument is deprecated, use density= insteadzcomplex weights histogram.r   )weightdensity)r   r  r  )r8   r%   r   rr   rg  rh  r   r   r,   r*   Tensorr_   operatorindex	histogramr  long)
r   r  r   normedr  r  is_a_intis_w_inthr   s
             r   r  r  [  sh    NOOOw}7!">???G-C1CDH$Egm&E"EH HHJJ&w88$%% 79>>>$''DD'ag66D}q$wWNNN11t5$w--
 
 
1  x FFHH FFHHa4Kr   r   c                   t          |           t          |          k    rt          d          	 t          |          }n# t          $ r d}Y nw xY w|dk    r
|dk    r||g}t          | |f|||||          \  }}	||	d         |	d         fS )Nz"x and y must have the same length.r   r   r   )r   r8   r9   histogramdd)
r}   r   r  r   r  r  r  r   r  es
             r   histogram2dr    s     1vvQ=>>>II    	Avv!q&&d|1vtUFGWEEDAqadAaD=s   A AAc                    |t          d          ddlm}m} t	           t
          t          f          r |           j         n |            t          j	                     j
        j        s  j
        j        s                                  t	          |t                    pt          j        d |D                        }|r% ||          }d |D             }	 fd|D             }|&|                                                                }|                     d          }
t          j        |
                              d	d
          j                                        }t          |                                          }t-          j        | j
                  }d|i}ni }t          j         ||fdt3          |          i|\  }}|rd t5          ||	          D             }||fS )Nr  r   )r
  normalize_seq_array_likec              3  @   K   | ]}t          |t                    V  d S r   r  r|   r   s     r   r   zhistogramdd.<locals>.<genexpr>  s,      -O-OQjC.@.@-O-O-O-O-O-Or   c                    g | ]	}|j         
S r7   r   r  s     r   r~   zhistogramdd.<locals>.<listcomp>  s    ---1qw---r   c                D    g | ]}t          j        |j                  S r7   )r   r   r%   )r|   r   samples     r   r~   zhistogramdd.<locals>.<listcomp>  s(    DDD!$Q55DDDr   r   )rD  r   r   r  r  c                >    g | ]\  }}t          j        ||          S r7   )r   r   )r|   bbdtyps      r   r~   zhistogramdd.<locals>.<listcomp>  s)    PPPDU!"d++PPPr   )r8   r  r
  r  r,   r.   r-   Tr*   r3   r%   rg  r   rh  ri   r  rn  rf   tolistaminmaxrF   r   r   r   r  r  r   )r  r  r   r  r  r  r
  r  bins_is_arraybins_dtypesmmw_kwdr  r   s   `             r   r  r    s    NOOOOOOOOOOO&4-(( .%%f--/%%f--f%%FL* !fl.E ! 	4O-O-O$-O-O-O!O!OM  E''-------DDDDtDDD&&((^^^""	"%%a,,.6688ellnn%%&w==7#VT5QQ$w--Q5QQDAq QPPC;<O<OPPPa4Kr   c                  ddl m} |                                 dk    r || j                  S | j        t          j        k    rt          j        }nk| j        j        rt	          j        t          j                  }| j        t          j	        k    p=|j
        | j        cxk    o
|j        k    nc o|j
        | j        cxk    o
|j        k    nc }|rt          j	        nt          j        }n| j        j        rYt          j        t          j        t          j        fD ]4}t	          j        |          }|j
        | cxk    r|j        k    rn 0|} n5nnt          j        t          j        t          j        t          j        t          j        fD ]4}t	          j        |          }|j
        | cxk    r|j        k    rn 0|} n5 ||          S )Nr   )DType)_dtypesr  r  r%   r*   r  r   r  r   	complex64r  r  r  r  
complex128rg  r   r   r  r  r  r  r  iinfo)r   r  r%   fifits_in_singler   iis          r   min_scalar_typer    s    wwyy1}}uQW~~w%*
	
	 [''EO3 
Faf&&&&&&&&E26QV+E+E+E+Erv+E+E+E+E 	 $2Gu7G	
	" =%-? 	 	BRBv$$$$bf$$$$$ %
 ;
EKekR 	 	BRBv$$$$bf$$$$$ % 5<<r   constant	pad_widthc                ~   |dk    rt           |                    dd          }t          j        | j                  } ||          }t          j        || j        df          }t          j        |d          	                                }t
          j
        j                            | t          |          |          S )Nr  constant_valuesr   r   r  )value)rr   r  r   ri  r%   r*   r/  r_   r  rf   r   r   padr-   )r-  r  r   kwargsr  typs         r   r  r     s    z!!JJ(!,,E

,U[
9
9CCJJE"9uz1o>>I
9d++3355I8""5%	*:*:%"HHHr   )r   F)r   r
   r   r   r   r   )r   N)r   r   r   r
   r   r    r!   r   )r(   r
   )NNr   )r   NNr   )r   r    )rH   rI   r;   rJ   r%   rK   r   r    )r:   rI   r%   rK   r   r    )r   N)r\   rI   r;   rJ   r%   rK   r   r    r   )rc   r
   rd   r
   )Fr  )r   r
   )r   r
   r   r
   rl  )r}   r
   )r   TFNr   )r   r
   r   r
   r%   rK   )r   TNr   )r   Tr   Nr   )r%   rK   )NNr   N)
r   r   r   r   r   r   r%   rK   r   r   )Nr   )r%   rK   r   r   r   r   )Nr   FN)r   r
   r%   rK   r   r   r   r   )r   r
   r%   rK   r   r   r   r   )r   r
   r%   rK   r   r   r   r   )NT)NTNN)r}   r
   r   r   r%   rK   )NTFNNN)
r   r
   r   r   r   r   r   r   r%   rK   )r   )r   r
   r   r
   )r	  r  )r  r   r}   r
   )NN)r  r
   r}   r   r   r   )r   r
   )r   r
   )r   r(  )r-  r
   r   r   )r1  r
   r   r   )r8  r
   )rc   r
   )Nr   N)r%   rK   r   r   )r`  ra  F)rp  r
   rq  r
   )Tr|  NN)r}   r
   r   r   )NNr  )r   r
   rF  r
   r;   rJ   r   r   )rc   r
   rF  r
   )r  )r   r   rF  r
   rd   r
   r   r   )rc   r
   rF  r
   rd   r
   )Nr  )r   r
   r  rI   r;   rJ   r   r   )FFFN)r  r
   r  r   rf  r   )NNN)r   r
   r  r   r  r   r;   rJ   )r   r
   r  r   )r  r
   )r   r   r   )r   r   r   NN)r   r
   r%   rK   r;   rJ   )Nr   Nr   )r   r
   )r   )r   r
   r  r
   )r   r
   r   r
   r;   rJ   )r   r   r   N)r   NN)r   r
   r   r   )r7  N)r   r
   r   r
   r8  r   )r   )r   r   NN)r   r
   rS  r   rg   r   )r  r
   )r`  r
   )r   r
   r;   rJ   )r  )r}   r
   r;   rJ   )r@   r
   )r  NNNN)r   r
   r  r
   r  r   )r   r   r  r   )r  )r-  r
   r  r
   )__doc__
__future__r   r  r   r  typingr   r   r*    r   r   collections.abcr	   r  r
   r   r   r   r   r   r   r   r'   r+   r3   r5   r<   rB   rG   rO   rS   	row_stackrW   rY   r[   ra   rg   rp   rj   rk   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!   r_   rs   r  r  r  r#  r'  r*  r/  r0  r4  rA  ri   rF  rH  rK  rP  rT  rX  r[  r_  rg  rj  rs  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r1  r4  r6  r;  r  r@  rE  rH  r  r   rP  rR  rU  rX  r\  r|  r  aroundround_r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  r  r  r  r  r  r  r  r  r7   r   r   <module>r     s    # " " " " "       * * * * * * * *  ! ! ! ! ! ! ! !  ((((((                  PU     '2 $	             

 

 

     NY$ $ $ $ $ 
"!%&1	 	 	 	 	 "&&1	! ! ! ! ! ! 	 "&&1	! ! ! ! ! ! "&&1	
! 
! 
! 
! 
! 
!  "&&1	' ' ' ' ' '  
"+
 "&&1+ + + + + + 2 2 2 2 2E E E E* * * *6* * *"9 9 9 9 9F F F F FF F F FC C C CC C C C   * * * * * 	!%	
9 9 9 9 9( 	!%	
    . 		!%	
D D D D D *.(,()!%	&  $& & & & & &\ "& #	+
  $	+ 	+ 	+ 	+ 	+ 	+$ "& # %

 
 
 
 
  "& #	6  $6 6 6 6 6 6( "& # %
    " "& #	*
  $	* 	* 	* 	* 	* 	* "& # %

 
 
 
 
 "& #	+
  $	+ 	+ 	+ 	+ 	+ 	+ "& # %

 
 
 
 
    6 "		 "&     < "		$($( "&     <  .' ' ' ' '' ' ' ' '1 1 1 1 1 &*%)    ,             
          # # # # #1 1 1 1 1
 # " " " " " DI * * * * * * #'ut      0 69     .        . . . .. . . .D D D D DD D D D D !%	*  $* * * * * *"J J J J JK K K K K   6 6 6 6 6% % % % QU	J 	J 	J 	J 	J$ 
"&    4 4 4 4  '	    *    #&	/ / / / /2 (-	 %)     &+ + + +   6 6 6 6  $#"	$ $ $ $ $5 5 5 5 5   ! ! ! ! !<3 3 3 3 3 

!%"	 	 	 	 	 !% #  $     $%QU % % % % % %                
( ( ( (    D   @, , , , ,    (   .    E) E) E) E) E)P d#vPU W  W  W  W  W z         5 5 5 5 5 LP> > > > >2 2 2 2+ + + +    6& & & & &                 	#'"&G G G G G@       
 +/1 j j j j j j`     
	
' 
' 
' 
' 
'      1 1 1 10 0 0 0   # # # #             @ @ @
= = =
J J J
A A A
A A A ]EM5=1	5?E,-

 
M1	M1	M1	OQ	a( ( ( (2 
#') ) ) ) )^ 
!%#'    8 
!%#'4 4 4 4 4t" " " "JI I I I I I Ir   