Ë
    âQ(hì  ã                   ó   — d dl mZmZ d dlZd dlZd dlmZmZ d dlm	Z
 d dlmZmZmZmZ d dlmZ d dlmZ d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej>                  jA                  dg d¢«      d„ «       Z!y)é    )ÚproductÚpermutationsN)Úassert_array_lessÚassert_allclose)Úraises)ÚinvÚeighÚnormÚsvd)Úorthogonal_procrustes)Úmatrixc                  óº   — t         j                  j                  d«      } | j                  ddd«      }| j                  ddd«      }t	        t
        t        ||«       y )NéÒ  é   é   é   ©ÚnpÚrandomÚRandomStateÚrandnÚassert_raisesÚ
ValueErrorr   ©ÚrngÚAÚBs      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_procrustes.pyÚ)test_orthogonal_procrustes_ndim_too_larger      sI   € Ü
�)‰)×
Ñ
 Ó
%€CØ�	‰	�!�Q˜Ó€AØ�	‰	�!�Q˜Ó€AÜ”*Ô3°Q¸Õ:ó    c                  ó²   — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        t
        t        ||«       y )Nr   r   r   r   s      r   Ú)test_orthogonal_procrustes_ndim_too_smallr"      s?   € Ü
�)‰)×
Ñ
 Ó
%€CØ�	‰	�!‹€AØ�	‰	�!‹€AÜ”*Ô3°Q¸Õ:r    c                  óÖ   — t         j                  j                  d«      } d}t        |d«      D ]9  \  }} | j                  |Ž } | j                  |Ž }t        t        t        ||«       Œ; y )Nr   ))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_mismatchr*      sb   € Ü
�)‰)×
Ñ
 Ó
%€CØ-€FÜ˜V QÓ'ò ?‰ˆˆ1ØˆC�I‰I�qˆMˆØˆC�I‰I�qˆMˆÜ”jÔ"7¸¸AÕ>ñ?r    c                  ó¤  — t         j                  j                  d«      } d\  }}| j                  ||«      }| j                  ||«      }t         j                  t         j                   t         j
                  fD ]U  }|j                  «       }||d<   |j                  «       }||d<   ||f||f||ffD ]  \  }}	t        t        t        ||	«       Œ ŒW y )Nr   )r&   r   )é   r&   )
r   r   r   r   ÚinfÚnanÚcopyr   r   r   )
r   ÚmÚnÚA_goodÚB_goodÚ	bad_valueÚA_badÚB_badr   r   s
             r   Ú0test_orthogonal_procrustes_checkfinite_exceptionr7   $   sÂ   € Ü
�)‰)×
Ñ
 Ó
%€CØ�D€A€qØ�Y‰Y�q˜!‹_€FØ�Y‰Y�q˜!‹_€FÜ—V‘VœbŸf™f˜W¤b§f¡fÐ,ò Cˆ	Ø—‘“ˆØˆˆd‰Ø—‘“ˆØˆˆd‰Ø˜e�_ u¨f o¸¸u°~ÐFò 	C‰DˆAˆqÜœ*Ô&;¸QÀÕBñ	CñCr    c                  ó¸  — t         j                  j                  d«      } d\  }}t        d«      D ]¨  }| j	                  ||«      }| j	                  ||«      }t        ||«      \  }}t        j                  | j	                  d«      «      D ]L  }t        j                  | j	                  d«      «      D ]#  }	t        ||z  ||	z  «      \  }
}t        |
|«       Œ% ŒN Œª y )Nr   r$   r   )r   r   r   Úranger   r   Úsquarer   )r   r0   r1   ÚiÚA_origÚB_origÚR_origÚsÚA_scaleÚB_scaleÚRs              r   Ú+test_orthogonal_procrustes_scale_invariancerC   2   sÄ   € Ü
�)‰)×
Ñ
 Ó
%€CØ�D€A€qÜ�1‹Xò +ˆØ—‘˜1˜a“ˆØ—‘˜1˜a“ˆÜ)¨&°&Ó9‰	ˆ�Ü—y‘y §¡¨1£Ó.ò 	+ˆGÜŸ9™9 S§Y¡Y¨q£\Ó2ò +�Ü,¨V°gÑ-=¸vÈÑ?OÓP‘��1Ü  6Õ*ñ+ñ	+ñ	+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   rF   )
r   r   r   r   Útolistr   r   Údotr   r   )r   r0   r1   ÚA_arrÚB_arrÚAsÚBsÚR_arrr?   ÚAR_arrr   r   rB   ÚARs                 r   Ú+test_orthogonal_procrustes_array_conversionrP   ?   sÑ   € Ü
�)‰)×
Ñ
 Ó
