§
    ¢éUgŒ   ã                   ó®  — d Z ddlZddlZddlZddlmZmZmZmZ ddl	m
Z
mZmZmZmZmZ ddlZddlZddlmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddl Zddl!m"Z" d	„ Z# G d
„ d¦  «        Z$ G d„ d¦  «        Z% G d„ d¦  «        Z& G d„ d¦  «        Z' G d„ d¦  «        Z( G d„ d¦  «        Z)d„ Z*d„ Z+d„ Z, G d„ d¦  «        Z- G d„ d¦  «        Z.dS )z, Test functions for linalg.matfuncs module

é    N)ÚarrayÚidentityÚdotÚsqrt)Úassert_array_almost_equalÚassert_allcloseÚassert_Úassert_array_lessÚassert_array_equalÚassert_warns)
ÚfunmÚsignmÚlogmÚsqrtmÚfractional_matrix_powerÚexpmÚexpm_frechetÚ	expm_condÚnormÚ
khatri_rao)Ú_matfuncs_inv_ssq)Úpick_pade_structure)Úminimizec                  óT   — t          j        g d¢g d¢g d¢g d¢gt          ¬¦  «        } | S )aW  
    Return the test matrix from Experiment (1) of [1]_.

    References
    ----------
    .. [1] Awad H. Al-Mohy and Nicholas J. Higham (2012)
           "Improved Inverse Scaling and Squaring Algorithms
           for the Matrix Logarithm."
           SIAM Journal on Scientific Computing, 34 (4). C152-C169.
           ISSN 1095-7197

    )g3d’‘³Ô?ç     LÝ@r   r   )r   gRal!ÈAÓ?r   r   )r   r   g“©‚QI�Ô?r   )r   r   r   gÝ^Ò­Ó?©Údtype)Únpr   Úfloat)ÚAs    ú_/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_matfuncs.pyÚ%_get_al_mohy_higham_2012_experiment_1r"      sO   € õ 	ŒØ"Ð"Ð"Ø Ð Ð ØÐÐØÐÐð	õ &+ð		,ñ 	,ô 	,€Að
 €Hó    c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú	TestSignMc                 ó¼   — t          g d¢g d¢g d¢g d¢g d¢g¦  «        }t          g d¢g d¢g d¢g d	¢g d
¢g¦  «        }t          |¦  «        }t          ||¦  «         d S )N©g333333=@g3333338Àg     `Q@gfffffæH@g      @©gffffff"ÀgÍÌÌÌÌÌ@ç      2ÀgÍÌÌÌÌÌ0Àç       À©g      $Àg      @g      4Àr)   r*   ©g333333#Àg333333#@g     €9ÀgÍÌÌÌÌÌ.Àr*   ©gš™™™™™#@g333333Àg      2@g3333332@ç       @)gŸ´ªæ'@çÀ'RqöÀgÂ�¤ƒy¢.@g�¼eÚ@§5@r/   )g@¢èÈ½Àç˜UÐ›'êß?gëò9¹×\Àgçœ+Œ%¿Àr0   )gR¸…ëQÀçìQ¸…ëá?g®Gáz®ÀgffffffÀr1   )g¥×¨#Àç´w?Ã®ð?gÀk#àeÀgC,î�NÀr2   )gà®ý¡@ç4Õ2ì
à¿gÆF(£@gcÔsÚ@@r3   )r   r   r   )ÚselfÚaÚcrÚrs       r!   Ú	test_nilszTestSignM.test_nils1   s¬   € ÝÐ0Ð0Ð0Ø0Ð0Ð0Ø.Ð.Ð.Ø1Ð1Ð1Ø-Ð-Ð-ð	/ñ 0ô 0ˆõ
 ÐQÐQÐQØOÐOÐOØ0Ð0Ð0ØOÐOÐOØNÐNÐNð	Pñ Qô Qˆõ
 �!‰HŒHˆÝ! ! BÑ'Ô'Ð'Ð'Ð'r#   c                 ó^   — t          g d¢g d¢g d¢g d¢g¦  «        }t          |d¬¦  «         d S )N)ç        é   r   r   )r;   r   r;   r   ©r   r   r   r;   )r   r   r;   r   F©Údisp©r   r   ©r4   r5   s     r!   Útest_defective1zTestSignM.test_defective1?   sA   € Ý�;�;�;˜y˜y˜y¨¨¨°9°9°9Ð=Ñ>Ô>ˆÝˆa�eÐÑÔÐÐÐr#   c                 ód   — t          g d¢g d¢g d¢g d¢g d¢f¦  «        }t          |d¬¦  «         d S )Nr'   r(   r+   r,   r-   Fr=   r?   r@   s     r!   Útest_defective2zTestSignM.test_defective2D   s^   € ÝØ&Ð&Ð&Ø'Ð'Ð'Ø(Ð(Ð(Ø'Ð'Ð'Ø$Ð$Ð$ð&ñ 'ô 'ˆõ 	ˆa�eÐÑÔÐÐÐr#   c           
      óp   — t          g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |d¬	¦  «         d S )
N©r*   ç      9@r:   r:   r:   r:   r:   ©r:   ç      Àç      $@ç      @rJ   rJ   r:   ©r:   r:   r.   ç      .@rJ   rJ   r:   ©r:   r:   r:   r:   rL   rJ   r:   ©r:   r:   r:   r:   rJ   rI   r:   ©r:   r:   r:   r:   r:   r*   rF   ©r:   r:   r:   r:   r:   r:   rH   Fr=   r?   r@   s     r!   Útest_defective3zTestSignM.test_defective3N   sp   € ÝÐ1Ð1Ð1Ø1Ð1Ð1Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø1Ð1Ð1Ø0Ð0Ð0ð2ñ 3ô 3ˆõ 	ˆa�eÐÑÔÐÐÐr#   N)Ú__name__Ú
__module__Ú__qualname__r8   rA   rC   rQ   © r#   r!   r%   r%   /   sP   € € € € € ð(ð (ð (ðð ð ð
ð ð ðð ð ð ð r#   r%   c            	       óþ   — 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ej                             d¬¦  «        ej                             deeej        eej        g¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestLogMc           
      ó    — t          g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          d¦  «        d	z  d
z   |z
  }t          |d¬¦  «         d S )NrE   rG   rK   rM   rN   rO   rP   é   gÍÌÌÌÌÌ@y                Fr=   )r   r   r   )r4   r5   Úms      r!   r8   zTestLogM.test_nils\   s‰   € ÝÐ1Ð1Ð1Ø1Ð1Ð1Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø1Ð1Ð1Ø0Ð0Ð0ð2ñ 3ô 3ˆõ �a‰[Œ[˜‰_˜RÑ Ñ"ˆÝˆQ�UÐÑÔÐÐÐr#   c                 óŽ   — t          ¦   «         }t          |d¬¦  «        \  }}t          |¦  «        }t          ||dd¬¦  «         d S )NFr=   g-Cëâ6
?ç›+¡†›„=©ÚrtolÚatol)r"   r   r   r   )r4   r    ÚA_logmÚinfoÚA_round_trips        r!   Ú*test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmh   sM   € õ 2Ñ3Ô3ˆÝ˜A EÐ*Ñ*Ô*‰ˆ�Ý˜F‘|”|ˆÝ˜ a¨d¸Ð?Ñ?Ô?Ð?Ð?Ð?r#   c                 óÊ   — t          ¦   «         }t          |t          j        d¬¦  «        \  }}t	          |¦  «        }t          t          j        ||dd¬¦  «         ¦  «         d S )NFr=   çñhãˆµøä>r\   r]   )r"   r   r   Úlogr   r	   Úallclose)r4   r    Ú
A_funm_logra   rb   s        r!   Ú.test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logp   sa   € õ 2Ñ3Ô3ˆÝ ¥2¤6°Ð6Ñ6Ô6Ñˆ
�DÝ˜JÑ'Ô'ˆÝ•B”K ¨a°dÀÐGÑGÔGÐGÑHÔHÐHÐHÐHr#   c                 ó  — t           j                             d¦  «         t          dd¦  «        D ]Õ}t           j                             ||¦  «        }t          j        ddd¦  «        D ]œ}||z  }t           j                             |¦  «        }d|› d|› �}t          |d	¬
¦  «        \  }}| 	                    |¦  «        }	t          |	|¦  «         t          |d	¬
¦  «        \  }
}t          |
¦  «        }t          |||¬¦  «         Œ�ŒÖd S )NéÒ  r;   é   éüÿÿÿé   é	   zM:z eivals:Fr=   )Úerr_msg)r   ÚrandomÚseedÚrangeÚrandnÚlogspaceÚlinalgÚeigvalsr   r   r   r   r   )r4   ÚnÚ
M_unscaledÚscaleÚMÚWrp   ÚM_sqrtmra   ÚM_sqrtm_round_tripÚM_logmÚM_logm_round_trips               r!   Útest_round_trip_random_floatz%TestLogM.test_round_trip_random_floatx   s#  € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	Gð 	GˆAÝœŸš¨¨AÑ.Ô.ˆJÝœ R¨¨AÑ.Ô.ð Gð G�Ø Ñ&�õ ”I×%Ò% aÑ(Ô(�Ø-˜qÐ-Ð-¨!Ð-Ð-�õ !& a¨eÐ 4Ñ 4Ô 4‘�˜Ø%,§[¢[°Ñ%9Ô%9Ð"ÝÐ 2°AÑ6Ô6Ð6õ  $ A¨EÐ2Ñ2Ô2‘�˜Ý$(¨¡L¤LÐ!ÝÐ 1°1¸gÐFÑFÔFÐFÐFðGð	Gð 	Gr#   c                 ó”  — t           j                             d¦  «         t          dd¦  «        D ]—}t           j                             ||¦  «        dt           j                             ||¦  «        z  z   }t          j        ddd¦  «        D ]:}||z  }t          |d¬	¦  «        \  }}t          |¦  «        }t          ||¦  «         Œ;Œ˜d S ©
Nrk   r;   rl   ù              ð?rm   rn   ro   Fr=   )	r   rq   rr   rs   rt   ru   r   r   r   )r4   rx   ry   rz   r{   r   ra   ÚM_round_trips           r!   Útest_round_trip_random_complexz'TestLogM.test_round_trip_random_complex�   sÆ   € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	1ð 	1ˆAÝœŸš¨¨AÑ.Ô.°µb´i·o²oÀaÈÑ6KÔ6KÑ1KÑKˆJÝœ R¨¨AÑ.Ô.ð 1ð 1�Ø Ñ&�Ý# A¨EÐ2Ñ2Ô2‘�˜Ý# F™|œ|�Ý ¨aÑ0Ô0Ð0Ð0ð	1ð	1ð 	1r#   c                 óš  — d}ddgddggddgddggddgddggddgddggfD �](}t           j                             |¦  «        }t          t	          d„ |D ¦   «         ¦  «         ¦  «         t          j        |t          ¬¦  «        }t          |d¬	¦  «        \  }}t          |j	        j
        |v¦  «         t          j        |t          ¬¦  «        }t          |d¬	¦  «        \  }}t          |j	        j
        |v ¦  «         t          j        |t          ¬¦  «         }t          |d¬	¦  «        \  }}t          |j	        j
        |v ¦  «         �Œ*d S )
N©ÚFÚDÚGr;   r   é   é   c              3   ó:   K  — | ]}|j         p
|j        d k     V — ŒdS ©r   N©ÚimagÚreal©Ú.0Úws     r!   ú	<genexpr>zFTestLogM.test_logm_type_preservation_and_conversion.<locals>.<genexpr>¤   ó/   è è € Ð<Ð<°Q˜AœFÐ0 a¤f¨q¢jÐ<Ð<Ð<Ð<Ð<Ð<r#   r   Fr=   )Úscipyrv   rw   r	   Úanyr   r   r   r   r   ÚcharÚcomplex)r4   Úcomplex_dtype_charsÚmatrix_as_listr|   r    r`   ra   s          r!   Ú*test_logm_type_preservation_and_conversionz3TestLogM.test_logm_type_preservation_and_conversion—   sy  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð	"ð 	>ñ 	>ˆNõ ”×$Ò$ ^Ñ4Ô4ˆAÝ�Ð<Ð<¸!Ð<Ñ<Ô<Ñ<Ô<Ð<Ñ=Ô=Ð=õ ”˜­uÐ5Ñ5Ô5ˆAÝ ¨Ð.Ñ.Ô.‰LˆF�DÝ�F”LÔ%Ð-@Ð@ÑAÔAÐAõ ”˜­wÐ7Ñ7Ô7ˆAÝ ¨Ð.Ñ.Ô.‰LˆF�DÝ�F”LÔ%Ð)<Ð<Ñ=Ô=Ð=õ ”˜.µÐ6Ñ6Ô6Ð6ˆAÝ ¨Ð.Ñ.Ô.‰LˆF�DÝ�F”LÔ%Ð)<Ð<Ñ=Ô=Ð=Ñ=ð/	>ð 	>r#   c                 óä  — g d¢g d¢g d¢g}t           t          fD ]Õ}t          j        ||¬¦  «        }t          j                             |¦  «        }t          dt          j        |j	        ¦  «         
                    ¦   «         k     ¦  «         t          |d¬¦  «        \  }}t          t          j        |j        t          j        ¦  «        ¦  «         t          t!          |¦  «        |¦  «         ŒÖd S )N)r;   r;   rŒ   )rŒ   r;   r;   )r;   rŒ   r;   r   ç{®Gáz„?Fr=   )r   r›   r   r   r˜   rv   rw   r	   Úabsoluter‘   Úsumr   Ú
