Ë
    qwjb#  ã                   ó    — d dl mZmZ d dlZd dlZd dlmZ d dlmZ	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d	„ Z ee«       G d
„ d«      «       Zy)é    )ÚproductÚpermutationsN)Úassert_allclose)Úraises)Úorthogonal_procrustes)Úmatrix)Úmake_xp_test_caseÚxp_assert_close)Úskip_xp_invalid_argc                 ó6   — |j                  | d¬«      }| |z
  |fS )Nr   )Úaxis)Úmean)ÚAÚxpÚmus      úg/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_procrustes.pyÚ	_centeredr      s"   € Ø	�‰�˜ˆÓ	€BØˆr‰6�2ˆ:Ðó    c                   ó¤   — e Zd Zd„ Zd„ Zd„ Zd„ Z e«       d„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zej                  j!                  dg d¢«      d„ «       Zy)ÚTestOrthogonalProcrustesc                 óî   — t         j                  j                  d«      }|j                  |j	                  d«      «      }|j                  |j	                  d«      «      }t        t        t        ||«       y )NéÒ  é   )ÚnpÚrandomÚRandomStateÚasarrayÚrandnÚassert_raisesÚ
ValueErrorr   )Úselfr   Úrngr   ÚBs        r   Ú)test_orthogonal_procrustes_ndim_too_smallzBTestOrthogonalProcrustes.test_orthogonal_procrustes_ndim_too_small   sQ   € Ü�i‰i×#Ñ# DÓ)ˆØ�J‰J�s—y‘y “|Ó$ˆØ�J‰J�s—y‘y “|Ó$ˆÜ”jÔ"7¸¸AÕ>r   c                 ó  — t         j                  j                  d«      }d}t        |d«      D ]W  \  }}|j	                   |j
                  |Ž «      }|j	                   |j
                  |Ž «      }t        t        t        ||«       ŒY y )Nr   ))r   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_mismatchzBTestOrthogonalProcrustes.test_orthogonal_procrustes_shape_mismatch   so   € Ü�i‰i×#Ñ# DÓ)ˆØ1ˆÜ  ¨Ö+‰DˆAˆqØ—
‘
˜9˜3Ÿ9™9 a˜=Ó)ˆAØ—
‘
˜9˜3Ÿ9™9 a˜=Ó)ˆAÜœ*Ô&;¸QÀÕBñ ,r   c           
      óà  — t         j                  j                  d«      }d\  }}|j                  ||«      }|j                  ||«      }t         j                  t         j                   t         j
                  fD ]s  }|j                  «       }||d<   |j                  «       }	||	d<   ||	f||f||	ffD ]9  \  }
}t        t        t        |j                  |
«      |j                  |«      «       Œ; Œu y )Nr   )r)   r   )é   r)   )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_exceptionzITestOrthogonalProcrustes.test_orthogonal_procrustes_checkfinite_exception!   sÈ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ø—‘˜1˜a“ˆØ—‘˜1˜a“ˆÜŸ™¤"§&¡& ¬"¯&©&Ó0ˆIØ—K‘K“MˆEØ#ˆE�$‰KØ—K‘K“MˆEØ#ˆE�$‰KØ  %˜¨5°&¨/¸EÀ5¸>ÓJ‘��1ÜœjÔ*?ÀÇÁÈAÃØ Ÿj™j¨›mõ-ñ Kñ 1r   c           
      ó0  — t         j                  j                  d«      }d\  }}t        d«      D ]ä  }|j	                  |j                  ||«      «      }|j	                  |j                  ||«      «      }t        ||«      \  }}	t        j                  |j                  d«      «      D ]j  }
t        j                  |j                  d«      «      D ]A  }t        ||j	                  |
«      z  ||j	                  |«      z  «      \  }}	t        ||«       ŒC Œl Œæ y )Nr   r'   r   )	r   r   r   Úranger   r   r   Úsquarer
   )r!   r   r"   r3   r4   ÚiÚA_origÚB_origÚR_origÚsÚA_scaleÚB_scaleÚRs                r   Ú+test_orthogonal_procrustes_scale_invariancezDTestOrthogonalProcrustes.test_orthogonal_procrustes_scale_invariance/   sÝ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�q–ˆAØ—Z‘Z §	¡	¨!¨Q£Ó0ˆFØ—Z‘Z §	¡	¨!¨Q£Ó0ˆFÜ-¨f°fÓ=‰IˆF�AÜŸ9™9 S§Y¡Y¨q£\Ö2�Ü!Ÿy™y¨¯©°1«Ö6�GÜ0°¸"¿*¹*ÀWÓ:MÑ1MØ17¸"¿*¹*ÀWÓ:MÑ1MóO‘D�A�qä# A vÕ.ñ  7ñ 3ñ	 r   c                 óÎ  — t         j                  j                  d«      }dD ]Á  \  }}|j                  ||«      }|j                  ||«      }||j	                  «       t        |«      f}||j	                  «       t        |«      f}t        ||«      \  }}	|j                  |«      }
