
    (phn                     L    S SK rS SKJrJrJr  S SKJr  S SK	J
r
   " S S5      rg)    N)assert_allcloseassert_equalassert_almost_equal)raises)
procrustesc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestProcrustes   c           
         [         R                  " SS/SS/SS/SS//S5      U l        [         R                  " SS/SS/SS/SS//S5      U l        [         R                  " SS/SS/SS/SS	//S5      U l        [         R
                  S
-  n[         R                  " SS/SS/SS/SS//S5      [         R                  " S5      -  U l        [         R                  " [         R                  " U5      [         R                  " U5      /[         R                  " [         R
                  S-  U-
  5      [         R                  " [         R
                  S-  U-
  5      /[         R                  " U5      * [         R                  " U5      * /[         R                  " [         R
                  S-  U-
  5      * [         R                  " [         R
                  S-  U-
  5      * //S5      [         R                  " S5      -  U l
        g)zcreates inputs         d   ig      @r
   r   N)nparraydata1data2data3pisqrtdata4cossindata5)self
shiftangles     W/var/www/html/venv/lib/python3.13/site-packages/scipy/spatial/tests/test__procrustes.pysetup_methodTestProcrustes.setup_method	   s    XX1v1v1v1v>D
 XX2wB!R1b'BCH

 XX1v1v1v3x@#F

 UUQY
XX1v1vAw "g'(+-/1wwqz:
XXz 2BFF:4FG!vvbeeai*&<=!vvbeeai*&<=? "z 22 "z 224 "ruuqy:'= >> "ruuqy:'= >>@A "# &(WWQZ0
    c                 .   [        U R                  U R                  5      u  pn[        X!5        [	        US5        [        U R
                  U R                  5      u  pEn[        X@R
                  5        [        U R                  U R                  5      u  pxn	g )Ng        )	r   r   r   r   r   r   r   r   r   )
r   ab	disparitym4m5disp45m1m3disp13s
             r!   test_procrustesTestProcrustes.test_procrustes%   sn     %TZZ<iIr* $DJJ

;R$ $DJJ

;r$   c                    [        U R                  U R                  5      u  pn[        U R                  U R                  5      u  pEn[        X65        [        R
                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R
                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        Xx5      u  pn[        X5      u  pn[        X65        g )N)gߐ@gĈ?gYA?)gR;EQ?gzOg/߸cԿ)gwKi?gc3O?g٣ÿ)g) A	 @gJ?g:o?)gً3?gvO\?g<Р?)g}v#?gP#@g-@)gN	g;?go{1?gg=?)gW$g*?gDW?)gUϓ|6?g|_;?g\X3ƿ)g8g[g7~)gVD?s?g$SgB9?)gd?gq6ɿglx?)g#)w<?gyw<5?g;{?)gxi7?g9JNgv[Sj)gYNggj$#g^pտ)gDЍg6t(\ҿg1K[?)r   r   r   r   r   r   )r   r,   r-   r.   m3_2m1_2disp31rand1rand3res1res3res3_2res1_2s                r!   test_procrustes2TestProcrustes.test_procrustes28   s    #DJJ

;'

DJJ?FF+ >?>==>==? @ <@>>=??>@ A (5F!+E!9F+r$   c           
          [        [        [        [        R                  " SS/SS//5      [        R                  " / SQ/ SQ/5      5        g )Nr   r   r   r   )         )r
   	   
   assert_raises
ValueErrorr   r   r   r   s    r!   test_procrustes_shape_mismatch-TestProcrustes.test_procrustes_shape_mismatchT   s8    j*hhAA/0hh	:67	9r$   c                 \    [         R                  " / /5      n[        [        [        X5        g )N)r   r   rD   rE   r   )r   emptys     r!   "test_procrustes_empty_rows_or_cols1TestProcrustes.test_procrustes_empty_rows_or_colsY   s    "j*e;r$   c           
          [        [        [        [        R                  " SS/SS//5      [        R                  " SS/SS//5      5        g )N*   -   rC   rF   s    r!   test_procrustes_no_variation+TestProcrustes.test_procrustes_no_variation]   s@    j*hhR2r(34hhR2r(34	6r$   c           
         [        [        [        [        R                  " / SQ5      [        R                  " SS/SS//5      5        [        [        [        [        R                  " / SQ5      [        R                  " / SQ5      5        [        [        [        [        R                  " S5      [        R                  " S5      5        [        [        [        [        R                  " S/S///5      [        R                  " SS	///5      5        g )
N)r   r   r   r   r>   r
   r   r   r   r   r@      r>      rC   rF   s    r!   (test_procrustes_bad_number_of_dimensions7TestProcrustes.test_procrustes_bad_number_of_dimensionsb   s    j*hh12hhAA/0	2
 	j*hh12hh12	4
 	j*bhhqk288B<H 	j*hh"s}-hh!R	{+	-r$   )r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r"   r/   r;   rG   rK   rP   rU   __static_attributes__ r$   r!   r	   r	      s%    08<&,89
<6
-r$   r	   )numpyr   numpy.testingr   r   r   pytestr   rD   scipy.spatialr   r	   r\   r$   r!   <module>ra      s      L L * $k- k-r$   