Ë
    7^(hg4  ã                   ót  — d 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mZ ddlmZ ddlmZ dd	lmZmZ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 d„ 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-d#„ Z.d$„ Z/d%„ Z0d&„ Z1d'„ Z2d(„ Z3d)„ Z4d*„ Z5d+„ Z6d,„ Z7d-„ Z8d.„ Z9d/„ Z:d0„ Z;d1„ Z<d2„ Z=d3„ Z>y4)5z5
Tests for the basic functionality of the SDM class.
é    )Úproduct)ÚS)ÚGROUND_TYPES)Úraises)ÚQQÚZZÚEXRAW)ÚSDM)ÚDDM)ÚDMBadInputErrorÚDMDomainErrorÚDMShapeErrorc                  ó
  — t        ddt        d«      iidt        «      } | j                  t        k(  sJ ‚| j                  dk(  sJ ‚t	        | «      ddt        d«      iik(  sJ ‚t        t        d„ «       t        t        d„ «       y )Nr   é   ©é   r   c                  ó>   — t        ddt        d«      iidt        «      S )Né   r   r   r   ©r
   r   © ó    úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/matrices/tests/test_sdm.pyú<lambda>ztest_SDM.<locals>.<lambda>   ó   € ¤C¨¨A¬b°«e¨9¨°v¼rÓ$B€ r   c                  ó>   — t        ddt        d«      iidt        «      S )Nr   r   r   r   r   r   r   r   ztest_SDM.<locals>.<lambda>   r   r   )r
   r   ÚdomainÚshapeÚdictr   r   ©ÚAs    r   Útest_SDMr!      sr   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�8‰8”rŠ>Ðˆ>Ø�7‰7�fÒÐÐÜ�‹7�q˜!œB˜q›E˜�mÒ#Ð#Ð#ä