issubdtyper   Úinexactr   r   )r4   r{   ÚdtÚXr•   ÚYra   s          r!   Útest_complex_spectrum_real_logmz(TestLogM.test_complex_spectrum_real_logmµ   sÚ   € ð ˆYˆY˜	˜	˜	 9 9 9Ð-ˆÝ��.ð 	(ð 	(ˆBÝ”˜ "Ð%Ñ%Ô%ˆAÝ”×$Ò$ QÑ'Ô'ˆAÝ�D�2œ; q¤vÑ.Ô.×2Ò2Ñ4Ô4Ò4Ñ5Ô5Ð5Ý˜1 5Ð)Ñ)Ô)‰GˆAˆtÝ•B”M !¤'­2¬:Ñ6Ô6Ñ7Ô7Ð7Ý�D ™GœG QÑ'Ô'Ð'Ð'ð	(ð 	(r#   c                 ó  — ddgddggddgddggfD ]n}t           t          fD ]]}t          j        ||¬¦  «        }t	          |d¬¦  «        \  }}t          t          j        |j        t          j        ¦  «        ¦  «         Œ^Œod S )Nr;   r   éÿÿÿÿr   Fr=   )	r   r›   r   r   r   r	   r£   r   Úcomplexfloating)r4   r{   r¥   r    r`   ra   s         r!   Útest_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrumÁ   s¬   € ð �Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð ð"ð 	Ið 	IˆAõ �W�nð Ið I�Ý”H˜Q bÐ)Ñ)Ô)�Ý# A¨EÐ2Ñ2Ô2‘�˜Ý�œ f¤lµBÔ4FÑGÔGÑHÔHÐHÐHðIð	Ið 	Ir#   c                 ó$  — t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }||j        ||j        fD ]J}t          j        }t          |t          |d¬¦  «        \  }}t          |¦  «        }t          ||d¬¦  «         ŒKd S )Nr   r„   r;   Fr=   r\   ©r_   )
r   r   ÚasarrayÚTr   ÚLogmExactlySingularWarningr   r   r   r   )r4   r    ÚBr{   Úexpected_warningÚLra   ÚEs           r!   Útest_exactly_singularzTestLogM.test_exactly_singularÌ   s¦   € ÝŒH�q˜!�f˜r 2˜hÐ'Ñ(Ô(ˆÝŒJ˜˜A˜  A Ð'Ñ(Ô(ˆØ�A”C˜˜AœC�ð 	.ð 	.ˆAÝ0ÔKÐÝ"Ð#3µT¸1À5ÐIÑIÔI‰GˆAˆtÝ�Q‘”ˆAÝ˜A˜q uÐ-Ñ-Ô-Ð-Ð-ð		.ð 	.r#   c                 óÂ   — t          j        dgg¦  «        }t          j        }t	          |t
          |d¬¦  «        \  }}t          |¦  «        }t          ||d¬¦  «         d S )Ng0Žä.ÿ++Fr=   r\   r®   )r   r   r   ÚLogmNearlySingularWarningr   r   r   r   )r4   r{   r³   r´   ra   rµ   s         r!   Útest_nearly_singularzTestLogM.test_nearly_singularÕ   s_   € ÝŒH�v�h�ZÑ Ô ˆÝ,ÔFÐÝÐ/µ°q¸uÐEÑEÔE‰ˆˆ4Ý�‰GŒGˆÝ˜˜1 5Ð)Ñ)Ô)Ð)Ð)Ð)r#   c                 óª  — ddgddgg}dt           j        dz  gt           j         dz  dgg}t          t          |¦  «        |d¬¦  «         t          t	          |¦  «        |d¬¦  «         ddgdd	gg}dt           j        z  dz  d
t           j        z  gdd	t           j        z  dz  gg}t          t          |¦  «        |d¬¦  «         t          t	          |¦  «        |d¬¦  «         ddgdd	gg}dt           j        z  dz  dgdd	t           j        z  dz  gg}t          t          |¦  «        |d¬¦  «         t          t	          |¦  «        |d¬¦  «         d S )Nr   r;   rª   ç      à?r\   r®   r„   rn   y       €      ð¿rŒ   )r   Úpir   r   r   )r4   rµ   r´   s      r!   Ú&test_opposite_sign_complex_eigenvaluesz/TestLogM.test_opposite_sign_complex_eigenvaluesÜ   sV  € à�ˆV�b˜!�WÐˆØ•”�s‘ˆ^�rœu˜f S™j¨!˜_Ð-ˆÝ�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ý�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ø�!ˆW�q˜#�hÐˆØ•”‰h�s‰l˜A�bœe™GÐ$ q¨#­b¬e©)°C©-Ð&8Ð9ˆÝ�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ý�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ø�!ˆW�q˜#�hÐˆØ•”‰h�s‰l˜AÐ  C­¬¡I¨c¡MÐ 2Ð3ˆÝ�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ý�˜Q™œ ¨Ð/Ñ/Ô/Ð/Ð/Ð/r#   c                 ó–   — d}t          j        ||f¦  «        t          j        |¦  «        z   }d|j        _        t          |¦  «         d S )Né   F)r   Úonesr   ÚflagsÚ	writeabler   ©r4   rx   r5   s      r!   Útest_readonlyzTestLogM.test_readonlyë   s>   € ØˆÝŒG�Q˜�F‰OŒO�bœk¨!™nœnÑ,ˆØ!ˆŒÔÝˆQ‰Œˆˆˆr#   z6ValueError: attempt to get argmax of an empty sequence©Úreasonr¥   c                 óØ   — t          j        d|¬¦  «        }t          |¦  «        }t          j        d|¬¦  «        }t          |¦  «        }|j        dk    sJ ‚|j        |j        k    sJ ‚d S ©N©r   r   r   rŒ   )r   Úemptyr   ÚeyeÚshaper   )r4   r¥   r5   Úlog_aÚa0Úlog_a0s         r!   Ú
test_emptyzTestLogM.test_emptyñ   sp   € õ ŒH�V 2Ð&Ñ&Ô&ˆÝ�Q‘”ˆÝŒV�A˜RÐ Ñ Ô ˆÝ�b‘”ˆàŒ{˜fÒ$Ð$Ð$Ð$ØŒ{˜fœlÒ*Ð*Ð*Ð*Ð*Ð*r#   N)rR   rS   rT   r8   rc   ri   r�   r†   rž   r¨   r¬   r¶   r¹   r½   rÄ   ÚpytestÚmarkÚxfailÚparametrizeÚintr   r   Úfloat32r›   Ú	complex64rÐ   rU   r#   r!   rW   rW   Z   s2  € € € € € ð	ð 	ð 	ð@ð @ð @ðIð Ið IðGð Gð Gð*1ð 1ð 1ð>ð >ð >ð<
(ð 
(ð 
(ð	Ið 	Ið 	Ið.ð .ð .ð*ð *ð *ð0ð 0ð 0ðð ð ð „[×ÒÐVÐÑWÔWØ„[×Ò˜T C¨°´
¸GÀRÄ\Ð#RÑSÔSð+ð +ñ TÔSñ XÔWð+ð +ð +r#   rW   c                   ó4  — 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ej                             d¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             deeej        e ej!        g¦  «        d„ ¦   «         Z"dS )Ú	TestSqrtMc                 óX  — t           j                             d¦  «         t          dd¦  «        D ]y}t           j                             ||¦  «        }t          j        ddd¦  «        D ]@}||z  }t          |d¬¦  «        \  }}|                     |¦  «        }t          ||¦  «         ŒAŒzd S )	Nrk   r;   rl   rm   rn   ro   Fr=   ©	r   rq   rr   rs   rt   ru   r   r   r   ©r4   rx   ry   rz   r{   r}   ra   r~   s           r!   r�   z&TestSqrtM.test_round_trip_random_floatþ   s´   € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	7ð 	7ˆAÝœŸš¨¨AÑ.Ô.ˆJÝœ R¨¨AÑ.Ô.ð 7ð 7�Ø Ñ&�Ý % a¨eÐ 4Ñ 4Ô 4‘�˜Ø%,§[¢[°Ñ%9Ô%9Ð"ÝÐ 2°AÑ6Ô6Ð6Ð6ð	7ð	7ð 	7r#   c                 ó   — t           j                             d¦  «         t          dd¦  «        D ]�}t           j                             ||¦  «        dt           j                             ||¦  «        z  z   }t          j        ddd¦  «        D ]@}||z  }t          |d¬	¦  «        \  }}|                     |¦  «        }t          ||¦  «         ŒAŒžd S rƒ   rÛ   rÜ   s           r!   r†   z(TestSqrtM.test_round_trip_random_complex  sÎ   € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	7ð 	7ˆAÝœŸš¨¨AÑ.Ô.°µb´i·o²oÀaÈÑ6KÔ6KÑ1KÑKˆJÝœ R¨¨AÑ.Ô.ð 7ð 7�Ø Ñ&�Ý % a¨eÐ 4Ñ 4Ô 4‘�˜Ø%,§[¢[°Ñ%9Ô%9Ð"ÝÐ 2°AÑ6Ô6Ð6Ð6ð	7ð	7ð 	7r#   c                 óÒ  — d}t          |¦  «        }t          g d¢d|ddgdd|dgg d¢g¦  «        }t          g d¢d|ddgdd|dgg d¢g¦  «        }|j        d         }t          t	          ||¦  «        |¦  «         t          |d|¬¦  «        d         }t          t	          ||¦  «        |¦  «         t          |dd¬¦  «        d         }t          t	          ||¦  «        |¦  «         d S )	Ng       ?)ç      ð?r   r   r;   r   r<   )r;   r   r   r»   F©r>   Ú	blocksizerŒ   )r   r   rÌ   r   r   r   )r4   ÚeÚser5   Úsarx   Úesas          r!   Útest_badzTestSqrtM.test_bad  s  € àˆÝ�!‰WŒWˆÝ�;�;�;Ø�a˜˜!�9Ø�a˜˜!�9Ø�9�9ðñ ô ˆõ �K�K�KØ�r˜!˜A�JØ�q˜˜A�JØ�I�Iðñ  ô  ˆð ŒG�AŒJˆÝ!¥# b¨¡*¤*¨QÑ/Ô/Ð/å�A˜E¨QÐ/Ñ/Ô/°Ô2ˆÝ!¥# c¨#¡,¤,¨qÑ1Ô1Ð1å�A˜E¨QÐ/Ñ/Ô/°Ô2ˆÝ!¥# c¨#¡,¤,¨qÑ1Ô1Ð1Ð1Ð1r#   c                 ó¨  — d}ddgddggddgddggddgddggddgddggddgddggfD �](}t           j                             |¦  «        }t          t	          d„ |D ¦   «         ¦  «         ¦  «         t          j        |t          ¬¦  «        }t          |d¬	¦  «        \  }}t          |j	        j
        |v¦  «         t          j        |t          ¬¦  «        }t          |d¬	¦  «        \  }}t          |j	        j
        |v ¦  «         t          j        |t          ¬¦  «         }t          |d¬	¦  «        \  }}t          |j	        j
        |v ¦  «         �Œ*d S )
