L iidZddlZddlZddlZddlmZmZmZddlm Z m Z m Z m Z m Z mZmZddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!ddlm"Z"ddl#m$Z$ddl%m&Z&ddl'Zdd lm(Z(dd l)m*Z*d Z+Gd d Z,GddZ-GddZ.GddZ/GddZ0GddZ1dZ2dZ3dZ4GddZ5GddZ6ejnjqdeeegd Z9d!Z:y)"z, Test functions for linalg.matfuncs module N)arrayidentitysqrt)assert_array_almost_equalassert_allcloseassert_assert_array_lessassert_array_equal assert_warnssuppress_warnings)funmsignmlogmsqrtmfractional_matrix_powerexpm expm_frechet expm_condnorm khatri_raocosmsinmtanmcoshmsinhmtanhm)_matfuncs_inv_ssq)pick_pade_structure)LogmExactlySingularWarning) LinAlgWarning)minimizecTtjgdgdgdgdgt}|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 )g3d?L@r#r#)rgRal!A?r#r#)rrgQI?r#)rrrg^?dtype)nprfloat)As f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_matfuncs.py%_get_al_mohy_higham_2012_experiment_1r*s/ "  &+  ,A Hc$eZdZdZdZdZdZy) TestSignMctgdgdgdgdgdg}tgdgdgdgd gd g}t|}t||y) Ng333333=@g3333338g`Q@gfffffH@g@gffffff"g@2g0g$g@g4r1r2g333333#g333333#@g9g.r2g#@g333333g2@g3333332@@)g'@ 'Rqgy.@ge@5@r7)g@ȽUЛ'?g9\g+%r8)gRQQ?gGzgffffffr9)gר#w?î?gk#egC,Nr:)g @42 g F(@gcs@@r;)rrr)selfacrrs r) test_nilszTestSignM.test_nils4sW 00.1- / 0 QO0ON PQ !H!!B'r+cHtgdgdgdgdg}t|y)N)rr)rCrrCrrrrrC)rrrCrrrr<r=s r)test_defective1zTestSignM.test_defective1Bs ;y9= > ar+cNtgdgdgdgdgdf}t|y)Nr/r0r3r4r5rErFs r)test_defective2zTestSignM.test_defective2Gs)  & ' ( ' $ & ' ar+c Ztgdgdgdgdgdgdgdg}t|y)Nr29@rBrBrBrBrBrB$@@rPrPrBrBrBr6.@rPrPrBrBrBrBrBrRrPrBrBrBrBrBrPrOrBrBrBrBrBrBr2rLrBrBrBrBrBrBrNrErFs r)test_defective3zTestSignM.test_defective3Qs/ 1100010 2 3 ar+N)__name__ __module__ __qualname__r@rGrIrWr+r)r-r-2s ( r+r-c eZdZdZej j ddZej j ddZdZ dZ dZ dZ d Z d Zej jd Zej jd Zd ZdZej j)dej j+deeej2eej6gdZej jej j+deeej2eej6gdZy)TestLogMcLtjjd|_y)Nl>gO*31)r&random default_rngrng)r<s r) setup_methodzTestLogM.setup_method^s99(()9:r+z$ignore:.*inaccurate.*:RuntimeWarningc tgdgdgdgdgdgdgdg}tdd zd z|z }t|y) NrKrMrQrSrTrUrVg@y)rrr)r<r=ms r)r@zTestLogM.test_nilsasF 1100010 2 3a[_R  " Qr+cbt}t|}t|}t||ddy)Ng-C6 ?+=rtolatol)r*rrr)r<r(A_logm A_round_trips r)*test_al_mohy_higham_2012_experiment_1_logmz3TestLogM.test_al_mohy_higham_2012_experiment_1_logmns, 2 3aF|  ad?r+ct}t|tj}t |}t tj ||dd y)Nh㈵>rgrh)r*r r&logrrallclose)r<r( A_funm_logrls r).test_al_mohy_higham_2012_experiment_1_funm_logz7TestLogM.test_al_mohy_higham_2012_experiment_1_funm_logws? 2 3!RVV_ J' BKK adGGHr+ctddD]}|jj||f}tjdddD]}||z}tj j |}d|d|}t|}||z}t||t5} | jt t|} t| } t| || dddy#1swYxYw) NrCsize zM:z eivals:category)err_msg)rangerauniformr&logspacelinalgeigvalsrrr filterRuntimeWarningrr) r<n M_unscaledscaleMWr}M_sqrtmM_sqrtm_round_tripsupM_logmM_logm_round_trips r)test_round_trip_random_floatz%TestLogM.test_round_trip_random_floatsq! KA))1v)6JRA. K&II%%a(qc!- (%,w%6" 2A6'(KCJJJ7!!WF(,V %#$5q'J KK K KKKs ;C""C+ c(tddD]}|jj||fd|jj||fzz}tjdddD])}||z}t |}t |}t||+y)NrCru?rxryrz)r~rastandard_normalr&rrrr)r<rrrrr M_round_trips r)test_round_trip_random_complexz'TestLogM.test_round_trip_random_complexsq! 1A((22Aq6:TXX55q!f==>JRA. 1&a#F|  a0  1 1r+ctd}ddgddggddgddggddgddggddgddggfD]}tjj|}tt d|D t j |t}t|}t|jj|vt j |t}t|}t|jj|vt j |t }t|}t|jj|vy)NFDGrCrc3VK|]!}|jxs|jdk#ywrNimagreal.0ws r) zFTestLogM.test_logm_type_preservation_and_conversion..$N $$^4A r+cgdgdgdg}ttfD]}tj||}tj j |}tdtj|jjkt|}ttj|jtjtt!||y)N)rCrCr)rrCrC)rCrrCr${Gz?)r'rr&rrrrrabsolutersumr issubdtyper%inexactrr)r<rdtXrYs r)test_complex_spectrum_real_logmz(TestLogM.test_complex_spectrum_real_logms 9 -. (B"%A $$Q'A D2;;qvv.2244 5QA BMM!''2::6 7 DGQ '  (r+cddgddggddgddggfD]o}ttfD]^}tj||}t |\}}t tj |jtj`qy)NrCrr$) r'rr&rrrrr%complexfloating)r<rrr(rkinfos r)test_real_mixed_sign_spectrumz&TestLogM.test_real_mixed_sign_spectrumsQ!R!Q!Q " IAWn IHHQb)#Aw  fllB4F4FGH I Ir+c"tjddgddgg}tjddgddgg}||j||jfD]<}tj }t |t|}t|}t||d>y)NrrrCrgrj) r&rasarrayTrrr rrr)r<r(Brexpected_warningLEs r)test_exactly_singularzTestLogM.test_exactly_singulars HHq!fr2h' ( JJAA' (ACCACC .A0KK -tQ7AQA Aqu -  .r+ctjdgg}tj}t |t |}t |}t||dy)Ng0.++rgr)r&rrLogmNearlySingularWarningr rrr)r<rrrrs r)test_nearly_singularzTestLogM.test_nearly_singularsD HHvhZ ,FF )4 3 G15)r+cddgddgg}dtjdzgtj dzdgg}tt||dtt ||dddgdd gg}dtjzdzd tjzgdd tjzdzgg}tt||dtt ||dddgdd gg}dtjzdzdgdd tjzdzgg}tt||dtt ||dy) NrrCr?rgrrryr)r&pirrr)r<rrs r)&test_opposite_sign_complex_eigenvaluesz/TestLogM.test_opposite_sign_complex_eigenvaluessVb!W s^ruufSj!_ -Q/Q/!Wq#h hslAbeeG $q#bee)C-&8 9Q/Q/!Wq#h hslA CIcM 2 3Q/Q/r+cd}tj||ftj|z}d|j_t |y)NF)r&onesrflags writeablerr<rr=s r) test_readonlyzTestLogM.test_readonlys8  GGQFObkk!n ,! Qr+z6ValueError: attempt to get argmax of an empty sequencereasonrctjd|}t|}tjd|}t|}|jdk(sJ|j |j k(sJyNrrr$r)r&emptyreyeshaper%)r<rr=log_aa0log_a0s r) test_emptyzTestLogM.test_emptys^ HHV2 &Q VVAR b{{f$$${{fll***r+r%ctjtd5tjt5t t j d|ddddddy#1swYxYw#1swYyxYw)Nzlogm result may be inaccurate)matchrrr$)pytestwarnsrrrr&zeros)r<r%s r)test_no_ZeroDivisionErrorz"TestLogM.test_no_ZeroDivisionErrors] ll>1PQ 0ll56 0 &. / 0 0 0 0 0 0s"A4!A(A4(A1 -A44A=N)rXrYrZrbrmarkfilterwarningsr@rmrsrrrrr thread_unsaferrrrxfail parametrizeintr'r&float32r complex64rrr[r+r)r]r]]sZ; [[ FG H  [[ FG@H@IK. 1>< ( I [[.. [[** 0  [[VW [[TC GR\\#RS+TX+ [[ [[WsE2::w &UV0W0r+r]ceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZej.j1deeej8eej<gdZdZ dZ!dZ"y) TestSqrtMctjjd}tddD]^}|j ||f}tj dddD]/}||z}t |}|j|}t||1`y)Nl& \31rCrurxryrz r&r_r`r~rrrdotrr<rarrrrrrs r)rz&TestSqrtM.test_round_trip_random_floatsii##$45q! 7A,,aV4JRA. 7&(%,[[%9" 2A6  7 7r+cJtjjd}tddD]u}|j ||fd|j ||fzz}tj dddD]/}||z}t |}|j|}t||1wy)Nl& \31rCrurrxryrzrrs r)rz(TestSqrtM.test_round_trip_random_complexsii##$45q! 7A--q!f5s22Aq6::;JRA. 7&(%,[[%9" 2A6  7 7r+cd}t|}tgdd|ddgdd|dggdg}tgdd|ddgdd|dggdg}t||z|t|}t||z|y)Ng?)?rrrCrrD)rCrrr)rrrr)r<eser=saesas r)test_badzTestSqrtM.test_bad*s  !W ;a!9a!9 Kr!AJqAJ  ""r'1-Ah!#)Q/r+cd}ddgddggddgddggddgddggddgddggddgddggfD]=}tjj|}tt d|D t 5}|j ttj|t}t|}t|jj|vtj|t}t|}t|jj|vtj|t }t|}t|jj|vddd@y#1swYLxYw) NrrCrrrc3VK|]!}|jxs|jdk#ywrrrs r)rzHTestSqrtM.test_sqrtm_type_preservation_and_conversion..Irrr{r$)rrrrrr rr r&rr'rr%rr)r<rrrrr(A_sqrtms r)+test_sqrtm_type_preservation_and_conversionz5TestSqrtM.test_sqrtm_type_preservation_and_conversion;sl.Q!Q Q!Q Q!Q Q!Q Q!Q " CN $$^4A .g$8,!&&1*,8rr$) rrrrrr&rrrr%rr')r<rrrr(rs r)9test_sqrtm_type_conversion_mixed_sign_or_complex_spectrumzCTestSqrtM.test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum^s-Q!R!Q!Q J 24 ?N  $$^4A C8a88 9w7AAhG GMM&&*== >u5AAhG GMM&&*== ># ?r+ct}t|}||z}t||dttj|tj|y)Nrori)r*rrr&tril)r<r(rrls r)%test_al_mohy_higham_2012_experiment_1z/TestSqrtM.test_al_mohy_higham_2012_experiment_1ssD 1 3((  ad3 -rwwqz:r+cttfD]}tjgdgdgdgdg|}t 5}|j t t|}ttj|tjdtj|jsJtj|jsJ dddy#1swYxYw)N)rrrr)rrrr)rrrrrrrrr$r{)ryry)rr'r&rr rr rrr risnanrisinf)r<rr(rrs r)test_strict_upper_triangularz&TestSqrtM.test_strict_upper_triangular{su* /B &( )A #$ / M 2( 0"((62BCxx(,,...xx(,,...  / / /  / /s BC''C0 cddgddgg}ddgddgg}ttj|||d tt||d y) N@ryr??r?rgr)rr&rrr<rRs r)rz0TestSqrtM.test_opposite_sign_complex_eigenvaluessL!Wq#h AYD "q! ae4a!%0r+c tjgdgdgdgdg}tjtdddtdggdgdtdddtdgg}t||z|dt 5}|j t tt||ddddy#1swYyxYw)N)rCrrrCr rrrgrr{)r&rrrr rr rr<rrrs r) test_gh4866zTestSqrtM.test_gh4866s HHl"""$ % HHtCy!QS 2""Cy!QS 24 5 Aqu-   5C JJ J . E!Hae 4 5 5 5s .B==Cc.tjgd}tjtdddg}t||z|dt 5}|j t tt||ddddy#1swYyxYw)N)rrCrrrCrrgrr{)r&diagrrr rr rrs r) test_gh5336zTestSqrtM.test_gh5336ss GGI  GGT!WaO $Aqu-   5C JJ J . E!Hae 4 5 5 5s .B  Bctjd}tjd}t5}|jtt t ||ddddy#1swYyxYw)Nrr{rgr)r&rr rr rrrs r) test_gh7839zTestSqrtM.test_gh7839sY HHV  HHV    5C JJ J . E!Hae 4 5 5 5s .A,,A5ctjd}|jdtj|dtjt |sJy)N)r!gGz?rC)r&rfill fill_diagonal isrealobjrr<rs r) test_gh17918zTestSqrtM.test_gh17918sA HHX  t  A||E!H%%%r+ctjgdgdgdg}t|}t||z|dt|j tj }t||z|dy)N)rrBrB)rrCr)rrrrgrgư>)r&rrrastyper)r<rsqs r) test_gh23278zTestSqrtM.test_gh23278sW HHlK< = 1XR/ 188BLL) *R.r+cltjdtj}t|jtj k(sJtjdtj }t|jtj k(sJtjdtj}t|jtj k(sJtjdtj}t|jtj k(sJyN r$) r&ruint8rr%float64uint16uint32uint64r%s r)-test_data_size_preservation_uint_in_float_outz7TestSqrtM.test_data_size_preservation_uint_in_float_outs FF2RXX &Qx~~+++ FF2RYY 'Qx~~+++ FF2RYY 'Qx~~+++ FF2RYY 'Qx~~+++r+cltjdtj}t|jtj k(sJtjdtj }t|jtj k(sJtjdtj}t|jtj k(sJtjdtj}t|jtj k(sJyr,) r&rint8rr%r/int16int32int64r%s r),test_data_size_preservation_int_in_float_outz6TestSqrtM.test_data_size_preservation_int_in_float_outs FF2RWW %Qx~~+++ FF2RXX &Qx~~+++ FF2RXX &Qx~~+++ FF2RXX &Qx~~+++r+ctjddgddggtj}t|jtj k(sJtjddgddggtj }t|jtj k(sJtjddgddggtj}t|jtj k(sJtjddgddggtj}t|jtj k(sJy)Nrryrr$) r&rr5rr% complex128r6r7r8r%s r)+test_data_size_preservation_int_in_comp_outz5TestSqrtM.test_data_size_preservation_int_in_comp_outs HHq!fq"g&bgg 6Qx~~... HHq!fq"g&bhh 7Qx~~... HHq!fq"g&bhh 7Qx~~... HHq!fq"g&bhh 7Qx~~...r+ctjdtj}t|jtj k(sJtjdtj }t|jtj k(sJtjdtj }t|jtj k(sJttdrNtjdtj}t|jtj k(sJyy)Nr-r$float128) r&rfloat16rr%rr/hasattrr?r%s r).test_data_size_preservation_float_in_float_outz8TestSqrtM.test_data_size_preservation_float_in_float_outs FF2RZZ (Qx~~+++ FF2RZZ (Qx~~+++ FF2RZZ (Qx~~+++ 2z "r-A8>>RZZ/ // #r+ctjddgddggtj}t|jtj k(sJtjddgddggtj }t|jtj k(sJtjddgddggtj}t|jtjk(sJttdrettdrTtjddgddggtj}t|jtjk(sJyyy)Nrryrr;r$r? complex256) r&rr@rr%rrr/r<rAr?r%s r)-test_data_size_preservation_float_in_comp_outz7TestSqrtM.test_data_size_preservation_float_in_comp_outs  HHq!fq"g&bjj 9Qx~~--- HHq!fq"g&bjj 9Qx~~--- HHq!fq"g&bjj 9Qx~~... 2z "wr<'@1a&1b'*"++>A8>>R]]2 22(A "r+ctjddgddggtj}t|jtjk(sJtjddgddggtj }t|jtj k(sJt tdrTtjddgddggtj}t|jtj k(sJyy)Nrryrrr$rD)r&rrrr%r<rArDr%s r),test_data_size_preservation_comp_in_comp_outz6TestSqrtM.test_data_size_preservation_comp_in_comp_out s HHr1g3x( =Qx~~--- HHr1g3x( >Qx~~... 2| $2q'As8,BMMBA8>>R]]2 22 %r+rctjd|}t|}tjd|}t|}|jdk(sJ|j |j k(sJyr)r&rrrrr%)r<rr=srs0s r)rzTestSqrtM.test_emptys\ HHV2 & !H VVAR  2Yww&   ww"(("""r+c &tjjd}d}|jdd|zd|zf}tj|dtj d|zztj |}}||z}|ddddddddf}tj|ddddddddf}tt|ddddddddft|tt|ddddddddft|y) Nl& \31 rrrvr)krC) r&r_r`rr rtriuasfortranarrayrr)r<rarr(rU A_noncontig_c A_noncontig_fs r)test_cf_noncontig_nd_inputsz%TestSqrtM.test_cf_noncontig_nd_inputssii##$45  KKa1ac]K +wwqB"&&1+-rwwqz1 E!SqS#A#+ ))!,Q1add]; a3Q3! n-u]/CDa14a4A ./}1EFr+chtjgdt}tt ||y)N)ryrrr)rr%)r&rr'r r)r<r(s r)test_empty_sizeszTestSqrtM.test_empty_sizes+s HH.rr333333rlgffffff @r$) rrrrrr&rr'rr%rrr<rrrrhr(rws r)%test_type_preservation_and_conversionz?TestFractionalMatrixPower.test_type_preservation_and_conversionsA .Q!Q Q!Q Q!Q Q!Q " CN $$^4A .rrrr$) rrrrrr&rrrr%rr'rs r)3test_type_conversion_mixed_sign_or_complex_spectrumzMTestFractionalMatrixPower.test_type_conversion_mixed_sign_or_complex_spectrums-Q!R!Q!Q Iy13 CN  $$^4A C8a88 9, CHH^7;1!Q7 **.AABHH^591!Q7 **.AAB C Cr+zToo unstable across LAPACKs.rczddgddggddgddggddgddgggdgdgdgfD]}ttfD]}tj|| }d D]:}t ||}t tj |j<d D])}t ||}t |d|z }t||+y) NrrCrrru)rrr)rrCrC)rrrCr$)gffffffrrg)rlgzG?) r'rr&rrrrallr)r<rnewtyper(rhrwrls r) test_singularz'TestFractionalMatrixPower.test_singularsQ!Q Q!Q Q!Q Iz2 4 5N"7+ 5HH^7;15A5a;GBHHW-11345%5A5a;G#:7AaC#HL#L!45  5 5r+cddgddgg}ddgddgg}ttj|||d tt|d |d y) Nrryrrrrrrgrr)rr&rrrs r)rz@TestFractionalMatrixPower.test_opposite_sign_complex_eigenvaluessP!Wq#h AYD "q! ae4/37Gr+N)rXrYrZrrroryr rrrrrrrrr[r+r)r`r`?s[ 5 5&$82E(8!CFC2 [[<=5>5&Hr+r`c eZdZdZdZej jdee e e e e egej jdeeej$eej(gej jdddgdZd Zd Zd Zej j2ej j5d d Zy)TestExpMc\tddgddgg}tt|ddgddggy)NrBrrC)rrrrFs r) test_zerozTestExpM.test_zeros2 Bq61Q%. !!$q'Aa5!A-8r+cxtd}t|tjtjggy)NrC)rrr&rr)r<elts r)test_single_eltzTestExpM.test_single_elts&1gRXXvh/0r+funcrrr)rCrCctj||}tjd|}||}||}|j|k(sJ|j|jk(sJy)Nr$)r-r-)r&rrr%)r<rrrr(A0resultresult0s r)test_small_empty_matrix_inputz&TestExpM.test_small_empty_matrix_inputs^ HHU" % XXhb )ar(||u$$$||w}},,,r+ctj}tddgddgg}|dzdzd|zz }|dzdz |z }tt |t||g|dz |ggt |j tj jjdk(sJt |j tjjjdk(sJy)NrCryrrf) r&rrrrr(rr%rr)r<rr=aabbs r)test_2x2_inputzTestExpM.test_2x2_inputs DD Aq6Aq6" #dQh1 dQh\QR2a4*'=!>?AHHR\\*+1166#===AHHRZZ()//44;;;r+c tj}tjddgddggddgddggddgddggddgddggddgddgggd }tj|dzdzd |zz |dzdz |z g|dzdz dz |z |dzdzd |zz ggdd|d zzz d|d zzdz zd|d zzdz dd|d zzz z g|d zdz dd|d zzz z dd|d zzz |d zdz zggdd|zz |d zdz zdd |zz d|d zzd z zgdd |zz |d zd z zdd|zz d|d zzdz zggdd |d zzz d|d zzd z zdd |d zzz d|d zzd z zgdd |d zzz d|d zzd z zdd |d zzz d|d zzd z zggdd |zz d|zd z zdd |zz d|zd z zgdd |zz d|zd z z dd |zz d|zd z z ggg}tt ||y)NrCryrrrrxr)orderrrdru)r&rrrr)r<rr=a_ress r)test_nx2x2_inputzTestExpM.test_nx2x2_inputs DD HH1v1v&1v2w'1v1v&1v1v&1vBx( *25  6 T!VacNQT!VQJ7T!VQJqL1a46AaC.9;qAvJ!Q$z1AadFA:a1a4j3HIqDF1a1f:-q!AqD&z!Q$q&/@ACqsGAqDFNB!Ha1faZ,?@!HQT!VOQ!Wa1faZ-?@BqAvJ!Q$z12qAv;!Q$z3IJ!Q$K1a4 2AqAvJ!Q$z4IJL!Hac1W,b!A#h!Qw.>?qsGQqS!GOQ!Wac1W_=?   Q'r+cnd}tj||f}d|j_t |y)NrdF)r&rrrrrs r)rzTestExpM.test_readonly.s+  GGQFO! Qr+rcTtjdt}tjj d}|j ddd}|j ddd}|jd|||f<tj dt}|j|d<t|\}}|dk(sJt|}tjjt||td D]-}t|} tjj|| /y) N)rr$drii)rrrrzr)r&rr'r_r`rrrrWrrtestingrrr~) r<r(rarmjAmrerI first_resnext_ress r) test_gh18086zTestExpM.test_gh180864s HHZu -ii##C( LLC % LLC %**S/!Q$ XXm5 11"2&1Av vG  ,,T)_a@q FAAwH JJ 0 0H E Fr+N)rXrYrZrrrrrrrrrrrrrr'r&rrrrrrrr fail_slowrr[r+r)rrs91 [[VdD$eUE%RS [[T3rzz7BLL"QR [[Wvv&67-8ST-<(.  [[ [[1FFr+rceZdZdZdZdZdZejjejjddZ y) TestExpmFrechetctjgdgdgdgdgt}tjddgdd ggt}tjd d gd d ggt}tjj |}tjj |ddddf}iddiddifD]*}t ||fi|\}}t||t||,y)NrCrrryrrurdrrrrCrrrrrur$rCrrrurryrdrmethodSPS blockEnlarge)r&rr'rrrrr) r<rr(r expected_expmexpected_frechetkwargs observed_expmobserved_frechets r)test_expm_frechetz!TestExpmFrechet.test_expm_frechetLs HH         HH F F  HH F F  ))!,  <<,,Q/AB7HU+h~-FG @F.:1a.J6.J +M+ M= 9 ,.> ? @r+ctjgdgdgdgdgt}tjddgdd ggt}tjd d gd d ggt}tjj |d}gd}t |dd|dd}|D]\}}tjjj|} tjjj|} d| | zz} | |z } | |z} | |z}| |z}tjj|}tjj| ddddf}t||\}}t||t||y)Nrrrrr$rCrrrurryrdr)rCrrrdrz rLrr) r&rr'rrrzip _expm_frechet ell_table_61rrr)r< M_original A_original E_originalA_original_norm_1selected_m_listm_neighbor_pairsmambell_aell_b target_norm_1rrr(rrrrrs r)test_small_norm_expm_frechetz,TestExpmFrechet.test_small_norm_expm_frechetcsXX        XX F F XX F F "LL--j!<5s3_QR5HI& @FBLL..;;B?ELL..;;B?E55=1M!$55E "A "A "A!LL--a0M$||003BQBF; .:1a.@ +M+ M= 9 ,.> ? @r+c tjjd}tjjtjjtjj tjj f}d}t|D]D}||jd}|j }|jdd}|||f}|||f} tjj|d} || z } | |z} | | z} tjtj| | gtjtj| | gg}tjj!| }tjj!|d||df}t#| | \}}t%||d t%||d Gy) Nl]"1rryrrvrCgHj>rgHz>)r&r_r`rnormalstandard_cauchy exponentialr~rtrrrrrvstackhstack zeros_likerrr)r<rarfuncsntestsrmrfuncrrrrrrr(rrrrrrs r) test_fuzzzTestExpmFrechet.test_fuzzsii##$45 !!    )) %% ' v KA3::a=)EOO-M Q#AQqE*JQqE*J % 1 1*a @ !$55E "A "A  1a&! 2==+Q/023A"LL--a0M$||003BQBF; .:1a.@ +M+ M=t D ,.>T J# Kr+c<tjddgddggt}tjddgdd ggt}tjj |d t ||d \}}t ||d \}}t||t||y)Ng]؉??gvP?g^?guÝ?r$gS,?g|@gJt?g~3?rCrrr)r&rr'rrrrr)r<r(rsps_expm sps_frechetblockEnlarge_expmblockEnlarge_frechets r)test_problematic_matrixz'TestExpmFrechet.test_problematic_matrixs HHZ(Z(  HHZ(Z(   !Q ,1U!$+2>1^3-//"34 %9:r+zthis test is deliberately slowrcd}tjj||f}tjj||f}t||d\}}t||d\}}t ||t ||y)Nirvrrr)r&r_rrr)r<rr(rrrrrs r)test_medium_matrixz"TestExpmFrechet.test_medium_matrixs  II ! !1v ! . II ! !1v ! . ,1U!$+2>1^3-//"34 %9:r+N) rXrYrZrrrrrrslowskiprr[r+r)rrJsS@.@BK8;$ [[ [[=> ;? ;r+rctj||j}t|}||z||z z}t ||z}t||z ||zz } | SN)r&reshaperrr) r(A_normrX_normepsrhp_norm perturbationX_primescaled_relative_errors r)_help_expm_cond_searchrsa 1aggA !WF7fvo.L1|#$G 1-#> ! !!r+c|tjj|tjj|z zSr)rrr)r(rs r)_normalized_likers0  !!!$u||'8'8';; < ? @r+c tjjd}d}d}t|D]}|j dd}|j ||}t jj|}t|}t jj|} t|} tjt|||| |} tj||z} t| | d} | j }| |}|t#tj$||j&|z}t)t||}t+|| |ztdD]c}|t#|j |j&|z}t+t|t|t)t||}t-||et-|dd|zz|z| zy) Nrror-rrzL-BFGS-BrrC)r&r_ RandomStater~randintrerrrrr functoolspartialrrr!r rrrrrr )r<rarrurmrr(rrrrrguessoutxoptyoptp_best p_best_relerrrp_rand p_rand_relerrs r)test_expm_cond_fuzzz+TestExpmConditionNumber.test_expm_cond_fuzzsii##E*x HA Aq!A !QA\\&&q)FQA\\&&q)FaLE!!"8vq&#/AGGAaCLE1eJ7C55DT7D+BJJtQWW,EqIIF+D!V-F G? Hr+N) rXrYrZrrr rrrrr[r+r)rrs2(' @ [[#H#Hr+rc*eZdZdZdZdZdZdZy) TestKhatriRaoc 2ttddgddggtddgddgg}t|tdd gdd gd d gd dggttjddgtjddg}t|j dy)NrCrrryrrurdr rr )ryr)rrr r&rrr<r=bs r) test_basiczTestKhatriRao.test_basics uq!fq!f-.q!fq!f-. 0 1eaW&'W&("X&("X%/0 1 rxxA'1a&)9 :177F+r+ctjt5tgdgdg}tddgddgg}t ||dddy#1swYyxYw)NrCrrryrrurCrrryrraises ValueErrorrrr"s r)test_number_of_columns_equalityz-TestKhatriRao.test_number_of_columns_equality's] ]]: & y "#A1v1v A q!     s /AAc tjt5tgd}tgd}t ||dddtjt5tgd}tgdgdg}t ||dddtjt5tgdgdg}tgd}t ||dddy#1swYxYw#1swYbxYw#1swYyxYw)Nr&r')rdrrzr(r"s r)test_to_assure_2d_arrayz%TestKhatriRao.test_to_assure_2d_array/s ]]: & i Ai A q!    ]]: & i AA q!  ]]: & Ai A q!          s#'C""+C..+C:"C+.C7:Dc Ltddgddgg}tddgddgg}t||}tjt |j dDcgc]&}tj |dd|f|dd|f(c}j}t||ycc}w) NrCrrryrrurdr) rrr&rr~rkronrr )r<r=r#res1rMres2s r)test_equality_of_two_equationsz,TestKhatriRao.test_equality_of_two_equationsHs Aq6Aq6" # Aq6Aq6" #!Qyy#(#46''!AqD'1QT736778q  4&6s+B!cXtjd}tjd}t||}t|tjdtjd}tjd}t||}t|tjdy)N)rr)rr)rr)rr)rr)r&rrr)r<r=r#ress r)rzTestKhatriRao.test_emptyRsx HHV  HHV ARXXf-. HHV  HHV ARXXg./r+N)rXrYrZr$r+r-r2rr[r+r)rrs ,2' 0r+rrctj5|tjdddddy#1swYyxYw)NrF)disp)rdeprecated_callr&r)rs r) test_disp_depr8]s7    !$ RVVAYU#$$$s <Actj5ttjdddddy#1swYyxYw)Nrr-) blocksize)rr7rr&rr[r+r)test_blocksize_depr;cs5    !' bffQi2&'''s !?A);__doc__rrnumpyr&rrr numpy.testingrrrr r r r scipy.linalgrr rrrrrrrrrrrrrrrrscipy.linalg._matfuncsrscipy.linalg._matfuncs_inv_ssqrscipy.linalg._expm_frechetr scipy.optimizer!r*r-r]rr`rrrrrrrrrr8r;r[r+r)rDs ''...AAAAA+6E!&# *''Vs0s0liDiDX vHvHrOFOFdt;t;n"=' BHBHJB0B0Hu-/$/$'r+