Œ?ÑBÔCÜ
Œ?ÑBÕCr   c                  óÌ   — t        dt        d«      idt        d«      idœdt        «      } t        | «      dk(  sJ ‚t        dk(  rt	        | «      dk(  sJ ‚y t	        | «      dk(  sJ ‚y )	Nr   r   ©r   r   r   z{0: {0: 1}, 1: {1: 1}}Úgmpyz1SDM({0: {0: mpz(1)}, 1: {1: mpz(1)}}, (2, 2), ZZ)z'SDM({0: {0: 1}, 1: {1: 1}}, (2, 2), ZZ))r
   r   Ústrr   Úrepr)Úsdms    r   Útest_DDM_strr(      sf   € Ü
�!”B�q“E�˜q¤ A£˜iÑ(¨&´"Ó
5€CÜˆs‹8Ð/Ò/Ð/Ð/Ü�vÒÜ�C‹yÐOÒOÐOÑOä�C‹yÐEÒEÐEÑEr   c                  óš   — t        ddt        d«      iidt        «      } | j                  i dt        «      }|t        i dt        «      k(  sJ ‚y ©Nr   r   r   )r
   r   Únew©r    ÚBs     r   Útest_SDM_newr.   %   sE   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ	�‰ˆb�&œ"Ó€AØ”�B˜¤Ó#Ò#Ð#Ñ#r   c                  óž   — t        ddt        d«      iidt        «      } | j                  «       }| |k(  sJ ‚t        d«      | d   d<   | |k7  sJ ‚y )Nr   r   r   r   )r
   r   Úcopyr,   s     r   Útest_SDM_copyr1   +   sN   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ	�‰‹€AØ�Š6€Mˆ6Ü�‹e€A€a�Dˆ�GØ�Š6€M‰6r   c                  ó0  — t        j                  t        d«      t        d«      gt        d«      t        d«      ggdt        «      } | t        dt        d«      idt        d«      idœdt        «      k(  sJ ‚t        t        d„ «       t        t        d„ «       y )Nr   r   r   r#   c                  óx   — t        j                  t        d«      gt        d«      t        d«      ggdt        «      S r*   ©r
   Ú	from_listr   r   r   r   r   z$test_SDM_from_list.<locals>.<lambda>7   s+   € ¤C§M¡M´B°q³E°7¼RÀ»UÄBÀqÃE¸NÐ2KÈVÔUWÓ$X€ r   c                  ób   — t        j                  t        d«      t        d«      ggdt        «      S r*   r4   r   r   r   r   z$test_SDM_from_list.<locals>.<lambda>8   s"   € ¤C§M¡M´B°q³E¼2¸a»5°>Ð2BÀFÌBÓ$O€ r   )r
   r5   r   r   r   r   s    r   Útest_SDM_from_listr7   3   ss   € Ü�‰œ˜1›œr !›u�~¬¨1«¬r°!«u ~Ð6¸ÄÓC€AØ”˜œ"˜Q›%�y Q¤r¨!£u IÑ.°¼Ó;Ò;Ð;Ð;ä
Œ?ÑXÔYÜ
Œ?ÑOÕPr   c                  óZ  — t        ddt        d«      iidt        «      } | j                  «       t        d«      t        d«      gt        d«      t        d«      ggk(  sJ ‚t        i dt        «      } | j                  «       g k(  sJ ‚t        i dt        «      } | j                  «       g g gk(  sJ ‚y )Nr   r   r   ©r   r   )r   r   )r
   r   Úto_listr   s    r   Útest_SDM_to_listr;   ;   s•   € ÜˆQ�”2�a“5ˆzˆN˜F¤BÓ'€AØ�9‰9‹;œB˜q›E¤2 a£5˜>¬B¨q«E´2°a³5¨>Ð:Ò:Ð:Ð:äˆB�œÓ€AØ�9‰9‹;˜"ÒÐÐäˆB�œÓ€AØ�9‰9‹;˜2˜r˜(Ò"Ð"Ñ"r   c                  óº   — t        ddt        d«      iidt        «      } | j                  «       t        d«      t        d«      t        d«      t        d«      gk(  sJ ‚y r*   )r
   r   Úto_list_flatr   s    r   Útest_SDM_to_list_flatr>   F   sJ   € ÜˆQ�”2�a“5ˆzˆN˜F¤BÓ'€AØ�>‰>Ó¤ 1£¤r¨!£u¬b°«e´R¸³UÐ;Ò;Ð;Ñ;r   c                  ó€   — t        ddt        d«      iidt        «      } | j                  «       dt        d«      ik(  sJ ‚y )Nr   r   r   r#   )r
   r   Úto_dokr   s    r   Útest_SDM_to_dokrA   K   s8   € ÜˆQ�”2�a“5ˆzˆN˜F¤BÓ'€AØ�8‰8‹:˜&¤" Q£%˜Ò(Ð(Ñ(r   c                  óB  — t        t        d«      t        d«      gt        d«      t        d«      ggdt        «      } t        j                  | «      }|j                  t        k(  sJ ‚|j
                  dk(  sJ ‚t        |«      dt        d«      idt        d«      idœk(  sJ ‚y )Nr   r   r   r#   )r   r   r
   Úfrom_ddmr   r   r   r,   s     r   Útest_SDM_from_ddmrD   P   sƒ   € ÜŒb�‹e”R˜“Uˆ^œb ›e¤R¨£U˜^Ð,¨f´bÓ9€AÜ�‰�Q‹€AØ�8‰8”rŠ>Ðˆ>Ø�7‰7�fÒÐÐÜ�‹7˜!œB˜q›E˜ q¬¨A« iÑ0Ò0Ð0Ñ0r   c                  óà   — t        ddt        d«      iidt        «      } t        t        d«      t        d«      gt        d«      t        d«      ggdt        «      }| j                  «       |k(  sJ ‚y r*   )r
   r   r   Úto_ddmr,   s     r   Útest_SDM_to_ddmrG   X   sY   € ÜˆQ�”2�a“5ˆzˆN˜F¤BÓ'€AÜŒb�‹e”R˜“Uˆ^œb ›e¤R¨£U˜^Ð,¨f´bÓ9€AØ�8‰8‹:˜Š?Ð‰?r   c                  ój   — t        ddt        d«      iidt        «      } | j                  «       | k(  sJ ‚y r*   )r
   r   Úto_sdmr   s    r   Útest_SDM_to_sdmrJ   ^   s.   € ÜˆQ�”2�a“5ˆzˆN˜F¤BÓ'€AØ�8‰8‹:˜Š?Ð‰?r   c                  óJ  ‡ — t        ddt        d«      iidt        «      Š ‰ j                  dd«      t        j                  k(  sJ ‚‰ j                  dd«      t        j                  k(  sJ ‚‰ j                  dd«      t        j                  k(  sJ ‚‰ j                  dd«      t        j                  k(  sJ ‚‰ j                  dd«      t        j                  k(  sJ ‚‰ j                  dd«      t        j                  k(  sJ ‚t        t        ˆ fd„«       t        t        ˆ fd„«       y )Nr   r   r   éþÿÿÿéÿÿÿÿc                  ó(   •— ‰ j                  dd«      S ©Nr   r   ©Úgetitemr   s   €r   r   z"test_SDM_getitem.<locals>.<lambda>k   ó   ø€ ˜qŸy™y¨¨A›€ r   c                  ó(   •— ‰ j                  dd«      S ©Nr   r   rP   r   s   €r   r   z"test_SDM_getitem.<locals>.<lambda>l   rR   r   )r
   r   rQ   ÚzeroÚoner   Ú