Nrˆ   r;   r   rŒ   r�   c              3   ó:   K  — | ]}|j         p
|j        d k     V — ŒdS r�   r�   r“   s     r!   r–   zHTestSqrtM.test_sqrtm_type_preservation_and_conversion.<locals>.<genexpr>5  r—   r#   r   Fr=   )r˜   rv   rw   r	   r™   r   r   r   r   r   rš   r›   ©r4   rœ   r�   r|   r    ÚA_sqrtmra   s          r!   Ú+test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion'  s‰  € ð .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð"ð 	?ñ 	?ˆNõ ”×$Ò$ ^Ñ4Ô4ˆAÝ�Ð<Ð<¸!Ð<Ñ<Ô<Ñ<Ô<Ð<Ñ=Ô=Ð=õ ”˜­uÐ5Ñ5Ô5ˆAÝ! !¨%Ð0Ñ0Ô0‰MˆG�TÝ�G”MÔ&Ð.AÐAÑBÔBÐBõ ”˜­wÐ7Ñ7Ô7ˆAÝ! !¨%Ð0Ñ0Ô0‰MˆG�TÝ�G”MÔ&Ð*=Ð=Ñ>Ô>Ð>õ ”˜.µÐ6Ñ6Ô6Ð6ˆAÝ! !¨%Ð0Ñ0Ô0‰MˆG�TÝ�G”MÔ&Ð*=Ð=Ñ>Ô>Ð>Ñ>ð1	?ð 	?r#   c                 óö  — d}ddgddggddgddggg d¢g d¢g d¢gfD ]Û}t           j                             |¦  «        }t          t	          d„ |D ¦   «         ¦  «        ¦  «         t          j        |t          ¬	¦  «        }t          |d
¬¦  «        \  }}t          |j	        j
        |v ¦  «         t          j        |t          ¬	¦  «        }t          |d
¬¦  «        \  }}t          |j	        j
        |v ¦  «         ŒÜd S )Nrˆ   r;   r   rª   ©r   r;   r   ©r   r   r;   ©r;   r   r   c              3   ó:   K  — | ]}|j         p
|j        d k     V — ŒdS r�   r�   r“   s     r!   r–   zVTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>O  ó/   è è € Ð8Ð8°˜œÐ, !¤&¨1¢*Ð8Ð8Ð8Ð8Ð8Ð8r#   r   Fr=   )r˜   rv   rw   r	   r™   r   r   r›   r   r   rš   r   ré   s          r!   Ú9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumzCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumF  s"  € Ø-Ðà�Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð Ø��˜I˜I˜I y y yÐ1ð3ð 	?ð 	?ˆNõ ”×$Ò$ ^Ñ4Ô4ˆAÝ•CÐ8Ð8°aÐ8Ñ8Ô8Ñ8Ô8Ñ9Ô9Ð9õ ”˜­wÐ7Ñ7Ô7ˆAÝ! !¨%Ð0Ñ0Ô0‰MˆG�TÝ�G”MÔ&Ð*=Ð=Ñ>Ô>Ð>õ ”˜­uÐ5Ñ5Ô5ˆAÝ! !¨%Ð0Ñ0Ô0‰MˆG�TÝ�G”MÔ&Ð*=Ð=Ñ>Ô>Ð>Ð>ð#	?ð 	?r#   c                 óè  — t           j                             d¦  «         t          dd¦  «        D ]Á}t           j                             ||¦  «        dt           j                             ||¦  «        z  z   }t          |d|¬¦  «        \  }}t          |t           j         	                    |d¦  «        ¦  «         t          dd¦  «        D ]'}t          |d|¬¦  «        \  }}t          ||¦  «         Œ(ŒÂd S )	Nrk   r;   é   r„   Frà   rŒ   é
   )
r   rq   rr   rs   Úrandrt   r   r   rv   Úmatrix_power)r4   rx   r    ÚA_sqrtm_defaultra   rá   ÚA_sqrtm_news          r!   Útest_blocksizeszTestSqrtM.test_blocksizes[  sé   € å
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	>ð 	>ˆAÝ”	—’˜q !Ñ$Ô$ r­"¬)¯/ª/¸!¸QÑ*?Ô*?Ñ'?Ñ?ˆAÝ$)¨!°%À1Ð$EÑ$EÔ$EÑ!ˆO˜TÝ˜A�rœy×5Ò5°oÀqÑIÔIÑJÔJÐJÝ" 1 b™\œ\ð >ð >�	Ý$)¨!°%À9Ð$MÑ$MÔ$MÑ!�˜TÝ °Ñ=Ô=Ð=Ð=ð>ð		>ð 	>r#   c                 ó   — t          ¦   «         }t          |d¬¦  «        \  }}|                     |¦  «        }t          ||d¬¦  «         t          t	          j        |¦  «        t	          j        |¦  «        ¦  «         d S )NFr=   re   ©r^   )r"   r   r   r   r   Útril)r4   r    rê   ra   rb   s        r!   Ú%test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1f  sq   € å1Ñ3Ô3ˆÝ˜a eÐ,Ñ,Ô,‰ˆ�Ø—{’{ 7Ñ+Ô+ˆÝ˜ a¨dÐ3Ñ3Ô3Ð3Ý�œ Ñ-Ô-­r¬w°q©z¬zÑ:Ô:Ð:Ð:Ð:r#   c                 óú   — t           t          fD ]k}t          j        g d¢g d¢g d¢g d¢g|¬¦  «        }t	          |d¬¦  «        \  }}t          t          j        |¦  «                             ¦   «         ¦  «         Œld S )N)r   r�   r   r   )r   r   r�   r   )r   r   r   r�   ©r   r   r   r   r   Fr=   )rÕ   r   r   r   r   r	   ÚisnanÚall)r4   r¥   r    rê   ra   s        r!   Útest_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangularn  sš   € å•u�*ð 	-ð 	-ˆBÝ”Ø��Ø��Ø��Ø��ð	ð &(ð	)ñ )ô )ˆAõ
 " !¨%Ð0Ñ0Ô0‰MˆG�TÝ•B”H˜WÑ%Ô%×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ð,ð	-ð 	-r#   c                 óx  — t           t          fD ]ª}t          j        g d¢g d¢g d¢g|¬¦  «        }t          j        g d¢g d¢g d¢g|¬¦  «        }t	          ||                     |¦  «        ¦  «         t          |d¬¦  «        \  }}t          t          j        |¦  «         	                    ¦   «         ¦  «         Œ«d S )Nrî   ©r   r   r   rí   r   Fr=   )