t        ||«      D ]1  \  }}t        ||«      \  }}	|j                  |«      }t        ||
«       Œ3 ŒÃ y )Nr   ©)é   r&   r(   )r&   rI   )
r   r   r   r   Útolistr   r   Údotr   r   )r!   r"   r3   r4   ÚA_arrÚB_arrÚAsÚBsÚR_arrrB   ÚAR_arrr   r#   rE   ÚARs                  r   Ú+test_orthogonal_procrustes_array_conversionzDTestOrthogonalProcrustes.test_orthogonal_procrustes_array_conversion<   sÇ   € ä�i‰i×#Ñ# DÓ)ˆÛ,‰DˆAˆqØ—I‘I˜a “OˆEØ—I‘I˜a “OˆEØ˜Ÿ™›¬°«Ð7ˆBØ˜Ÿ™›¬°«Ð7ˆBÜ,¨U°EÓ:‰HˆE�1Ø—Y‘Y˜uÓ%ˆFÜ  Bž‘��1Ü,¨Q°Ó2‘��1Ø—Y‘Y˜q“\�Ü  FÕ+ñ (ñ -r   c           	      óÔ  — t         j                  j                  d«      }dD �]Ã  \  }}|j                  |j	                  ||«      «      }|j                  |j	                  ||«      «      }|j
                  j                  |j                  |z   «      \  }}t        |j
                  j                  |«      |j                  «       ||j                  z  }	t        |	|«      \  }
}t        |j
                  j                  |
«      |
j                  «       t        |	|
z  |«       |	d|j                  |j	                  ||«      «      z  z   }t        ||«      \  }}t        |j
                  j                  |«      |j                  «       ||
z  }||z  }|j
                  j                  ||z
  d¬«      }|j
                  j                  ||z
  d¬«      }|j                  ||k  «      r�ŒÄJ ‚ y )Nr   rH   g{®Gáz„?Úfro)Úord)r   r   r   r   r   ÚlinalgÚeighÚTr
   Úinvr   Úmatrix_normÚall)r!   r   r"   r3   r4   r#   ÚXÚwÚVr   rE   rB   ÚA_perturbedÚR_primeÚnaive_approxÚoptim_approxÚnaive_approx_errorÚoptim_approx_errors                     r   Útest_orthogonal_procrustesz3TestOrthogonalProcrustes.test_orthogonal_procrustesK   sŽ  € Ü�i‰i×#Ñ# DÓ)ˆÜ,‰DˆAˆqà—
‘
˜3Ÿ9™9 Q¨›?Ó+ˆAð —
‘
˜3Ÿ9™9 Q¨›?Ó+ˆAØ—9‘9—>‘> !§#¡#¨¡'Ó*‰DˆAˆqÜ˜BŸI™IŸM™M¨!Ó,¨a¯c©cÔ2à�A—C‘C‘ˆAä(¨¨AÓ.‰DˆAˆqÜ˜BŸI™IŸM™M¨!Ó,¨a¯c©cÔ2Ü˜A ™E 1Ô%à˜d R§Z¡Z°·	±	¸!¸Q³Ó%@Ñ@Ñ@ˆKô /¨{¸AÓ>‰JˆG�QÜ˜BŸI™IŸM™M¨'Ó2°G·I±IÔ>à&¨™?ˆLØ&¨Ñ0ˆLà!#§¡×!6Ñ!6°|ÀaÑ7GÈUÐ!6Ó!SÐØ!#§¡×!6Ñ!6°|ÀaÑ7GÈUÐ!6Ó!SÐà—6‘6Ð,Ð/AÑAÖBÐBÐBñ9 -r   c                 óv  — |j                  ddgddgddgddgg|j                  ¬«      }|j                  ddgddgddgddgg|j                  ¬«      }t        ||«      \  }}t        ||«      \  }}t        ||«      \  }}	|	|j                  j                  |«      dz  z  }
|
|z  |z  |z   }t        ||d	¬
«       y )Néýÿÿÿr   éþÿÿÿr)   ©Údtyper/   r   é   ç:Œ0âŽyE>©Úatol©r   Úfloat64r   r   rW   r[   r
   )r!   r   r?   r@   r   ÚA_mur#   ÚB_murE   rB   ÚscaleÚB_approxs               r   Ú(test_orthogonal_procrustes_exact_examplezATestOrthogonalProcrustes.test_orthogonal_procrustes_exact_examplek   sÎ   € ð —‘˜b !˜W r¨1 g°°A¨w¸¸Q¸Ð@ÈÏ