IndexErrorr   s   @r   Útest_SDM_getitemrX   c   sÞ   ø€ ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�9‰9�Q˜‹?œbŸg™gÒ%Ð%Ð%Ø�9‰9�Q˜‹?œbŸf™fÒ$Ð$Ð$Ø�9‰9�Q˜‹?œbŸg™gÒ%Ð%Ð%Ø�9‰9�R˜Ó¤§¡Ò'Ð'Ð'Ø�9‰9�R˜Ó¤§¡Ò&Ð&Ð&Ø�9‰9�R˜Ó¤§¡Ò'Ð'Ð'Ü
Œ:Ó.Ô/Ü
Œ:Ó.Õ/r   c                  óê  ‡ — t        ddt        d«      iidt        «      Š ‰ j                  ddt        d«      «       ‰ t        dt        d«      t        d«      dœidt        «      k(  sJ ‚‰ j                  ddt        d«      «       ‰ t        t        d«      t        d«      dœdt        d«      idœdt        «      k(  sJ ‚‰ j                  ddt        d«      «       ‰ t        dt        d«      t        d«      dœidt        «      k(  sJ ‚‰ j                  ddt        d«      «       ‰ t        dt        d«      t        d«      dœidt        «      k(  sJ ‚‰ j                  ddt        d«      «       ‰ t        ddt        d«      iidt        «      k(  sJ ‚‰ j                  ddt        d«      «       ‰ t        ddt        d«      iidt        «      k(  sJ ‚t        t        ˆ fd„«       t        t        ˆ fd„«       y )Nr   r   r   r#   c                  ó<   •— ‰ j                  ddt        d«      «      S )Nr   r   r   ©Úsetitemr   r   s   €r   r   z"test_SDM_setitem.<locals>.<lambda>   ó   ø€ ˜qŸy™y¨¨A¬r°!«uÓ5€ r   c                  ó<   •— ‰ j                  ddt        d«      «      S )Nr   r   r   r[   r   s   €r   r   z"test_SDM_setitem.<locals>.<lambda>€   r]   r   )r
   r   r\   r   rW   r   s   @r   Útest_SDM_setitemr_   o   s�  ø€ ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ‡I�Iˆa�”B�q“EÔØ”�Qœ"˜Q›%¤2 a£5Ñ)Ð*¨F´BÓ7Ò7Ð7Ð7Ø‡I�Iˆa�”B�q“EÔØ”œ"˜Q›%¤2 a£5Ñ)¨a´°1³¨YÑ7¸ÄÓDÒDÐDÐDØ‡I�Iˆa�”B�q“EÔØ”�Qœ"˜Q›%¤2 a£5Ñ)Ð*¨F´BÓ7Ò7Ð7Ð7à‡I�Iˆa�”B�q“EÔØ”�Qœ"˜Q›%¤2 a£5Ñ)Ð*¨F´BÓ7Ò7Ð7Ð7Ø‡I�Iˆa�”B�q“EÔØ”�Q˜œ"˜Q›%�y�M 6¬2Ó.Ò.Ð.Ð.à‡I�Iˆa�”B�q“EÔØ”�Q˜œ"˜Q›%�y�M 6¬2Ó.Ò.Ð.Ð.Ü
Œ:Ó5Ô6Ü
Œ:Ó5Õ6r   c                  ó  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } | j                  t        dd«      t        dd«      «      }|t        ddt        d«      iidt        «      k(  sJ ‚y )	Nr   r   r#   é   é   r   r   ©r   r   )r
   r   Úextract_sliceÚslicer,   s     r   Útest_SDM_extract_slicerf   ƒ   sn   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ	�‰œ˜a ›¤U¨1¨a£[Ó1€AØ”�Q˜œ"˜Q›%�y�M 6¬2Ó.Ò.Ð.Ñ.r   c                  ón  ‡— t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      Š‰j                  dgdg«      } | t        ddt        d«      iidt        «      k(  sJ ‚‰j                  ddgddg«      } | t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      k(  sJ ‚‰j                  ddgddg«      } | t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      k(  sJ ‚‰j                  d	gd	g«      } | t        ddt        d«      iidt        «      k(  sJ ‚t        i dt        «      Š‰j                  g d
¢ddg«      } | t        i dt        «      k(  sJ ‚t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      Š‰j                  g g «      t        j                  dt        «      k(  sJ ‚‰j                  dgg «      t        j                  dt        «      k(  sJ ‚‰j                  g dg«      t        j                  dt        «      k(  sJ ‚t	        t
        ˆfd„«       t	        t
        ˆfd„«       t	        t
        ˆfd„«       t	        t
        ˆfd„«       y )Nr   r   r#   ra   rb   r   r   rc   rM   )r   r   r   ©ra   r   )r   r   )r   r   c                  ó,   •— ‰ j                  dgdg«      S rO   ©Úextractr   s   €r   r   z"test_SDM_extract.<locals>.<lambda>�   ó   ø€ ˜qŸy™y¨!¨¨q¨cÓ2€ r   c                  ó,   •— ‰ j                  dgdg«      S rT   rj   r   s   €r   r   z"test_SDM_extract.<locals>.<lambda>ž   rl   r   c                  ó,   •— ‰ j                  dgdg«      S )Néýÿÿÿr   rj   r   s   €r   r   z"test_SDM_extract.<locals>.<lambda>Ÿ   s   ø€ ˜qŸy™y¨"¨°¨sÓ3€ r   c                  ó,   •— ‰ j                  dgdg«      S )Nr   ro   rj   r   s   €r   r   z"test_SDM_extract.<locals>.<lambda>    s   ø€ ˜qŸy™y¨!¨¨r¨dÓ3€ r   )r
   r   rk   Úzerosr   rW   ©r-   r    s    @r   Útest_SDM_extractrs   ‰   s<  ø€ Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ	�	‰	�1�#˜�sÓ€AØ”�Q˜œ"˜Q›%�y�M 6¬2Ó.Ò.Ð.Ð.Ø	�	‰	�1�a�&˜1˜a˜&Ó!€AØ”œ"˜Q›%¤2 a£5Ñ)´°1³¼¸A»Ñ-?Ñ@À&Ì"ÓMÒMÐMÐMØ	�	‰	�1�a�&˜1˜a˜&Ó!€AØ”œ"˜Q›%¤2 a£5Ñ)´°1³¼¸A»Ñ-?Ñ@À&Ì"ÓMÒMÐMÐMØ	�	‰	�2�$˜˜Ó€AØ”�Q˜œ"˜Q›%�y�M 6¬2Ó.Ò.Ð.Ð.äˆB�œÓ€AØ	�	‰	’)˜a ˜VÓ$€AØ”�B˜¤Ó#Ò#Ð#Ð#ä”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ�9‰9�R˜Ó¤§	¡	¨&´"Ó 5Ò5Ð5Ð5Ø�9‰9�a�S˜"Ó¤§¡¨6´2Ó!6Ò6Ð6Ð6Ø�9‰9�R˜!˜Ó¤§¡¨6´2Ó!6Ò6Ð6Ð6ä
Œ:Ó2Ô3Ü
Œ:Ó2Ô3Ü
Œ:Ó3Ô4Ü
Œ:Ó3Õ4r   c                  ó¤   — t        j                  dt        «      } | j                  t        k(  sJ ‚| j                  dk(  sJ ‚t        | «      i k(  sJ ‚y ©Nr   )r
   rq   r   r   r   r   r   s    r   Útest_SDM_zerosrv   £   sD   € Ü�	‰	�&œ"Ó€AØ�8‰8”rŠ>Ðˆ>Ø�7‰7�fÒÐÐÜ�‹7�bŠ=Ð‰=r   c                  óÒ   — t        j                  dt        «      } | j                  t        k(  sJ ‚| j                  dk(  sJ ‚t        | «      dt        d«      t        d«      dœik(  sJ ‚y )N©r   r   r   r   r#   )r
   Úonesr   r   r   r   r   s    r   Útest_SDM_onesrz   ©   sX   € Ü�‰�œÓ€AØ�8‰8”rŠ>Ðˆ>Ø�7‰7�fÒÐÐÜ�‹7�qœB˜q›E¤R¨£UÑ+Ð,Ò,Ð,Ñ,r   c                  óÖ   — t        j                  dt        «      } | j                  t        k(  sJ ‚| j                  dk(  sJ ‚t        | «      dt        d«      idt        d«      idœk(  sJ ‚y )Nr   r   r   r#   )r
   Úeyer   r   r   r   r   s    r   Útest_SDM_eyer}   ¯   s[   € Ü�‰�œÓ€AØ�8‰8”rŠ>Ðˆ>Ø�7‰7�fÒÐÐÜ�‹7˜!œB˜q›E˜ q¬¨A« iÑ0Ò0Ð0Ñ0r   c                  óÀ   — t        j                  t        d«      t        d«      gt        d«      } | t        dt        d«      idt        d«      idœdt        «      k(  sJ ‚y )Nr   r   ©r   ra   r   r#   )r
   Údiagr   r   s    r   Útest_SDM_diagr�   ¶   sL   € Ü�‰”"�Q“%œ˜A›�¤ VÓ,€AØ”˜œ"˜Q›%�y Q¤r¨!£u IÑ.°¼Ó;Ò;Ð;Ñ;r   c                  ój  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      }| j                  «       |k(  sJ ‚t        ddt        d«      iidt        «      } t        ddt        d«      iidt        «      }| j                  «       |k(  sJ ‚t        ddt        d«      iidt        «      } t        ddt        d«      iid	t        «      }| j                  «       |k(  sJ ‚y )
Nr   r   r#   ra   rb   r   r   rx   ©r   r   )r
   r   Ú	transposer,   s     r   Útest_SDM_transposer…   »   s   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AÜ”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ�;‰;‹=˜AÒÐÐäˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�;‰;‹=˜AÒÐÐäˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�;‰;‹=˜AÒÐÑr   c                  ó  ‡— t        ddt        d«      iidt        «      Št        ddt        d«      iidt        «      } ‰t        d«      z  | k(  sJ ‚t        d«      ‰z  | k(  sJ ‚t        t        ˆfd„«       t        t        ˆfd„«       y )Nr   r   r   rb   c                  ó"   •— ‰ t        dd«      z  S ©Nr   r   ©r   r   s   €r   r   ztest_SDM_mul.<locals>.<lambda>Ï   s   ø€ ˜a¤ 1 a£™j€ r   c                  ó"   •— t        dd«      ‰ z  S rˆ   r‰   r   s   €r   r   ztest_SDM_mul.<locals>.<lambda>Ð   s   ø€ œb  A›h q™j€ r   )r
   r   r   Ú	TypeErrorrr   s    @r   Útest_SDM_mulrŒ   É   su   ø€ ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØŒR�‹U‰7�aŠ<Ðˆ<Üˆa‹5�‰7�aŠ<Ðˆ<ä
Œ9Ó(Ô)Ü
Œ9Ó(Õ)r   c                  óø  ‡‡‡— t        dt        d«      t        d«      dœidt        «      } t        dt        d«      idt        d«      idœdt        «      Št        ddt        d«      iidt        «      }| j                  ‰«      |k(  sJ ‚‰j                  | «      |k(  sJ ‚| j                  t        «      Št        ddt        d«      iid	t        «      Št        t        ˆˆfd
„«       t        t        ˆˆfd„«       y )Nr   r   r#   r   rb   ra   é   r   rc   c                  ó&   •— ‰ j                  ‰«      S ©N©Úmul_elementwise)ÚAqr-   s   €€r   r   z*test_SDM_mul_elementwise.<locals>.<lambda>Ý   s   ø€  "×"4Ñ"4°QÓ"7€ r   c                  ó&   •— ‰ j                  ‰«      S r�   r‘   )ÚA1r-   s   €€r   r   z*test_SDM_mul_elementwise.<locals>.<lambda>Þ   s   ø€  ×!3Ñ!3°AÓ!6€ r   )r
   r   r’   Ú
convert_tor   r   r   r   )r    ÚCr•   r“   r-   s     @@@r   Útest_SDM_mul_elementwiser˜   Ó   sÐ   ú€ ÜˆQ”"�Q“%œ2˜a›5Ñ!Ð" F¬BÓ/€AÜ�”"�Q“%ˆy˜Qœr !›u˜IÑ&¨´Ó3€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ×Ñ˜QÓ 1Ò$Ð$Ð$Ø×Ñ˜QÓ 1Ò$Ð$Ð$à	
�‰”bÓ	€BÜ	ˆa�”2�a“5�	ˆ]˜F¤BÓ	'€Bä
Œ=Ô7Ô8Ü
Œ<Ô6Õ7r   c                  ó  ‡‡‡‡— t        ddt        d«      iidt        «      Št        ddt        d«      iidt        «      } ‰j                  ‰«      ‰‰z  cxk(  r| k(  sJ ‚ J ‚t        ddt        d«      iidt        «      Št	        t
        ˆˆfd„«       t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      Št        t        d	«      t        d
«      dœt        d«      t        d«      dœdœdt        «      } ‰j                  ‰«      ‰‰z  cxk(  r| k(  sJ ‚ J ‚t        ddt        d«      iidt        «      Št        ddt        d«      iidt        «      }t        ddt        d«      iidt        «      Št        ddt        d«      iidt        «      }t        ddt        d«      iidt        «      Š|j                  ‰«      |k(  sJ ‚‰j                  |«      ‰k(  sJ ‚t	        t        ˆˆfd„«       t        dt        d«      t        d«      dœidt        «      Št        dt        d«      idt        d«      idœdt        «      } ‰j                  | «      ‰| z  cxk(  rt        i dt        «      k(  sJ ‚ J ‚y )Nr   r   r   rb   c                  ó&   •— ‰ j                  ‰«      S r�   ©Úmatmul)r    r—   s   €€r   r   z!test_SDM_matmul.<locals>.<lambda>ç   s   ø€  !§(¡(¨1£+€ r   r   r#   ra   é   é
   é   é   rh   r   rŽ   )ra   ra   c                  ó&   •— ‰j                  ‰ «      S r�   r›   )ÚA22ÚA23s   €€r   r   z!test_SDM_matmul.<locals>.<lambda>ø   s   ø€  §¡¨C£€ r   rM   rx   rƒ   rc   )r
   r   rœ   r   r   r   r   )r-   ÚA32ÚA33r    r¢   r£   r—   s      @@@@r   Útest_SDM_matmulr¦   á   s,  û€ ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�8‰8�A‹;˜!˜A™#Ô" Ò"Ð"Ñ"Ð"Ð"äˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜ
Œ=Ô-Ô.ä”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AÜ”"�Q“%œ2˜b›6Ñ"¬¨B«´2°b³6Ñ&:Ñ;¸VÄRÓH€AØ�8‰8�A‹;˜!˜A™#Ô" Ò"Ð"Ñ"Ð"Ð"ä
ˆq�!”B�q“E�ˆm˜V¤RÓ
(€CÜ
ˆq�!”B�q“E�ˆm˜V¤RÓ
(€CÜ
ˆq�!”B�q“E�ˆm˜V¤RÓ
(€CÜ
ˆq�!”B�q“E�ˆm˜V¤RÓ
(€CÜ
ˆq�!”B�q“E�ˆm˜V¤RÓ
(€CØ�:‰:�c‹?˜cÒ!Ð!Ð!Ø�:‰:�c‹?˜cÒ!Ð!Ð!ô
 Œ<Ô0Ô1äˆQ”B�r“Fœr !›uÑ%Ð&¨´Ó3€AÜ�”B�r“F� ¤B r£F Ñ,¨f´bÓ9€AØ�8‰8�A‹;˜!˜A™#Ô4¤ R¨´Ó!4Ò4Ð4Ñ4Ð4Ñ4r   c                  óp  — d„ } t         j                  t         j                  t         j                  t         j                  t         j
                  g}t        |gdz  Ž D ]W  \  }}}} | ||dœ||dœdœ«      } | ||z  ||z  z   ||z  ||z  z   dœ||z  ||z  z   ||z  ||z  z   dœdœ«      }||z  |k(  rŒWJ ‚ y )Nc                 óÀ   — i }| j                  «       D ]3  \  }}|j                  «       D ��ci c]  \  }}|sŒ	||“Œ }}}|sŒ/|||<   Œ5 t        |dt        «      S c c}}w ru   )Úitemsr
   r	   )ÚdÚresultÚiÚrowÚjÚvals         r   Údmztest_matmul_exraw.<locals>.dm  se   € ØˆØ—g‘g“iò 	 ‰FˆAˆsØ'*§y¡y£{×:™V˜Q ²c�1�S‘5Ð:ˆCÑ:ÚØ��q’	ð	 ô �6˜6¤5Ó)Ð)ùó ;s
   ¬