rÕ   r   r   r   r   r   r   r	   r  r  )r4   r¥   r    r²   ÚB_sqrtmra   s         r!   Útest_weird_matrixzTestSqrtM.test_weird_matrixy  sæ   € å•u�*ð 	-ð 	-ˆBÝ”Ø�	�	Ø�	�	Ø�	�	ðð #%ð&ñ &ô &ˆAõ ”Ø�	�	Ø�	�	Ø�	�	ðð #%ð&ñ &ô &ˆAõ ˜q !§%¢%¨¡(¤(Ñ+Ô+Ð+õ " !¨%Ð0Ñ0Ô0‰MˆG�TÝ•B”H˜WÑ%Ô%×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ð,ð	-ð 	-r#   c                 óì   — t           j                             d¦  «         t           j                             dd¦  «        }t	          |d¬¦  «        }t          |                     |¦  «        |¦  «         d S )Nrk   r�   Tr=   )r   rq   rr   rö   r   r   r   )r4   r    r²   s      r!   Ú	test_dispzTestSqrtM.test_dispŠ  s]   € Ý
Œ	�Š�tÑÔÐåŒI�NŠN˜1˜aÑ Ô ˆÝ�!˜$ÐÑÔˆÝ˜Ÿš˜a™œ !Ñ$Ô$Ð$Ð$Ð$r#   c                 ó®   — ddgddgg}ddgddgg}t          t          j        ||¦  «        |d¬	¦  «         t          t          |¦  «        |d¬	¦  «         d S )
Nù               @rn   r   ù       €       Àù      ð?      ð?rŒ   ù      ð?      ð¿r\   r®   )r   r   r   r   ©r4   r{   ÚRs      r!   r½   z0TestSqrtM.test_opposite_sign_complex_eigenvalues‘  sf   € Ø�!ˆW�q˜#�hÐˆØ�AˆY˜˜D˜	Ð"ˆÝ�œ˜q !™œ a¨eÐ4Ñ4Ô4Ð4Ý�˜a™œ !¨%Ð0Ñ0Ô0Ð0Ð0Ð0r#   c                 ó~  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        t          d¦  «        ddt          d¦  «        gg d¢g d¢t          d¦  «        ddt          d¦  «        gg¦  «        }t          t          j        ||¦  «        |d¬¦  «         t          t          |¦  «        |d¬¦  «         d S )N)r;   r   r   r;   r   r»   r   r\   r®   )r   r   r   r   r   r   r  s      r!   Útest_gh4866zTestSqrtM.test_gh4866—  sÊ   € ÝŒH�l�l�lØ"�l�lØ"�l�lØ"�l�lð$ñ %ô %ˆõ ŒH•t˜C‘y”y ! Q­¨S©	¬	Ð2Ø"�l�lØ"�l�lÝ˜C‘y”y ! Q­¨S©	¬	Ð2ð4ñ 5ô 5ˆõ 	�œ˜q !™œ a¨eÐ4Ñ4Ô4Ð4Ý�˜a™œ !¨%Ð0Ñ0Ô0Ð0Ð0Ð0r#   c                 ó  — t          j        g d¢¦  «        }t          j        t          d¦  «        ddg¦  «        }t          t          j        ||¦  «        |d¬¦  «         t          t          |¦  «        |d¬¦  «         d S )N)rŒ   r;   r   rŒ   r;   r   r\   r®   )r   Údiagr   r   r   r   r  s      r!   Útest_gh5336zTestSqrtM.test_gh5336£  sp   € ÝŒG�I�I�IÑÔˆÝŒG•T˜!‘W”W˜a �OÑ$Ô$ˆÝ�œ˜q !™œ a¨eÐ4Ñ4Ô4Ð4Ý�˜a™œ !¨%Ð0Ñ0Ô0Ð0Ð0Ð0r#   c                 óÞ   — t          j        d¦  «        }t          j        d¦  «        }t          t          j        ||¦  «        |d¬¦  «         t          t	          |¦  «        |d¬¦  «         d S )N)rŒ   rŒ   r\   r®   )r   Úzerosr   r   r   r  s      r!   Útest_gh7839zTestSqrtM.test_gh7839©  s`   € ÝŒH�VÑÔˆÝŒH�VÑÔˆÝ�œ˜q !™œ a¨eÐ4Ñ4Ô4Ð4Ý�˜a™œ !¨%Ð0Ñ0Ô0Ð0Ð0Ð0r#   zfailing on macOS after gh-20212rÅ   c                 óÈ   — t          j        d¦  «        }|                     d¦  «         t          j        |d¦  «         t          j        t          |¦  «        ¦  «        sJ ‚d S )N)é   r  g®Gázî?r;   )r   rÊ   ÚfillÚfill_diagonalÚ	isrealobjr   ©r4   r{   s     r!   Útest_gh17918zTestSqrtM.test_gh17918¯  sU   € åŒH�XÑÔˆØ	�Šˆt‰ŒˆÝ
Ô˜˜AÑÔÐÝŒ|�E !™HœHÑ%Ô%Ð%Ð%Ð%Ð%Ð%r#   c                 ó&  — t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j	        ¬¦  «        }t          |¦  «        j        t           j
        k    sJ ‚d S ©N©rõ   rõ   r   )r   r  Úuint8r   r   Úfloat16Úuint16Úuint32rÖ   Úuint64Úfloat64r  s     r!   Ú-test_data_size_preservation_uint_in_float_outz7TestSqrtM.test_data_size_preservation_uint_in_float_out¶  sÌ   € ÝŒH�X¥R¤XÐ.Ñ.Ô.ˆå�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤YÐ/Ñ/Ô/ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤YÐ/Ñ/Ô/ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤YÐ/Ñ/Ô/ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+Ð+Ð+r#   c                 ó&  — t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j	        ¬¦  «        }t          |¦  «        j        t           j
        k    sJ ‚d S r!  )r   r  Úint8r   r   r$  Úint16Úint32rÖ   Úint64r(  r  s     r!   Ú,test_data_size_preservation_int_in_float_outz6TestSqrtM.test_data_size_preservation_int_in_float_outÁ  sÌ   € ÝŒH�X¥R¤WÐ-Ñ-Ô-ˆå�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤XÐ.Ñ.Ô.ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤XÐ.Ñ.Ô.ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤XÐ.Ñ.Ô.ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+Ð+Ð+r#   c                 óV  — t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j	        k    sJ ‚d S )NrŒ   rn   r   éþÿÿÿr   )
r   r   r+  r   r   r×   r,  r-  r.  Ú
complex128r  s     r!   Ú+test_data_size_preservation_int_in_comp_outz5TestSqrtM.test_data_size_preservation_int_in_comp_outÌ  s   € ÝŒH�q˜!�f˜q "˜gÐ&­b¬gÐ6Ñ6Ô6ˆå�Q‰xŒxŒ~¥¤Ò-Ð-Ð-Ð-ÝŒH�q˜!�f˜q "˜gÐ&­b¬hÐ7Ñ7Ô7ˆå�Q‰xŒxŒ~¥¤Ò-Ð-Ð-Ð-ÝŒH�q˜!�f˜q "˜gÐ&­b¬hÐ7Ñ7Ô7ˆÝ�Q‰xŒxŒ~¥¤Ò-Ð-Ð-Ð-ÝŒH�q˜!�f˜q "˜gÐ&­b¬hÐ7Ñ7Ô7ˆÝ�Q‰xŒxŒ~¥¤Ò.Ð.Ð.Ð.Ð.Ð.r#   c                 óT  — t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          t           d¦  «        rDt          j        dt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚d S d S )Nr"  r   Úfloat128)	r   r  r$  r   r   rÖ   r(  Úhasattrr5  r  s     r!   Ú.test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_outØ  sè   € ÝŒH�X¥R¤ZÐ0Ñ0Ô0ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤ZÐ0Ñ0Ô0ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+ÝŒH�X¥R¤ZÐ0Ñ0Ô0ˆÝ�Q‰xŒxŒ~¥¤Ò+Ð+Ð+Ð+Ý•2�zÑ"Ô"ð 	1Ý”˜­¬Ð5Ñ5Ô5ˆAÝ˜‘8”8”>¥R¤[Ò0Ð0Ð0Ð0ð	1ð 	1à0Ð0r#   c                 ó²  — t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          t           d¦  «        r_t          t           d¦  «        rLt          j        ddgddggt           j
        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚d S d S d S )NrŒ   rn   r   r1  r   r5  Ú
