+
    /ib#                         ^ RI HtHt ^ RIt^ RIt^ RIHt ^ RIHt	 ^ RI
Ht ^ RIHt ^ RIHtHt ^ RIHt R	 t]! ]4       ! R
 R4      4       tR# )    )productpermutationsN)assert_allclose)raises)orthogonal_procrustes)matrix)make_xp_test_casexp_assert_close)skip_xp_invalid_argc                 <    VP                  V ^ R7      pW,
          V3# )r   )axis)mean)Axpmus   && `/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/linalg/tests/test_procrustes.py	_centeredr      s     		B62:    c                      a  ] tR t^t o R tR tR tR t]! 4       R 4       t	R t
R tR tR	 tR
 t]P                   P#                  R. RO4      R 4       tRtV tR# )TestOrthogonalProcrustesc                    \         P                  P                  R 4      pVP                  VP	                  ^4      4      pVP                  VP	                  ^4      4      p\        \        \        W44       R#   N)nprandomRandomStateasarrayrandnassert_raises
ValueErrorr   )selfr   rngr   Bs   &&   r   )test_orthogonal_procrustes_ndim_too_smallBTestOrthogonalProcrustes.test_orthogonal_procrustes_ndim_too_small   sO    ii##D)JJsyy|$JJsyy|$j"7>r   c                   \         P                  P                  R 4      pRp\        V^4       FX  w  rEVP	                  VP
                  ! V!  4      pVP	                  VP
                  ! V!  4      p\        \        \        Wg4       KZ  	  R# )r   N))   r'   )r'      )r(   r'   r(   r(   )	r   r   r   r   r   r   r   r    r   )r!   r   r"   shapesabr   r#   s   &&      r   )test_orthogonal_procrustes_shape_mismatchBTestOrthogonalProcrustes.test_orthogonal_procrustes_shape_mismatch   sg    ii##D)1 +DA

399a=)A

399a=)A*&;QB ,r   c           
        \         P                  P                  R 4      p^^rCVP                  W44      pVP                  W44      p\         P                  \         P                  ) \         P
                  3 Fp  pVP                  4       pWxR&   VP                  4       p	WyR&   WY3W3W33 F9  w  r\        \        \        VP                  V
4      VP                  V4      4       K;  	  Kr  	  R# )r   N)      )r   r   r   r   infnancopyr   r    r   r   )r!   r   r"   mnA_goodB_good	bad_valueA_badB_badr   r#   s   &&          r   0test_orthogonal_procrustes_checkfinite_exceptionITestOrthogonalProcrustes.test_orthogonal_procrustes_checkfinite_exception!   s    ii##D)!111"&&"&&0IKKME#$KKKME#$K 5/E>Jj*?A jjm- K 1r   c           
     >   \         P                  P                  R 4      p^^rC\        ^4       F  pVP	                  VP                  W44      4      pVP	                  VP                  W44      4      p\        Wg4      w  r\         P                  ! VP                  ^4      4       Fr  p
\         P                  ! VP                  ^4      4       FF  p\        WaP	                  V
4      ,          WqP	                  V4      ,          4      w  r\        W4       KH  	  Kt  	  K  	  R# r   )	r   r   r   ranger   r   r   squarer
   )r!   r   r"   r5   r6   iA_origB_origR_origsA_scaleB_scaleRs   &&           r   +test_orthogonal_procrustes_scale_invarianceDTestOrthogonalProcrustes.test_orthogonal_procrustes_scale_invariance/   s    ii##D)!1qAZZ		!0FZZ		!0F-f=IF99SYYq\2!yy16G0**W:M1M17**W:M1MODA#A.  7 3	 r   c                   \         P                  P                  R 4      pR F  w  r#VP                  W#4      pVP                  W#4      pWDP	                  4       \        V4      3pWUP	                  4       \        V4      3p\        WE4      w  rVP                  V4      p
\        Wg4       F.  w  r\        W4      w  rVP                  V4      p\        W4       K0  	  K  	  R# )r   N)   r(   r)   )r(   rM   )
r   r   r   r   tolistr   r   dotr   r   )r!   r"   r5   r6   A_arrB_arrAsBsR_arrrE   AR_arrr   r#   rH   ARs   &              r   +test_orthogonal_procrustes_array_conversionDTestOrthogonalProcrustes.test_orthogonal_procrustes_array_conversion<   s    ii##D),DAIIaOEIIaOE7B7B,U:HEYYu%F,Q2YYq\+ ( -r   c           	        \         P                  P                  R 4      pR EF  w  r4VP                  VP	                  W44      4      pVP                  VP	                  WD4      4      pVP
                  P                  VP                  V,           4      w  rx\        VP
                  P                  V4      VP                  4       WXP                  ,          p	\        W4      w  r\        VP
                  P                  V
4      V
P                  4       \        W,          V4       V	RVP                  VP	                  W44      4      ,          ,           p\        W4      w  r\        VP
                  P                  V4      VP                  4       W,          pW,          pVP
                  P                  W,
          RR7      pVP
                  P                  W,
          RR7      pVP                  VV8  4      '       d   EK  Q h	  R# )r   g{Gz?fro)ordNrL   )r   r   r   r   r   linalgeighTr
   invr   matrix_normall)r!   r   r"   r5   r6   r#   XwVr   rH   rE   A_perturbedR_primenaive_approxoptim_approxnaive_approx_erroroptim_approx_errors   &&                r   test_orthogonal_procrustes3TestOrthogonalProcrustes.test_orthogonal_procrustesK   ss   ii##D),DA

