U
    L?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"t‚t| | ƒtƒ i fks<t‚t| | ƒtƒ i fksVt‚t| | ƒtƒ i fkspt‚d S )Nzx y)r   r   ÚsetÚAssertionError)ÚxÚy© r   úW/var/www/html/venv/lib/python3.8/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:t‚t| ||f ƒ||hi fksZt‚d S )Nr   ÚiÚj©r	   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:t‚t| ||ƒƒ||hi fksXt‚t| |ƒ| ƒtƒ i fksvt‚d S )NÚfr   r   )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sFt‚t| | ||  ƒ||hi fksjt‚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>-   ó    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sHt‚t| | |||f  ƒ|hi fksnt‚d S r   r   r   r   r   r   Útest_scalar_broadcast0   s
    &r!   c                  C   sD  t dƒ} t dƒ}t dƒ}tdƒtdƒtdƒ  }}}t| | d||   ƒ|hi fksZt‚t|| d|||f  | |   ƒ|hi fksŒt‚t|| d| | |||f | |     ƒ|hi fksÆt‚t|| | | |||f d   ƒ|hi fksøt‚t|| | | | |  || |||f | |     ƒ|hi fks@t‚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sZt‚tt| ||f |||f ƒƒ|||hi fksŠt‚tt|||f || |||f | |   ƒƒ||hi fksÈt‚ttd| | ƒƒtt| | ƒƒksît‚tt| | dƒƒ|hi fkst‚d S )Nr   r   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sPt‚t| | ||  ƒd | | || hiks|t‚t| | ||  ƒ|f| | ||  hiks¬t‚td| | ||   ƒd tjh|f| | ||  hiksèt‚t| | ||  ƒd | | ||  hikst‚d S )Nr   r   r   r   r%   )r	   r   r   r   r   ÚOner   r   r   r   Ú$test_get_contraction_structure_basicS   s    .,0ÿÿ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s†t‚||||f  | |  }d | | h|f||||f  h||||f  |gi}	t|ƒ|	ksât‚d S )Nr   r   r"   r   r   r#   ©r	   r   r   r   )
r   r   r"   r   r   r#   Z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s‚t‚| ||f |||f  }t|ƒd | ||f |||f  h| ||f |||f  |f| ||f higiksît‚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sZt‚| | ||  ||  }t|ƒd |hiksˆt‚| | | | ||  ||   }t|ƒ|f|hiksÀt‚| | | | || | |    }t|ƒ|f|hiksøt‚| | ||  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¸t‚d S r-   )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‚   s6      (    þþþ
r1   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s¢t‚d| ||f  d|||f   }d | ||f d |||f d  h|d tjh|f| ||f higi}	t|ƒ}
|
|	kst‚d S )Nr   r   r   r   r#   r%   )r	   r   r   r)   r   r   )r   r   r   r   r#   Z	s_ii_jj_sr0   r/   Z	s_ii_jk_sZ
expected_2Zresult_2r   r   r   Ú%test_contraction_structure_Add_in_Powž   s,      þþ   ÿþr2   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sàt‚d S )Nr   r   Úzr   r   r#   r+   )r   r   r3   r   r   r#   Zii_jj_kkr0   r   r   r   Ú%test_contraction_structure_Pow_in_Pow¸   s&    $  þþþþr4   c                  C   s$  t dƒ} t dƒ}tdƒ}tdƒ}tdƒtdƒ }}tdƒ}t| || ƒƒ|hi fksXt‚t| || || ƒƒ||hi fks~t‚t| || ƒ||| ƒ ƒtƒ i fks¨t‚t| ||| ƒƒ|hi fksÈt‚t| ||| || ƒ||| ƒ ƒ|hi fksút‚t|| || ƒƒƒ|hi fkst‚t| || ƒƒd | || ƒhiksFt‚t| || ƒ||| ƒ ƒ|f| || ƒ||| ƒ hiksˆt‚t| || ƒ|| || ƒƒ ƒ|f| || ƒ|| || ƒƒ hiksÒt‚t| || || ƒ||| ƒ ƒ|f| || || ƒ||| ƒ hiks t‚d S )Nr   Úgr   r   r   r   Úa)r   r	   r   r   r   r   r   r   )r   r5   r   r   r   r   r6   r   r   r   Útest_ufunc_supportÎ   s8    &* 2$(ÿÿ
ÿ"ÿ
ÿ$ÿr7   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.   r1   r2   r4   r7   r   r   r   r   Ú<module>   s(   