L i"ddlmZmZddlZddlZddlmZmZddlm Z ddl m Z m Z mZmZddl mZddlmZdZd Zd Zd Zd Zd ZdZdZdZdZdZej<j?dgddZ y))product permutationsN)assert_array_lessassert_allclose)raises)inveighnormsvd)orthogonal_procrustes)matrixctjjd}|jd}|jd}t t t ||y)N)nprandom RandomStaterandn assert_raises ValueErrorr )rngABs h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_procrustes.py)test_orthogonal_procrustes_ndim_too_smallr s? ))   %C ! A ! A*3Q:ctjjd}d}t|dD]9\}}|j|}|j|}t t t||;y)Nr))rr)rrrrr)rrrrrrrr )rshapesabrrs r)test_orthogonal_procrustes_shape_mismatchr%sb ))   %C -FVQ'?1 CIIqM CIIqMj"7A>?rctjjd}d\}}|j||}|j||}tjtj tj fD]U}|j }||d<|j }||d<||f||f||ffD]\}} ttt|| Wy)Nr)r!r)r!) rrrrinfnancopyrrr ) rmnA_goodB_good bad_valueA_badB_badrrs r0test_orthogonal_procrustes_checkfinite_exceptionr2s ))   %C DAq YYq!_F YYq!_FVVbffWbff,C  d  d e_ufou~F CDAq *&;Q B C Crctjjd}d\}}tdD]}|j ||}|j ||}t ||\}}tj |j dD]L}tj |j dD]#} t ||z|| z\} }t| |%Ny)Nrrr)rrrrangerr squarer) rr+r,iA_origB_origR_origsA_scaleB_scaleRs r+test_orthogonal_procrustes_scale_invariancer>+s ))   %C DAq 1X+1a1a)&&9 yy1. +G99SYYq\2 +,Vg-=v?OP16* + + +rctjjd}dD]\}}|j||}|j||}||j t |f}||j t |f}t ||\}}|j|} t||D]1\} } t | | \} }|j| } t| | 3y)Nr)rr )rrA) rrrrtolistr r dotrr)rr+r,A_arrB_arrAsBsR_arrr:AR_arrrrr=ARs r+test_orthogonal_procrustes_array_conversionrK8s ))   %C( (1 !Q !QU\\^VE] 3U\\^VE] 3(6q5!BO (DAq(A.DAq1B B ' ( (rctjjd}dD]a\}}|j||}|j||}t |j |z\}}t t||j tj||j }t||\}} t t||j t |j|||d|j||zz} t| |\} } t t| | j | j|} | j| } t| |z d}t| |z d}t||dy)Nrr@g{Gz?fro)ord) rrrrr TrrrCr r r)rr+r,rXwVrr=r: A_perturbedR_prime naive_approx optim_approxnaive_approx_erroroptim_approx_errors rtest_orthogonal_procrustesrYGsB ))   %C(B1 IIaO IIaOACC!G}1A$ FF1accN$Q*1A$a!$$1a00 +;: G gii0"q) "w/ !,"2>!,"2>,.@A9Brc4|jd}||z |fS)Nr)axis)mean)rmus r _centeredr^hs QB r62:rctjddgddgddgddggt}tjddgddgddgddggt}t|\}}t|\}}t ||\}}|tj t |z }|tj||z|z} t| |d y) Nrr!dtyper'r:0yE>atol rarrayfloatr^r r5r rCr) r7r8rA_murB_mur=r:scaleB_approxs r(test_orthogonal_procrustes_exact_exampleromsXXAwQ"a2q':% HF XX1v1v2wA7u EFGAtGAt A &DAq  $q'" "Ervva|#d*HHf40rcZtjddgddgddgddggt}tjddgddgdd gd dggt}t|\}}t|\}}t ||\}}|tj t |z }|tj||z|z} tjdd gd dgdd gddggt} t| | dd} tj t | |z t |z } t| | t ||\}}|tj t |z }|tj||z|z} tj t | |z t |z }t|| y)Nr`rrar!rb(r'rirdiirerfg?rh)r7r8rrkrrlr=r:rmrnexpectedexpected_disparity AB_disparityA_approx BA_disparitys r,test_orthogonal_procrustes_stretched_examplerys XXAwQ"a2q':% HF XX2wAC1a&9 GFGAtGAt A &DAq  $q'" "Ervva|#d*Hxx!R3(QHr1g>eLHHhT2+99T(V"34tAw>?LL"45 A &DAq  $q'" "Ervva|#d*H99T(V"34tAw>?LL"45rctjddgddgddgddggt}tjddgddgddgddggt}tjd d gd d gd d gd d gg}t|\}}t|\}}t ||\}}|tj t |z } | tj||z|z} t| |t|t |z |y)Nrrair!rbr'rgCuRg'a?gCuR?gT6ٿgT6?rh) r7r8B_standardizedrrkrrlr=r:rmrns r(test_orthogonal_procrustes_skbio_exampler}s"XX2wB!R1b':% HF XX1v1v1v1v6e DFXX i j! k" [! #$N GAtGAt A &DAq  $q'" "Ervva|#d*HHf%AQK0rctjd}t||\}}t|tjdtjd}t||\}}t|tjdy)N)rr)rrr)remptyr ridentity)r#rr:s r test_emptyrsc A A &DAqArxx'( A A &DAqAr{{1~&rshape)rrd)rdrd)rdrc|\}}tjjd}|j||j|dzz}|j||f|j||fdzz}tjj |\}}||z}t ||\}} t ||jjztj|dt ||z||dk7r t ||t|jj|z\}} }t | tj| y)NlsIHb$y?g+=rfr) rr default_rnglinalgqrr rconjrOeyer sum) rr+r,rrQ_rr=rmr:s r test_unitaryrs  DAq ))   -C 5CJJu-22A Aq6SZZA/"44A 99<<?DAq AA$Q*HAuA NBFF1IE:AE1 1!&&(**q.!GAq!E266!9%r)! itertoolsrrnumpyrpytest numpy.testingrrrr scipy.linalgrr r r r scipy.sparse._sputilsr rr%r2r>rKrYr^roryr}rmark parametrizerrrrs+ <*--.(;? C + (BB 106,1B'":;&<&r