Ë
    âQ(h$$  ã                   óÆ   — d Z ddlZddlmZmZmZ ddlZddlZ	ddl
Z	ddlmZmZ  G d„ de	j                  j                  j                   «      Z G d„ d«      Z G d	„ d
«      Zy)z8Test functions for the sparse.linalg._onenormest module
é    N)Úassert_allcloseÚassert_equalÚassert_)Ú_onenormest_coreÚ_algorithm_2_2c                   ó8   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zed„ «       Z	y)ÚMatrixProductOperatorz0
    This is purely for onenormest testing.
    c                 ó  — |j                   dk7  s|j                   dk7  rt        d«      ‚|j                  d   |j                  d   k7  rt        d«      ‚|| _        || _        d| _         |j                  d   |j                  d   f| _        y )Né   z'expected ndarrays representing matricesé   r   zincompatible shapes)ÚndimÚ
ValueErrorÚshapeÚAÚB)Úselfr   r   s      úg/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/sparse/linalg/tests/test_onenormest.pyÚ__init__zMatrixProductOperator.__init__   sx   € Ø�6‰6�QŠ;˜!Ÿ&™& Aš+ÜÐFÓGÐGØ�7‰7�1‰:˜Ÿ™ ™Ò#ÜÐ2Ó3Ð3ØˆŒØˆŒØˆŒ	Ø—g‘g˜a‘j !§'¡'¨!¡*Ð-ˆ�
ó    c                 ó~   — t        j                  | j                  t        j                  | j                  |«      «      S ©N©ÚnpÚdotr   r   ©r   Úxs     r   Ú_matveczMatrixProductOperator._matvec   ó&   € Ü�v‰v�d—f‘fœbŸf™f T§V¡V¨QÓ/Ó0Ð0r   c                 ó~   — t        j                  t        j                  || j                  «      | j                  «      S r   r   r   s     r   Ú_rmatveczMatrixProductOperator._rmatvec   s&   € Ü�v‰v”b—f‘f˜Q §¡Ó'¨¯©Ó0Ð0r   c                 ó~   — t        j                  | j                  t        j                  | j                  |«      «      S r   r   )r   ÚXs     r   Ú_matmatzMatrixProductOperator._matmat!   r   r   c                 ój   — t        | j                  j                  | j                  j                  «      S r   )r	   r   ÚTr   )r   s    r   r%   zMatrixProductOperator.T$   s   € ä$ T§V¡V§X¡X¨t¯v©v¯x©xÓ8Ð8r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r    r#   Úpropertyr%   © r   r   r	   r	      s/   „ ñò.ò1ò1ò1ð ñ9ó ñ9r   r	   c                   ó  — e Zd Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zd„ Zej                  j
                  d„ «       Z	d„ Z
d„ Zej                  j                  d„ «       Zd„ Zy	)
ÚTestOnenormestc                 óv  — t         j                  j                  d«       d}d}d}d}g }g }g }g }t        |«      D ]¿  }	t        j
                  j                  t         j                  j                  ||«      «      }
t        |
|
j                  ||«      \  }}}}}|j                  |«       |j                  t        j
                  j                  |
d«      «       |j                  |«       |j                  |«       ŒÁ t        j                  |t        ¬«      }t        j                  |t        ¬«      }t        j                  ||z
  «      |z  }||z  }t        dt        j                   |«      cxk  xr d	k  nc «       t#        t        j$                  |«      d«       t        d
t        j                   |«      cxk  xr dk  nc «       t        j&                  |dk  «      }|t        |«      z  }t        d|cxk  xr dk  nc «       t        dt        j                   |«      cxk  xr
 dk  «       y c «       y )NéÒ  r   éd   é   éˆ  r   ©Údtypeç®Gáz®ï?g      ð?çš™™™™™©?gš™™™™™É?ç›+¡†›„=çÍÌÌÌÌÌì?gffffffî?ç      @ç      @)r   ÚrandomÚseedÚrangeÚscipyÚlinalgÚinvÚrandnr   r%   ÚappendÚnormÚarrayÚfloatÚabsr   Úmeanr   ÚmaxÚcount_nonzero©r   ÚtÚnÚitmaxÚnsamplesÚobservedÚexpectedÚ
