o
    gi                     @   s<   d dl Z d dlZd dlZejjZdd Zdd Zdd ZdS )    Nc                    s  |  t  dstd  j j fdd} d}|d|\}}|jdks+J |jdks2J ttg j	R   j j fdd} d}|d| W d    n1 s]w   Y  ttg j	R   j jd	d } d}|d
| W d    n1 sw   Y   j j fdd} d}|d|dd\}}|jdksJ |jdksJ  j jdd } d} d}|d||\}}|jdksJ |jdksJ  j j fdd} d}|d|dd}|jdksJ d j
v rd j
v r jdks3 j jdd } d}|d |dd!d"}|jdks3J  j j fd#d} d$}|d%|jd&ksOJ ttg j	R  |d'|jd&kseJ W d    d S 1 sqw   Y  d S )(Nadapt_with_vmapz adapt_with_vmap is not supportedc                    s    j | } | | fS N	classicalsumxsetup M/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/test/test_adapt.pyfunc   s   z(test_shape_adapt_with_vmap.<locals>.func
         za b [c] -> a b, a b)r   r   c                    s    j | } | S r   r   r   r	   r   r   r      s   c                 S      | S r   r   r   r   r   r   r   %      za b [c] -> a bc                    s$    j | } j j| dd}||fS )Nr   axisr   )r   abr	   r   r   r   -   s   )r   <   za ([b c]) -> a, a [c]r   r   )r   )r   r   c                 S   s   | | | | fS r   r   r   yr   r   r   r   9      )r   z"a b c, (x c a) -> a b c x, x c b a)r   r   r      )r   r   r   r   c                    s   |  j d S )N   )r   aranger   r	   r   r   r   D   r   za b c -> a b c [d]r   )d)r   r   r   r   torchcompile)r      r   c                S   s   | d S )Nr   r   )r   argr   r   r   r   O   s   za b c -> a b casd)r    r$   c                    s    j | dS )N)   r   )r   	transposer   r	   r   r   r   X      )r   r   r   r   za [b c] x -> x [c b] a)r   r   r   r   za [b c] x -> x [b c] a)hasattrpytestskipwrapr   fullshaperaises	EinxError
exceptionsnameversionsetup_adaptr   r   r   r   r	   r   test_shape_adapt_with_vmap   sx   









$

$r6   c                    s   |  t  dstd  j j fdd} d} d}|d||dd	}|jd
ks1J ttg j	R %  j jdd } d} d}|d||dd	 W d    d S 1 scw   Y  d S )Nadapt_numpylike_elementwisez,adapt_numpylike_elementwise is not supportedc                    s    j | |S r   )r   addr   r	   r   r   r   h   r(   z4test_shape_adapt_numpylike_elementwise.<locals>.funcr   )r   r&   r   r   za (b c) d, d 1 c b -> d b c ar   r   )r   r   r   r   c                 S   s   |S r   r   r   r   r   r   r   t   r   )
r)   r*   r+   r,   r7   r-   r.   r/   r0   r1   r4   r   r	   r   &test_shape_adapt_numpylike_elementwisec   s$   





"r9   c                    s   |  t  dstd  j j fdd} d}|d|dd}|jd	ks+J ttg j	R   j jd
d } d}|d|dd W d    d S 1 sWw   Y  d S )Nadapt_numpylike_reducez'adapt_numpylike_reduce is not supportedc                    s    j j| |dS )Nr   r   r   r   r	   r   r   r      r   z/test_shape_adapt_numpylike_reduce.<locals>.funcr   za (b [c]) dr   r   )r   r   r   c                 S   r   r   r   r;   r   r   r   r      r   )
r)   r*   r+   r,   r:   r-   r.   r/   r0   r1   )r5   r   r   r   r	   r   !test_shape_adapt_numpylike_reduce~   s    



"r<   )r*   conftesteinxerrorsr0   r6   r9   r<   r   r   r   r   <module>   s    [