É
�ÓSˆØ—‘˜a ˜V a¨ V¨a°¨W°q¸!°fÐ=ÀRÇZÁZ�ÓPˆÜ˜F BÓ'‰ˆˆ4Ü˜F BÓ'‰ˆˆ4Ü$ Q¨Ó*‰ˆˆ1Ø�B—I‘I×)Ñ)¨!Ó,¨aÑ/Ñ/ˆØ˜1‘9˜q‘= 4Ñ'ˆÜ˜ &¨tÖ4r   c                 ó¢  — |j                  ddgddgddgddgg|j                  ¬«      }|j                  ddgddgdd	gd
dgg|j                  ¬«      }t        ||«      \  }}t        ||«      \  }}t        ||«      \  }}	|	|j                  j                  |«      dz  z  }
|
|z  |z  |z   }|j                  ddgddgddgddgg|j                  ¬«      }t        ||d¬«       |j                  d|j                  ¬«      d   }|j                  j                  ||z
  «      |j                  j                  |«      z  dz  }t        ||«       t        ||«      \  }}	|	|j                  j                  |«      dz  z  }
|
|z  |z  |z   }|j                  j                  ||z
  «      |j                  j                  |«      z  dz  }t        ||«       y )Nrh   r   ri   r)   rj   é(   r/   r   iØÿÿÿrl   é   iîÿÿÿiëÿÿÿé   rm   rn   gñÒÇ×ÎÜ?© rp   )r!   r   r?   r@   r   rr   r#   rs   rE   rB   rt   ru   ÚexpectedÚexpected_disparityÚAB_disparityÚA_approxÚBA_disparitys                    r   Ú,test_orthogonal_procrustes_stretched_examplezETestOrthogonalProcrustes.test_orthogonal_procrustes_stretched_example‚   sÞ  € à—‘˜b !˜W r¨1 g°°A¨w¸¸Q¸Ð@ÈÏ