399Q?+A 

399Q?+A99>>!##'*DABIIMM!,acc2CCA(.DABIIMM!,acc2AE1%dRZZ		!%@@@K /{>JGBIIMM'2GII>&?L&0L!#!6!6|7GU!6!S!#!6!6|7GU!6!S66,/AABBBB9 -r   c                   VP                  R^.R^.R^.R^..VP                  R7      pVP                  ^^.^^ .^R.^^ ..VP                  R7      p\        W!4      w  rE\        W14      w  rg\        WF4      w  rWP                  P                  V4      ^,          ,          p
W,          V,          V,           p\        WRR7       R# )r'   dtype:0yE>atolNr   float64r   r   r\   r`   r
   )r!   r   rB   rC   r   A_mur#   B_murH   rE   scaleB_approxs   &&          r   (test_orthogonal_procrustes_exact_exampleATestOrthogonalProcrustes.test_orthogonal_procrustes_exact_examplek   s     b!Wr1gAwQ@

SaVaVaWq!f=RZZPF'F'$Q*II))!,a//9q=4't4r   c                   VP                  R^.R^.R^.R^..VP                  R7      pVP                  ^^(.^^ .^R.^^ ..VP                  R7      p\        W!4      w  rE\        W14      w  rg\        WF4      w  rWP                  P                  V4      ^,          ,          p
W,          V,          V,           pVP                  ^^.R	^ .^R
.^^ ..VP                  R7      p\        WRR7       VP                  RVP                  R7      R,          pVP                  P                  W,
          4      VP                  P                  V4      ,          ^,          p\        W4       \        Wd4      w  rWP                  P                  V4      ^,          ,          p
W,          V,          V,           pVP                  P                  W,
          4      VP                  P                  V4      ,          ^,          p\        VV4       R# )r'   rn   rp   rq   g?Nrs   rt   iii ru   )r!   r   rB   rC   r   rw   r#   rx   rH   rE   ry   rz   expectedexpected_disparityAB_disparityA_approxBA_disparitys   &&               r   ,test_orthogonal_procrustes_stretched_exampleETestOrthogonalProcrustes.test_orthogonal_procrustes_stretched_example   s   b!Wr1gAwQ@

SaWq!fq#hA?rzzRF'F'$Q*II))!,a//9q=4'::2wa1c(RGDBJJ:W6ZZ(:"**ZMbQ		--h.?@))//235679$Q*II))!,a//9q=4'		--h.?@))//23567&89r   c                2   VP                  ^R.^R.^R.^R..VP                  R7      pVP                  ^^.^^.^^.^^..VP                  R7      pVP                  R	R.R	R.R	R
.RR
..VP                  R7      p\        W!4      w  rV\        W14      w  rx\        WW4      w  rWP                  P                  V4      ^,          ,          pW,          V	,          V,           p\        W4       \        WqP                  P                  V4      ,          V4       R# )r(   rn   gCuR?g'a?gT6?Nrt   igCuRgT6ٿru   )r!   r   rB   rC   B_standardizedr   rw   r#   rx   rH   rE   ry   rz   s   &&           r   (test_orthogonal_procrustes_skbio_exampleATestOrthogonalProcrustes.test_orthogonal_procrustes_skbio_example   s   " aWq"g2wB@

SaVaVaVaV<BJJOk9%=&1:%>&1;%?&0+%>%@ HJzz $ S F'F'$Q*II))!,a//9q=4')II11!44nEr   c                    VP                  R4      p\        W"4      w  r4\        W1P                  R4      4       VP                  R4      p\        W"4      w  r4\        W1P                  ^4      4       R# )r   N)r   r   )r   r'   )emptyr   r
   eye)r!   r   r+   rrE   s   &&   r   
test_empty#TestOrthogonalProcrustes.test_empty   sW    HHV$Q*88F+,HHV$Q*66!9%r   shapec                .   Vw  r4\         P                  P                  R 4      pVP                  VP                  V4      VP                  V4      R,          ,           4      pVP                  VP                  WD34      VP                  WD34      R,          ,           4      pVP                  P                  V4      w  rxWg,          p	\        Wi4      w  r\        WP                  V
4      P                  ,          VP                  WBP                  R7      RR7       \        Wg,          V	4       VR8w  d   \        W4       VP                  P                  VP                  V4      P                  V	,          4      w  rp\        WP                  V4      4       R# )l   sIHb$y              ?rn   g+=rq   Nr(      )r   r   default_rngr   r\   qrr   r
   conjr^   r   
complex128svdsum)r!   r   r   r5   r6   r"   r   Q_r#   rH   ry   rE   s   &&&          r   test_unitary%TestOrthogonalProcrustes.test_unitary   s    ii##L1JJszz%(3::e+<r+AABJJszz1&)CJJv,>,CCDyy||AE(.GGAJLL("&&--&*HuUq!F?A!))--
q 01avvay)r   r~   N)r   )r   r   )r   r(   )__name__
__module____qualname____firstlineno__r$   r-   r<   rI   r   rW   rk   r{   r   r   r   pytestmarkparametrizer   __static_attributes____classdictcell__)__classdict__s   @r   r   r      st     ?C-/ , ,C@5.:.F>& [[W&>?* @*r   r   )	itertoolsr   r   numpyr   r   numpy.testingr   r   r   scipy.linalgr   scipy.sparse._sputilsr   scipy._lib._array_apir	   r
   scipy.conftestr   r   r   r~   r   r   <module>r      sG    +   ) * . ( D . ()* * **r   