§
    JŠtj±H  ã                   ó.   — d dl mZ  G d„ de¦  «        ZdS )é   )Úxrangec                   óB   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zdd„Zd	„ Z	d
„ Z
dS )ÚMatrixCalculusMethodsc                 ó(  ‡ — ˆ fd„}d}d}	  ||¦  «        ‰ j         k     rn|dz  }Œ||z  }t          t          d‰                      ‰                      |d¦  «        ¦  «        ¦  «        ¦  «        }|}‰ j        }‰ xj        |dz   z  c_        	 |d|z  z  }|j        }‰                      |¦  «        }	‰                      |¦  «        }
‰                      |¦  «        }‰  	                    d¦  «        }t          d|dz   ¦  «        D ]I}|‰  	                    ||z
  dz   ¦  «        d|z  |z
  dz   |z  z  z  }||z  }||z  }|
|z  }
|	d|z  |z  z  }	ŒJ‰                      |	|
¦  «        }t          |¦  «        D ]}||z  }Œ	 |‰ _        n# |‰ _        w xY w|dz  S )	a,  
        Exponential of a matrix using Pade approximants.

        See G. H. Golub, C. F. van Loan 'Matrix Computations',
        third Ed., page 572

        TODO:
         - find a good estimate for q
         - reduce the number of matrix multiplications to improve
           performance
        c                 ó¼   •— ‰                      d¦  «        dd| z  z
  z  ‰                     | ¦  «        dz  z  ‰                     d| z  ¦  «        dz  d| z  dz   z  z  S )Nr   é   é   )ÚmpfÚ	factorial)ÚpÚctxs    €úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/matrices/calculus.pyÚeps_padez1MatrixCalculusMethods._exp_pade.<locals>.eps_pade   sg   ø€ Ø—7’7˜1‘:”:  ! A¡#¡Ñ&Ø—’˜aÑ Ô  !Ñ#ñ$Ø%(§]¢]°1°Q±3Ñ%7Ô%7¸Ñ%:¸aÀ¹cÀA¹gÑ%FñHð Hó    é   é   r	   Úinfr   r   éÿÿÿÿ)ÚepsÚintÚmaxÚmagÚmnormÚprecÚdpsÚrowsÚeyer
   ÚrangeÚlu_solve_mat)r   Úar   ÚqÚextraqÚjÚextrar   ÚnaÚdenÚnumÚxÚcÚkÚcxÚfs   `               r   Ú	_exp_padezMatrixCalculusMethods._exp_pade   sä  ø€ ð	Hð 	Hð 	Hð 	Hð 	Hð ˆØˆð	Øˆx˜‰{Œ{˜SœWÒ$Ð$ØØ�‰FˆAð	ð 	
ˆV‰ˆÝ•�A�s—w’w˜sŸyšy¨¨5Ñ1Ô1Ñ2Ô2Ñ3Ô3Ñ4Ô4ˆØˆØŒxˆØˆŒ�5˜1‘9ÑˆŒð	Ø�!�Q‘$‘ˆAØ”ˆBØ—'’'˜"‘+”+ˆCØ—'’'˜"‘+”+ˆCØ—’˜‘”ˆAØ—’˜‘
”
ˆAÝ˜1˜a ™c‘]”]ð $ð $�Ø�S—W’W˜Q ™U Q™YÑ'Ô'¨!¨A©#°©'°A©+¸Ñ):Ñ;Ñ;�Ø�a‘C�Ø�q‘S�Ø�r‘	�Ø˜˜Q‘w ‘|Ñ#��Ø× Ò   cÑ*Ô*ˆAÝ˜1‘X”Xð ð �Ø�a‘C��ðð ˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOØ�‰sˆ
s   ÂC-F Æ	FÚtaylorc                 ó  — |dk    r`| j         }	 |                      |¦  «        }| xj         d|j        z  z  c_         |                      |¦  «        }|| _         n# || _         w xY w|S |                      |¦  «        }| j         }t	          t          d|                      |                      |d¦  «        ¦  «        ¦  «        ¦  «        }|t	          d|dz  z  ¦  «        z  }	 | xj         dd|z  z   z  c_         | j        
 }|d|z  z  }|}|dz  |z   }d}		 ||d|  	                    |	¦  «        z  z  z  }|                      |d¦  «        |k     rn||z  }|	dz  }	ŒDt          |¦  «        D ]}	||z  }Œ	 || _         n# || _         w xY w|dz  }|S )aþ  
        Computes the matrix exponential of a square matrix `A`, which is defined
        by the power series

        .. math ::

            \exp(A) = I + A + \frac{A^2}{2!} + \frac{A^3}{3!} + \ldots

        With method='taylor', the matrix exponential is computed
        using the Taylor series. With method='pade', Pade approximants
        are used instead.

        **Examples**

        Basic examples::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> expm(zeros(3))
            [1.0  0.0  0.0]
            [0.0  1.0  0.0]
            [0.0  0.0  1.0]
            >>> expm(eye(3))
            [2.71828182845905               0.0               0.0]
            [             0.0  2.71828182845905               0.0]
            [             0.0               0.0  2.71828182845905]
            >>> expm([[1,1,0],[1,0,1],[0,1,0]])
            [ 3.86814500615414  2.26812870852145  0.841130841230196]
            [ 2.26812870852145  2.44114713886289   1.42699786729125]
            [0.841130841230196  1.42699786729125    1.6000162976327]
            >>> expm([[1,1,0],[1,0,1],[0,1,0]], method='pade')
            [ 3.86814500615414  2.26812870852145  0.841130841230196]
            [ 2.26812870852145  2.44114713886289   1.42699786729125]
            [0.841130841230196  1.42699786729125    1.6000162976327]
            >>> expm([[1+j, 0], [1+j,1]])
            [(1.46869393991589 + 2.28735528717884j)                        0.0]
            [  (1.03776739863568 + 3.536943175722j)  (2.71828182845905 + 0.0j)]

        Matrices with large entries are allowed::

            >>> expm(matrix([[1,2],[2,3]])**25)
            [5.65024064048415e+2050488462815550  9.14228140091932e+2050488462815550]
            [9.14228140091932e+2050488462815550  1.47925220414035e+2050488462815551]

        The identity `\exp(A+B) = \exp(A) \exp(B)` does not hold for
        noncommuting matrices::

            >>> A = hilbert(3)
            >>> B = A + eye(3)
            >>> chop(mnorm(A*B - B*A))
            0.0
            >>> chop(mnorm(expm(A+B) - expm(A)*expm(B)))
            0.0
            >>> B = A + ones(3)
            >>> mnorm(A*B - B*A)
            1.8
            >>> mnorm(expm(A+B) - expm(A)*expm(B))
            42.0927851137247

        Úpader   r	   r   ç      à?é
   é    )r   Úmatrixr   r-   r   r   r   r   r   r
   r   )