A·Arb   r#   )r   ÚNegativeInfinityÚNegativeOneÚZeroÚOneÚInfinityr   )r°   ÚvaluesÚaÚbÚcrª   ÚAdÚAd2s           r   Útest_matmul_exrawr¼   ÿ   sÁ   € ò*ô × Ñ ¤!§-¡-´·±¼¿¹ÄÇ
Á
ÐK€FÜ ˜x¨™zÐ*ò ‰
ˆˆ1ˆa�Ù�q˜A‘J a¨1¡:Ñ.Ó/ˆÙ˜˜!™˜a ™c™	 Q q¡S¨1¨Q©3¡YÑ/°a¸±c¸A¸a¹C±iÀAÀaÁCÈ!ÈAÉ#ÁIÑ3NÑOÓPˆØ�B‰w˜#‹~Ðˆ~ñr   c                  ó„  ‡— t        dt        d«      it        d«      t        d«      dœdœdt        «      Št        dt        d«      it        d«      t        d«      dœdœdt        «      } t        t        d«      t        d«      dœdt        d«      idœdt        «      }‰j                  | «      | j                  ‰«      cxk(  r‰| z   cxk(  r| ‰z   cxk(  r|k(  sJ ‚ J ‚t        ddt        d«      iidt        «      Št        dt        d«      it        d«      t        d«      dœdœdt        «      } t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      }‰j                  | «      | j                  ‰«      cxk(  r‰| z   cxk(  r| ‰z   cxk(  r|k(  sJ ‚ J ‚t        t        ˆfd	„«       y )
Nr   r   ra   r#   r   r   rL   é   c                  ó   •— ‰ g z   S r�   r   r   s   €r   r   ztest_SDM_add.<locals>.<lambda>  ó   ø€ ˜a "™f€ r   )r
   r   Úaddr   r‹   ©r-   r—   r    s     @r   Útest_SDM_addrÃ     sj  ø€ Ü�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€AÜ�”"�Q“%ˆyœr "›v¬¨A«Ñ/Ñ0°&¼"Ó=€AÜ”"�Q“%œ2˜a›5Ñ! a¬¨1« YÑ/°¼Ó<€AØ�5‰5�‹8�q—u‘u˜Q“xÔ6 1 q¡5Ô6¨A°©EÔ6°QÒ6Ð6Ñ6Ð6Ð6äˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜ�”"�Q“%ˆyœr "›v¬¨A«Ñ/Ñ0°&¼"Ó=€AÜ”"�Q“%œ2˜a›5Ñ!¬¨2«´"°Q³%Ñ%8Ñ9¸6Ä2ÓF€AØ�5‰5�‹8�q—u‘u˜Q“xÔ6 1 q¡5Ô6¨A°©EÔ6°QÒ6Ð6Ñ6Ð6Ð6ä
