o
    GZŽhÈ  ã                   @   sØ   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&é    )ÚsymbolsÚSÚPowÚFunction)Úexp)Úraises)ÚIdxÚIndexedBase)ÚIndexConformanceException)Úget_contraction_structureÚget_indicesc                  C   st   t dƒ\} }t| ƒtƒ i fksJ ‚t| | ƒtƒ i fksJ ‚t| | ƒtƒ i fks+J ‚t| | ƒtƒ i fks8J ‚d S )Nzx y)r   r   Úset)ÚxÚy© r   úT/var/www/auris/lib/python3.10/site-packages/sympy/tensor/tests/test_index_methods.pyÚtest_trivial_indices
   s
   r   c                  C   s^   t dƒ} tdƒtdƒ}}t| ||f ƒ||hi fksJ ‚t| ||f ƒ||hi fks-J ‚d S )Nr   ÚiÚj©r	   r   r   )r   r   r   r   r   r   Útest_get_indices_Indexed   s    $r   c                  C   sz   t dƒ} tdƒtdƒ}}t| |ƒ| ƒ||hi fksJ ‚t| ||ƒƒ||hi fks,J ‚t| |ƒ| ƒtƒ i fks;J ‚d S )NÚfr   r   )r   r   r   r   )r   r   r   r   r   r   Útest_get_indices_Idx   s
    "r   c                  C   sn   t dƒ} t dƒ}tdƒtdƒ}}t| | ||  ƒ||hi fks#J ‚t| | ||  ƒ||hi fks5J ‚d S ©Nr   r   r   r   r   ©r   r   r   r   r   r   r   Útest_get_indices_mul!   s
   $(r   c                      s>   t dƒ‰t dƒ‰tdƒtdƒ‰ ‰tt‡ ‡‡‡fdd„ƒ d S )Nr   r   r   r   c                      s   t ˆˆ  ˆˆ  ƒS )N)r   r   ©r   r   r   r   r   r   Ú<lambda>-   s    z-test_get_indices_exceptions.<locals>.<lambda>)r	   r   r   r
   r   r   r   r   Útest_get_indices_exceptions)   s   r   c                  C   sr   t dƒ} t dƒ}tdƒtdƒ}}t| | |||f  ƒ|hi fks$J ‚t| | |||f  ƒ|hi fks7J ‚d S r   r   r   r   r   r   Útest_scalar_broadcast0   s
   &*r   c                  C   sB  t dƒ} t dƒ}t dƒ}tdƒtdƒtdƒ}}}t| | d||   ƒ|hi fks-J ‚t|| d|||f  | |   ƒ|hi fksFJ ‚t|| d| | |||f | |     ƒ|hi fkscJ ‚t|| | | |||f d   ƒ|hi fks|J ‚t|| | | | |  || |||f | |     ƒ|hi fksŸJ ‚d S )	Nr   r   ÚAr   r   Úké   é   r   ©r   r   r    r   r   r!   r   r   r   Útest_get_indices_add8   s   &2:22ÿÿr%   c                  C   s  t dƒ} t dƒ}t dƒ}tdƒtdƒtdƒ}}}tt| | || ƒƒ||hi fks-J ‚tt| ||f |||f ƒƒ|||hi fksEJ ‚tt|||f || |||f | |   ƒƒ||hi fksdJ ‚ttd| | ƒƒtt| | ƒƒkswJ ‚tt| | dƒƒ|hi fks‡J ‚d S )Nr   r   r    r   r   r!   r"   )r	   r   r   r   r   r$   r   r   r   Útest_get_indices_PowE   s   &0>&$r&   c                  C   s  t dƒ} t dƒ}tdƒtdƒ}}t| | ||  ƒd | | ||  hiks(J ‚t| | ||  ƒd | | || hiks>J ‚t| | ||  ƒ|f| | ||  hiksVJ ‚td| | ||   ƒd tjh|f| | ||  hikstJ ‚t| | ||  ƒd | | ||  hiks‹J ‚d S )Nr   r   r   r   r#   )r	   r   r   r   ÚOner   r   r   r   Ú$test_get_contraction_structure_basicS   s   .,0ÿÿ2r(   c            
      C   sæ   t dƒ} t dƒ}t dƒ}tdƒtdƒtdƒ}}}|| |||f | |   }d || h|f|||f | |  hi}t|ƒ|ksCJ ‚||||f  | |  }d | | h|f||||f  h||||f  |gi}	t|ƒ|	ksqJ ‚d S )Nr   r   r    r   r   r!   ©r	   r   r   )
