Ë
    0Ò^j½!  ã                   ó®   — 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  G d„ de	j                  j                  j                  «      Z G d„ d«      Zy)	z8Test functions for the sparse.linalg._onenormest module
é    N)Úassert_allcloseÚassert_equalÚassert_)Ú_onenormest_corec                   óD   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zed„ «       Z	ˆ xZ
S )Ú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«      ‚t        ‰| �  d |j                  d   |j                  d   f¬«       || _        || _        y )Né   z'expected ndarrays representing matricesé   r   zincompatible shapes)ÚdtypeÚshape)ÚndimÚ
ValueErrorr   ÚsuperÚ__init__ÚAÚB)Úselfr   r   Ú	__class__s      €út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/sparse/linalg/tests/test_onenormest.pyr   zMatrixProductOperator.__init__   s}   ø€ Ø�6‰6�QŠ;˜!Ÿ&™& Aš+ÜÐFÓGÐGØ�7‰7�1‰:˜Ÿ™ ™Ò#ÜÐ2Ó3Ð3Ü‰Ñ˜t¨A¯G©G°A©J¸¿¹À¹
Ð+CÐÔDØˆŒØˆ�ó    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   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r%   Úpropertyr'   Ú__classcell__)r   s   @r   r   r      s0   ø„ ñôò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   ©r   ç®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 )Nr1   é   r2   r3   r4   éÿÿÿÿr
   )Úsizer   r5   r9   r6   r   r8   g333333Ã?g      Ð?r:   r;   )r   r<   r=   r>   Úrandintr   r'   rC   r?   r@   rD   rE   rF   rG   r   rH   r   rI   rJ   rK   s                       r   Útest_onenormest_table_4_t_7z*TestOnenormest.test_onenormest_table_4_t_7R   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   r2   r3   gé!çýÿï?)Úkr   r7   g-Cëâ6?©Úrtolé   )rL   rN   )r?   r@   rA   r   ÚidentityÚeyerE   r>   Útoeplitzr   r   r'   rD   r   ÚsparseÚ
onenormest)r   rL   rM   rN   Úalphar   Ú	first_colrT   Ú	first_rowr   rU   rV   rW   rX   rY   Úexact_valueÚunderest_ratioÚ	est_plains                     r   Útest_onenormest_table_5_t_1z*TestOnenormest.test_onenormest_table_5_t_1y   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 )Nr1   r
   r2   r3   r4   y              ð?r   r5   r9   r6   r   r8   gffffffæ?gš™™™™™é?é   )r   r<   r=   r>   Úrandr?   r@   rA   r   r'   rC   rD   rE   rF   rG   rH   r   rI   r   rJ   )r   rL   rM   rN   rO   rP   rQ   rR   rS   rT   ÚA_invr   rU   rV   rW   rX   rY   rZ   r[   Ú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@   rD   )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
   r3   )r   r   r'   )r   r   r   rL   rN   ÚDrU   rV   rW   rX   rY   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 )Nr1   ip  é   zfast: Úgz
exact:)r   r<   r=   rB   rƒ   r€   r   )r   rM   rf   r   r   Úfast_estimaterr   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¬«      }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 )Nr1   )é2   rŠ   gš™™™™™¹?)Údensityr   T)Ú	compute_v)Ú	compute_w)r�   rŒ   g•Ö&è.>rg   )r   r<   r=   r?   rm   Úrandom_arrayr@   rD   Útoarrayrn   r   r   )
r   r   Ús0Ús1rV   Ús2rW   Ús3Úv2Úw2s
             r   Útest_returnszTestOnenormest.test_returnsÚ   s  € Ü
�	‰	�‰�tÔÜ�L‰L×%Ñ% h¸Ð%Ó<ˆä�\‰\×Ñ˜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^   rd   ru   r}   r€   rƒ   Úslowrˆ   r–   © r   r   r/   r/   (   s‘   „ à‡[�[×Ññ%1ó ð%1ðN ‡[�[×Ññ$1ó ð$1òL(ð* ‡[�[×Ññ+$ó ð+$òZ'ò
ð ‡[�[×ÑñCó ðCó 0r   r/   )r+   Únumpyr   Únumpy.testingr   r   r   r—   Úscipy.linalgr?   Úscipy.sparse.linalgÚscipy.sparse.linalg._onenormestr   rm   r@   ÚLinearOperatorr   r/   r›   r   r   ú<module>r¢      sI   ðñó ß @Ñ @Û Û Û Ý <ô9˜EŸL™L×/Ñ/×>Ñ>ô 9÷8}0ò }0r   