r   ÚAÚmethodr   Úresr#   ÚtolÚTÚYr*   s
             r   ÚexpmzMatrixCalculusMethods.expm5   s¾  € ðz �VÒÐØ”8ˆDð Ø—J’J˜q‘M”M�Ø�”˜A˜aœf™HÑ$�”Ø—m’m AÑ&Ô&�à�”�ø˜4�”����ØˆJØ�JŠJ�q‰MŒMˆØŒxˆÝ•�A�s—w’w˜sŸyšy¨¨5Ñ1Ô1Ñ2Ô2Ñ3Ô3Ñ4Ô4ˆØ	�S��T˜3‘Y‘ÑÔÑˆð	ØˆHŒH˜˜Q˜q™S™Ñ ˆHŒHØ”7�(ˆCØ�!�Q‘$‘ˆAØˆAØ�1‘�q‘ˆAØˆAðØ�Q˜!˜CŸGšG A™JœJ™,Ñ'Ñ'�Ø—9’9˜Q Ñ&Ô&¨Ò,Ð,ØØ�Q‘�Ø�Q‘�ðõ ˜A‘Y”Yð ð �Ø�a‘C��ðð ˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOØ	ˆQ‰ˆØˆs   �AA Á	A"Ã BE7 Å7	F c                 ó6  — d|                       || j        z  ¦  «        |                       || j         z  ¦  «        z   z  }t          |                     | j        ¦  «                             t
          ¦  «        ¦  «        s|                     | j        ¦  «        }|S )aì  
        Gives the cosine of a square matrix `A`, defined in analogy
        with the matrix exponential.

        Examples::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> X = eye(3)
            >>> cosm(X)
            [0.54030230586814               0.0               0.0]
            [             0.0  0.54030230586814               0.0]
            [             0.0               0.0  0.54030230586814]
            >>> X = hilbert(3)
            >>> cosm(X)
            [ 0.424403834569555  -0.316643413047167  -0.221474945949293]
            [-0.316643413047167   0.820646708837824  -0.127183694770039]
            [-0.221474945949293  -0.127183694770039   0.909236687217541]
            >>> X = matrix([[1+j,-2],[0,-j]])
            >>> cosm(X)
            [(0.833730025131149 - 0.988897705762865j)  (1.07485840848393 - 0.17192140544213j)]
            [                                     0.0               (1.54308063481524 + 0.0j)]
        r1   ©r;   r#   ÚsumÚapplyÚimÚabsÚre©r   r5   ÚBs      r   ÚcosmzMatrixCalculusMethods.cosm“   sy   € ð0 �3—8’8˜A˜cœe™GÑ$Ô$ s§x¢x°°C´E°6±