Œ9“nÕ%r   c                  ó¨  ‡— t        dt        d«      it        d«      t        d«      dœdœdt        «      Št        dt        d«      it        d«      t        d«      dœdœdt        «      } t        t        d«      t        d«      dœdt        d	«      idœdt        «      }‰j                  | «      ‰| z
  cxk(  r|k(  sJ ‚ J ‚t        t        ˆfd
„«       y )Nr   r   ra   r#   r   r   rL   rM   rb   c                  ó   •— ‰ g z
  S r�   r   r   s   €r   r   ztest_SDM_sub.<locals>.<lambda>$  rÀ   r   )r
   r   Úsubr   r‹   rÂ   s     @r   Útest_SDM_subrÇ     sª   ø€ Ü�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€AÜ�”"�Q“%ˆyœr "›v¬¨A«Ñ/Ñ0°&¼"Ó=€AÜ”"�R“&œB˜q›EÑ" q¬¨A« iÑ0°&¼"Ó=€AØ�5‰5�‹8�q˜1‘uÔ! Ò!Ð!Ñ!Ð!Ð!ä
Œ9“nÕ%r   c                  ó  — t        dt        d«      it        d«      t        d«      dœdœdt        «      } t        dt        d«      it        d«      t        d«      dœdœdt        «      }| j                  «       |  cxk(  r|k(  sJ ‚ J ‚y )	Nr   r   ra   r#   r   rM   rL   ro   )r
   r   Únegr,   s     r   Útest_SDM_negrÊ   '  ss   € Ü�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€AÜ�”"�R“&ˆz¤ 2£¬"¨R«&Ñ1Ñ2°F¼BÓ?€AØ�5‰5‹7�q�bÔ˜AÒÐÑÐÑr   c                  ó˜  — t        dt        d«      it        d«      t        d«      dœdœdt        «      } t        dt        d«      it        d«      t        d«      dœdœdt        «      }| j                  t        «      }||k(  sJ ‚|j                  t        k(  sJ ‚| j                  t        «      }|| k(  sJ ‚|j                  t        k(  sJ ‚y )Nr   r   ra   r#   r   )r
   r   r   r–   r   )r    r-   r—   ÚDs       r   Útest_SDM_convert_torÍ   -  s¤   € Ü�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€AÜ�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€AØ	�‰”RÓ€AØ�Š6€Mˆ6Ø�8‰8”rŠ>Ðˆ>à	�‰”RÓ€AØ�Š6€Mˆ6Ø�8‰8”rŠ>Ð‰>r   c                  óÀ  — t        ddt        d«      iidt        «      } t        ddt        d«      iidt        «      }t        dt        d«      t        d«      dœidt        «      }t        dt        d«      idt        d«      idœdt        «      }t        j                  | «      | k(  sJ ‚t        j                  | | «      |k(  sJ ‚t        j                  | |«      |k(  sJ ‚y )Nr   r   r   )r   ra   )r   rb   ra   r#   )r
   r   Úhstack©r    r-   ÚAAÚABs       r   Útest_SDM_hstackrÓ   9  sÁ   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜ	ˆa”2�a“5œB˜q›EÑ"Ð# V¬RÓ	0€BÜ	�”2�a“5�	˜a¤ 1£˜YÑ'¨´Ó	4€BÜ�:‰:�a‹=˜AÒÐÐÜ�:‰:�a˜Ó˜rÒ!Ð!Ð!Ü�:‰:�a˜Ó˜rÒ!Ð!Ñ!r   c                  óÄ  — t        ddt        d«      iidt        «      } t        ddt        d«      iidt        «      }t        dt        d«      idt        d«      idœdt        «      }t        dt        d«      idt        d«      idœdt        «      }t        j                  | «      | k(  sJ ‚t        j                  | | «      |k(  sJ ‚t        j                  | |«      |k(  sJ ‚y )Nr   r   r   r9   )rb   r   )r   ra   )r
   r   ÚvstackrÐ   s       r   Útest_SDM_vstackrÖ   C  sÄ   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜ	�”2�a“5�	˜a¤ 1£˜YÑ'¨´Ó	4€BÜ	�”2�a“5�	˜a¤ 1£˜YÑ'¨´Ó	4€BÜ�:‰:�a‹=˜AÒÐÐÜ�:‰:�a˜Ó˜rÒ!Ð!Ð!Ü�:‰:�a˜Ó˜rÒ!Ð!Ñ!r   c                  ó´   — t        ddt        d«      iidt        «      } t        ddt        d«      iidt        «      }| j                  d„ t        «      |k(  sJ ‚y )Nr   r   r   r   c                 ó   — d| z  S )Nr   r   )Úxs    r   r   z$test_SDM_applyfunc.<locals>.<lambda>P  s
   €   1¡€ r   )r
   r   Ú	applyfuncr,   s     r   Útest_SDM_applyfuncrÛ   M  sO   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AØ�;‰;‘}¤bÓ)¨QÒ.Ð.Ñ.r   c                  ó*  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } t        t        d«      t        d«      dœt        dd«      t        dd«      dœdœdt        «      }| j                  «       |k(  sJ ‚y )	Nr   r   r#   ra   rb   r   rL   rM   )r
   r   Úinvr,   s     r   Útest_SDM_invrÞ   S  sr   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AÜ”"�R“&œB˜q›EÑ"¬¨A¨q«´R¸¸A³YÑ&?Ñ@À&Ì"ÓM€AØ�5‰5‹7�aŠ<Ð‰<r   c                  ó¼   — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } | j                  «       t        d«      k(  sJ ‚y )Nr   r   r#   ra   rb   r   rL   )r
   r   Údetr   s    r   Útest_SDM_detrá   Y  sG   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ�5‰5‹7”b˜“fÒÐÑr   c                  ó  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } t        dt        d«      it        d«      t        d«      dœdœdt        «      }| j                  «       d   |k(  sJ ‚y )Nr   r   r#   ra   rb   r   r   )r
   r   Úlu)r    ÚLs     r   Útest_SDM_lurå   ^  so   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AÜ�”"�Q“%ˆyœr !›u¬¨1«Ñ.Ñ/°¼Ó<€Að
 �4‰4‹6�!‰9˜Š>Ð‰>r   c                  ój  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } t        dt        d«      idt        d«      idœdt        «      }t        ddt        dd«      iidt        «      }| j                  |«      |k(  sJ ‚| j                  |«      |k(  sJ ‚y )	Nr   r   r#   ra   rb   r   r   rƒ   )r
   r   rœ   Úlu_solve)r    r¸   rÙ   s      r   Útest_SDM_lu_solverè   h  s›   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AÜ�”"�Q“%ˆy˜Qœr !›u˜IÑ&¨´Ó3€AÜˆQ�”"�Q˜“(ˆ|Ð˜f¤bÓ)€AØ�8‰8�A‹;˜!ÒÐÐØ�:‰:�a‹=˜AÒÐÑr   c                  óæ   — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } | j                  «       t        d«      t        d«      t        d«      gk(  sJ ‚y )	Nr   r   r#   ra   rb   r   éûÿÿÿrL   )r
   r   Úcharpolyr   s    r   Útest_SDM_charpolyrì   p  sV   € Ü”"�Q“%œ2˜a›5Ñ!¬¨1«´°A³Ñ%7Ñ8¸&Ä"ÓE€AØ�:‰:‹<œB˜q›E¤2 b£6¬2¨b«6Ð2Ò2Ð2Ñ2r   c                  óÐ   — t        dt        d«      t        d«      dœidt        «      } | j                  «       d   t        dt        d«      t        d«      dœidt        «      k(  sJ ‚y )Nr   r   r#   r   rM   rx   )r
   r   Ú	nullspacer   s    r   Útest_SDM_nullspacerï   u  sV   € äˆQ”"�Q“%œ2˜a›5Ñ!Ð" F¬BÓ/€AØ�;‰;‹=˜Ñœs A¬¨B«´2°a³5Ñ&9Ð#:¸FÄBÓGÒGÐGÑGr   c                  óL  — t        t        d«      t        d«      dœt        d«      t        d«      dœdœdt        «      } t        dt        d«      idt        d«      idœdt        «      }| j                  «       |ddgfk(  sJ ‚t        t        d«      t        d«      t        d«      dœt        d«      t        d«      d	œdœd