complex256)r   r   r$  r   r   r×   rÖ   r(  r2  r6  r5  r9  r  s     r!   Ú-test_data_size_preservation_float_in_comp_outz7TestSqrtM.test_data_size_preservation_float_in_comp_outã  s7  € ÝŒH�q˜!�f˜q "˜gÐ&­b¬jÐ9Ñ9Ô9ˆå�Q‰xŒxŒ~¥¤Ò-Ð-Ð-Ð-ÝŒH�q˜!�f˜q "˜gÐ&­b¬jÐ9Ñ9Ô9ˆÝ�Q‰xŒxŒ~¥¤Ò-Ð-Ð-Ð-ÝŒH�q˜!�f˜q "˜gÐ&­b¬jÐ9Ñ9Ô9ˆÝ�Q‰xŒxŒ~¥¤Ò.Ð.Ð.Ð.Ý•2�zÑ"Ô"ð 	3¥w­r°<Ñ'@Ô'@ð 	3Ý”˜1˜a˜& 1 b 'Ð*µ"´+Ð>Ñ>Ô>ˆAÝ˜‘8”8”>¥R¤]Ò2Ð2Ð2Ð2ð	3ð 	3ð 	3ð 	3à2Ð2r#   c                 óð  — t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          t           d¦  «        r”t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚t          j        ddgddggt           j        ¬¦  «        }t          |¦  «        j        t           j        k    sJ ‚d S d S )Nr  rn   r   r  r   r9  )r   r   r×   r   r   r2  r6  r9  r  s     r!   Ú,test_data_size_preservation_comp_in_comp_outz6TestSqrtM.test_data_size_preservation_comp_in_comp_outï  sà   € ÝŒH�r˜1�g  3˜xÐ(µ´Ð=Ñ=Ô=ˆÝ�Q‰xŒxŒ~¥¤Ò.Ð.Ð.Ð.Ý•2�|Ñ$Ô$ð 	3Ý”˜2˜q˜' A s 8Ð,µB´MÐBÑBÔBˆAÝ˜‘8”8”>¥R¤]Ò2Ð2Ð2Ð2Ý”˜2˜q˜' A s 8Ð,µB´MÐBÑBÔBˆAÝ˜‘8”8”>¥R¤]Ò2Ð2Ð2Ð2ð		3ð 	3ð 3Ð2r#   r¥   c                 óØ   — t          j        d|¬¦  «        }t          |¦  «        }t          j        d|¬¦  «        }t          |¦  «        }|j        dk    sJ ‚|j        |j        k    sJ ‚d S rÈ   )r   rÊ   r   rË   rÌ   r   )r4   r¥   r5   ÚsrÎ   Ús0s         r!   rÐ   zTestSqrtM.test_emptyø  sn   € åŒH�V 2Ð&Ñ&Ô&ˆÝ�!‰HŒHˆÝŒV�A˜RÐ Ñ Ô ˆÝ�2‰YŒYˆàŒw˜&Ò Ð Ð Ð ØŒw˜"œ(Ò"Ð"Ð"Ð"Ð"Ð"r#   N)#rR   rS   rT   r�   r†   ræ   rë   rò   rú   rþ   r  r  r	  r½   r  r  r  rÑ   rÒ   rÓ   r  r)  r/  r3  r7  r:  r<  rÔ   rÕ   r   r   rÖ   r›   r×   rÐ   rU   r#   r!   rÙ   rÙ   ý   s¯  € € € € € ð7ð 7ð 7ð7ð 7ð 7ð2ð 2ð 2ð*?ð ?ð ?ð>?ð ?ð ?ð*	>ð 	>ð 	>ð;ð ;ð ;ð	-ð 	-ð 	-ð-ð -ð -ð"%ð %ð %ð1ð 1ð 1ð
1ð 
1ð 
1ð1ð 1ð 1ð1ð 1ð 1ð „[×ÒÐ?ÐÑ@Ô@ð&ð &ñ AÔ@ð&ð	,ð 	,ð 	,ð	,ð 	,ð 	,ð
/ð 
/ð 
/ð	1ð 	1ð 	1ð
3ð 
3ð 
3ð3ð 3ð 3ð „[×Ò˜T C¨°´
¸GÀRÄ\Ð#RÑSÔSð#ð #ñ TÔSð#ð #ð #r#   rÙ   c                   óŒ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                             d	¬
¦  «        d„ ¦   «         Zd„ ZdS )ÚTestFractionalMatrixPowerc                 óÚ  — t           j                             d¦  «         t          dd¦  «        D ]º}t          dd¦  «        D ]§}t           j                             ||¦  «        dt           j                             ||¦  «        z  z   }t          j        ddd¦  «        D ]J}||z  }t          |d|z  ¦  «        }t           j                             ||¦  «        }t          ||¦  «         ŒKŒ¨Œ»d S )Nrk   r;   r¿   r„   rm   rn   ro   ©
r   rq   rr   rs   rt   ru   r   rv   r÷   r   ©r4   Úprx   ry   rz   r{   ÚM_rootr…   s           r!   r†   z8TestFractionalMatrixPower.test_round_trip_random_complex  së   € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	5ð 	5ˆAÝ˜1˜a‘[”[ð 5ð 5�ÝœYŸ_š_¨Q°Ñ2Ô2°R½"¼)¿/º/È!ÈQÑ:OÔ:OÑ5OÑO�
Ýœ[¨¨Q°Ñ2Ô2ð 5ð 5�EØ" UÑ*�AÝ4°Q¸¸!¹Ñ<Ô<�FÝ#%¤9×#9Ò#9¸&À!Ñ#DÔ#D�LÝ# L°!Ñ4Ô4Ð4Ð4ð	5ð5ð	5ð 	5r#   c                 ó’  — t           j                             d¦  «         t          dd¦  «        D ]–}t          dd¦  «        D ]ƒ}t           j                             ||¦  «        }t          j        ddd¦  «        D ]J}||z  }t          |d|z  ¦  «        }t           j                             ||¦  «        }t          ||¦  «         ŒKŒ„Œ—d S )Nrk   r;   r¿   rm   rn   ro   rC  rD  s           r!   r�   z6TestFractionalMatrixPower.test_round_trip_random_float  sÓ   € õ
 	Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	5ð 	5ˆAÝ˜1˜a‘[”[ð 5ð 5�ÝœYŸ_š_¨Q°Ñ2Ô2�
Ýœ[¨¨Q°Ñ2Ô2ð 5ð 5�EØ" UÑ*�AÝ4°Q¸¸!¹Ñ<Ô<�FÝ#%¤9×#9Ò#9¸&À!Ñ#DÔ#D�LÝ# L°!Ñ4Ô4Ð4Ð4ð	5ð5ð	5ð 	5r#   c                 ó‚  — t           j                             d¦  «         dD �]}t          d¦  «        D �]}t           j                             ||¦  «        dt           j                             ||¦  «        z  z   }t          |d¦  «        }t           j                             |d¦  «        }t          ||¦  «         t          |d¦  «        }t           j                             |d¦  «        }t          ||¦  «         t          |d	¦  «        }t           j                             |d
¦  «        }t          ||¦  «         �Œ	�Œd S )Nrk   )rŒ   r�   r¿   rõ   r„   çš™™™™™É?r¿   gš™™™™™Àiåÿÿÿgffffff@r  )	r   rq   rr   rs   rt   r   rv   r÷   r   )r4   rx   Úir{   ÚM_one_fifthr…   r¦   r§   s           r!   Ú(test_larger_abs_fractional_matrix_powerszBTestFractionalMatrixPower.test_larger_abs_fractional_matrix_powers  s  € Ý
Œ	�Š�tÑÔÐØð 	&ñ 	&ˆAÝ˜2‘Y”Yð &ñ &�Ý”I—O’O A qÑ)Ô)¨Bµ´·²ÀÀAÑ1FÔ1FÑ,FÑF�Ý5°a¸Ñ=Ô=�å!œy×5Ò5°kÀ1ÑEÔE�Ý  <Ñ0Ô0Ð0å+¨A¨tÑ4Ô4�Ý”I×*Ò*¨;¸Ñ<Ô<�Ý  1Ñ%Ô%Ð%å+¨A¨sÑ3Ô3�Ý”I×*Ò*¨;¸Ñ;Ô;�Ý  1Ñ%Ô%Ð%Ñ%ñ&ð	&ð 	&r#   c                 ón  — t           j                             d¦  «         d}t          |¦  «        D �]}t          j        dd¦  «        }t           j                             ¦   «         }t          j        t          j        dd¦  «        ¦  «        }t           j                             ||¦  «        }t          j        d¦  «        r&|dt           j                             ||¦  «        z  z   }||z  }t          ||¦  «        }t          |d¬	¦  «        \  }}	t          ||z  ¦  «        }
t          ||
¦  «         �Œd S )
Nrk   é   r;   r¿   rm   )TFr„   Fr=   )r   rq   rr   rs   Ú	randrangert   ÚexpÚchoicer   r   r   r   )r4   ÚnsamplesrJ  rx   rE  Úmatrix_scaler    ÚA_powerr`   ra   ÚA_power_expm_logms              r!   Útest_random_matrices_and_powersz9TestFractionalMatrixPower.test_random_matrices_and_powers0  s  € õ 	Œ	�Š�tÑÔÐØˆÝ�x‘”ð 	8ñ 	8ˆAåÔ   AÑ&Ô&ˆAÝ”	—’Ñ!Ô!ˆAõ œ6¥&Ô"2°2°qÑ"9Ô"9Ñ:Ô:ˆLÝ”	—’  1Ñ%Ô%ˆAÝŒ}˜]Ñ+Ô+ð 3Ø˜�RœYŸ_š_¨Q°Ñ2Ô2Ñ2Ñ2�Ø�LÑ ˆAõ
 .¨a°Ñ3Ô3ˆGÝ ¨Ð.Ñ.Ô.‰LˆF�DÝ $ V¨a¡ZÑ 0Ô 0ÐÝ˜GÐ%6Ñ7Ô7Ð7Ñ7ð%	8ð 	8r#   c                 ó  — t          ¦   «         }t          |t          j        d¬¦  «        \  }}t	          |d¬¦  «        \  }}t          j        |d¦  «        }t          |d¦  «        }t          ||d¬¦  «         t          ||¦  «         t          ||¦  «         dD ]m}t          ||¦  «        }t          |d|z  ¦  «        }t          ||d¬¦  «         t          t          j	        |d¦  «        t          j	        |d¦  «        ¦  «         Œnd S )	NFr=   r»   g•dyáý¥=rü   )r»   g«ªªªªªú?r;   r    )
r"   r   r   r   r   r   Ú_remainder_matrix_powerr   r   rý   )	r4   r    ÚA_funm_sqrtra   rê   ÚA_rem_powerrT  rE  rb   s	            r!   rþ   z?TestFractionalMatrixPower.test_al_mohy_higham_2012_experiment_1I  s  € å1Ñ3Ô3ˆõ ! ¥B¤G°%Ð8Ñ8Ô8Ñˆ�TÝ˜a eÐ,Ñ,Ô,‰ˆ�Ý'Ô?ÀÀ3ÑGÔGˆÝ)¨!¨SÑ1Ô1ˆÝ˜ W°5Ð9Ñ9Ô9Ð9Ý˜ Ñ)Ô)Ð)Ý˜ Ñ-Ô-Ð-ð ð 	Eð 	EˆAÝ-¨a°Ñ3Ô3ˆGÝ2°7¸A¸a¹CÑ@Ô@ˆLÝ˜L¨!°$Ð7Ñ7Ô7Ð7Ý�BœG L°!Ñ4Ô4µb´g¸aÀ±m´mÑDÔDÐDÐDð		Eð 	Er#   c                 ór  — t           j                             d¦  «         t           j                             d¦  «        dt           j                             d¦  «        z  z   D ]T}t	          d¦  «        D ]B}t          j        ||¦  «        }|t          j        | ¦  «        z  dz
  }t          ||¦  «         ŒCŒUd S )Nrk   rõ   r„   r¿   r;   )	r   rq   rr   rt   rs   r   Ú_briggs_helper_functionÚexp2r   )r4   r5   ÚkÚ
x_observedÚ
x_expecteds        r!   Útest_briggs_helper_functionz5TestFractionalMatrixPower.test_briggs_helper_function]  s­   € Ý
Œ	�Š�tÑÔÐÝ”—’ Ñ$Ô$ r­B¬I¯OªO¸BÑ,?Ô,?Ñ'?Ñ?ð 	8ð 	8ˆAÝ˜1‘X”Xð 8ð 8�Ý.ÔFÀqÈ!ÑLÔL�
Ø¥"¤'¨1¨"¡+¤+Ñ-°Ñ1�
Ý 
¨JÑ7Ô7Ð7Ð7ð8ð	8ð 	8r#   c                 óŒ  — d}ddgddggddgddggddgddggddgddggfD �]!}t           j                             |¦  «        }t          t	          d„ |D ¦   «         ¦  «         ¦  «         dD ]Õ}t          j        |t          ¬¦  «        }t          ||¦  «        }t          |j	        j
        |v¦  «         t          j        |t          ¬¦  «        }t          ||¦  «        }t          |j	        j
        |v ¦  «         t          j        |t          ¬¦  «         }t          ||¦  «        }t          |j	        j
        |v ¦  «         ŒÖ�Œ#d S )	Nrˆ   r;   r   rŒ   r�   c              3   ó:   K  — | ]}|j         p
|j        d k     V — ŒdS r�   r�   r“   s     r!   r–   zRTestFractionalMatrixPower.test_type_preservation_and_conversion.<locals>.<genexpr>s  r—   r#   ©ç333333ÀçÍÌÌÌÌÌì¿rI  gffffff
@r   )r˜   rv   rw   r	   r™   r   r   r   r   r   rš   r›   ©r4   rœ   r�   r|   rE  r    rT  s          r!   Ú%test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversione  s�  € ð
 .Ðà�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð ð	"ð 	Cñ 	CˆNõ ”×$Ò$ ^Ñ4Ô4ˆAÝ�Ð<Ð<¸!Ð<Ñ<Ô<Ñ<Ô<Ð<Ñ=Ô=Ð=ð ,ð Cð C�õ ”H˜^µ5Ð9Ñ9Ô9�Ý1°!°QÑ7Ô7�Ý˜œÔ*Ð2EÐEÑFÔFÐFõ ”H˜^µ7Ð;Ñ;Ô;�Ý1°!°QÑ7Ô7�Ý˜œÔ*Ð.AÐAÑBÔBÐBõ ”X˜nµEÐ:Ñ:Ô:Ð:�Ý1°!°QÑ7Ô7�Ý˜œÔ*Ð.AÐAÑBÔBÐBÐBñCð	Cð 	Cr#   c                 óð  — d}ddgddggddgddggg d¢g d¢g d¢gfD ]Ø}t           j                             |¦  «        }t          t	          d„ |D ¦   «         ¦  «        ¦  «         d	D ]Ž}t          j        |t          ¬
¦  «        }t          ||¦  «        }t          |j	        j
        |v ¦  «         t          j        |t          ¬
¦  «        }t          ||¦  «        }t          |j	        j
        |v ¦  «         Œ�ŒÙd S )Nrˆ   r;   r   rª   rí   rî   rï   c              3   ó:   K  — | ]}|j         p
|j        d k     V — ŒdS r�   r�   r“   s     r!   r–   z`TestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrum.<locals>.<genexpr>‘  rñ   r#   rd  r   )r˜   rv   rw   r	   r™   r   r   r›   r   r   rš   r   rg  s          r!   Ú3test_type_conversion_mixed_sign_or_complex_spectrumzMTestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrumˆ  s1  € Ø-Ðà�Q�˜!˜R˜Ð!Ø�Q�˜!˜Q˜Ð Ø��˜I˜I˜I y y yÐ1ð3ð 	Cð 	CˆNõ ”×$Ò$ ^Ñ4Ô4ˆAÝ•CÐ8Ð8°aÐ8Ñ8Ô8Ñ8Ô8Ñ9Ô9Ð9ð ,ð 
Cð 
C�õ ”H˜^µ7Ð;Ñ;Ô;�Ý1°!°QÑ7Ô7�Ý˜œÔ*Ð.AÐAÑBÔBÐBõ ”H˜^µ5Ð9Ñ9Ô9�Ý1°!°QÑ7Ô7�Ý˜œÔ*Ð.AÐAÑBÔBÐBÐBð
Cð	Cð 	Cr#   zToo unstable across LAPACKs.rÅ   c                 óœ  — ddgddggddgddggddgddggg d¢g d¢g d¢gfD ]©}t           t          fD ]˜}t          j        ||¬	¦  «        }d
D ]E}t	          ||¦  «        }t          t          j        |¦  «                             ¦   «         ¦  «         ŒFdD ]5}t	          ||¦  «        }t	          |d|z  ¦  «        }t          ||¦  «         Œ6Œ™Œªd S )Nr   r;   rŒ   r�   rl   r  )r   r;   r;   )r   rª   r;   r   )gffffffæ¿rf  re  gÍÌÌÌÌÌô¿)rI  gáz®Gáö?)	r   r›   r   r   r   r	   r  r  r   )r4   r�   Únewtyper    rE  rT  rb   s          r!   Útest_singularz'TestFractionalMatrixPower.test_singular¡  s"  € ð �Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø�Q�˜!˜Q˜Ð Ø��˜I˜I˜I z z zÐ2ð	4ð 	5ð 	5ˆNõ "¥7Ð+ð 5ð 5�Ý”H˜^°7Ð;Ñ;Ô;�Ø1ð 5ð 5�AÝ5°a¸Ñ;Ô;�GÝ�BœH WÑ-Ô-×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ð4Ø$ð 5ð 5�AÝ5°a¸Ñ;Ô;�GÝ#:¸7ÀAÀaÁCÑ#HÔ#H�LÝ# L°!Ñ4Ô4Ð4Ð4ð5ð5ð	5ð 	5r#   c                 ó°   — ddgddgg}ddgddgg}t          t          j        ||¦  «        |d¬	¦  «         t          t          |d
¦  «        |d¬	¦  «         d S )Nr  rn   r   r  r  rŒ   r  r\   r®   r»   )r   r   r   r   r  s      r!   r½   z@TestFractionalMatrixPower.test_opposite_sign_complex_eigenvaluesµ  sk   € Ø�!ˆW�q˜#�hÐˆØ�AˆY˜˜D˜	Ð"ˆÝ�œ˜q !™œ a¨eÐ4Ñ4Ô4Ð4ÝÕ/°°3Ñ7Ô7¸ÀÐGÑGÔGÐGÐGÐGr#   N)rR   rS   rT   r†   r�   rL  rV  rþ   ra  rh  rk  rÑ   rÒ   rÓ   rn  r½   rU   r#   r!   rA  rA    sÚ   € € € € € ð	5ð 	5ð 	5ð5ð 5ð 5ð&ð &ð &ð$8ð 8ð 8ð2Eð Eð Eð(8ð 8ð 8ð!Cð !Cð !CðFCð Cð Cð2 „[×ÒÐ<ÐÑ=Ô=ð5ð 5ñ >Ô=ð5ð&Hð Hð Hð Hð Hr#   rA  c                   óØ   — e Zd Zd„ Zd„ Zej                             dee	e
j        ee
j        g¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zej                             d¦  «        d	„ ¦   «         Zd
S )ÚTestExpMc                 óv   — t          ddgddgg¦  «        }t          t          |¦  «        ddgddgg¦  «         d S )Nr:   r   r;   )r   r   r   r@   s     r!   Ú	test_zerozTestExpM.test_zero½  sC   € Ý�B�q�6˜1˜Q˜%�.Ñ!Ô!ˆÝ!¥$ q¡'¤'¨A¨a¨5°!°A°¨-Ñ8Ô8Ð8Ð8Ð8r#   c                 ó€   — t          d¦  «        }t          |t          j        t          j        gg¦  «        ¦  «         d S )Nr;   )r   r   r   r   râ   )r4   Úelts     r!   Útest_single_eltzTestExpM.test_single_eltÁ  s3   € Ý�1‰gŒgˆÝ˜�RœX­¬ v hÑ/Ô/Ñ0Ô0Ð0Ð0Ð0r#   r¥   c                 óŽ   — t          j        d|¬¦  «        }t          |¦  «        }|j        dk    sJ ‚|j        |j        k    sJ ‚d S )NrÉ   r   r   )r   r  r   Úsizer   )r4   r¥   r    Úresults       r!   Útest_empty_matrix_inputz TestExpM.test_empty_matrix_inputÅ  sQ   € õ ŒH�V 2Ð&Ñ&Ô&ˆÝ�a‘”ˆØŒ{˜aÒÐÐÐØŒ|˜qœwÒ&Ð&Ð&Ð&Ð&Ð&r#   c                 óÐ  — t           j        }t          ddgddgg¦  «        }|dz  dz   d|z  z  }|dz  dz
  |z  }t          t	          |¦  «        t          ||g|dz  |gg¦  «        ¦  «         t	          |                     t           j        ¦  «        ¦  «        j        j        dk    sJ ‚t	          |                     t           j	        ¦  «        ¦  «        j        j        dk    sJ ‚d S )Nr;   rn   rŒ   r‰   Úf)