Ñ';Ô';Ñ;Ñ<ˆÝ�1—7’7˜3œ6‘?”?×(Ò(­Ñ-Ô-Ñ.Ô.ð 	 Ø—’˜œ‘”ˆAØˆr   c                 ó6  — d|                       || j        z  ¦  «        |                       || j         z  ¦  «        z
  z  }t          |                     | j        ¦  «                             t
          ¦  «        ¦  «        s|                     | j        ¦  «        }|S )aì  
        Gives the sine of a square matrix `A`, defined in analogy
        with the matrix exponential.

        Examples::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> X = eye(3)
            >>> sinm(X)
            [0.841470984807897                0.0                0.0]
            [              0.0  0.841470984807897                0.0]
            [              0.0                0.0  0.841470984807897]
            >>> X = hilbert(3)
            >>> sinm(X)
            [0.711608512150994  0.339783913247439  0.220742837314741]
            [0.339783913247439  0.244113865695532  0.187231271174372]
            [0.220742837314741  0.187231271174372  0.155816730769635]
            >>> X = matrix([[1+j,-2],[0,-j]])
            >>> sinm(X)
            [(1.29845758141598 + 0.634963914784736j)  (-1.96751511930922 + 0.314700021761367j)]
            [                                    0.0                  (0.0 - 1.1752011936438j)]
        y       €      à¿r=   rC   s      r   ÚsinmzMatrixCalculusMethods.sinm°   sy   € ð0 �s—x’x  #¤%¡Ñ(Ô(¨3¯8ª8°A¸¼°v±JÑ+?Ô+?Ñ?Ñ@ˆÝ�1—7’7˜3œ6‘?”?×(Ò(­Ñ-Ô-Ñ.Ô.ð 	 Ø—’˜œ‘”ˆAØˆr   c                 ót   — | j         dz  }|                      ||z  |¦  «        |                      |¦  «        z  S )Ng333333Ó?)r#   ÚsqrtmÚsqrt)r   r5   Ú_may_rotateÚus       r   Ú