t        «      } t        t        dd«      t        dd«      d	œt        dd«      t        dd«      dœdœd
t        «      }| j                  «       |ddgfk(  sJ ‚y )Nr   r   r#   ra   rb   r   r   ©r   r   r   r9   r   rx   )r
   r   Úrrefr   )r    ÚA_rrefs     r   Útest_SDM_rrefrô   {  s  € ô 	”"�Q“%œ2˜a›5Ñ!Ü�Q“%œ2˜a›5Ñ!ñ#Ø$*¬Bó	0€Aä�Q”r˜!“u�I !¤B q£E Ñ+¨V´RÓ8€FØ�6‰6‹8˜  A Ð'Ò'Ð'Ð'ä”B�q“Eœb ›e¬¨1«Ñ.Ü�q“E¬¨1«Ñ.ñ0Ø17¼ó	=€Aäœ˜A˜a›¤R¨¨!£WÑ-Ü˜A˜a›¤R¨¨!£WÑ-ñ/Ø06¼ó<€Fà�6‰6‹8˜  A Ð'Ò'Ð'Ñ'r   c                  óž   — t        ddt        d«      iidt        «      } t        j                  dt        «      }| j                  «       |k(  sJ ‚y )Nr   r   r   rx   )r
   r   rq   Ú
particular)r    ÚAparts     r   Útest_SDM_particularrø   Š  s@   € ÜˆQ�”"�Q“%ˆyˆM˜6¤2Ó&€AÜ�I‰I�fœbÓ!€EØ�<‰<‹>˜UÒ"Ð"Ñ"r   c                  óÄ   — t        ddt        d«      iidt        «      } t        j                  dt        «      }| j                  «       du sJ ‚|j                  «       du sJ ‚y )Nr   r   r   rx   FT)r
   r   rq   Úis_zero_matrix)r    ÚAzeros     r   Útest_SDM_is_zero_matrixrü   �  sZ   € ÜˆQ�”B�q“E�
ˆO˜V¤RÓ(€AÜ�I‰I�fœbÓ!€EØ×ÑÓ Ñ&Ð&Ð&Ø×ÑÓ! TÑ)Ð)Ñ)r   c            	      ó0  — t        t        d«      t        d«      t        d«      t        d«      dœt        d«      t        d«      t        d«      d	œt        d
«      t        d«      dœdœdt        «      } t        t        d«      t        d«      t        d«      t        d«      dœt        d«      t        d«      t        d«      d	œt        d«      t        d
«      t        d«      d	œdœdt        «      }| j                  «       du sJ ‚|j                  «       du sJ ‚y ©Nr   r   ra   rb   )r   r   r   ra   r   r¾   r�   )r   r   ra   rŽ   é	   r   rñ   )ra   rb   TF)r
   r   Úis_upperr,   s     r   Útest_SDM_is_upperr  —  sà   € Ü”B�q“Eœb ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8Ü(*¨1«´"°Q³%Ñ$8ñ:à;AÄ2ó	G€Aô 	”B�q“Eœb ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8ñ:à;AÄ2ó	G€Að �:‰:‹<˜4ÑÐÐØ�:‰:‹<˜5Ñ Ð Ñ r   c            	      óh  — t        t        d«      t        d«      t        d«      t        d«      dœt        d«      t        d«      t        d«      d	œt        d
«      t        d«      dœdœdt        «      j                  «       } t        t        d«      t        d«      t        d«      t        d«      dœt        d«      t        d«      t        d«      d	œt        d«      t        d
«      t        d«      d	œdœdt        «      j                  «       }| j                  «       du sJ ‚|j                  «       du sJ ‚y rþ   )r
   r   r„   Úis_lowerr,   s     r   Útest_SDM_is_lowerr  ¢  sö   € Ü”B�q“Eœb ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8Ü(*¨1«´"°Q³%Ñ$8ñ:à;AÄ2ó	÷ ‰i‹kð ô 	”B�q“Eœb ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8Ü  ›e¬¨1«´"°Q³%Ñ8ñ:à;AÄ2ó	÷ ‰i‹kð ð �:‰:‹<˜4ÑÐÐØ�:‰:‹<˜5Ñ Ð Ñ r   N)?Ú__doc__Ú	itertoolsr   Úsympy.core.singletonr   Úsympy.external.gmpyr   Úsympy.testing.pytestr   Úsympy.polys.domainsr   r   r	   Úsympy.polys.matrices.sdmr
   Úsympy.polys.matrices.ddmr   Úsympy.polys.matrices.exceptionsr   r   r   r!   r(   r.   r1   r7   r;   r>   rA   rD   rG   rJ   rX   r_   rf   rs   rv   rz   r}   r�   r…   rŒ   r˜   r¦   r¼   rÃ   rÇ   rÊ   rÍ   rÓ   rÖ   rÛ   rÞ   rá   rå   rè   rì   rï   rô   rø   rü   r  r  r   r   r   ú<module>r     s  ðñõ å "Ý ,Ý 'ç -Ñ -Ý (Ý (÷;ñ ;òDòFò$òòQò#ò<ò
)ò
1òòò
	0ò7ò(/ò5ò4ò-ò1ò<ò
ò*ò8ò5ò<ò"&ò&òò	ò"ò"ò/òòò
òò3ò
Hò(ò#ò*ò!ó
!r   