É
�ÓSˆØ—‘˜a ˜W q¨! f¨q°#¨h¸¸A¸Ð?ÀrÇzÁz�ÓRˆÜ˜F BÓ'‰ˆˆ4Ü˜F BÓ'‰ˆˆ4Ü$ Q¨Ó*‰ˆˆ1Ø�B—I‘I×)Ñ)¨!Ó,¨aÑ/Ñ/ˆØ˜1‘9˜q‘= 4Ñ'ˆØ—:‘:  2˜w¨¨a¨°1°c°(¸RÀ¸GÐDÈBÏJÉJ�:ÓWˆÜ˜ (°Õ6àŸZ™ZÐ(:À"Ç*Á*˜ZÓMÈbÑQÐØŸ	™	×-Ñ-¨h¸Ñ.?Ó@ØŸ)™)×/Ñ/°Ó2ñ3Ø56ñ7ˆä˜Ð&8Ô9Ü$ Q¨Ó*‰ˆˆ1Ø�B—I‘I×)Ñ)¨!Ó,¨aÑ/Ñ/ˆØ˜1‘9˜q‘= 4Ñ'ˆØŸ	™	×-Ñ-¨h¸Ñ.?Ó@ØŸ)™)×/Ñ/°Ó2ñ3Ø56ñ7ˆä˜Ð&8Õ9r   c                 ó  — |j                  ddgddgddgddgg|j                  ¬«      }|j                  ddgddgddgddgg|j                  ¬«      }|j                  d	d
gd	dgd	dgddgg|j                  ¬«      }t        ||«      \  }}t        ||«      \  }}t        ||«      \  }	}
|
|j                  j                  |«      dz  z  }||z  |	z  |z   }t        ||«       t        ||j                  j                  |«      z  |«       y )Nr&   ri   éüÿÿÿiúÿÿÿr)   rj   r/   r   gCuRãÎÁ¿g”'œ‚aå?gCuRãÎÁ?gä¯ûT6¨Ù¿gä¯ûT6¨Ù?rp   )r!   r   r?   r@   ÚB_standardizedr   rr   r#   rs   rE   rB   rt   ru   s                r   Ú(test_orthogonal_procrustes_skbio_examplezATestOrthogonalProcrustes.test_orthogonal_procrustes_skbio_example™   s0  € ð" —‘˜a ˜W q¨" g°°2¨w¸¸B¸Ð@ÈÏ
É
�ÓSˆØ—‘˜a ˜V a¨ V¨a°¨V°a¸°VÐ<ÀBÇJÁJ�ÓOˆØŸ™ k°9Ð%=Ø&1°:Ð%>Ø&1°;Ð%?Ø&0°+Ð%>ð%@ð HJÇzÁzð $ó Sˆô ˜F BÓ'‰ˆˆ4Ü˜F BÓ'‰ˆˆ4Ü$ Q¨Ó*‰ˆˆ1Ø�B—I‘I×)Ñ)¨!Ó,¨aÑ/Ñ/ˆØ˜1‘9˜q‘= 4Ñ'ˆÜ˜ &Ô)Ü˜˜BŸI™I×1Ñ1°!Ó4Ñ4°nÕEr   c                 óð   — |j                  d«      }t        ||«      \  }}t        ||j                  d«      «       |j                  d«      }t        ||«      \  }}t        ||j                  d«      «       y )N)r   r   )r   r   r   )Úemptyr   r
   Úeye)r!   r   r+   ÚrrB   s        r   Ú
test_emptyz#TestOrthogonalProcrustes.test_empty¸   sc   € Ø�H‰H�VÓˆÜ$ Q¨Ó*‰ˆˆ1Ü˜˜2Ÿ8™8 FÓ+Ô,à�H‰H�VÓˆÜ$ Q¨Ó*‰ˆˆ1Ü˜˜2Ÿ6™6 !›9Õ%r   Úshape)©r&   rl   )rl   rl   )rl   r&   c                 ó  — |\  }}t         j                  j                  d«      }|j                  |j                  |«      |j                  |«      dz  z   «      }|j                  |j                  ||f«      |j                  ||f«      dz  z   «      }|j                  j                  |«      \  }}||z  }	t        ||	«      \  }
}t        |
|j                  |
«      j                  z  |j                  ||j                  ¬«      d¬«       t        ||z  |	«       |dk7  rt        |
|«       |j                  j                  |j                  |«      j                  |	z  «      \  }}}t        ||j                  |«      «       y )Nl   sIHb$y              ð?rj   g›+¡†›„=rn   rŒ   )r   r   Údefault_rngr   rW   Úqrr   r
   ÚconjrY   rˆ   Ú
complex128ÚsvdÚsum)r!   r‹   r   r3   r4   r"   r   ÚQÚ_r#   rE   rt   rB   s                r   Útest_unitaryz%TestOrthogonalProcrustes.test_unitaryÁ   s3  € ð ‰ˆˆ1Ü�i‰i×#Ñ# LÓ1ˆØ�J‰J�s—z‘z %Ó(¨3¯:©:°eÓ+<¸rÑ+AÑAÓBˆØ�J‰J�s—z‘z 1 a &Ó)¨C¯J©J¸¸1°vÓ,>ÀÑ,CÑCÓDˆØ�y‰y�|‰|˜A‹‰ˆˆ1Ø�‰EˆÜ(¨¨AÓ.‰ˆˆ5Ü˜˜BŸG™G A›JŸL™LÑ(¨"¯&©&°¸"¿-¹-¨&Ó*HÈuÕUÜ˜˜A™˜qÔ!Ø�FŠ?Ü˜A˜qÔ!Ø—)‘)—-‘- §¡¨£
§¡¨qÑ 0Ó1‰ˆˆ1ˆaÜ˜˜rŸv™v a›yÕ)r   N)Ú__name__Ú
__module__Ú__qualname__r$   r-   r:   rF   r   rS   rf   rv   r�   r…   rŠ   ÚpytestÚmarkÚparametrizer–   r{   r   r   r   r      sq   „ ò?ò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   