_sqrtm_rotz MatrixCalculusMethods._sqrtm_rotÍ   s6   € ð ŒE�3‰JˆØ�yŠy˜˜1™˜kÑ*Ô*¨S¯XªX°a©[¬[Ñ8Ð8r   r   c                 ó’  — |                       |¦  «        }|dz  |k    r|S | j        }|ru|                      |¦  «        }t          |                      |¦  «        ¦  «        d| j        z  k     r2|                      |¦  «        dk     r|                      ||dz
  ¦  «        S 	 | xj        dz  c_        | j        dz  }|}|dz  x}}d}		 |}
	 d||                      |¦  «        z   z  d||                      |¦  «        z   z  }}n,# t          $ r |r|                      ||dz
  ¦  «        }Y n‡‚ w xY w|  
                    ||
z
  d¦  «        }|  
                    |d¦  «        }|||z  k    rnI|r/|	dk    r)||d	z  k     s |                      ||dz
  ¦  «        || _        S |	dz  }	|	| j        k    r| j        ‚Œè|| _        n# || _        w xY w|dz  }|S )
a  
        Computes a square root of the square matrix `A`, i.e. returns
        a matrix `B = A^{1/2}` such that `B^2 = A`. The square root
        of a matrix, if it exists, is not unique.

        **Examples**

        Square roots of some simple matrices::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> sqrtm([[1,0], [0,1]])
            [1.0  0.0]
            [0.0  1.0]
            >>> sqrtm([[0,0], [0,0]])
            [0.0  0.0]
            [0.0  0.0]
            >>> sqrtm([[2,0],[0,1]])
            [1.4142135623731  0.0]
            [            0.0  1.0]
            >>> sqrtm([[1,1],[1,0]])
            [ (0.920442065259926 - 0.21728689675164j)  (0.568864481005783 + 0.351577584254143j)]
            [(0.568864481005783 + 0.351577584254143j)  (0.351577584254143 - 0.568864481005783j)]
            >>> sqrtm([[1,0],[0,1]])
            [1.0  0.0]
            [0.0  1.0]
            >>> sqrtm([[-1,0],[0,1]])
            [(0.0 - 1.0j)           0.0]
            [         0.0  (1.0 + 0.0j)]
            >>> sqrtm([[j,0],[0,j]])
            [(0.707106781186547 + 0.707106781186547j)                                       0.0]
            [                                     0.0  (0.707106781186547 + 0.707106781186547j)]

        A square root of a rotation matrix, giving the corresponding
        half-angle rotation matrix::

            >>> t1 = 0.75
            >>> t2 = t1 * 0.5
            >>> A1 = matrix([[cos(t1), -sin(t1)], [sin(t1), cos(t1)]])
            >>> A2 = matrix([[cos(t2), -sin(t2)], [sin(t2), cos(t2)]])
            >>> sqrtm(A1)
            [0.930507621912314  -0.366272529086048]
            [0.366272529086048   0.930507621912314]
            >>> A2
            [0.930507621912314  -0.366272529086048]
            [0.366272529086048   0.930507621912314]

        The identity `(A^2)^{1/2} = A` does not necessarily hold::

            >>> A = matrix([[4,1,4],[7,8,9],[10,2,11]])
            >>> sqrtm(A**2)
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]
            >>> sqrtm(A)**2
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]
            >>> A = matrix([[-4,1,4],[7,-8,9],[10,2,11]])
            >>> sqrtm(A**2)
            [  7.43715112194995  -0.324127569985474   1.8481718827526]
            [-0.251549715716942    9.32699765900402  2.48221180985147]
            [  4.11609388833616   0.775751877098258   13.017955697342]
            >>> chop(sqrtm(A)**2)
            [-4.0   1.0   4.0]
            [ 7.0  -8.0   9.0]
            [10.0   2.0  11.0]

        For some matrices, a square root does not exist::

            >>> sqrtm([[0,1], [0,0]])
            Traceback (most recent call last):
              ...
            ZeroDivisionError: matrix is numerically singular

        Two examples from the documentation for Matlab's ``sqrtm``::

            >>> mp.dps = 15; mp.pretty = True
            >>> sqrtm([[7,10],[15,22]])
            [1.56669890360128  1.74077655955698]
            [2.61116483933547  4.17786374293675]
            >>>
            >>> X = matrix(\
            ...   [[5,-4,1,0,0],
            ...   [-4,6,-4,1,0],
            ...   [1,-4,6,-4,1],
            ...   [0,1,-4,6,-4],
            ...   [0,0,1,-4,5]])
            >>> Y = matrix(\
            ...   [[2,-1,-0,-0,-0],
            ...   [-1,2,-1,0,-0],
            ...   [0,-1,2,-1,0],
            ...   [-0,0,-1,2,-1],
            ...   [-0,-0,-0,-1,2]])
            >>> mnorm(sqrtm(X) - Y)
            4.53155328326114e-19

        r3   é   r	   r2   é€   r1   r   é   gü©ñÒMbP?)r4   r   ÚdetrA   r@   r   rB   rM   ÚinverseÚZeroDivisionErrorr   ÚNoConvergence)r   r5   rK   r   Údr8   r:   ÚZÚIr*   ÚYprevÚmag1Úmag2s                r   rI   zMatrixCalculusMethods.sqrtmÓ   s  € ðF �JŠJ�q‰MŒMˆàˆQ‰3�!Š8ˆ8ØˆHØŒxˆØð 	8Ø—’˜‘