nmult_listÚnresample_listÚir   ÚestÚvÚwÚnmultsÚ
nresamplesÚrelative_errorsÚunderestimation_ratioÚnexactÚproportion_exacts                       r   Útest_onenormest_table_3_t_2z*TestOnenormest.test_onenormest_table_3_t_2+   sÅ  € ô 	�	‰	�‰�tÔØˆØˆØˆØˆØˆØˆØˆ
ØˆÜ�x“ò 	.ˆAÜ—‘× Ñ ¤§¡§¡°°AÓ!6Ó7ˆAÜ,<¸QÀÇÁÀQÈÓ,NÑ)ˆC��A�v˜zØ�O‰O˜CÔ Ø�O‰OœEŸL™L×-Ñ-¨a°Ó3Ô4Ø×Ñ˜fÔ%Ø×!Ñ! *Õ-ð	.ô —8‘8˜H¬EÔ2ˆÜ—8‘8˜H¬EÔ2ˆÜŸ&™& ¨HÑ!4Ó5¸Ñ@ˆð !)¨8Ñ 3ÐÜ�”r—w‘wÐ4Ó5Ö;¸Ô;Ô<ô 	”R—V‘V˜NÓ+¨QÔ/Ü�”r—w‘w˜~Ó.Ö4°Ô4Ô5ô ×!Ñ! /°EÑ"9Ó:ˆØ!¤E¨(£OÑ3ÐÜ�Ð&Ö-¨Ô-Ô.ô 	�”b—g‘g˜jÓ)Ö/¨CÑ/Õ0Ñ/Õ0r   c                 óì  — t         j                  j                  d«       d}d}d}d}g }g }g }g }t        |«      D ]¦  }	t         j                  j	                  dd||f¬«      }
t        |
|
j                  ||«      \  }}}}}|j                  |«       |j                  t        j                  j                  |
d	«      «       |j                  |«       |j                  |«       Œ¨ t        j                  |t        ¬
«      }t        j                  |t        ¬
«      }t        j                  ||z
  «      |z  }||z  }t        dt        j                  |«      cxk  xr dk  nc «       t!        t        j"                  |«      d«       t        j$                  |dk  «      }|t        |«      z  }t        d|cxk  xr dk  nc «       t        dt        j                  |«      cxk  xr
 dk  «       y c «       y )Nr/   é   r0   r1   r2   éÿÿÿÿr   )Úsizer   r3   r8   r5   r   r7   g333333Ã?g      Ð?r9   r:   )r   r;   r<   r=   Úrandintr   r%   rB   r>   r?   rC   rD   rE   rF   r   rG   r   rH   rI   rJ   s                       r   Útest_onenormest_table_4_t_7z*TestOnenormest.test_onenormest_table_4_t_7S   s¦  € ô 	�	‰	�‰�tÔØˆØˆØˆØˆØˆØˆØˆ
ØˆÜ�x“ò 	.ˆAÜ—	‘	×!Ñ! " a¨q°!¨fÐ!Ó5ˆAÜ,<¸QÀÇÁÀQÈÓ,NÑ)ˆC��A�v˜zØ�O‰O˜CÔ Ø�O‰OœEŸL™L×-Ñ-¨a°Ó3Ô4Ø×Ñ˜fÔ%Ø×!Ñ! *Õ-ð	.ô —8‘8˜H¬EÔ2ˆÜ—8‘8˜H¬EÔ2ˆÜŸ&™& ¨HÑ!4Ó5¸Ñ@ˆð !)¨8Ñ 3ÐÜ�”r—w‘wÐ4Ó5Ö<¸Ô<Ô=ô 	”R—V‘V˜NÓ+¨QÔ/ô ×!Ñ! /°EÑ"9Ó:ˆØ!¤E¨(£OÑ3ÐÜ�Ð'Ö.¨$Ô.Ô/ô 	�”b—g‘g˜jÓ)Ö/¨CÑ/Õ0Ñ/Õ0r   c                 óö  — d}d}d}d}t         j                  j                  t        j                  |«      |t        j
                  |d¬«      z  z   «       }t        j                  dgdg|dz
  z  z   «      }t        j                  t        |«      D �cg c]  }| |z  ‘Œ
 c}«      }t         j                  j                  ||«       }	t        ||	«       t        |	|	j                  ||«      \  }
}}}}t         j                  j                  |	d«      }|
|z  }t        |dd¬	«       t        |d
«       t        |d«       t         j                  j                  j                  |	||¬«      }t        |
|«       y c c}w )Nr   r0   r1   gé!çýÿï?)Úkr   r6   g-Cëâ6?©Úrtolé   )rK   rM   )r>   r?   r@   r   ÚidentityÚeyerD   r=   Útoeplitzr   r   r%   rC   r   ÚsparseÚ
onenormest)r   rK   rL   rM   Úalphar   Ú	first_colrS   Ú	first_rowr   rT   rU   rV   rW   rX   Úexact_valueÚunderest_ratioÚ	est_plains                     r   Útest_onenormest_table_5_t_1z*TestOnenormest.test_onenormest_table_5_t_1z   s<  € àˆØˆØˆØˆÜ�\‰\×ÑœbŸk™k¨!›n¨u´R·V±V¸AÀ´^Ñ/CÑCÓDÐDˆÜ—H‘H˜a˜S A 3¨¨!©¡9™_Ó-ˆ	Ü—H‘H´5¸³8Ö<¨a ˜v¨›kÒ<Ó=ˆ	Ü�\‰\×"Ñ" 9¨iÓ8Ð8ˆÜ˜˜1ÔÜ(8¸¸A¿C¹CÀÀEÓ(JÑ%ˆˆQ��6˜:Ü—l‘l×'Ñ'¨¨1Ó-ˆØ˜{Ñ*ˆÜ˜¨°4Õ8Ü�V˜RÔ Ü�Z Ô#ä—L‘L×'Ñ'×2Ñ2°1¸ÀÐ2ÓGˆ	Ü˜˜YÕ'ùò =s   ÂE6c                 óv  — t         j                  j                  d«       d}d}d}d}g }g }g }g }t        |«      D ]å  }	t         j                  j	                  ||«      dt         j                  j	                  ||«      z  z   }
t
        j                  j                  |
«      }t        ||j                  ||«      \  }}}}}|j                  |«       |j                  t
        j                  j                  |d«      «       |j                  |«       |j                  |«       Œç t        j                  |t        ¬«      }t        j                  |t        ¬«      }t        j                  ||z
  «      |z  }||z  }t        j                  |«      }t!        d	|cxk  xr d
