
$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  d l Z d  d l Td   Z	 d   Z
 d   Z d   Z d   Z d	 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   Z" d   Z# d    Z$ d!   Z% d"   Z& d# d$  Z' d# d%  Z( d# d&  Z) d# d'  Z* d# d(  Z+ d)   Z, d* d+  Z- d* d,  Z. d-   Z/ d. d/  Z0 d. d0  Z1 d. d1  Z2 d2   Z3 d3   Z4 d4   Z5 d5   Z6 d6   Z7 d7   Z8 d8   Z9 d9   Z: d:   Z; d; f  d<     YZ< d* d=  Z= d# d>  Z> d# d?  Z? d# d@  Z@ dA   ZA dB   ZB dC   ZC dD   ZD d. dE  ZE dF   ZF dG   ZG dH   ZH dI   ZI dJ   ZJ d S(K   i(   t   divisionN(   t   *c         C   s
   t  |   S(   N(   t   sackmat(   t   list(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   m   s    c         C   s   t  |   t  d g  k S(   Ni    (   t   type(   t   p(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   sm_is_list"   s    c         C   sv   |  j    \ } } | j    \ } } | | k s< | | k rl t j d | | | | | f IJt j d  n  | | g S(   Ns$   %s: mismatched lengths %dx%d, %dx%d.i   (   t   dimst   syst   stderrt   exit(   t   At   Bt	   func_namet   anrt   anct   bnrt   bnc(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   check_same_matrix_dims&   s    
c         C   sp   |  j    \ } } | j    \ } } | | k r` t j d | | | | | f IJt j d  n  | | | | g S(   Ns(   %s: mismatched mul lengths %dx%d, %dx%d.i   (   R   R	   R
   R   (   R   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   check_mul_matrix_dims1   s    
c         C   sa   |  j    \ } } t |  } | | k rW t j d | | | | f IJt j d  n  | | g S(   Ns%   %s: mismatched mul lengths %dx%d, %d.i   (   R   t   lenR	   R
   R   (   R   t   vR   R   R   t   vn(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   check_matrix_times_vector_dims<   s    
g|=c         C   s   t  |  | d  \ } } xa t d |  D]P } xG t d |  D]6 } t |  | | | | |  } | | k r> d Sq> Wq( Wd S(   Ns   sackmat are_close_in_max_normi    i   (   R   t   ranget   abs(   R   R   t   tolt   nrt   nct   it   jt   d(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   are_close_in_max_normG   s     c         C   sM   d g | } g  } x- t  d |   D] } | j t j |   q# Wt |  S(   Ni    (   R   t   appendt   copyR   (   R   R   t   rowt   eltsR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   make_zero_matrixQ   s
    c         C   s;   t  |  |   } x% t d |   D] } d | | | <q W| S(   Ni    i   (   R&   R   (   t   nt   IR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   make_identity_matrixY   s    c         C   se   t  |  |   } d } xI t d |   D]8 } x/ t d |   D] } | d 7} | | | | <q; Wq% W| S(   Ni    i   (   R&   R   (   R'   R   t   kR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   make_seq_matrixe   s    
c         C   s   t  |  |   } d } xI t d |   D]8 } x/ t d |   D] } | d 7} | | | | <q; Wq% Wx. t d |   D] } | | | | | | <qq W| S(   Ni    i   (   R&   R   (   R'   R   R*   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   make_nseq_matrixo   s    
c         C   sY   g  } t  |  | d  \ } } x4 t d |  D]# } | j t |  j | |   q. W| S(   Nt   matrix_times_vectori    (   R   R   R"   t   vecpairt   elements(   R   R   t   AvR   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR-   {   s
    !c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R"   (   t   uR   R'   t   wR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecadd   s
    c         C   s>   t  |   } x+ t d |  D] } |  | c | | 7<q Wd  S(   Ni    (   R   R   (   R1   R   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecaddip   s    c         C   sM   t  |   } g  } x4 t d |  D]# } | j |  | | | |  q" W| S(   Ni    (   R   R   R"   (   R1   R   t   sR'   R2   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecsadd   s
    !c         C   sB   t  |   } x/ t d |  D] } |  | c | | | 7<q Wd  S(   Ni    (   R   R   (   R1   R   R5   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   vecsaddip   s    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R"   (   R1   R   R'   R2   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecsub   s
    c         C   sM   t  |   } g  } x4 t d |  D]# } | j |  | | | |  q" W| S(   Ni    (   R   R   R"   (   R1   R   R5   R'   R2   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecssub   s
    !c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R"   (   R1   R   R'   R2   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecmul   s
    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R"   (   R1   R   R'   R2   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecdiv   s
    c         C   sV   d } t  |   } x= t d |  D], } |  | } | t |  |  | | 7} q" W| S(   Ni    (   R   R   t   conj(   R1   R   R5   R'   R   t   ui(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecdot   s    
 c         C   sP   d } t  |   } x7 t d |  D]& } |  | } | |  | | | 7} q" W| S(   Ni    (   R   R   (   R1   R   R5   R'   R   R=   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR.      s    
c         C   s   t  |   } t  |  } t | |  } xQ t d |  D]@ } x7 t d |  D]& } |  | t | |  | | | <qM Wq7 W| S(   Ni    (   R   R&   R   R<   (   R1   R   R   R'   t   uvR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   outer   s    (c         C   s   t  |  |   S(   N(   R@   (   R1   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   outer1   s    c         C   s"   t  |  |   } t j t |   S(   N(   R>   t   matht   sqrtR   (   R1   t   uu(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecnorm   s    c         C   s   t  |  |   j S(   N(   R>   t   real(   R1   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   vecnormsq   s    c         C   s   t  |  d t |    S(   Ng      ?(   t   vecsmulRE   (   R1   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   normalize   s    c         C   s,   g  } x |  D] } | j  | |  q W| S(   N(   R"   (   R1   R5   R   t   ue(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyRH      s    c         C   s,   g  } x |  D] } | j  | |  q W| S(   N(   R"   (   R1   R    R   RJ   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vecsdiv   s    c         C   s   t  |  d t |    S(   Ng      ?(   RH   RE   (   R1   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vechat   s    c         C   s>   d } t  |   } x% t d |  D] } | |  | 7} q" W| S(   Ng        i    (   R   R   (   R1   t   sumR'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vec_contract  s
    s   %9.6fc         C   s   t  |  t  rt | d d } | d d } |  j } |  j } | d k  r] | | t |  f S| | t |  f Sn | |  Sd  S(   Nt   +s   %.6fjt   -g        (   t
   isinstancet   complexRF   t   imagR   (   t   ct   formatt   cpformatt   cnformatt   rrt   ii(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   scalar_to_string  s    		c         C   s<   t  |   } x( t d |  D] } t |  | |  Gq WHd  S(   Ni    (   R   R   RZ   (   R   RU   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   print_row_vector"  s    c         C   s;   t  |   } x( t d |  D] } t |  | |  Gq Wd  S(   Ni    (   R   R   RZ   (   R   RU   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   print_row_vector_no_cr(  s    c         C   s8   t  |   } x% t d |  D] } t |  |  q Wd  S(   Ni    (   R   R   R[   (   t   vsRU   t   nvR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   print_row_vectors-  s    c         C   s<   t  |   } x) t d |  D] } t |  | |  GHq Wd  S(   Ni    (   R   R   RZ   (   R   RU   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   print_column_vector3  s    c         C   s   g  } t  j  |   } | d d k r5 | d d !} n  t j d d |  } t j d d |  } | d k ro | St j d |  } x' | D] } | |  } | j |  q W| S(   Nis   
i    s   ^\s+t    s   \s+$s   \s+(   R#   t   ret   subt   splitR"   (   t	   orig_linet   elt_scannerR   t   linet   stringsR5   t   elt(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   row_vector_from_string9  s    RP   c         C   s   g  } | d k r t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xd } x | d k r | j   } qf Wt | |   } | g  k r t  j d IJt  j d  n  | d k r | j   n  | S(   NRP   t   rs   Couldn't open "s   " for read.i   Ra   s%   sackmat read_row_vector: empty input.(   R	   t   stdint   openR
   R   t   readlineRj   t   close(   Rf   t	   file_nameR   t   file_handleRg   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   read_row_vectorS  s&    c         C   s   g  } | d k r t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xx8 | j   } | d k r| Pn  |  |  } | j |  q` | d k r | j   n  | S(   NRP   Rk   s   Couldn't open "s   " for read.i   Ra   (   R	   Rl   Rm   R
   R   Rn   R"   Ro   (   Rf   Rp   R   Rq   Rg   Ri   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   read_column_vectorq  s$    c         C   s   d g | } d | |  <| S(   Ni    i   (    (   R   R'   t   ei(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   stdbv  s    
gHz>c         C   sP   t  |   } x7 t d |  D]& } t |  |  | k r d | g Sq Wd d g S(   Ni    i   (   R   R   R   (   R   R   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   find_leader_pos  s
    c         C   s   t  |   | k  r d Sd Sd  S(   Ni   i    (   R   (   t   xR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   tol_zero  s    c         C   s>   t  |   } x+ t d |  D] } t |  |  s d Sq Wd S(   Ni    i   (   R   R   Rx   (   R   R   R'   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vector_is_zero  s
    c         C   sM   t  |   } t |  |  } t | |  } t | t |  t |   } | S(   N(   R   R>   RH   t   float(   R1   t   aR'   t   uat   aat   u_par(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   projpar  s
    c         C   s"   t  |  |  } t |  |  } | S(   N(   R   R8   (   R1   R{   R~   t   u_perp(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   projperp  s    c         C   sy   t  |  d  } t  |   } t | |  } xG t d |  D]6 } x- t d |  D] } |  | | | | | <qQ Wq; W| S(   Ni    (   R   R&   R   (   t   vectorsR   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   paste_column_vectors  s    c         C   sy   t  |   } t  |  d  } t | |  } xG t d |  D]6 } x- t d |  D] } |  | | | | | <qQ Wq; W| S(   Ni    (   R   R&   R   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   paste_row_vectors  s    c         C   s    t  |  } | j   } | |  S(   N(   R   t   inv(   R   t   basisR   t   Ai(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   basis_coeffs  s    c         C   sN   t  | d  } g  } x1 t d |  D]  } | j t | | |    q& W| S(   Ni    (   R   R   R"   R>   (   R   R   R'   t   coeffsR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   basis_coeffs_on3  s
    c         C   s   t  | d  } d g | } t  |  } xQ t d |  D]@ } x7 t d |  D]& } | | c |  | | | | 7<qO Wq9 W| S(   Ni    g        (   R   R   (   R   R   R'   R   t   nvect   vecit   eltj(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   linear_combinationB  s    (c         C   s   d } t  |   } t t |  |    } t |  } d } | | k r d | } xg t d |  D]V } xM t d |  D]< } |  | }	 t |  |  }
 | | | c |	 |
 | 8<qu Wq_ Wd } n  | | g S(   Ng|=i   g       @i    i(   R   R   R>   R)   R   R<   (   R   R   R'   t   v_dot_vt   Qt   signt   two_over_v_dot_vR   R   t   vit   vjc(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   householder_vector_to_QT  s    

$	c         C   s   t  |   } | d k  r9 t j | d IJt j d  n  t  |  d  } | d k  rv t j | d IJt j d  n  xA |  D]9 } t  |  | k r} t j | d IJt j d  q} q} W| | g S(   Ni   s   :  no rows.i    s   :  empty row.s   :  ragged input.(   R   R	   R
   R   (   R   R   R   R   R$   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   validate_matrixf  s    R   c           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   Z d   Z d   Z d   Z d   Z d   Z d d  Z d d  Z d   Z d   Z d   Z  d    Z! d! d" d#  Z" d$ g d%  Z# d&   Z$ d'   Z% d! d(  Z& d)   Z' d*   Z( d+   Z) d,   Z* d-   Z+ d.   Z, d/ d0  Z- d1 d2  Z. d1 d3  Z/ d1 d4  Z0 d1 d5  Z1 d6   Z2 d7   Z3 d8   Z4 d9   Z5 d: d; d<  Z6 d=   Z7 RS(>   c         C   s   t  j |  |  _ d  S(   N(   R#   t   deepcopyR/   (   t   selfR/   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __init__y  s    c         C   s    t  |  j  t  |  j d  g S(   Ni    (   R   R/   (   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR   }  s    c         C   s?   |  j    \ } } | | k r; t j d IJt j d  n  | S(   Ns   Non-square input.i   (   R   R	   R
   R   (   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   square_dim  s
    c         C   s   t  |  j  S(   N(   R   R/   (   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   num_rows  s    c         C   s   t  |  j d  S(   Ni    (   R   R/   (   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   num_cols  s    c         C   s[   |  j    \ } } xB t d |  D]1 } x( t d |  D] } d |  j | | <q8 Wq" Wd  S(   Ni    g        (   R   R   R/   (   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   fill_zero_matrix  s    c         C   s   |  j    } xB t d |  D]1 } x( t d |  D] } d |  j | | <q2 Wq Wx( t d |  D] } d |  j | | <qa Wd  S(   Ni    g        g      ?(   R   R   R/   (   R   R'   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   fill_identity_matrix  s    c         C   s   |  j  | S(   N(   R/   (   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __getitem__  s    c         C   s   | |  j  | <d  S(   N(   R/   (   R   R   t   value(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __setitem__  s    c         C   s   t  |  | d  \ } } t | |  } xS t d |  D]B } x9 t d |  D]( } |  | | | | | | | | <qM Wq7 W| S(   Ns   sackmat addi    (   R   R&   R   (   R   R   R   R   t   CR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __add__  s    *c         C   s   t  |  | d  \ } } t | |  } xS t d |  D]B } x9 t d |  D]( } |  | | | | | | | | <qM Wq7 W| S(   Ns   sackmat subi    (   R   R&   R   (   R   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __sub__  s    *c      	   C   sn  d } y | j  } Wn d } n X| r t |  | d  \ } } } } t | |  } x t d |  D]p }	 xg t d |  D]V }
 d | |	 |
 <x? t d |  D]. } | |	 |
 c |  |	 | | | |
 7<q Wq| Wqf W| St |  r t |  |  S|  j   \ } } t | |  } xK t d |  D]: }	 x1 t d |  D]  }
 |  |	 |
 | | |	 |
 <q>Wq(W| Sd  S(   Ni   i    s   sackmat mul(   R/   R   R&   R   R   R-   R   (   R   R   t   B_is_matrixRw   R   R   R   R   R   R   R   R*   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __mul__  s,    
4"c         C   sp   |  j    \ } } t | |  } xH t d |  D]7 } x. t d |  D] } |  | | | | | <qG Wq1 W| S(   Ni    (   R   R&   R   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __neg__  s    c         C   s   t  | t  s8 t j d I| Id IJt j d  n  | d k  rZ |  j   } | } n) | d k rt |  |  j   St j |   } | } | d 8} x; | d k r | d @r | | } n  | d ?} | | } q W| S(   Ns   sackmat __pow__:  exponent <<s   >> is non-integer.i   i    (   RQ   t   intR	   R
   R   R   R#   R   (   R   R'   t   Apt   A2(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __pow__  s$    



c         C   s   t  |  |  S(   N(   t   kronecker_product(   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __rmod__  s    c         C   sv   t  |  | d  |  j   \ } } xM t d |  D]< } x3 t d |  D]" } | j | | |  j | | <qH Wq2 Wd  S(   Nt   copy_elements_fromi    (   R   R   R   R/   (   R   t   otherR   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR     s
    c         C   sv   t  |  | d  |  j   \ } } xM t d |  D]< } x3 t d |  D]" } |  j | | | j | | <qH Wq2 Wd  S(   Nt   copy_elements_toi    (   R   R   R   R/   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR     s
    c         C   sv   |  j    \ } } t | |  } xN t d |  D]= } x4 t d |  D]# } | |  j | | | | | <qG Wq1 W| S(   Ni    (   R   R&   R   R/   (   R   R5   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   smul  s    %c         C   sj   |  j    \ } } xQ t d |  D]@ } x7 t d |  D]& } | |  j | | |  j | | <q8 Wq" Wd  S(   Ni    (   R   R   R/   (   R   R5   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   smul_in_place
  s    c         C   s`   |  j    \ } } | d k s* | d k rQ t j d | | f IJt j d  n  |  j d d S(   Ni   s;   sackmat to_scalar: input dimensions must be 1x1; got %dx%d.i    (   R   R	   R
   R   R/   (   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   to_scalar  s    c         C   sr   |  j    \ } } t | |  } xJ t d |  D]9 } x0 t d |  D] } |  j | | | | | <qG Wq1 W| S(   Ni    (   R   R&   R   R/   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   transpose  s    !c         C   s   |  j    \ } } t | |  } xa t d |  D]P } xG t d |  D]6 } |  j | | } t |  j | |  | | | <qG Wq1 W| S(   Ni    (   R   R&   R   R/   R<   (   R   R   R   R   R   R   t   sij(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   conjugate_transpose#  s    'c         C   s   |  j    } xo t d |  D]^ } xU t d |  D]D } |  j | | } |  j | | |  j | | <| |  j | | <q2 Wq Wd  S(   Ni    (   R   R   R/   (   R   R'   R   R   t   temp(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   transpose_in_place3  s    c      	   C   s   |  j    } t | |  } x t d |  D]| } xs t d |  D]b } d | | | <xK t d |  D]: } | | | c t |  j | |  |  j | | 7<qe WqA Wq+ W| S(   Ni    g        (   R   R&   R   R<   R/   (   R   R'   R   R   R   R*   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   A_star_A;  s    @c         C   s   |  j    \ } } d } xu t d |  D]d } t |  j | d  } x6 t d |  D]% } | d t |  j | |  7} qU W| | d 7} q( W| S(   NRa   i    i   t    s   
(   R   R   t   strR/   (   R   R   R   t
   mat_stringR   t
   row_stringR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __str__E  s    #c         C   s
   |  j    S(   N(   R   (   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   __repr__O  s    s   %9.6fc         C   s   d | GH|  j  |  Hd  S(   Ns   %s:(   t   printf(   R   t   nameRU   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   printpR  s    	c         C   si   |  j    \ } } xP t d |  D]? } x5 t d |  D]$ } t |  j | | |  } | Gq8 WHq" Wd  S(   Ni    (   R   R   RZ   R/   (   R   RU   R   R   R   R   R5   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR   W  s    c         C   sN   |  j    \ } } g  } x/ t | |  D] } | j |  j | |  q( W| S(   N(   R   R   R"   R/   (   R   t   colidxt	   start_rowR   R   t   submatrix_columnt   src(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   get_submatrix_column`  s
    c         C   sU   |  j    \ } } d } x6 t | |  D]% } | | |  j | | <| d 7} q( Wd  S(   Ni    i   (   R   R   R/   (   R   R   R   t   columnR   R   R   t   dst(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   put_submatrix_columng  s    c         C   sL  |  j    \ } } | j    \ } } | | | } }	 t | |	  }
 x t d |  D] } | } x} t d |	  D]l } | | } d } xE t d |  D]4 } | | } | | j | | |  j | | 7} q W| |
 | | <qp WqT Wxa t d |  D]P } | | } x= t d |	  D], } | | } |
 j | | |  j | | <qWq Wd  S(   Ni    g        (   R   R&   R   R/   (   R   Rc   t   sub_start_rowt   self_start_colt   self_nrt   self_nct   sub_nrt   sub_nct   tmp_nrt   tmp_nct   tmpt   tmpit   subit   tmpjt   selfjR   t   subkt   selfkt   selfi(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   premultiply_by_submatrix  s$    

(

c         C   s@  |  j    \ } } | j    \ } } | | } } t | |  }	 x t d |  D] }
 |
 } xy t d |  D]h } | } d } xE t d |  D]4 } | | } | |  j | | | j | | 7} q W| |	 |
 | <ql WqP Wx] t d |  D]L }
 |
 } x= t d |  D], } | | } |	 j |
 | |  j | | <qWq Wd  S(   Ni    g        (   R   R&   R   R/   (   R   Rc   t   sub_start_colR   R   R   R   R   R   R   R   R   R   t   subjR   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt#   postmultiply_by_submatrix_transpose  s$    
(
gh㈵>g        c         C   s  |  j    \ } } | | } |  j | |  } t |  } t j |  }	 t | d t  rt | d  }
 d } |
 d k r | d |
 } n  | | } | d | } | d | } t |  t |  k r | } n | } |	 d c | 8<d g t |  } | | d <nM | d d k r'| } n | } |	 d c | 8<d g t |  } | | d <t |	  \ } } |  j	 | | |  t | t
  s| j	 | | d  n  | S(   Ni    g      ?g        (   R   R   RE   R#   RQ   RR   R   R   R   R   Rz   (   R   t   submxidxR   t   arg_QR   R   t   heightR1   t   normut   axist   absu0t   eithetat   eithetanormut   a0pt   a0nt   v0R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt    householder_UT_pass_on_submatrix  s<    

	

1i   c         C   sd   |  j    \ } } | } d } | | k r3 | } n  x* t d |  D] } | |  j |  9} qC W| S(   Ni   i    (   R   R   R   (   R   t   signlistR   R   t   num_HHR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   householder_UTY  s    	c         C   s   d } |  j    \ } } | } | | k r3 | } n  | j   |  j |  x* t d |  D] } | j | | |  qZ W| j   d  S(   Ngh㈵>i    (   R   R   R   R   R   R   (   R   R   t   RR   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   QR_decomp  s    	
c         C   s<   |  j    } | |  } | j   } |  | j   } | | g S(   N(   R   RC   R   (   R   t   Astart   ApAt   Pt   U(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   polar_decomp  s
    
c         C   s  |  j    } | } | | d } | d k  rV t j d | | | f IJt j d  n  |  j | | d  } t |  } | d d k r | } n  d g | } | | d <t | |  }	 t |	  \ }
 } |
 j d  |  j	 |
 | d |  |  j
 |
 | d  d  S(   Ni   sN   upper_hessenberg_pass_on_submatrix:  column index %d out of bounds in %d x %d.i    R   (   R   R	   R
   R   R   RE   R8   R   R   R   R   (   R   R   R   R   R   R   R1   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt"   upper_hessenberg_pass_on_submatrix  s&    

c   
      C   s   |  j    } | d k r' |  j d d S| d k r |  j d d } |  j d d } |  j d d } |  j d d } | | | | St |  j  } | j   } | } x) t d |  D] }	 | | |	 |	 9} q W| S(   Ni   i    i   (   R   R/   R   R   R   (
   R   R'   R{   t   bRT   R    R   R   t   rvR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   det  s    c         C   sE   |  j    } d } x, t d |  D] } | |  j | | 7} q" W| S(   Ng        i    (   R   R   R/   (   R   R'   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   trace  s
    c         C   sn   |  j    } d } xU t d |  D]D } x; t d |  D]* } | |  j | | |  j | | 7} q8 Wq" W| S(   Ng        i    (   R   R   R/   (   R   R'   RM   R   R*   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   trace_of_square  s    ,c         C   s   |  j    } | d @r7 t j d | IJt j d  n  | d k re |  j d d |  j d d d Sd } d } xp t d |  D]_ } |  j d |  } |  j d | d k r | | |  j d | | j   } n  | d } q W| S(   Ni   s7   sackmat pfaffian: input dimension must be even; got %d.i   i    g      ?g        i(   R   R	   R
   R   R/   R   t   pfaffian_hatt   pfaffian(   R   t   NR   RM   R*   t   Ahat(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR     s    

"&c   	      C   s   |  j    } t | d | d  } d } x t d |  D] } | | k r9 | | k r9 d } xR t d |  D]A } | | k rm | | k rm |  | | | | | <| d 7} qm qm W| d 7} q9 q9 W| S(   Ni   i    i   (   R   R&   R   (	   R   R   R*   R   R   t   dit   sit   djt   sj(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR   (  s    c         C   s   |  j    } t |  j  } d g | } x/ t d |  D] } | j | | | j | <q8 Wx) t d |  D] } d | | | | <qj W| S(   Ni    i   (   R   R   R/   R   (   R   R'   t   AIt   ZR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   augment_I7  s    gư>c   
      C   s  |  j    } | | } |  j   } | j   x t d |  D] } | | | } | d k ry t j d IJt j d  n/ t |  | k  r t j d IJt j d  n  x1 t d |  D]  } | | | | | | | <q Wq< W| d } x | d k ru| d } xb | | k rg| | | }	 x7 t d |  D]& } | | | c | | | |	 8<q0W| d 8} qW| d 8} q Wx2 t d |  D]! } | j | | | !| j | <qW| S(   Ni    s	   Singular.i   s   Nearly singular.i   (	   R   R  R   R   R	   R
   R   R   R/   (
   R   R   R'   t   twonR  R   R    R   t   i2t   mul(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR   D  s4    

"	

$gHz>c         C   s  |  j    \ } } d } d } x| | k  r| | k  r| } d } x | r | | k  r t |  j | |  | k r | | k r |  j | } |  j | |  j | <| |  j | <n  d } qH | d 7} qH W| s | d 7} q! n  |  j | | }	 t |	  | k rd |	 }
 x. t d |  D] } |  j | | c |
 9<qW|  j | | }	 x t | d |  D]p } |  j | | } |  j | } |  j | } x< t d |  D]+ } | | |	 | | | |  j | | <qWqeWn  | d 7} | d 7} q! Wd  S(   Ni    i   g      ?(   R   R   R/   R   (   R   R   R   R   t   top_rowt   left_colt	   pivot_rowt   pivot_successfulR   t   top_row_leadR   R   t   cur_rowt   current_row_leadt   crt   tr(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   row_reduce_belowx  s@    	

0
c         C   s  |  j    \ } } |  j |  x t d |  D] } x t | d |  D] } t |  j | |  \ } } | su Pn  |  j | | } |  j | | }	 t |	  | k  r qI n  t |	  t |  }
 x= t d |  D], } |  j | | c |  j | | |
 8<q WqI Wq/ Wd  S(   Ni    i   (   R   R  R   Rv   R/   R   Rz   (   R   R   R   R   R$   t   row2t   foundt   row2_leader_post   row2_leader_valt   row_clear_valR  R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   row_echelon_form  s    2c         C   s)   t  |  j  } | j |  | j |  S(   N(   R   R/   R  t   rank_rr(   R   R   t   Arr(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   rank  s    c         C   s   |  j    \ } } d } xq t d |  D]` } d } x> t d |  D]- } t |  j | |  | k rD d } PqD qD W| s( | d 7} q( q( W| S(   Ni    i   (   R   R   R   R/   (   R   R   R   R   R  R   t   row_is_zeroR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR    s    c         C   s  |  j    \ } } t |  j  } | j   | j   } | | } | d k rW d d g St | |  } d } d g | } d g | }	 x@ t d |  D]/ }
 t | |
  \ } } | r d | | <q q Wx8 t d |  D]' }
 | |
 r |
 |	 | <| d 7} q q Wx t d |  D] }
 d | |
 |	 |
 <x t d |  D]x } t | | |	 |
  r`q<n  t | |  \ } } | st	 j
 d IJt	 j d  n  | | |	 |
 | |
 | <q<WqW|  j | |  d | g S(   Ni    i   s!   Coding error in get_kernel_basis!(   R   R   R/   R  R  R&   R   Rv   Rx   R	   R
   R   t   check_kernel_basis(   R   R   R   RX   R  t   dimkert   kerbast   nfreet
   free_flagst   free_indicesR   R  t   dep_posR   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   kernel_basis  s>    




#c         C   s   x t  d |  D] } | | } t |  |  } t |  s t j d IJd GHH|  j d  d G| GH| j d  d t |  d GHt |  t j d  q q Wd  S(	   Ni    s   Coding error in kernel basis.t   Matrixs   dimker =t   Basiss   Product at row t   :i   (	   R   R-   Ry   R	   R
   R   R   R[   R   (   R   R  R  R   R   R0   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR  "  s    
 	
c         C   sN   |  j    \ } } g  } x/ t d |  D] } | j |  j | |  q( W| S(   Ni    (   R   R   R"   R/   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   get_column2  s
    c         C   sE   |  j    \ } } x, t d |  D] } | | |  j | | <q" Wd  S(   Ni    (   R   R   R/   (   R   R   R   R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   put_column:  s    g-q=i   c         C   s#  |  j    } d } t | |  } t |  } d } x d } d | }	 xx t d |  D]g }
 x^ t d |  D]M } |	 | |
 | } | |
 | c | 7<t |  } | | k rl | } ql ql WqV W| | k  r Pn  | | k r t j d | IJt j d  n  | d 7} | |  9} | | 9} q6 | S(   Ni    i   g        g      ?s/   sackmatc_m.exp:  max # iterations (%d) exceeded(   R   R&   R)   R   R   R	   R
   R   (   R   R   t   maxitsR'   R*   R   t   Akt   kfactt   worstt   recip_kfactR   R   t   incrijt	   absincrij(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   expB  s4    


c   
      C   s   |  j    } t j |   } t |  } d } d } x | | k  r | } | } | j   } | j   }	 | |	 } | | } | j d  | j d  t | |  r | S| d 7} q6 Wt j d | IJt j d  d  S(   Ni    id   g      ?i   s&   sackmatc.sqrt:  maxiter (%d) exceeded.(	   R   R#   R)   R   R   R!   R	   R
   R   (
   R   R'   t   Ykt   ZkR*   t   maxitert   Ykprevt   Zkprevt   Ykinvt   Zkinv(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyRC   u  s(      
 
 
(8   t   __name__t
   __module__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   R   R   R   R   R   R   R   R   R   R   R   R  R   R  R  R  R  R$  R  R(  R)  R1  RC   (    (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR   w  sl   																								
	
				/	%	"|2		-							41		I			3c         C   s   g  } d } | d k r$ t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xxd | j   } | d k r Pn  t | |   } | g  k r | d k r Pq qf | j |  | d 7} qf | d k r | j   n  t	 | d  t
 |  S(	   Ni    RP   Rk   s   Couldn't open "s   " for read.i   Ra   t   read_matrix(   R	   Rl   Rm   R
   R   Rn   Rj   R"   Ro   R   R   (   Rf   Rp   R   R   Rq   Rg   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR;    s.    c         C   s   |  j  |  d  S(   N(   R   (   R   RU   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   print_matrix  s    c         C   s  |  j    \ } } | d k r* t j } n? y t | d  } Wn) t j d | d IJt j d  n Xxx t d |  D]g } xQ t d |  D]@ } | d k r | j d  n  | j t |  j	 | |   q W| j d  qy W| d k r | j
   n  d  S(	   NRP   R2   s   Couldn't open "s   " for write.i   i    R   s   
(   R   R	   t   stdoutRm   R
   R   R   t   writeRZ   R/   Ro   (   R   Rp   RU   R   R   Rq   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   write_matrix  s"    "c         C   s  |  j    \ } } | d k r* t j } n? y t | d  } Wn) t j d | d IJt j d  n Xt |  j d d t  r.x!t	 d |  D] } x t	 d |  D]z } | d k r | j
 d  n  | j
 | |  j | | j  | j
 d  | j
 | |  j | | j  | j
 d  q Wq Wny xv t	 d |  D]e } x\ t	 d |  D]K } | d k rv| j
 d  n  | j
 | |  j | |  | j
 d  qTWq>W| d k r| j   n  d  S(	   NRP   R2   s   Couldn't open "s   " for write.i   i    R   s   
(   R   R	   R=  Rm   R
   R   RQ   R/   RR   R   R>  RF   RS   Ro   (   R   Rp   RU   R   R   Rq   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   write_matrix_as_column  s4    c   
      C   s   t  |  |  } t | d  } | j |  | d  } t j d |  } | j   d } xP t d |   D]? } x6 t d |  D]% }	 | | | j | |	 <| d 7} q} Wqg W| j   | S(   Nt   rbi   t   fi    i   (   R&   Rm   t   readt   arrayt   byteswapR   R/   Ro   (
   R   R   Rp   R   t   fpt   bytesR   R*   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   read_float_matrix_binary  s    

c   
      C   s   t  |  |  } t | d  } | j |  | d  } t j d |  } | j   d } xa t d |   D]P } xG t d |  D]6 }	 t | | | | d  | j | |	 <| d 7} q} Wqg W| j   | S(   NRA  i   RB  i    i   i   (	   R&   Rm   RC  RD  RE  R   RR   R/   Ro   (
   R   R   Rp   R   RF  RG  R   R*   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   read_fcomplex_matrix_binary*  s    
&
c         C   s   |  j    \ } } t | d  } t j d  } xI t d |  D]8 } x/ t d |  D] } | j |  j | |  qV Wq@ W| j   | j |  | j   d  S(   Nt   wbRB  i    (	   R   Rm   RD  R   R"   R/   RE  R>  Ro   (   R   Rp   R   R   RF  R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   write_float_matrix_binary8  s     
c         C   s   |  j    \ } } t | d  } t j d  } xg t d |  D]V } xM t d |  D]< } | j |  j | | j  | j |  j | | j  qV Wq@ W| j   | j	 |  | j
   d  S(   NRJ  RB  i    (   R   Rm   RD  R   R"   R/   RF   RS   RE  R>  Ro   (   R   Rp   R   R   RF  R   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   write_fcomplex_matrix_binaryD  s    #
c         C   s  |  j    \ } } t |  j  } x t d |  D] } | | } x t d |  D] } | | } t | |  }	 t | |  }
 t |
  | k  r t j d I| Id IJt j d  n  |	 |
 } t	 | | |  } qQ W| | | <q1 Wx t d |  D] } | | } t | |  } | | k  rLt j d I| Id IJt j d  n  d t
 j |  } t | |  } | | | <q W| S(   Ni    s   Row s7    of Q is zero (or near-zero) in sackmat_m.gram_schmidt.i   g      ?(   R   R   R/   R   R>   R   R	   R
   R   R9   RB   RC   RH   (   R   R   R   R   R   R   t   qjR*   t   qkt   numert   denomt   quott   dott
   norm_recip(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   gram_schmidt\  s4    



c         C   s   |  j    \ } } | j    \ } } | | } | | } t | |  } x t d |  D] }	 x t d |  D] }
 |	 | |
 } xj t d |  D]Y } xP t d |  D]? } | | | } |  j |	 | | j |
 | | j | | <q Wq Wqm WqW W| S(   Ni    (   R   R&   R   R/   (   R   R   R   R   R   R   t   cnrt   cncR   t   ait   bit   cit   ajt   bjt   cj(    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyR     s    

;c         C   sQ   |  g  k r g  S|  d } x0 t  d t |    D] } t | |  |  } q0 W| S(   Ni    i   (   R   R   R   (   t   mxlistR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt	   multikron  s    
c         C   sk   |  j    } t |  } g  } x@ t d |  D]/ } | | k rP | j |   q. | j |  q. Wt |  S(   Ni    (   R   R)   R   R"   R^  (   R   R   R*   R'   R(   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   multikroni  s    c   	      C   s   t  |   } t  |  } | | } d g | } d } xQ t d |  D]@ } x7 t d |  D]& } |  | | | | | <| d 7} q[ WqE W| S(   Ng        i    i   (   R   R   (	   R1   R   R   R'   t   mnR2   R*   R   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   vkron  s    
c         C   sQ   |  g  k r g  S|  d } x0 t  d t |    D] } t | |  |  } q0 W| S(   Ni    i   (   R   R   Ra  (   t   veclistR   R   (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt
   multivkron  s    
(K   t
   __future__R    R	   R#   Rb   RB   RD  t   typest
   cplxreal_mR   R   R   R   R   R!   R&   R)   R+   R,   R-   R3   R4   R6   R7   R8   R9   R:   R;   R>   R.   R@   RA   RE   RG   RI   RH   RK   RL   RN   RZ   R[   R\   R_   R`   Rj   Rr   Rs   Ru   Rv   Rx   Ry   R   R   R   R   R   R   R   R   R   R   R;  R<  R?  R@  RH  RI  RK  RL  RT  R   R^  R_  Ra  Rc  (    (    (    sF   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmatc_m.pyt   <module>   s   
					
			
																	
	
	
															0					    6"6				%				