”
ˆAÝ�3—6’6˜!‘9”9‰~Œ~  3¤7¡
Ò*Ð*¨s¯vªv°a©y¬y¸1ª}¨}Ø—~’~ a¨°Q©Ñ7Ô7Ð7ð	ØˆHŒH˜‰NˆHŒHØ”'˜C‘-ˆCØˆAØ�q‘DˆLˆA�ØˆAð,Ø�ðØ  #§+¢+¨a¡.¤.Ñ 0Ñ1°3¸¸#¿+º+Àa¹.¼.Ñ8HÑ3I�q�A�AøÝ(ð ð ð Ø"ð ØŸNšN¨1¨k¸!©mÑ<Ô<˜Ø˜àðøøøð —y’y  5¡¨%Ñ0Ô0�Ø—y’y  EÑ*Ô*�Ø˜4 ™8Ò#Ð#ØØð < 1 q¢5 5°¸¸u¹Ò1DÐ1DØŸ>š>¨!¨[¸©]Ñ;Ô;ð
 ˆCŒHˆHð	 �Q‘�Ø�s”x’<�<ØÔ+Ð+ð%,ð( ˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOØ	ˆQ‰ˆØˆs7   Â (F6 Ã	6D  Ã?F6 Ä %D)Ä%F6 Ä'D)Ä)A%F6 ÆF6 Æ6	F?c                 óî  — |                       |¦  «        }| j        }	 | xj        dz  c_        | j        dz  }|dz  }|}d}	 |                      |¦  «        }|dz  }|                      ||z
  d¦  «        dk     rnŒ9||z
  x}}|dz  }	d}
	 |
