
IUc           @   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 dK   ZK d S(L   i(   t   divisionN(   t   *c         C   sQ   t  j d |  d  } t |  d k rC t | d  t | d  St |   Sd  S(   Nt   /i   i    i   (   t   ret   splitt   lent   float(   t   st   pieces(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   frac_reader   s    c         C   s
   t  |   S(   N(   t   sackmat(   t   list(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   m&   s    c         C   s   t  |   t  d g  k S(   Ni    (   t   type(   t   p(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   check_mul_matrix_dims8   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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   are_close_in_max_normC   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"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   make_zero_matrixM   s
    c         C   s;   t  |  |   } x% t d |   D] } d | | | <q W| S(   Ni    i   (   R*   R   (   t   nt   IR"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   make_identity_matrixU   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!   R   t   kR"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   make_seq_matrixa   s    
c         C   s   t  |  |  } d } xg t d |   D]V } xM t d |  D]< } | d 7} | | k ri | | | | <q; | | | | <q; Wq% W| S(   Ni    i   (   R*   R   (   R    R!   R   R.   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   make_nseq_matrixk   s    
c         C   s\   g  } |  j    \ } } t |  } x1 t d |  D]  } | j t |  | |   q4 W| S(   Ni    (   R   R   R   R&   t   vecdot(   R   t   vt   AvR    R!   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   matrix_times_vectorx   s    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R&   (   t   uR2   R+   t   wR"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecadd   s
    c         C   s>   t  |   } x+ t d |  D] } |  | c | | 7<q Wd  S(   Ni    (   R   R   (   R5   R2   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecaddip   s    c         C   sM   t  |   } g  } x4 t d |  D]# } | j |  | | | |  q" W| S(   Ni    (   R   R   R&   (   R5   R2   R   R+   R6   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecsadd   s
    !c         C   sB   t  |   } x/ t d |  D] } |  | c | | | 7<q Wd  S(   Ni    (   R   R   (   R5   R2   R   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   vecsaddip   s    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R&   (   R5   R2   R+   R6   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecsub   s
    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R&   (   R5   R2   R+   R6   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecmul   s
    c         C   sI   t  |   } g  } x0 t d |  D] } | j |  | | |  q" W| S(   Ni    (   R   R   R&   (   R5   R2   R+   R6   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecdiv   s
    c         C   sM   t  |   } g  } x4 t d |  D]# } | j |  | | | |  q" W| S(   Ni    (   R   R   R&   (   R5   R2   R   R+   R6   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecssub   s
    !c         C   sF   d } t  |   } x- t d |  D] } | |  | | | 7} q" W| S(   Ni    (   R   R   (   R5   R2   R   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR1      s
    c         C   sP   d } t  |   } x7 t d |  D]& } |  | } | |  | | | 7} q" W| S(   Ni    (   R   R   (   R5   R2   R   R+   R"   t   ui(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecpair   s    
c         C   sy   t  |   } t  |  } t | |  } xK t d |  D]: } x1 t d |  D]  } |  | | | | | | <qM Wq7 W| S(   Ni    (   R   R*   R   (   R5   R2   R   R+   t   uvR"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   outer   s    "c         C   s   t  |  |   S(   N(   RB   (   R5   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   outer1   s    c         C   s   t  j t |  |    S(   N(   t   matht   sqrtR1   (   R5   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecnorm   s    c         C   s   t  |  |   S(   N(   R1   (   R5   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   vecnormsq   s    c         C   s   t  |  d t |    S(   Ng      ?(   t   vecsmulRF   (   R5   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   normalize   s    c         C   s,   g  } x |  D] } | j  | |  q W| S(   N(   R&   (   R5   R   R2   t   ue(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyRH      s    c         C   s,   g  } x |  D] } | j  | |  q W| S(   N(   R&   (   R5   R$   R2   RJ   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vecsdiv   s    c         C   s   t  |  d t |    S(   Ng      ?(   RH   RF   (   R5   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vechat   s    c         C   s>   d } t  |   } x% t d |  D] } | |  | 7} q" W| S(   Ng        i    (   R   R   (   R5   t   sumR+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vec_contract   s
    s   %11.7fc         C   s7   t  |   } x# t d |  D] } | |  | Gq WHd  S(   Ni    (   R   R   (   R2   t   formatR+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   print_row_vector  s    c         C   s6   t  |   } x# t d |  D] } | |  | Gq Wd  S(   Ni    (   R   R   (   R2   RO   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   print_row_vector_no_cr  s    c         C   s8   t  |   } x% t d |  D] } t |  |  q Wd  S(   Ni    (   R   R   RP   (   t   vsRO   t   nvR#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   print_row_vectors  s    c         C   s7   t  |   } x$ t d |  D] } | |  | GHq Wd  S(   Ni    (   R   R   (   R2   RO   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   print_column_vector  s    c         C   s   | d k r t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xt |   } x? t d |  D]. } | |  | } | j |  | j d  qs W| d k r | j   n  d  S(   Nt   -R6   s   Couldn't open "s   " for write.i   i    s   
(	   R   t   stdoutt   openR   R   R   R   t   writet   close(   R2   t	   file_nameRO   t   file_handleR+   R"   t   string(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   print_column_vector_to_file  s    c         C   s   g  } t  j  |   } | d k r% | S| d d k rE | d d !} n  t j d d |  } t j d d |  } | d k r | St j d |  } x' | D] } | |  } | j |  q W| S(   Nt    is   
i    s   ^\s+s   \s+$s   \s+(   R'   R   t   subR   R&   (   t	   orig_linet   elt_scannerR2   t   linet   stringsR   t   elt(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   row_vector_from_string4  s    RV   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(   NRV   t   rs   Couldn't open "s   " for read.i   R_   s%   sackmat read_row_vector: empty input.(   R   t   stdinRX   R   R   t   readlineRf   RZ   (   Rb   R[   R2   R\   Rc   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   read_row_vectorP  s$    c         C   s  g  } | d k r t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xx | j   } | d k r| Pn  t j d d |  } t j d d |  } t j d	 d |  } t j d
 |  r q` n  |  |  } | j	 |  q` | d k r| j
   n  | S(   NRV   Rg   s   Couldn't open "s   " for read.i   R_   s   #.*s   ^\s+s   \s+$s   ^$(   R   Rh   RX   R   R   Ri   R   R`   t   matchR&   RZ   (   Rb   R[   R2   R\   Rc   Re   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   read_column_vectorm  s,    c         C   s   d g | } d | |  <| S(   Ni    i   (    (   R"   R+   t   ei(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   (   R2   R   R+   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   find_leader_pos  s
    c         C   s   t  |   | k  r d Sd Sd  S(   Ni   i    (   R   (   t   xR   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   tol_zero  s    c         C   s>   t  |   } x+ t d |  D] } t |  |  s d Sq Wd S(   Ni    i   (   R   R   Rq   (   R2   R   R+   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   vector_is_zero  s
    c         C   sM   t  |   } t |  |  } t | |  } t | t |  t |   } | S(   N(   R   R1   RH   R   (   R5   t   aR+   t   uat   aat   u_par(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   projpar  s
    c         C   s"   t  |  |  } t |  |  } | S(   N(   Rw   R;   (   R5   Rs   Rv   t   u_perp(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   (   Rz   R    R!   R   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   paste_row_vectors  s    c         C   s    t  |  } | j   } | |  S(   N(   R{   t   inv(   R2   t   basisR   t   Ai(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   basis_coeffs"  s    c         C   sN   t  | d  } g  } x1 t d |  D]  } | j t | | |    q& W| S(   Ni    (   R   R   R&   R1   (   R2   R~   R+   t   coeffsR#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   basis_coeffs_on8  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   Rz   R+   R2   t   nvect   vecit   eltj(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   linear_combinationG  s    (c   	      C   s   d } t  |   } t |  |   } t |  } d } | | k r d | } xU t d |  D]D } x; t d |  D]* } | | | c |  | |  | | 8<qo WqY Wd } n  | | g S(   Ng|=i   g       @i    i(   R   R1   R-   R   (	   R2   R   R+   t   v_dot_vt   Qt   signt   two_over_v_dot_vR"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   householder_vector_to_QW  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(   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   validate_matrixg  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   Z d d  Z d d  Z d   Z d   Z  d    Z! d!   Z" d" d# d$  Z# d%   Z$ d&   Z% d'   Z& d" d(  Z' d" d)  Z( d*   Z) d+   Z* d,   Z+ d-   Z, d.   Z- d/   Z. d0 d1  Z/ d2 d3  Z0 d2 d4  Z1 d2 d5  Z2 d2 d6  Z3 d7   Z4 d8   Z5 d9   Z6 d:   Z7 d; d< d=  Z8 d>   Z9 RS(?   c         C   s   t  j |  |  _ d  S(   N(   R'   t   deepcopyt   elements(   t   selfR   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __init__z  s    c         C   s    t  |  j  t  |  j d  g S(   Ni    (   R   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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!   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt
   square_dim  s
    c         C   s   t  |  j  S(   N(   R   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   num_rows  s    c         C   s   t  |  j d  S(   Ni    (   R   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   fill_identity_matrix  s    c         C   s   |  j  | S(   N(   R   (   R   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __getitem__  s    c         C   s   | |  j  | <d  S(   N(   R   (   R   R"   t   value(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R4   R   (   R   R   t   B_is_matrixRp   R   R   R   R   R   R"   R#   R.   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __neg__  s    c         C   s   t  |  t  d  k rA t j d I| Id IJt j d  n  | d k  rc |  j   } | } n) | d k r} |  |  j   St j |   } | } | d 8} x; | d k r | d @r | | } n  | d ?} | | } q W| S(   Ni   s   sackmat __pow__:  exponent <<s   >> is non-integer.i    (   R   R   R   R   R}   R'   R   (   R   R+   t   Apt   A2(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __pow__  s$    



c         C   s   t  |  |  S(   N(   t   kronecker_product(   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __mod__  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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R   R    R!   R   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R   R    R!   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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!   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   transpose  s    !c         C   sx   |  j    \ } } t | |  } xP t d |  D]? } x6 t d |  D]% } t |  j | |  | | | <qG Wq1 W| S(   Ni    (   R   R*   R   t   conjR   (   R   R    R!   R   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   conjugate_transpose!  s    'c         C   s
   |  j    S(   N(   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   star(  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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   transpose_in_place2  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.   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(   NR_   i    i   t    s   
(   R   R   t   strR   (   R   R    R!   t
   mat_stringR"   t
   row_stringR#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __str__D  s    #c         C   s
   |  j    S(   N(   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   __repr__N  s    s   %11.7fc         C   s   d | GH|  j  |  Hd  S(   Ns   %s:(   t   printf(   R   t   nameRO   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   printpQ  s    	c   
      C   s+  |  j    \ } } t |  j d d t  r | d d } | d d } x t d |  D] } xv t d |  D]e } |  j | | j } |  j | | j }	 |	 d k  r | | t |	  f Gqn | | t |	  f Gqn WHqX WnH xE t d |  D]4 } x* t d |  D] } | |  j | | GqWHq Wd  S(   Ni    t   +s   %.6fjRV   g        (   R   t
   isinstanceR   t   complexR   t   realt   imagR   (
   R   RO   R    R!   t   cpformatt   cnformatR"   R#   t   rrt   ii(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR   V  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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   get_submatrix_columnv  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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   put_submatrix_column}  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   R`   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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R`   t   sub_start_colR   R   R   R   R   R   R   R   R   R   t   subjR   R   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt#   postmultiply_by_submatrix_transpose  s$    
(
gh㈵>g        c         C   s   |  j    \ } } | | } |  j | |  } t j t | |   } | d d k r` | } n  d g | }	 | |	 d <t | |	  }
 t |
  \ } } |  j | | |  t | t	  s | j | | d  n  | S(   Ni    (
   R   R   RD   RE   R1   R;   R   R   R   R   (   R   t   submxidxR   t   arg_QR    R!   t   heightR5   t   v0R2   t   axisR   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt    householder_UT_pass_on_submatrix  s    


c         C   sd   |  j    \ } } | } | | k r- | } n  d } x* t d |  D] } | |  j |  9} qC W| S(   Ni   i    (   R   R   R   (   R   R    R!   t   num_HHR   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   householder_UT  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"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   QR_decompN  s    	
c         C   s<   |  j    } | |  } | j   } |  | j   } | | g S(   N(   R   RE   R}   (   R   t   Astart   ApAt   Pt   U(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   polar_decompe  s
    
c         C   sV  |  j    \ } } | | k r; t j d IJt j d  n  | | d } | d k  sm | | k sm | | k r t j d | | | f IJt j d  n  | d k  r d  S|  j | | d  } t j t | |   } | d d k r | } n  d g | } | | d <t | |  }	 t	 |	  \ }
 } |  j
 |
 | d |  |  j |
 | d  d  S(   Ns<   upper_hessenberg_pass_on_submatrix:  I can't handle nr > nc.i   i    sN   upper_hessenberg_pass_on_submatrix:  column index %d out of bounds in %d x %d.(   R   R   R   R   R   RD   RE   R1   R;   R   R   R   (   R   R   R   R    R!   R   R5   R   R2   R   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt"   upper_hessenberg_pass_on_submatrixw  s,    $

c         C   s[   |  j    \ } } | } | | k r- | } n  x' t d |  D] } |  j | |  q= Wd  S(   Ni    (   R   R   R   (   R   R   R    R!   t   num_UHR"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   to_upper_hessenberg_form  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+   Rs   t   bt   cR$   R   R   t   rvR"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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.   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt	   augment_I	  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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR}     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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   row_reduce_belowJ  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   Ro   R   R   R   (   R   R   R    R!   R(   t   row2t   foundt   row2_leader_post   row2_leader_valt   row_clear_valR  R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   Ro   Rq   R   R   R   t   check_kernel_basis(   R   R    R!   R   R  t   dimkert   kerbast   nfreet
   free_flagst   free_indicesR"   R  t   dep_posR#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R4   Rr   R   R   R   R   RP   R   (   R   R  R  R"   R2   R3   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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!   R2   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt
   get_column  s
    c         C   sE   |  j    \ } } x, t d |  D] } | | |  j | | <q" Wd  S(   Ni    (   R   R   R   (   R   R#   R2   R    R!   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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.   sackmat_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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   exp/  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%   sackmat.sqrt:  maxiter (%d) exceeded.(	   R   R'   R-   R}   R   R%   R   R   R   (
   R   R+   t   Ykt   ZkR.   t   maxitert   Ykprevt   Zkprevt   Ykinvt   Zkinv(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyRE   b  s(      
 
 
(:   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  R$  R%  R-  RE   (    (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR
   x  sp   																							
		
	
	 		.	%	"*	2		1								41		I			#3c         C   sQ  g  } d } | d k r$ t  j } n? y t | d  } Wn) t  j d | d IJt  j d  n Xx | j   } | d k r Pn  t j d d |  } t j d	 d |  } t j d
 d |  } t j d |  r qf n  t	 | |   } | g  k r| d k rPqqf | j
 |  | d 7} qf | d k r:| j   n  t | d  t |  S(   Ni    RV   Rg   s   Couldn't open "s   " for read.i   R_   s   #.*s   ^\s+s   \s+$s   ^$t   read_matrix(   R   Rh   RX   R   R   Ri   R   R`   Rk   Rf   R&   RZ   R   R
   (   Rb   R[   R   R   R\   Rc   R2   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR7  z  s8    c         C   s   |  j  |  d  S(   N(   R   (   R   RO   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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 Xt |  j d d t  rxst	 d |  D] } x t	 d |  D] } | d k r | j
 d  n  |  j | | j } |  j | | j }	 | j
 | |  |	 d k  r7| j
 d  | j
 | t |	   n$ | j
 d  | j
 | t |	   | j
 d	  q W| j
 d
  q Wny xv t	 d |  D]e } xO t	 d |  D]> } | d k r| j
 d  n  | j
 | |  j | |  qW| j
 d
  qW| d k r| j   n  d  S(   NRV   R6   s   Couldn't open "s   " for write.i   i    R   R   R#   s   
(   R   R   RW   RX   R   R   R   R   R   R   RY   R   R   R   RZ   (
   R   R[   RO   R    R!   R\   R"   R#   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(	   NRV   R6   s   Couldn't open "s   " for write.i   i    R   s   
(   R   R   RW   RX   R   R   R   R   R   R   RY   R   R   RZ   (   R   R[   RO   R    R!   R\   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   write_matrix_as_column  s2    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*   RX   t   readt   arrayt   byteswapR   R   RZ   (
   R    R!   R[   R   t   fpt   bytesR   R.   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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(   NR;  i   R<  i    i   i   (	   R*   RX   R=  R>  R?  R   R   R   RZ   (
   R    R!   R[   R   R@  RA  R   R.   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   wbR<  i    (	   R   RX   R>  R   R&   R   R?  RY   RZ   (   R   R[   R    R!   R@  R   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   write_float_matrix_binary*  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(   NRD  R<  i    (   R   RX   R>  R   R&   R   R   R   R?  RY   RZ   (   R   R[   R    R!   R@  R   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   write_fcomplex_matrix_binary6  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   R1   R   R   R   R   R>   RD   RE   RH   (   R   R   R    R!   R   R#   t   qjR.   t   qkt   numert   denomt   quott   dott
   norm_recip(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   gram_schmidtN  s0    



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(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyR   q  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"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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&   RX  (   R   R"   R.   R+   R,   R   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   (	   R5   R2   R   R+   t   mnR6   R.   R"   R#   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_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   R[  (   t   veclistR   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt
   multivkron  s    
c         C   s  t  |  j  } | j   } t |  } d } d } x| d 7} d } xL t d |  D]; } x2 t d |  D]! } | t | j | |  7} ql WqV Wt | d d  r Pn  | | k r t j d | IJt j	 d  n  xct d |  D]R}	 xIt |	 d |  D]4}
 | j |	 |	 | j |
 |
 } | j |	 |
 | j |
 |	 } t |  r[qn  d | | } d } | d k  rd	 } n  | t |  t
 j | d d  } d t
 j | d d  } | | } t |  } | | |	 |	 <| | |	 |
 <| | |
 |	 <| | |
 |
 <| j   } | | | } | | } qWq Wq6 d g | } x) t d |  D] } | | | | | <q_W| | g S(
   Ni   i    i   g        i   g-q=sG   Jacobi eigensolver: max iterations (%d) exceeded.  Non-symmetric input?g      ?i(   R
   R   R   R-   R   R   Rq   R   R   R   RD   RE   R   (   R   t   LR+   t   VR0  t   iterRM   R"   R#   R   t   qRI  RJ  t   thetat
   sign_thetat   tR   R   R   t   PTt   eigenvalues(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   rs_eigensystem  sV    
#  	%

(L   t
   __future__R    R   R'   R   RD   R>  t   typest
   cplxreal_mR	   R   R   R   R   R%   R*   R-   R/   R0   R4   R7   R8   R9   R:   R;   R<   R=   R>   R1   R@   RB   RC   RF   RG   RI   RH   RK   RL   RN   RP   RQ   RT   RU   R^   Rf   Rj   Rl   Rn   Ro   Rq   Rr   Rw   Ry   R{   R|   R   R   R   R   R   R
   R7  R8  R9  R:  RB  RC  RE  RF  RN  R   RX  RY  R[  R]  Rg  (    (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/python/sackmat_m.pyt   <module>   s   
				
	
			
																				
	
									&						0					    ,/5				#					$