k  nc «       t        j"                  |«      }t%        |d«       t        j&                  |dk  «      }|t        |«      z  }t!        d|cxk  xr dk  nc «       t        j                  |«      }t!        d|cxk  xr
 dk  «       y c «       y )Nr/   r   r0   r1   r2   y              ð?r   r3   r8   r5   r   r7   gffffffæ?gš™™™™™é?é   )r   r;   r<   r=   Úrandr>   r?   r@   r   r%   rB   rC   rD   rE   rF   rG   r   rH   r   rI   )r   rK   rL   rM   rN   rO   rP   rQ   rR   rS   ÚA_invr   rT   rU   rV   rW   rX   rY   rZ   Úunderestimation_ratio_meanÚmax_nresamplesr[   r\   Ú
mean_nmults                           r   Útest_onenormest_table_6_t_2z*TestOnenormest.test_onenormest_table_6_t_2�   sÙ  € ô 	�	‰	�‰�tÔØˆØˆØˆØˆØˆØˆØˆ
ØˆÜ�x“ò 	.ˆAÜ—I‘I—N‘N 1 aÓ(¨2´·	±	·±¸qÀ!Ó0DÑ+DÑDˆEÜ—‘× Ñ  Ó'ˆAÜ,<¸QÀÇÁÀQÈÓ,NÑ)ˆC��A�v˜zØ�O‰O˜CÔ Ø�O‰OœEŸL™L×-Ñ-¨a°Ó3Ô4Ø×Ñ˜fÔ%Ø×!Ñ! *Õ-ð	.ô —8‘8˜H¬EÔ2ˆÜ—8‘8˜H¬EÔ2ˆÜŸ&™& ¨HÑ!4Ó5¸Ñ@ˆð !)¨8Ñ 3ÐÜ%'§W¡WÐ-BÓ%CÐ"Ü�Ð1Ö8°DÔ8Ô9ô Ÿ™ Ó/ˆÜ�^ QÔ'ô ×!Ñ! /°EÑ"9Ó:ˆØ!¤E¨(£OÑ3ÐÜ�Ð&Ö,¨Ô,Ô-ô —W‘W˜ZÓ(ˆ
Ü��JÖ" Ñ"Õ#Ñ"Õ#r   c                 ón   — t        j                  ||«      }t        j                  j	                  |d«      S )Nr   )r   r   r>   r?   rC   )r   r   r   ÚCs       r   Ú_help_product_norm_slowz&TestOnenormest._help_product_norm_slow½   s(   € ä�F‰F�1�a‹LˆÜ�|‰|× Ñ   AÓ&Ð&r   c                 ób   — d}d}t        ||«      }t        ||j                  ||«      \  }}}}	}
|S )Nr   r1   )r	   r   r%   )r   r   r   rK   rM   ÚDrT   rU   rV   rW   rX   s              r   Ú_help_product_norm_fastz&TestOnenormest._help_product_norm_fastÂ   s<   € àˆØˆÜ! ! QÓ'ˆÜ(8¸¸A¿C¹CÀÀEÓ(JÑ%ˆˆQ��6˜:Øˆ
r   c                 ó\  — t         j                  j                  d«       d}d}t         j                  j                  ||«      }t         j                  j                  ||«      }| j	                  ||«      }| j                  ||«      }t        ||cxk  xr d|z  k  nc d|d›d|d›�«       y )Nr/   ip  é   zfast: Úgz
exact:)r   r;   r<   rA   r‚   r   r   )r   rL   re   r   r   Úfast_estimaterq   s          r   Útest_onenormest_linear_operatorz.TestOnenormest.test_onenormest_linear_operatorÊ   s˜   € ô 	�	‰	�‰�tÔØˆØˆÜ�I‰I�O‰O˜A˜qÓ!ˆÜ�I‰I�O‰O˜A˜qÓ!ˆØ×4Ñ4°Q¸Ó:ˆØ×2Ñ2°1°aÓ8ˆÜ� Ö?°°-±Ô?Ø˜ qÐ)¨°+¸a°ÐAõ	Cr   c                 ó  — t         j                  j                  d«       t        j                  j                  ddd«      }t        j                  j                  |j                  «       d«      }t        j                  j                  j                  |d¬«      \  }}t        j                  j                  j                  |d¬«      \  }}t        j                  j                  j                  |dd¬«      \  }}}	t        ||d	¬
«       t        t         j                  j                  |j                  |«      d«      |t         j                  j                  |d«      z  d	¬
«       t        |j                  |«      |d	¬
«       y )Nr/   é2   gš™™™™™¹?r   T)Ú	compute_v)Ú	compute_w)r‹   rŠ   g•Ö&è.>rf   )r   r;   r<   r>   rl   rw   r?   rC   Útoarrayrm   r   r   )
r   r   Ús0Ús1rU   Ús2rV   Ús3Úv2Úw2s
             r   Útest_returnszTestOnenormest.test_returnsÛ   s  € Ü