dz  r	|	||
z  z  }	n|	||
z  z  }	||z  }|                      |d¦  «        |k     rn|
dz  }
|
| j        k    r| j        ‚ŒN	 || _        n# || _        w xY w|	d|z  z  }	|	S )a   
        Computes a logarithm of the square matrix `A`, i.e. returns
        a matrix `B = \log(A)` such that `\exp(B) = A`. The logarithm
        of a matrix, if it exists, is not unique.

        **Examples**

        Logarithms of some simple matrices::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> X = eye(3)
            >>> logm(X)
            [0.0  0.0  0.0]
            [0.0  0.0  0.0]
            [0.0  0.0  0.0]
            >>> logm(2*X)
            [0.693147180559945                0.0                0.0]
            [              0.0  0.693147180559945                0.0]
            [              0.0                0.0  0.693147180559945]
            >>> logm(expm(X))
            [1.0  0.0  0.0]
            [0.0  1.0  0.0]
            [0.0  0.0  1.0]

        A logarithm of a complex matrix::

            >>> X = matrix([[2+j, 1, 3], [1-j, 1-2*j, 1], [-4, -5, j]])
            >>> B = logm(X)
            >>> nprint(B)
            [ (0.808757 + 0.107759j)    (2.20752 + 0.202762j)   (1.07376 - 0.773874j)]
            [ (0.905709 - 0.107795j)  (0.0287395 - 0.824993j)  (0.111619 + 0.514272j)]
            [(-0.930151 + 0.399512j)   (-2.06266 - 0.674397j)  (0.791552 + 0.519839j)]
            >>> chop(expm(B))
            [(2.0 + 1.0j)           1.0           3.0]
            [(1.0 - 1.0j)  (1.0 - 2.0j)           1.0]
            [        -4.0          -5.0  (0.0 + 1.0j)]

        A matrix `X` close to the identity matrix, for which
        `\log(\exp(X)) = \exp(\log(X)) = X` holds::

            >>> X = eye(3) + hilbert(3)/4
            >>> X
            [              1.25             0.125  0.0833333333333333]
            [             0.125  1.08333333333333              0.0625]
            [0.0833333333333333            0.0625                1.05]
            >>> logm(expm(X))
            [              1.25             0.125  0.0833333333333333]
            [             0.125  1.08333333333333              0.0625]
            [0.0833333333333333            0.0625                1.05]
            >>> expm(logm(X))
            [              1.25             0.125  0.0833333333333333]
            [             0.125  1.08333333333333              0.0625]
            [0.0833333333333333            0.0625                1.05]

        A logarithm of a rotation matrix, giving back the angle of
        the rotation::

            >>> t = 3.7
            >>> A = matrix([[cos(t),sin(t)],[-sin(t),cos(t)]])
            >>> chop(logm(A))
            [             0.0  -2.58318530717959]
            [2.58318530717959                0.0]
            >>> (2*pi-t)
            2.58318530717959

        For some matrices, a logarithm does not exist::

            >>> logm([[1,0], [0,0]])
            Traceback (most recent call last):
              ...
            ZeroDivisionError: matrix is numerically singular

        Logarithm of a matrix with large entries::

            >>> logm(hilbert(3) * 10**20).apply(re)
            [ 45.5597513593433  1.27721006042799  0.317662687717978]
            [ 1.27721006042799  42.5222778973542   2.24003708791604]
            [0.317662687717978  2.24003708791604    42.395212822267]

        r2   rP   r3   r	   r   g      À?r   )r4   r   r   rI   r   rU   )r   r5   r   r8   rX   rD   Únr9   ÚXÚLr*   s              r   ÚlogmzMatrixCalculusMethods.logm^  sQ  € ðd �JŠJ�q‰MŒMˆØŒxˆð	ØˆHŒH˜‰NˆHŒHØ”'˜C‘-ˆCØ�1‘ˆAØˆAØˆAðØ—I’I˜a‘L”L�Ø�Q‘�Ø—9’9˜Q˜q™S %Ñ(Ô(¨5Ò0Ð0Øð	ð
 �a‘CˆKˆA�Ø�!‘ˆAØˆAð