r   râ   r   r   r   Úastyper×   r   rš   rÖ   )r4   rµ   r5   ÚaaÚbbs        r!   Útest_2x2_inputzTestExpM.test_2x2_inputÍ  sÙ   € ÝŒDˆÝ�A�q�6˜A˜q˜6Ð"Ñ#Ô#ˆØ�‰d�Q‰h˜˜1™ÑˆØ�‰d�Q‰h˜‰\ˆÝ�˜Q™œ¥¨¨R¨°2°a±4¸°*Ð'=Ñ!>Ô!>Ñ?Ô?Ð?Ý�A—H’H�Rœ\Ñ*Ô*Ñ+Ô+Ô1Ô6¸#Ò=Ð=Ð=Ð=Ý�A—H’H�RœZÑ(Ô(Ñ)Ô)Ô/Ô4¸Ò;Ð;Ð;Ð;Ð;Ð;r#   c                 óÒ  — t           j        }t          j        ddgddggddgddggddgddggddgddggddgddgggd¬	¦  «        }t          j        |dz  dz   d
|z  z  |dz  dz
  |z  g|dz  dz
  dz  |z  |dz  dz   d
|z  z  ggdd|d
z  z  z  d|d
z  z  dz  z   d|d
z  z  dz  dd|d
z  z  z  z
  g|d
z  dz  dd|d
z  z  z  z
  dd|d
z  z  z  |d
z  dz  z   ggdd|z  z  |dz  dz  z   dd|z  z  d|dz  z  dz  z   gdd
|z  z  |dz  d
z  z   dd|z  z  d|dz  z  dz  z   ggdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   gdd|d
z  z  z  d|dz  z  dz  z   dd|d
z  z  z  d|dz  z  dz  z   ggdd
|z  z  d|z  d
z  z   dd
|z  z  d|z  d
z  z   gdd
|z  z  d|z  d
z  z
  dd
|z  z  d|z  d
z  z
  ggg¦  «        }t          t	          |¦  «        |¦  «         d S )Nr;   rn   r�   rª   r¿   éýÿÿÿrm   r‰   )ÚorderrŒ   rY   rô   rl   éûÿÿÿ)r   râ   r   r   r   )r4   rµ   r5   Úa_ress       r!   Útest_nx2x2_inputzTestExpM.test_nx2x2_inputÖ  sâ  € ÝŒDˆåŒH˜˜1�v  1˜vÐ&Ø˜1�v  2˜wÐ'Ø˜1�v  1˜vÐ&Ø˜1�v  1˜vÐ&Ø˜1�v  B˜xÐ(ð	*ð 25ð	6ñ 6ô 6ˆõ ”Ø ™T !™V a¨¡c™N¨Q°©T°!©V°Q©JÐ7Ø ™T !™V Q™J q™L¨1¨a©4°©6°A°a±C©.Ð9ð;à˜q  A¡™v™J¨¨!¨Q©$©°¡zÑ1°A°a¸±d±F¸A±:¸aÀÀ1ÀaÁ4Á¹jÑ3HÐIØ˜q™D ™F 1 a¨¨1©¡f¡:Ñ-¨q°!°A°q±D±&©z¸!¸Q¹$¸q¹&Ñ/@ÐAðCà˜q ™s™G A q¡D¨¡F™N¨B°°!±©H°a¸¸1¹±f¸a±ZÑ,?Ð@Ø  !¡™H Q¨¡T¨!¡V™O¨Q°°!±©W°a¸¸1¹±f¸a±ZÑ-?Ð@ðBà˜q  A¡™v™J¨¨!¨Q©$©°¡zÑ1°2°q¸¸A¹±v±;ÀÀ!ÀQÁ$ÁÈ¹zÑ3IÐJØ  ! Q¡$¡™K¨¨1¨a©4©°©
Ñ2°A°q¸¸A¹±v±JÀÀ!ÀQÁ$ÁÈ¹zÑ4IÐJðLà  !¡™H a¨¡c¨1¡WÑ,¨b°!°A±#©h¸¸!¹¸Q±wÑ.>Ð?Ø˜q ™s™G Q q¡S¨!¡G™O¨Q°°!±©W°a¸±c¸1±W©_Ð=ð?ðñ ô ˆõ 	�˜Q™œ Ñ'Ô'Ð'Ð'Ð'r#   c                 ól   — d}t          j        ||f¦  «        }d|j        _        t	          |¦  «         d S )NrY   F)r   rÀ   rÁ   rÂ   r   rÃ   s      r!   rÄ   zTestExpM.test_readonlyí  s1   € ØˆÝŒG�Q˜�F‰OŒOˆØ!ˆŒÔÝˆQ‰Œˆˆˆr#   rŒ   c                 óœ  — t          j        dt          ¬¦  «        }t           j                             d¦  «        }|                     ddd¦  «        }|                     ddd¦  «        }|                     d¦  «        |||f<   t          j        dt          ¬¦  «        }|                     ¦   «         |d<   t          |¦  «        \  }}|dk    sJ ‚t          |¦  «        }t           j
                             t          |¦  «        |¦  «         t          d	¦  «        D ]1}t          |¦  «        }	t           j
                             ||	¦  «         Œ2d S )
N)é�  r‰  r   éd   r   i�  iô  )r¿   r‰  r‰  ro   r¿   )r   r  r   rq   Údefault_rngÚintegersrÊ   Úcopyr   r   Útestingr   r   rs   )
r4   r    ÚrngrJ  ÚjÚAmrZ   r>  Ú	first_resÚnext_ress
             r!   Útest_gh18086zTestExpM.test_gh18086ó  s!  € åŒH�Z¥uÐ-Ñ-Ô-ˆÝŒi×#Ò# CÑ(Ô(ˆØ�LŠL˜˜C Ñ%Ô%ˆØ�LŠL˜˜C Ñ%Ô%ˆØ—*’*˜S‘/”/ˆˆ!ˆQˆ$‰åŒX�m­5Ð1Ñ1Ô1ˆØ—’‘”ˆˆ1‰Ý" 2Ñ&Ô&‰ˆˆ1Ø�AŠvˆvˆvˆvå˜‘G”Gˆ	Ý
Œ
×,Ò,­T°)©_¬_¸aÑ@Ô@Ð@å�q‘”ð 	Fð 	FˆAÝ˜A‘w”wˆHÝŒJ×0Ò0°¸HÑEÔEÐEÐEð	Fð 	Fr#   N)rR   rS   rT   rs  rv  rÑ   rÒ   rÔ   rÕ   r   r   rÖ   r›   r×   rz  r€  r†  rÄ   Ú	fail_slowr”  rU   r#   r!   rq  rq  ¼  sÎ   € € € € € ð9ð 9ð 9ð1ð 1ð 1ð „[×Ò˜T C¨°´
¸GÀRÄ\Ð#RÑSÔSð'ð 'ñ TÔSð'ð<ð <ð <ð(ð (ð (ð.ð ð ð „[×Ò˜1ÑÔðFð Fñ ÔðFð Fð Fr#   rq  c                   ó’   — e Zd Zd„ Zd„ Zd„ Zd„ Zej        j	        ej         
                    d¬¦  «        d„ ¦   «         ¦   «         ZdS )	ÚTestExpmFrechetc                 óæ  — t          j        g d¢g d¢g d¢g d¢gt          ¬¦  «        }t          j        ddgdd	ggt          ¬¦  «        }t          j        d
dgddggt          ¬¦  «        }t          j                             |¦  «        }t          j                             |¦  «        d d…dd …f         }i ddiddifD ]3}t          ||fi |¤Ž\  }}t          ||¦  «         t          ||¦  «         Œ4d S )N©r;   rŒ   r�   rn   ©r¿   rl   rY   rô   ©r   r   r;   rŒ   ©r   r   r¿   rl   r   r;   rŒ   r¿   rl   r�   rn   rY   rô   ÚmethodÚSPSÚblockEnlarge)r   r   r   r˜   rv   r   r   r   )	r4   r{   r    rµ   Úexpected_expmÚexpected_frechetÚkwargsÚobserved_expmÚobserved_frechets	            r!   Útest_expm_frechetz!TestExpmFrechet.test_expm_frechet
  sL  € åŒHØˆLˆLØˆLˆLØˆLˆLØˆLˆLð	õ
 ðñ ô ˆõ ŒHØ�ˆFØ�ˆFðõ ðñ ô ˆõ ŒHØ�ˆFØ�ˆFðõ ðñ ô ˆõ œ×)Ò)¨!Ñ,Ô,ˆÝ œ<×,Ò,¨QÑ/Ô/°°°°A°B°B°Ô7ÐØ˜H UÐ+¨h°~Ð-FÐGð 	@ð 	@ˆFÝ.:¸1¸aÐ.JÐ.JÀ6Ð.JÐ.JÑ+ˆMÐ+Ý˜M¨=Ñ9Ô9Ð9ÝÐ,Ð.>Ñ?Ô?Ð?Ð?ð	@ð 	@r#   c                 ó  — t          j        g d¢g d¢g d¢g d¢gt          ¬¦  «        }t          j        ddgdd	ggt          ¬¦  «        }t          j        d