�	‰	�‰�tÔÜ�L‰L×Ñ˜b " cÓ*ˆä�\‰\×Ñ˜qŸy™y›{¨AÓ.ˆÜ—‘×#Ñ#×.Ñ.¨q¸DÐ.ÓA‰ˆˆAÜ—‘×#Ñ#×.Ñ.¨q¸DÐ.ÓA‰ˆˆAÜ—\‘\×(Ñ(×3Ñ3°AÀÐQUÐ3ÓV‰
ˆˆB�ä˜˜B TÕ*ÜœŸ	™	Ÿ™ q§u¡u¨Q£x°Ó3°R¼¿	¹	¿¹ÀqÈ!Ó8LÑ5LÐSWÕXÜ˜Ÿ™˜a› !¨$Ö/r   N)r&   r'   r(   ÚpytestÚmarkÚxslowr]   rc   rt   r|   r   r‚   Úslowr‡   r“   r+   r   r   r-   r-   )   s‘   „ à‡[�[×Ññ%1ó ð%1ðN ‡[�[×Ññ$1ó ð$1òL(ð* ‡[�[×Ññ+$ó ð+$òZ'ò
ð ‡[�[×ÑñCó ðCó 0r   r-   c                   óD   — e Zd Zej                  j
                  d„ «       Zy)ÚTestAlgorithm_2_2c                 óD  — t         j                  j                  d«      }d}d}t        |«      D ]o  }|j	                  dd«      }|j	                  dd«      }t
        j                  j                  |j                  ||«      «      }t        ||j                  |«      \  }}Œq y )Nr/   é   r0   r   rv   é
   é)   )r   r;   ÚRandomStater=   rb   r>   r?   r@   rA   r   r%   )	r   ÚrngrL   rN   rS   rK   r   r…   Úinds	            r   Útest_randn_invz TestAlgorithm_2_2.test_randn_invë   s�   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�x“ò 	/ˆAð —‘˜A˜qÓ!ˆAð —‘˜B Ó#ˆAô —‘× Ñ  §¡¨1¨a£Ó1ˆAô $ A q§s¡s¨AÓ.‰FˆA‰sñ	/r   N)r&   r'   r(   r”   r•   Úthread_unsafer¡   r+   r   r   r™   r™   é   s   „ à‡[�[×Ññ/ó ñ/r   r™   )r)   Únumpyr   Únumpy.testingr   r   r   r”   Úscipy.linalgr>   Úscipy.sparse.linalgÚscipy.sparse.linalg._onenormestr   r   rl   r?   ÚLinearOperatorr	   r-   r™   r+   r   r   ú<module>r©      sT   ðñó ß @Ñ @Û Û Û ß Lô9˜EŸL™L×/Ñ/×>Ñ>ô 9÷:}0ñ }0÷@/ò /r   