,Ø�q‘5ð Ø˜˜Q™‘J�A�Aà˜˜Q™‘J�AØ�Q‘�Ø—9’9˜Q Ñ&Ô&¨Ò,Ð,ØØ�Q‘�Ø�s”x’<�<ØÔ+Ð+ð
,ð ð
 ˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOØ	ˆQ�‰T‰	ˆØˆs   žB:C! Ã!	C*c                 óè  — |                       |¦  «        }|                      |¦  «        }| j        }	 | xj        dz  c_        |                      |¦  «        r|t	          |¦  «        z  }nn|                      |dz  ¦  «        r+t	          |dz  ¦  «        }|                      |¦  «        |z  }n+|                      ||                      |¦  «        z  ¦  «        }|| _        n# || _        w xY w|dz  }|S )aF  
        Computes `A^r = \exp(A \log r)` for a matrix `A` and complex
        number `r`.

        **Examples**

        Powers and inverse powers of a matrix::

            >>> from mpmath import *
            >>> mp.dps = 15; mp.pretty = True
            >>> A = matrix([[4,1,4],[7,8,9],[10,2,11]])
            >>> powm(A, 2)
            [ 63.0  20.0   69.0]
            [174.0  89.0  199.0]
            [164.0  48.0  179.0]
            >>> chop(powm(powm(A, 4), 1/4.))
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]
            >>> powm(extraprec(20)(powm)(A, -4), -1/4.)
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]
            >>> chop(powm(powm(A, 1+0.5j), 1/(1+0.5j)))
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]
            >>> powm(extraprec(5)(powm)(A, -1.5), -1/(1.5))
            [ 4.0  1.0   4.0]
            [ 7.0  8.0   9.0]
            [10.0  2.0  11.0]

        A Fibonacci-generating matrix::

            >>> powm([[1,1],[1,0]], 10)
            [89.0  55.0]
            [55.0  34.0]
            >>> fib(10)
            55.0
            >>> powm([[1,1],[1,0]], 6.5)
            [(16.5166626964253 - 0.0121089837381789j)  (10.2078589271083 + 0.0195927472575932j)]
            [(10.2078589271083 + 0.0195927472575932j)  (6.30880376931698 - 0.0317017309957721j)]
            >>> (phi**6.5 - (1-phi)**6.5)/sqrt(5)
            (10.2078589271083 - 0.0195927472575932j)
            >>> powm([[1,1],[1,0]], 6.2)
            [ (14.3076953002666 - 0.008222855781077j)  (8.81733464837593 + 0.0133048601383712j)]
            [(8.81733464837593 + 0.0133048601383712j)  (5.49036065189071 - 0.0215277159194482j)]
            >>> (phi**6.2 - (1-phi)**6.2)/sqrt(5)
            (8.81733464837593 - 0.0133048601383712j)

        r2   r   r	   )r4   Úconvertr   Úisintr   rI   r;   r`   )r   r5   Úrr   ÚvÚys         r   ÚpowmzMatrixCalculusMethods.powmÐ  sá   € ðh �JŠJ�q‰MŒMˆØ�KŠK˜‰NŒNˆØŒxˆð
	ØˆHŒH˜‰NˆHŒHØ�yŠy˜‰|Œ|ð ,Ø�˜Q™œ‘K��Ø—’˜1˜Q™3‘”ð ,Ý˜˜!™‘H”H�Ø—I’I˜a‘L”L AÑ%��à—H’H˜Q˜sŸxšx¨™{œ{™]Ñ+Ô+�àˆCŒHˆHø�tˆCŒHˆOˆOˆOˆOØ	ˆQ‰ˆØˆs   ³B&C! Ã!	C*N)r.   )r   )Ú__name__Ú
__module__Ú__qualname__r-   r;   rE   rG   rM   rI   r`   rg   © r   r   r   r      sª   € € € € € ð,ð ,ð ,ð\\ð \ð \ð \ð|ð ð ð:ð ð ð:9ð 9ð 9ðIð Ið Ið IðVpð pð pðdCð Cð Cð Cð Cr   r   N)Úlibmp.backendr   Úobjectr   rk   r   r   ú<module>rn      sU   ðØ "Ð "Ð "Ð "Ð "Ð "ðNð Nð Nð Nð N˜Fñ Nô Nð Nð Nð Nr   