ó
$Oc           @   s½   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 f  d „  ƒ  YZ d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionNc         C   s   t  |  ƒ t  d g ƒ k S(   Ni    (   t   type(   t   p(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   is_list   s    c         C   s@   g  } |  } x- t  | ƒ r; | j t | ƒ ƒ | d } q W| S(   Ni    (   R   t   appendt   len(   t   Tt   dimsR   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   dims_of_list   s    c         C   sV   t  |  ƒ } t  | ƒ } | | k rR d | t | ƒ t | ƒ f GHt j d ƒ n  | S(   Ns!   %s: unequal dimensions %s and %s.i   (   R   t   strt   syst   exit(   t   At   Bt	   func_namet   dat   db(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   check_dims_equal&   s    c         C   sž   t  |  ƒ } t  | ƒ } | g  k r( g  S| d } xe | D]] } xT | D]L } | | k sd | | k rF d | t | ƒ t | ƒ f GHt j d ƒ qF qF Wq9 W| S(   Ni    s!   %s: unequal dimensions %s and %s.i   (   R   R	   R
   R   (   R   R   R   R   R   t   nt   it   j(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   check_dims_all_equal1   s    
c         C   sl   t  |  | d ƒ t |  ƒ s$ |  | Sg  } x; t d t |  ƒ ƒ D]$ } | j t |  | | | ƒ ƒ q@ W| S(   Ns   simple tensor addi    (   R   R   t   rangeR   R   t   add_aux(   R   R   t   CR   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR   @   s    "c         C   sl   t  |  | d ƒ t |  ƒ s$ |  | Sg  } x; t d t |  ƒ ƒ D]$ } | j t |  | | | ƒ ƒ q@ W| S(   Ns   simple tensor subtracti    (   R   R   R   R   R   t   sub_aux(   R   R   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR   J   s    "c         C   sE   g  } x8 t  d | ƒ D]' } | j |  | ƒ t |  | ƒ }  q W| S(   Ni    (   R   R   t   int(   R   t   rR   t   It   k(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   multidxT   s
    t   simple_tensorc           B   sÑ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   c         C   s   t  j | ƒ |  _ d  S(   N(   t   copyt   deepcopyt   elements(   t   selfR"   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __init___   s    c         C   sC   t  | ƒ r4 |  j } x | D] } | | } q W| S|  j | Sd  S(   N(   R   R"   (   R#   R   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __getitem__c   s    	c         C   st   t  | ƒ rc t  |  j ƒ rW |  j } x | d d !D] } | | } q2 W| | | d <qp | |  _ n | |  j | <d  S(   Ni    iÿÿÿÿ(   R   R"   (   R#   R   t   valueR   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __setitem__m   s    	c         C   s   t  |  j ƒ S(   N(   R   R"   (   R#   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR   z   s    c         C   s1   |  j  ƒ  } d } x | D] } | | 9} q W| S(   Ni   (   R   (   R#   R   t   prodt   dim(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   product_of_dims~   s
    c         C   s:   d } |  j  } x$ t | ƒ r5 | d 7} | d } q W| S(   Ni    i   (   R"   R   (   R#   t   orderR   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR+   †   s    	
c         C   s   t  t |  j | j ƒ ƒ S(   N(   R   R   R"   (   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __add__   s    c         C   s   t  t |  j | j ƒ ƒ S(   N(   R   R   R"   (   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __sub__“   s    c         C   s×   t  |  j | j d ƒ } |  j ƒ  } |  j ƒ  } | j ƒ  } | j ƒ  } t | | | ƒ } xu t d | ƒ D]d } t | | | ƒ }	 xI t d | ƒ D]8 }
 t |
 | | ƒ } |	 | } |  |	 | | | | <q“ Wqk W| S(   Ns   simple tensor muli    (   R   R"   R+   R*   t   make_zero_simple_tensorR   R   (   R   R   R   t   rat   pat   rbt   pbR   t   iaR   t   jbt   Jt   K(    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __mul__—   s      
c         C   s   |  | } | j  d ƒ S(   Ni    (   t
   Alt_or_Sym(   R   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __and__¨   s    
c         C   sË   |  | } | j  d ƒ } |  j ƒ  } | j ƒ  } | j ƒ  } | | } t | j d ƒ } t j | | ƒ d t j | ƒ t j | ƒ } x9 t d | ƒ D]( }	 t |	 | | ƒ }
 | |
 c | 9<q› W| S(   Ni   i    g      ð?(	   R8   R+   R*   R   R"   t   fact_mt   factR   R   (   R   R   R   R   t   lR   R   R   t   scaleR   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   __xor__¯   s    

1c         C   s   d  S(   N(    (   R#   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR	   Á   s    c   	      C   s‡   t  |  j d ƒ } |  j ƒ  } |  j ƒ  } t | | ƒ } xF t d | ƒ D]5 } t | | | ƒ } | j | ƒ } |  | | | <qJ W| S(   Ni    (   R   R"   R+   R*   R.   R   R   t   of(	   R#   t   sigmaR   R   R   R   R   R   R5   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   permuteÅ   s    c         C   s'  |  j  ƒ  } t |  j d ƒ } |  j ƒ  } t | | ƒ } t j | ƒ } xˆ | D]€ } | rw | j ƒ  d k rw d } n d } xP t d | ƒ D]? }	 t	 |	 | | ƒ }
 | j
 |
 ƒ } | |
 c | |  | 7<q WqP Wd t j | ƒ } x9 t d | ƒ D]( }	 t	 |	 | | ƒ }
 | |
 c | 9<q÷ W| S(   Ni    iÿÿÿÿi   g      ð?(   R+   R   R"   R*   R.   t   sni_gmt   get_elements_strt   sgnR   R   R?   R:   R;   (   R#   t   want_AltR   R   R   R   t   SrR@   t   signR   R   R5   R=   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR8   Ò   s$    	 c         C   s   |  j  d ƒ S(   Ni   (   R8   (   R#   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   Alté   s    c         C   s   |  j  d ƒ S(   Ni    (   R8   (   R#   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   Symí   s    c   
      C   s´   |  j  ƒ  } |  j ƒ  } | d k r+ |  j St |  j ƒ } d } xm t d | ƒ D]\ } t | | | ƒ } |  | } x- t d | ƒ D] }	 | | |	 | |	 9} q‚ W| | 7} qP W| S(   Ni    (   R+   R*   R"   R   R   R   (
   R#   t   vectorsR   R   R   t   sumR   R   R(   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR?   ú   s    
c         C   sh  |  j  ƒ  } |  j ƒ  } | d k r( |  St |  j ƒ } d } d } x# | D] } | d k rJ d } qJ qJ W| r~ | j ƒ  } n  t | | ƒ }	 xÔ t d | ƒ D]Ã }
 t |
 | | ƒ } d } x˜ t d | ƒ D]‡ } t | | | ƒ } |  | } xX t d | ƒ D]G } | | r*| | | | | | 9} qý | | | | | | 9} qý W| | 7} qË W| |	 | <q W|	 S(   Ni    i   g        (   R+   R*   R   R"   t   invR.   R   R   (   R#   t   Qt	   cov_flagsR   R   R   t   Pt   any_ctvt   ft   xformR   R5   RK   R   R   R(   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   cob  s4    

c         C   s)   |  j  ƒ  } d g | } |  j | | ƒ S(   Ni   (   R+   RS   (   R#   RM   R   RN   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   cov_cob2  s    c         C   s)   |  j  ƒ  } d g | } |  j | | ƒ S(   Ni    (   R+   RS   (   R#   RM   R   RN   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   ctv_cob7  s    s   %7.4fc         C   s  |  j  ƒ  } |  j ƒ  } | d k r3 | |  j GHn  | d k rq x* t d | d ƒ D] } | |  j | GqS WHHn—| d k rÑ xM t d | d ƒ D]8 } x. t d | d ƒ D] } | |  j | | Gq« WHq‘ WHn7| d k rWxs t d | d ƒ D]^ } xT t d | d ƒ D]? } x2 t d | d ƒ D] } | |  j | | | Gq%Wd GqWHqñ WHn± | d k r x– t d | d ƒ D] } xw t d | d ƒ D]b } xX t d | d ƒ D]C } x6 t d | d ƒ D]! } | |  j | | | | GqÅWd Gq«WHq‘WHqwWHn |  j GHd  S(   Ni    i   i   i   t    i   (   R+   R   R"   R   (   R#   t   formatR   R   R   R   R   R<   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   printf=  sD    c         C   s/   d G|  j  ƒ  GHd G|  j ƒ  GHd G|  j GHHd  S(   Ns   ordr = s   dims = s   body = (   R+   R   R"   (   R#   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   dumph  s       (   t   __name__t
   __module__R$   R%   R'   R   R*   R+   R,   R-   R7   R9   R>   R	   RA   R8   RH   RI   R?   RS   RT   RU   RX   RY   (    (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR   \   s,   		
																	!		+c         C   s¸   |  d k  r% d |  GHt  j d ƒ n |  d k r; t d ƒ S|  d k r^ d g | } t | ƒ St |  d | ƒ } g  } x0 t d | ƒ D] } | j t j | j ƒ ƒ q‡ Wt | ƒ Sd  S(   Ni    s+   make_zero_simple_tensor:  invalid order %d.i   (	   R
   R   R   R.   R   R   R    R!   R"   (   R   R   t   Zt   Z0t   Z1R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR.   o  s    	

c         C   s¸   |  d k  r% d |  GHt  j d ƒ n |  d k r; t d ƒ S|  d k r^ d g | } t | ƒ St |  d | ƒ } g  } x0 t d | ƒ D] } | j t j | j ƒ ƒ q‡ Wt | ƒ Sd  S(   Ni    s+   make_ones_simple_tensor:  invalid order %d.i   (	   R
   R   R   t   make_ones_simple_tensorR   R   R    R!   R"   (   R   R   R\   R]   R^   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyR_   €  s    	

c         C   s\   t  |  | ƒ } |  d k r' d | _ n1 x. t d | ƒ D] } | g |  } d | | <q7 W| S(   Ni    i   (   R.   R"   R   (   R   R   R   R   R   (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   make_I_simple_tensor‘  s    (   t
   __future__R    R    R
   RB   R:   t	   sackmat_mR   R   R   R   R   R   R   R   R.   R_   R`   (    (    (    sD   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackst_m.pyt   <module>   s"   		
			
	
	ÿ 		