%€CØ(ò 
(‰ˆˆ1Ø—	‘	˜!˜Q“ˆØ—	‘	˜!˜Q“ˆØ�U—\‘\“^¤V¨E£]Ð3ˆØ�U—\‘\“^¤V¨E£]Ð3ˆÜ(¨°Ó6‰ˆˆqØ—‘˜5Ó!ˆÜ˜B “Oò 	(‰DˆAˆqÜ(¨¨AÓ.‰DˆAˆqØ—‘˜1“ˆBÜ˜B Õ'ñ	(ñ
(r    c                  ó  — t         j                  j                  d«      } dD �]a  \  }}| j                  ||«      }| j                  ||«      }t	        |j
                  |z   «      \  }}t        t        |«      |j
                  «       t        j                  ||j
                  «      }t        ||«      \  }}	t        t        |«      |j
                  «       t        |j                  |«      |«       |d| j                  ||«      z  z   }
t        |
|«      \  }}	t        t        |«      |j
                  «       |
j                  |«      }|
j                  |«      }t        ||z
  d¬«      }t        ||z
  d¬«      }t        ||«       �Œd y )Nr   rE   g{®Gáz„?Úfro)Úord)r   r   r   r   r	   ÚTr   r   rH   r   r
   r   )r   r0   r1   r   ÚXÚwÚVr   rB   r?   ÚA_perturbedÚR_primeÚnaive_approxÚoptim_approxÚnaive_approx_errorÚoptim_approx_errors                   r   Útest_orthogonal_procrustesr^   N   sB  € Ü
�)‰)×
Ñ
 Ó
%€CØ(ó B‰ˆˆ1à�I‰I�a˜‹Oˆð �I‰I�a˜‹OˆÜ�A—C‘C˜!‘G‹}‰ˆˆ1Üœ˜A› §¡Ô$ä�F‰F�1�a—c‘c‹Nˆä$ Q¨Ó*‰ˆˆ1Üœ˜A› §¡Ô$Ü˜Ÿ™˜a› !Ô$à˜$ §¡¨1¨a£Ñ0Ñ0ˆô +¨;¸Ó:‰
ˆ�Üœ˜G› g§i¡iÔ0à"—‘ qÓ)ˆØ"—‘ wÓ/ˆä! ,°Ñ"2¸Ô>ÐÜ! ,°Ñ"2¸Ô>ÐäÐ,Ð.@ÖAñ9Br    c                 ó4   — | j                  d¬«      }| |z
  |fS )Nr   )Úaxis)Úmean)r   Úmus     r   Ú	_centeredrc   o   s   € Ø	
�‰�Qˆ‹€BØˆr‰6�2ˆ:Ðr    c                  óŒ  — t        j                  ddgddgddgddggt        ¬«      } t        j                  ddgddgddgddggt        ¬«      }t        | «      \  }}t        |«      \  }}t	        ||«      \  }}|t        j
                  t        |«      «      z  }|t        j                  ||«      z  |z   }	t        |	|d	¬
«       y )Néýÿÿÿr   éþÿÿÿr&   ©Údtyper,   r   r   ç:Œ0âŽyE>©Úatol©	r   ÚarrayÚfloatrc   r   r:   r
   rH   r   )
r<   r=   r   ÚA_mur   ÚB_murB   r?   ÚscaleÚB_approxs
             r   Ú(test_orthogonal_procrustes_exact_examplers   t   s¾   € ô �X‰X˜˜A�w  Q ¨"¨a¨°2°q°'Ð:Ä%ÔH€FÜ�X‰X˜˜1�v  1˜v¨¨2 w°°A°Ð7¼uÔE€FÜ˜Ó�G€A€tÜ˜Ó�G€A€tÜ   AÓ&�D€A€qØ”—	‘	œ$˜q›'Ó"Ñ"€EØ”r—v‘v˜a “|Ñ# dÑ*€HÜ�H˜f¨4Ö0r    c                  óZ  — t        j                  ddgddgddgddggt        ¬«      } t        j                  ddgddgdd	gd
dggt        ¬«      }t        | «      \  }}t        |«      \  }}t	        ||«      \  }}|t        j
                  t        |«      «      z  }|t        j                  ||«      z  |z   }	t        j                  ddgddgddgddggt        ¬«      }
t        |	|
d¬«       d}t        j
                  t        |	|z
  «      t        |«      z  «      }t        ||«       t	        ||«      \  }}|t        j
                  t        |«      «      z  }|t        j                  ||«      z  |z   }t        j
                  t        || z
  «      t        |«      z  «      }t        ||«       y )Nre   r   rf   r&   rg   é(   r,   r   iØÿÿÿr   é   iîÿÿÿiëÿÿÿé   ri   rj   gñÒÇ×ÎÜ?rl   )r<   r=   r   ro   r   rp   rB   r?   rq   rr   ÚexpectedÚexpected_disparityÚAB_disparityÚA_approxÚBA_disparitys                  r   Ú,test_orthogonal_procrustes_stretched_exampler}   Œ   sƒ  € ä�X‰X˜˜A�w  Q ¨"¨a¨°2°q°'Ð:Ä%ÔH€FÜ�X‰X˜˜2�w  A ¨¨C¨°1°a°&Ð9ÄÔG€FÜ˜Ó�G€A€tÜ˜Ó�G€A€tÜ   AÓ&�D€A€qØ”—	‘	œ$˜q›'Ó"Ñ"€EØ”r—v‘v˜a “|Ñ# dÑ*€HÜ�x‰x˜!˜R˜ 3¨ (¨Q°¨H°r¸1°gÐ>ÄeÔL€HÜ�H˜h¨TÕ2à+ÐÜ—9‘9œT (¨VÑ"3Ó4´t¸A³wÑ>Ó?€LÜ�LÐ"4Ô5Ü   AÓ&�D€A€qØ”—	‘	œ$˜q›'Ó"Ñ"€EØ”r—v‘v˜a “|Ñ# dÑ*€HÜ—9‘9œT (¨VÑ"3Ó4´t¸A³wÑ>Ó?€LÜ�LÐ"4Õ5r    c                  óú  — t        j                  ddgddgddgddggt        ¬«      } t        j                  ddgddgddgddggt        ¬«      }t        j                  d	d