dgddggt          ¬¦  «        }t          j                             |d¦  «        }g d¢}t          |d d…         |dd …         ¦  «        }|D ]Ö\  }}t          j        j        j        |         }	t          j        j        j        |         }
d|	|
z   z  }||z  }||z  }||z  }||z  }t          j         	                    |¦  «        }t          j         	                    |¦  «        d d…dd …f         }t          ||¦  «        \  }}t          ||¦  «         t          ||¦  «         Œ×d S )Nr™  rš  r›  rœ  r   r;   rŒ   r¿   rl   r�   rn   rY   rô   )r;   r�   r¿   rY   ro   é   é   é   rª   r»   )r   r   r   r˜   rv   r   ÚzipÚ_expm_frechetÚell_table_61r   r   r   )r4   Ú
M_originalÚ
A_originalÚ
E_originalÚA_original_norm_1Úselected_m_listÚm_neighbor_pairsÚmaÚmbÚell_aÚell_bÚtarget_norm_1rz   r{   r    rµ   r   r¡  r£  r¤  s                       r!   Útest_small_norm_expm_frechetz,TestExpmFrechet.test_small_norm_expm_frechet!  s×  € å”XØˆLˆLØˆLˆLØˆLˆLØˆLˆLð	õ
 ðñ ô ˆ
õ ”XØ�ˆFØ�ˆFðõ ðñ ô ˆ
õ ”XØ�ˆFØ�ˆFðõ ðñ ô ˆ
õ "œL×-Ò-¨j¸!Ñ<Ô<ÐØ5Ð5Ð5ˆÝ˜¨s°¨sÔ3°_ÀQÀRÀRÔ5HÑIÔIÐØ&ð 	@ð 	@‰FˆB�Ý”LÔ.Ô;¸BÔ?ˆEÝ”LÔ.Ô;¸BÔ?ˆEØ 5¨5¡=Ñ1ˆMØ!Ð$5Ñ5ˆEØ˜
Ñ"ˆAØ˜
Ñ"ˆAØ˜
Ñ"ˆAÝ!œL×-Ò-¨aÑ0Ô0ˆMÝ$œ|×0Ò0°Ñ3Ô3°B°Q°B¸¸¸°FÔ;ÐÝ.:¸1¸aÑ.@Ô.@Ñ+ˆMÐ+Ý˜M¨=Ñ9Ô9Ð9ÝÐ,Ð.>Ñ?Ô?Ð?Ð?ð	@ð 	@r#   c           	      óh  — t           j        j        t           j        j        t           j        j        t           j        j        f}d}t          |¦  «        D �]\}t          j        |¦  «        }t          j        d¦  «        }t          j	        dd¦  «        } |||f¬¦  «        } |||f¬¦  «        }t          j                             |d¦  «        }	||	z  }
|
|z  }|
|z  }t          j        t          j        ||g¦  «        t          j        t          j        |¦  «        |g¦  «        g¦  «        }t          j                             |¦  «        }t          j                             |¦  «        d |…|d …f         }t#          ||¦  «        \  }}t%          ||d¬¦  «         t%          ||d	¬¦  «         �Œ^d S )
NrŠ  rß   rŒ   é   ©rx  r;   gH¯¼šò×j>r®   gH¯¼šò×z>)r   rq   ÚuniformÚnormalÚstandard_cauchyÚexponentialrs   rQ  ÚexpovariaterO  r˜   rv   r   ÚvstackÚhstackÚ
zeros_liker   r   r   )r4   ÚrfuncsÚntestsrJ  Úrfuncr·  rx   r®  r¯  r°  rz   r    rµ   r{   r   r¡  r£  r¤  s                     r!   Ú	test_fuzzzTestExpmFrechet.test_fuzzB  s®  € õ ”	Ô!Ý”	Ô Ý”	Ô)Ý”	Ô%ð	'ˆð
 ˆÝ�v‘”ð 	Kñ 	KˆAÝ”M &Ñ)Ô)ˆEÝ"Ô.¨sÑ3Ô3ˆMÝÔ   BÑ'Ô'ˆAØ˜ Q q EÐ*Ñ*Ô*ˆJØ˜ Q q EÐ*Ñ*Ô*ˆJÝ %¤× 1Ò 1°*¸aÑ @Ô @ÐØ!Ð$5Ñ5ˆEØ˜
Ñ"ˆAØ˜
Ñ"ˆAÝ”	Ý”	˜1˜a˜&Ñ!Ô!Ý”	�2œ=¨Ñ+Ô+¨QÐ/Ñ0Ô0ð2ñ 3ô 3ˆAõ "œL×-Ò-¨aÑ0Ô0ˆMÝ$œ|×0Ò0°Ñ3Ô3°B°Q°B¸¸¸°FÔ;ÐÝ.:¸1¸aÑ.@Ô.@Ñ+ˆMÐ+Ý˜M¨=¸tÐDÑDÔDÐDÝÐ,Ð.>ÀTÐJÑJÔJÐJÑJð#	Kð 	Kr#   c                 ó^  — t          j        ddgddggt          ¬¦  «        }t          j        ddgdd	ggt          ¬¦  «        }t          j                             |d
¦  «         t          ||d¬¦  «        \  }}t          ||d¬¦  «        \  }}t          ||¦  «         t          ||¦  «         d S )Ng]±Ø‰?ø?gîvÿP÷þ?g¯¾^Ú?guÃ�¨øÎ?r   gîðS,éþ?g�¶·|� @gJ»Ùtõ?g~3µ•Œå?r;   rž  ©r�  rŸ  )r   r   r   r˜   rv   r   r   r   )r4   r    rµ   Úsps_expmÚsps_frechetÚblockEnlarge_expmÚblockEnlarge_frechets          r!   Útest_problematic_matrixz'TestExpmFrechet.test_problematic_matrix]  sè   € åŒHØ˜ZÐ(Ø˜ZÐ(ðõ ð ñ  ô  ˆõ ŒHØ˜ZÐ(Ø˜ZÐ(ðõ ð ñ  ô  ˆõ 	Œ×Ò˜!˜QÑÔÐÝ ,Ø�1˜Uð!$ñ !$ô !$Ñˆ�+å2>Ø�1˜^ð3-ñ 3-ô 3-Ñ/ÐÐ/å˜Ð"3Ñ4Ô4Ð4Ý˜Ð%9Ñ:Ô:Ð:Ð:Ð:r#   zthis test is deliberately slowrÅ   c                 ó&  — d}t           j                             ||f¬¦  «        }t           j                             ||f¬¦  «        }t          ||d¬¦  «        \  }}t          ||d¬¦  «        \  }}t	          ||¦  «         t	          ||¦  «         d S )Niè  r»  rž  rÉ  rŸ  )r   rq   r¿  r   r   )r4   rx   r    rµ   rÊ  rË  rÌ  rÍ  s           r!   Útest_medium_matrixz"TestExpmFrechet.test_medium_matrixo  s«   € ð ˆÝŒI×!Ò!¨¨1 vÐ!Ñ.Ô.ˆÝŒI×!Ò!¨¨1 vÐ!Ñ.Ô.ˆÝ ,Ø�1˜Uð!$ñ !$ô !$Ñˆ�+å2>Ø�1˜^ð3-ñ 3-ô 3-Ñ/ÐÐ/å˜Ð"3Ñ4Ô4Ð4Ý˜Ð%9Ñ:Ô:Ð:Ð:Ð:r#   N)rR   rS   rT   r¥  r¸  rÇ  rÎ  rÑ   rÒ   ÚslowÚskiprÐ  rU   r#   r!   r—  r—    sš   € € € € € ð@ð @ð @ð.@ð @ð @ðBKð Kð Kð6;ð ;ð ;ð$ „[ÔØ„[×ÒÐ=ÐÑ>Ô>ð
;ð 
;ñ ?Ô>ñ Ôð
;ð 
;ð 
;r#   r—  c                 óÄ   — t          j        || j        ¦  «        }t          |¦  «        }||z  ||z  z  }t	          | |z   ¦  «        }t          ||z
  ¦  «        ||z  z  }	|	 S ©N)r   ÚreshaperÌ   r   r   )
r    ÚA_normr¦   ÚX_normÚepsrE  Úp_normÚperturbationÚX_primeÚscaled_relative_errors
             r!   Ú_help_expm_cond_searchrÝ  ~  sh   € Ý
Œ
�1�a”gÑÔ€AÝ�!‰WŒW€FØ˜‘7˜f v™oÑ.€LÝ�1�|Ñ#Ñ$Ô$€GÝ  ¨1¡Ñ-Ô-°¸#±Ñ>ÐØ!Ð!Ð!r#   c                 ó†   — | t           j                             |¦  «        t           j                             | ¦  «        z  z  S rÔ  )r˜   rv   r   )r    r²   s     r!   Ú_normalized_likerß  ‡  s2   € Ø•”×!Ò! !Ñ$Ô$¥u¤|×'8Ò'8¸Ñ';Ô';Ñ;Ñ<Ð<r#   c                 óx   —  | |¦  «        } | ||z   ¦  «        }t          ||z
  ¦  «        t          |¦  «        z  S rÔ  )r   )r|  r    rÚ  r¦   rÛ  s        r!   Ú_relative_errorrá  ‹  s@   € Ø	ˆˆ!‰Œ€AØˆa��LÑ Ñ!Ô!€GÝ�˜!‘ÑÔ�t A™wœwÑ&Ð&r#   c                   óJ   — e Zd Zd„ Zd„ Zd„ Zej        j        d„ ¦   «         Z	dS )ÚTestExpmConditionNumberc                 óè   — t           j                             d¦  «         t          dd¦  «        D ]A}t           j                             ||¦  «        }t          |¦  «        }t          d|¦  «         ŒBd S )Nrk   r;   rn   r   )r   rq   rr   rs   rt   r   r
   )r4   rx   r    Úkappas       r!   Útest_expm_cond_smokez,TestExpmConditionNumber.test_expm_cond_smoke’  sj   € Ý
Œ	�Š�tÑÔÐÝ�q˜!‘”ð 	(ð 	(ˆAÝ”	—’  1Ñ%Ô%ˆAÝ˜a‘L”LˆEÝ˜a Ñ'Ô'Ð'Ð'ð	(ð 	(r#   c                 ó„   — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          |¦  «        }t          d|¦  «         d S )N)göá(’ò¿gÙ™BgÝx÷@g  °=ÛðÁg ¾Zd ðB)r   gzNÑV7ó¿gðŠà¯…÷@g  2pñÁ)r   r   gá™¥¤T ò¿g?W[±ÎE÷@)r   r   r   gT–†!ßò¿gã yÏùhG)r   r   r   r
   )r4   r    rå  s      r!   Útest_expm_bad_condition_numberz6TestExpmConditionNumber.test_expm_bad_condition_number™  s_   € ÝŒHØIÐIÐIØ<Ð<Ð<Ø/Ð/Ð/Ø#Ð#Ð#ð	ñ ô ˆõ ˜!‘”ˆÝ˜$ Ñ&Ô&Ð&Ð&Ð&r#   c                 óz  — t           j                             d¦  «         t          j        ddd¬¦  «        D ]B}t          j        |gg¦  «        }t          t          |¦  «        t          |¦  «        ¦  «         ŒCt          j        ddd¬¦  «        D ]B}t          j        |gg¦  «        }t          t          |¦  «        t          |¦  «        ¦  «         ŒCt          d¦  «        D ]W}t           j         
                    d	d	¦  «        }t          t          |¦  «        t          j        |¦  «        d
         ¦  «         ŒXd S )Né90  r„  r¿   r§  )Únumr1  rŒ   rõ   r;   rÉ   )r   rq   rr   Úlinspacer   r   r   Úabsru   rs   rt   r¡   )r4   Úxr    rJ  s       r!   Útest_univariatez'TestExpmConditionNumber.test_univariate£  s  € Ý