r   r   r    r   r   r!   Úexpr1Zd1Zexpr2Zd2r   r   r   Ú&test_get_contraction_structure_complex_   s   &4r+   c               	   C   sò   t dƒ} t dƒ}tdƒtdƒtdƒ}}}| ||f |||f  }t|ƒd |h||f| ||f hi|f|||f higiksAJ ‚| ||f |||f  }t|ƒd | ||f |||f  h| ||f |||f  |f| ||f higikswJ ‚d S ©Nr   r   r   r   r!   r)   )r   r   r   r   r!   Zii_jjZii_jkr   r   r   Ú%test_contraction_structure_simple_Powl   s$   þ
þÿþr-   c                  C   sº  t dƒ} t dƒ}tdƒtdƒtdƒ}}}| | || | |   }t|ƒd |hiks-J ‚| | ||  ||  }t|ƒd |hiksDJ ‚| | | | ||  ||   }t|ƒ|f|hiks`J ‚| | | | || | |    }t|ƒ|f|hiks|J ‚| | ||  t|| |||f  ƒ }	t|	ƒ}
|f|	h|	d t|| |||f  ƒht|| |||f  ƒd || |||f  h|| |||f  |f|||f higigigi}|
|ksÛJ ‚d S r,   )r	   r   r   r   )r   r   r   r   r!   Zi_jiZij_iZj_ij_iZj_i_jiZ
ij_exp_kkiÚresultÚexpectedr   r   r   Ú&test_contraction_structure_Mul_and_Pow‚   s.     (&þþþ
r0   c               
   C   s  t dƒ} t dƒ}tdƒtdƒtdƒ}}}d| ||f  d|||f   }d |h|d tjh|f| ||f hid tjh|f|||f higi}t|ƒ}||ksQJ ‚d| ||f  d|||f   }d | ||f d |||f d  h|d tjh|f| ||f higi}	t|ƒ}
|
|	ksJ ‚d S )Nr   r   r   r   r!   r#   )r	   r   r   r'   r   )r   r   r   r   r!   Z	s_ii_jj_sr/   r.   Z	s_ii_jk_sZ
expected_2Zresult_2r   r   r   Ú%test_contraction_structure_Add_in_Powž   s(    þþ "ÿþr1   c                  C   sä   t dƒ} t dƒ}t dƒ}tdƒtdƒtdƒ}}}| ||f |||f |||f   }d |h||f| ||f hid |||f |||f  h|||f |||f  |f|||f hi|f|||f higigi}t|ƒ|kspJ ‚d S )Nr   r   Úzr   r   r!   r)   )r   r   r2   r   r   r!   Zii_jj_kkr/   r   r   r   Ú%test_contraction_structure_Pow_in_Pow¸   s"   $þþþþr3   c                  C   s  t dƒ} t dƒ}tdƒ}tdƒ}tdƒtdƒ}}tdƒ}t| || ƒƒ|hi fks,J ‚t| || || ƒƒ||hi fks?J ‚t| || ƒ||| ƒ ƒtƒ i fksTJ ‚t| ||| ƒƒ|hi fksdJ ‚t| ||| || ƒ||| ƒ ƒ|hi fks}J ‚t|| || ƒƒƒ|hi fksŽJ ‚t| || ƒƒd | || ƒhiks¡J ‚t| || ƒ||| ƒ ƒ|f| || ƒ||| ƒ hiksÁJ ‚t| || ƒ|| || ƒƒ ƒ|f| || ƒ|| || ƒƒ hiksåJ ‚t| || || ƒ||| ƒ ƒ|f| || || ƒ||| ƒ hiksJ ‚d S )Nr   Úgr   r   r   r   Úa)r   r	   r   r   r   r   r   )r   r4   r   r   r   r   r5   r   r   r   Útest_ufunc_supportÎ   s8   &* 2"&ÿÿÿ"ÿÿ$ÿr6   N)Z
sympy.corer   r   r   r   Zsympy.functionsr   Zsympy.testing.pytestr   Zsympy.tensor.indexedr   r	   Zsympy.tensor.index_methodsr
   r   r   r   r   r   r   r   r   r%   r&   r(   r+   r-   r0   r1   r3   r6   r   r   r   r   Ú<module>   s*    