gd	dgd	dgddgg«      }t        | «      \  }}t        |«      \  }}t	        ||«      \  }}|t        j
                  t        |«      «      z  }	|	t        j                  ||«      z  |z   }
t        |
|«       t        |t        |«      z  |«       y )Nr   rf   éüÿÿÿiúÿÿÿr&   rg   r,   r   gCuRãÎÁ¿g”'œ‚aå?gCuRãÎÁ?gä¯ûT6¨Ù¿gä¯ûT6¨Ù?rl   )r<   r=   ÚB_standardizedr   ro   r   rp   rB   r?   rq   rr   s              r   Ú(test_orthogonal_procrustes_skbio_exampler�   ¢   s  € ô" �X‰X˜˜2�w  B ¨!¨R¨°1°b°'Ð:Ä%ÔH€FÜ�X‰X˜˜1�v  1˜v¨¨1 v°°1¨vÐ6¼eÔD€FÜ—X‘XØ	�iÐ Ø	�jÐ!Ø	�kÐ"Ø	�[Ð!ð	#ó $€Nô
 ˜Ó�G€A€tÜ˜Ó�G€A€tÜ   AÓ&�D€A€qØ”—	‘	œ$˜q›'Ó"Ñ"€EØ”r—v‘v˜a “|Ñ# dÑ*€HÜ�H˜fÔ%Ü�Aœ˜Q›‘K Õ0r    c                  ó  — t        j                  d«      } t        | | «      \  }}t        |t        j                  d«      «       t        j                  d«      } t        | | «      \  }}t        |t        j                  d«      «       y )N)r   r   )r   r   r   )r   Úemptyr   r   Úidentity)r(   Úrr?   s      r   Ú
test_emptyr†   Ã   sc   € Ü
�‰�Ó€AÜ   AÓ&�D€A€qÜ�A”r—x‘x Ó'Ô(ä
�‰�Ó€AÜ   AÓ&�D€A€qÜ�A”r—{‘{ 1“~Õ&r    Úshape)©r   r   )r   r   )r   r   c                 ó¢  — | \  }}t         j                  j                  d«      }|j                  | «      |j                  | «      dz  z   }|j                  ||f«      |j                  ||f«      dz  z   }t         j                  j	                  |«      \  }}||z  }t        ||«      \  }}	t        ||j                  «       j                  z  t        j                  |«      d¬«       t        ||z  |«       | dk7  rt        ||«       t        |j                  «       j                  |z  «      \  }}
}t        |	t        j                  |
«      «       y )Nl   sIHb$y              ð?g›+¡†›„=rj   rˆ   )r   r   Údefault_rngÚlinalgÚqrr   r   ÚconjrT   Úeyer   Úsum)r‡   r0   r1   r   r   ÚQÚ_r   rB   rq   r?   s              r   Útest_unitaryr’   Í   s
  € ð �D€A€qÜ
�)‰)×
Ñ
 Ó
-€CØ�
‰
�5Ó˜CŸJ™J uÓ-°Ñ2Ñ2€AØ�
‰
�A�q�6Ó˜SŸZ™Z¨¨A¨Ó/°"Ñ4Ñ4€AÜ�9‰9�<‰<˜‹?�D€A€qØ	ˆA‰€AÜ$ Q¨Ó*�H€A€uÜ�A˜Ÿ™›Ÿ
™
‘N¤B§F¡F¨1£I°EÕ:Ü�A˜‘E˜1ÔØ�‚Ü˜˜1ÔÜ�!—&‘&“(—*‘*˜q‘.Ó!�G€A€qˆ!Ü�Eœ2Ÿ6™6 !›9Õ%r    )"Ú	itertoolsr   r   Únumpyr   ÚpytestÚnumpy.testingr   r   r   r   Úscipy.linalgr   r	   r
   r   r   Úscipy.sparse._sputilsr   r   r"   r*   r7   rC   rP   r^   rc   rs   r}   r�   r†   ÚmarkÚparametrizer’   © r    r   ú<module>rœ      s†   ðß +ã Û ß <Ý *ç -Ó -Ý .Ý (ò;ò;ò?òCò
+ò(òBòBò
1ò06ò,1òB'ð ‡�×Ñ˜Ò":Ó;ñ&ó <ñ&r    