Œ	�Š�uÑÔÐÝ”˜R ¨Ð+Ñ+Ô+ð 	2ð 	2ˆAÝ”˜1˜#˜‘”ˆAÝ�I a™LœL­#¨a©&¬&Ñ1Ô1Ð1Ð1Ý”˜R ¨Ð+Ñ+Ô+ð 	2ð 	2ˆAÝ”˜1˜#˜‘”ˆAÝ�I a™LœL­#¨a©&¬&Ñ1Ô1Ð1Ð1Ý�r‘”ð 	@ð 	@ˆAÝ”	—’  1Ñ%Ô%ˆAÝ�I a™LœL­"¬+°a©.¬.¸Ô*>Ñ?Ô?Ð?Ð?ð	@ð 	@r#   c           	      óV  — t           j                             d¦  «         d}d}t          |¦  «        D �]ô}t           j                             dd¦  «        }t           j                             ||¦  «        }t          j                             |¦  «        }t          |¦  «        }t          j                             |¦  «        }t          |¦  «        }	t          j        t          |||||¦  «        }
t          j        ||z  ¦  «        }t          |
|d¬¦  «        }|j        } |
|¦  «        }|t#          t          j        ||j        ¦  «        |¦  «        z  }t)          t          ||¦  «        }t+          || |z  ¦  «         t          d¦  «        D ]{}|t#          t          j        j        |j        Ž |¦  «        z  }t+          t          |¦  «        t          |¦  «        ¦  «         t)          t          ||¦  «        }t-          ||¦  «         Œ|t-          |dd|z  z   |z  |	z  ¦  «         �Œöd S )	Nrê  re   rõ   rŒ   r¿   zL-BFGS-BrÉ  r;   )r   rq   rr   rs   Úrandintrt   r˜   rv   r   r   r   Ú	functoolsÚpartialrÝ  rÀ   r   rî  rß  rÕ  rÌ   rá  r   r
   )r4   rØ  rR  rJ  rx   r    rÖ  r¦   r×  rå  r|  ÚguessÚoutÚxoptÚyoptÚp_bestÚp_best_relerrr�  Úp_randÚp_rand_relerrs                       r!   Útest_expm_cond_fuzzz+TestExpmConditionNumber.test_expm_cond_fuzz¯  sô  € å
Œ	�Š�uÑÔÐØˆØˆÝ�x‘”ð 	Hñ 	HˆAÝ”	×!Ò! ! QÑ'Ô'ˆAÝ”	—’  1Ñ%Ô%ˆAÝ”\×&Ò& qÑ)Ô)ˆFÝ�Q‘”ˆAÝ”\×&Ò& qÑ)Ô)ˆFÝ˜a‘L”LˆEõ Ô!Õ"8Ø�v˜q &¨#ñ/ô /ˆAå”G˜A˜a™C‘L”LˆEÝ˜1˜e¨JÐ7Ñ7Ô7ˆCØ”5ˆDØ�1�T‘7”7ˆDØÕ+­B¬J°t¸Q¼WÑ,EÔ,EÀqÑIÔIÑIˆFÝ+­D°!°VÑ<Ô<ˆMÝ˜M¨D¨5°3©;Ñ7Ô7Ð7õ ˜1‘X”Xð @ð @�ØÕ/µ´	´ÀÄÐ0IÈ1ÑMÔMÑM�Ý¥ V¡¤­d°6©l¬lÑ;Ô;Ð;Ý /µ°a¸Ñ @Ô @�Ý! -°Ñ?Ô?Ð?Ð?õ
 ˜m¨a°!°C±%©i¸3Ñ->ÀÑ-FÑGÔGÐGÑGð?	Hð 	Hr#   N)
rR   rS   rT   ræ  rè  rï  rÑ   rÒ   rÑ  rü  rU   r#   r!   rã  rã  ‘  sj   € € € € € ð(ð (ð (ð'ð 'ð 'ð
@ð 
@ð 
@ð „[Ôð#Hð #Hñ Ôð#Hð #Hð #Hr#   rã  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestKhatriRaoc           
      ó^  — t          t          ddgddgg¦  «        t          ddgddgg¦  «        ¦  «        }t          |t          dd	gdd
gddgddgg¦  «        ¦  «         t          t          j        ddg¦  «        t          j        ddg¦  «        ¦  «        }t          |j        d¦  «         d S )Nr;   rŒ   r�   rn   r¿   rl   rY   rô   é   rº  r©  é   é   é    )rn   rŒ   )r   r   r   r   rÊ   rÌ   ©r4   r5   Úbs      r!   Ú
test_basiczTestKhatriRao.test_basicØ  sÇ   € Ý•u˜q !˜f q¨! fÐ-Ñ.Ô.Ý˜q !˜f q¨! fÐ-Ñ.Ô.ñ0ô 0ˆõ 	˜1�e a¨ WØ&'¨ WØ&(¨" XØ&(¨" Xð%/ñ 0ô 0ñ 	1ô 	1ð 	1õ
 •r”x  A Ñ'Ô'­¬°1°a°&Ñ)9Ô)9Ñ:Ô:ˆÝ˜1œ7 FÑ+Ô+Ð+Ð+Ð+r#   c                 óÞ   — t          j        t          ¦  «        5  t          g d¢g d¢g¦  «        }t          ddgddgg¦  «        }t	          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r;   rŒ   r�   ©rn   r¿   rl   r;   rŒ   r�   rn   ©rÑ   ÚraisesÚ
ValueErrorr   r   r  s      r!   Útest_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equalityä  sÈ   € ÝŒ]�:Ñ&Ô&ð 	ð 	Ý�y�y�yØ �y�yð"ñ #ô #ˆAå˜˜1�vØ˜1�vðñ  ô  ˆAå�q˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   š;A"Á"A&Á)A&c                 ój  — t          j        t          ¦  «        5  t          g d¢¦  «        }t          g d¢¦  «        }t	          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          g d¢¦  «        }t          g d¢g d¢g¦  «        }t	          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          g d¢g d¢g¦  «        }t          g d¢¦  «        }t	          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r	  )rY   rô   ro   r
  r  s      r!   Útest_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_arrayì  s   € ÝŒ]�:Ñ&Ô&ð 	ð 	å�i�i�iÑ Ô ˆAÝ�i�i�iÑ Ô ˆAÝ�q˜!ÑÔÐð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ]�:Ñ&Ô&ð 	ð 	å�i�i�iÑ Ô ˆAÝØ�	�	Ø�	�	ðñ ô ˆAõ �q˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ]�:Ñ&Ô&ð 	ð 	åØ�	�	Ø�	�	ðñ ô ˆAõ �i�i�iÑ Ô ˆAÝ�q˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   š3AÁAÁ AÁ=7C Ã CÃCÃ$7D(Ä(D,Ä/D,c                 ó  ‡‡— t          ddgddgg¦  «        Št          ddgddgg¦  «        Št          ‰‰¦  «        }t          j        ˆˆfd	„t	          ‰j        d         ¦  «        D ¦   «         ¦  «        j        }t          ||¦  «         d S )
Nr;   rŒ   r�   rn   r¿   rl   rY   rô   c                 ób   •— g | ]+}t          j        ‰d d …|f         ‰d d …|f         ¦  «        ‘Œ,S rÔ  )r   Úkron)r”   r^  r5   r  s     €€r!   ú
<listcomp>z@TestKhatriRao.test_equality_of_two_equations.<locals>.<listcomp>
  sM   ø€ ð 6ð 6ð 6Øõ œ' ! A A A q D¤'¨1¨Q¨Q¨Q°¨T¬7Ñ3Ô3ð 6ð 6ð 6r#   )r   r   r   rÁ  rs   rÌ   r°   r   )r4   Úres1Úres2r5   r  s      @@r!   Útest_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equations  s¯   øø€ Ý�A�q�6˜A˜q˜6Ð"Ñ#Ô#ˆÝ�A�q�6˜A˜q˜6Ð"Ñ#Ô#ˆå˜!˜QÑÔˆÝŒyð 6ð 6ð 6ð 6ð 6Ý#(¨¬°¬Ñ#4Ô#4ð6ñ 6ô 6ñ 7ô 7Ü78ð 	õ 	˜4 Ñ&Ô&Ð&Ð&Ð&r#   c                 ón  — t          j        d¦  «        }t          j        d¦  «        }t          ||¦  «        }t          |t          j        d¦  «        ¦  «         t          j        d¦  «        }t          j        d¦  «        }t          ||¦  «        }t          |t          j        d¦  «        ¦  «         d S )N)r   rŒ   )r�   rŒ   )r�   r   )r¿   r   )r©  r   )r   rÊ   r   r   )r4   r5   r  Úress       r!   rÐ   zTestKhatriRao.test_empty  s–   € ÝŒH�VÑÔˆÝŒH�VÑÔˆÝ˜˜AÑÔˆÝ˜�RœX fÑ-Ô-Ñ.Ô.Ð.åŒH�VÑÔˆÝŒH�VÑÔˆÝ˜˜AÑÔˆÝ˜�RœX gÑ.Ô.Ñ/Ô/Ð/Ð/Ð/r#   N)rR   rS   rT   r  r  r  r  rÐ   rU   r#   r!   rþ  rþ  Ö  s_   € € € € € ð
,ð 
,ð 
,ðð ð ðð ð ð2'ð 'ð 'ð	0ð 	0ð 	0ð 	0ð 	0r#   rþ  )/Ú__doc__rq   rò  Únumpyr   r   r   r   r   Únumpy.testingr   r   r	   r
   r   r   rÑ   Úscipy.linalgr˜   r   r   r   r   r   r   r   r   r   r   r   Úscipy.linalg._matfuncsr   Úscipy.linalg._expm_frechetÚscipy.optimizer   r"   r%   rW   rÙ   rA  rq  r—  rÝ  rß  rá  rã  rþ  rU   r#   r!   ú<module>r      s|  ððð ð €€€Ø Ð Ð Ð à Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðPð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pð Pà €€€à Ð Ð Ð ðKð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kà *Ð *Ð *Ð *Ð *Ð *Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø !Ð !Ð !Ð !à #Ð #Ð #Ð #Ð #Ð #ðð ð ð*'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðV`+ð `+ð `+ð `+ð `+ñ `+ô `+ð `+ðFC#ð C#ð C#ð C#ð C#ñ C#ô C#ð C#ðLvHð vHð vHð vHð vHñ vHô vHð vHðrIFð IFð IFð IFð IFñ IFô IFð IFðXs;ð s;ð s;ð s;ð s;ñ s;ô s;ð s;ðl"ð "ð "ð=ð =ð =ð'ð 'ð 'ðBHð BHð BHð BHð BHñ BHô BHð BHðJB0ð B0ð B0ð B0ð B0ñ B0ô B0ð B0ð B0ð B0r#   