§
    OŠtjg4  ã                   óv  — 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>d4S )5z5
Tests for the basic functionality of the SDM class.
é    )Úproduct)ÚS)ÚGROUND_TYPES)Úraises)ÚQQÚZZÚEXRAW)ÚSDM)ÚDDM)ÚDMBadInputErrorÚDMDomainErrorÚDMShapeErrorc                  ó6  — 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„ ¦  «         d S )Nr   é   ©é   r   c                  óP   — t          ddt          d¦  «        iidt          ¦  «        S )Né   r   r   r   ©r
   r   © ó    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/matrices/tests/test_sdm.pyú<lambda>ztest_SDM.<locals>.<lambda>   ó    € ¥C¨¨A­b°©e¬e¨9¨°v½rÑ$BÔ$B€ r   c                  óP   — 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!      s–   € ÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AØŒ8•rŠ>ˆ>ˆ>ˆ>ØŒ7�fÒÐÐÐÝ�‰7Œ7�q˜!�B˜q™EœE˜�mÒ#Ð#Ð#Ð#å
�?ÐBÐBÑCÔCÐCÝ
�?ÐBÐBÑCÔCÐCÐCÐ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 ‚d S t	          | ¦  «        dk    sJ ‚d S )	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(      sŽ   € Ý
�!•B�q‘E”E�˜q¥ A¡¤˜iÐ(Ð(¨&µ"Ñ
5Ô
5€CÝˆs‰8Œ8Ð/Ò/Ð/Ð/Ð/Ý�vÒÐÝ�C‰yŒyÐOÒOÐOÐOÐOÐOÐOå�C‰yŒyÐEÒEÐEÐEÐEÐEÐEr   c                  óÄ   — t          ddt          d¦  «        iidt          ¦  «        } |                      i dt          ¦  «        }|t          i dt          ¦  «        k    sJ ‚d S ©Nr   r   r   )r
   r   Únew©r    ÚBs     r   Útest_SDM_newr.   %   sY   € ÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AØ	�Šˆb�&�"ÑÔ€AØ•�B˜¥Ñ#Ô#Ò#Ð#Ð#Ð#Ð#Ð#r   c                  óÌ   — t          ddt          d¦  «        iidt          ¦  «        } |                      ¦   «         }| |k    sJ ‚t          d¦  «        | d         d<   | |k    sJ ‚d S )Nr   r   r   r   )r
   r   Úcopyr,   s     r   Útest_SDM_copyr1   +   s_   € ÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AØ	�Š‰Œ€AØ�Š6ˆ6ˆ6ˆ6Ý�‰eŒe€A€a„Dˆ�GØ�Š6ˆ6ˆ6ˆ6ˆ6ˆ6r   c                  ó‚  — 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„ ¦  «         d S )Nr   r   r   r#   c                  ó�   — 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   s2   € ¥C¤MµB°q±E´E°7½RÀ¹U¼UÅBÀqÁEÄE¸NÐ2KÈVÕUWÑ$XÔ$X€ r   c                  ór   — 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µB°q±E´E½2¸a¹5¼5°>Ð2BÀFÍBÑ$OÔ$O€ r   )r
   r5   r   r   r   r   s    r   Útest_SDM_from_listr7   3   s¡   € ÝŒ�˜1™œ�r !™uœu�~­¨1©¬­r°!©u¬u ~Ð6¸ÅÑCÔC€AØ•˜�"˜Q™%œ%�y Q¥r¨!¡u¤u IÐ.Ð.°½Ñ;Ô;Ò;Ð;Ð;Ð;å
�?ÐXÐXÑYÔYÐYÝ
�?ÐOÐOÑPÔPÐPÐPÐPr   c                  óÀ  — t          ddt          d¦  «        iidt          ¦  «        } |                      ¦   «         t          d¦  «        t          d¦  «        gt          d¦  «        t          d¦  «        ggk    sJ ‚t          i dt          ¦  «        } |                      ¦   «         g k    sJ ‚t          i dt          ¦  «        } |                      ¦   «         g g gk    sJ ‚d S )Nr   r   r   ©r   r   )r   r   )r
   r   Úto_listr   s    r   Útest_SDM_to_listr;   ;   s½   € ÝˆQ�•2�a‘5”5ˆzˆN˜F¥BÑ'Ô'€AØ�9Š9‰;Œ;�B˜q™EœE¥2 a¡5¤5˜>­B¨q©E¬Eµ2°a±5´5¨>Ð:Ò:Ð:Ð:Ð:åˆB��ÑÔ€AØ�9Š9‰;Œ;˜"ÒÐÐÐåˆB��ÑÔ€AØ�9Š9‰;Œ;˜2˜r˜(Ò"Ð"Ð"Ð"Ð"Ð"r   c                  óø   — t          ddt          d¦  «        iidt          ¦  «        } |                      ¦   «         t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        gk    sJ ‚d S r*   )r
   r   Úto_list_flatr   s    r   Útest_SDM_to_list_flatr>   F   sc   € ÝˆQ�•2�a‘5”5ˆzˆN˜F¥BÑ'Ô'€AØ�>Š>ÑÔ¥ 1¡¤¥r¨!¡u¤u­b°©e¬eµR¸±U´UÐ;Ò;Ð;Ð;Ð;Ð;Ð;r   c                  ó¦   — t          ddt          d¦  «        iidt          ¦  «        } |                      ¦   «         dt          d¦  «        ik    sJ ‚d S )Nr   r   r   r#   )r
   r   Úto_dokr   s    r   Útest_SDM_to_dokrA   K   sJ   € ÝˆQ�•2�a‘5”5ˆzˆN˜F¥BÑ'Ô'€AØ�8Š8‰:Œ:˜&¥" Q¡%¤%˜Ò(Ð(Ð(Ð(Ð(Ð(r   c                  óx  — 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 ‚d S )Nr   r   r   r#   )r   r   r
   Úfrom_ddmr   r   r   r,   s     r   Útest_SDM_from_ddmrD   P   s    € Ý�b�‰eŒe•R˜‘U”Uˆ^�b ™eœe¥R¨¡U¤U˜^Ð,¨fµbÑ9Ô9€AÝŒ�Q‰Œ€AØŒ8•rŠ>ˆ>ˆ>ˆ>ØŒ7�fÒÐÐÐÝ�‰7Œ7˜!�B˜q™EœE˜ q­¨A©¬ iÐ0Ð0Ò0Ð0Ð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          ¦  «        }|                      ¦   «         |k    sJ ‚d S r*   )r
   r   r   Úto_ddmr,   s     r   Útest_SDM_to_ddmrG   X   sp   € ÝˆQ�•2�a‘5”5ˆzˆN˜F¥BÑ'Ô'€AÝ�b�‰eŒe•R˜‘U”Uˆ^�b ™eœe¥R¨¡U¤U˜^Ð,¨fµbÑ9Ô9€AØ�8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r   c                  óˆ   — t          ddt          d¦  «        iidt          ¦  «        } |                      ¦   «         | k    sJ ‚d S r*   )r
   r   Úto_sdmr   s    r   Útest_SDM_to_sdmrJ   ^   s:   € ÝˆQ�•2�a‘5”5ˆzˆN˜F¥BÑ'Ô'€AØ�8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r   c                  ó~  ‡ — t          ddt          d¦  «        iidt          ¦  «        Š ‰                      dd¦  «        t          j        k    sJ ‚‰                      dd¦  «        t          j        k    sJ ‚‰                      dd¦  «        t          j        k    sJ ‚‰                      dd¦  «        t          j        k    sJ ‚‰                      dd¦  «        t          j        k    sJ ‚‰                      dd¦  «        t          j        k    sJ ‚t          t          ˆ fd„¦  «         t          t          ˆ fd„¦  «         d S )Nr   r   r   éþÿÿÿéÿÿÿÿc                  ó0   •— ‰                       dd¦  «        S ©Nr   r   ©Úgetitemr   s   €r   r   z"test_SDM_getitem.<locals>.<lambda>k   ó   ø€ ˜qŸyšy¨¨A™œ€ r   c                  ó0   •— ‰                       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Ò%Ð%Ð%Ð%Ø�9Š9�Q˜‰?Œ?�bœfÒ$Ð$Ð$Ð$Ø�9Š9�Q˜‰?Œ?�bœgÒ%Ð%Ð%Ð%Ø�9Š9�R˜ÑÔ¥¤Ò'Ð'Ð'Ð'Ø�9Š9�R˜ÑÔ¥¤Ò&Ð&Ð&Ð&Ø�9Š9�R˜ÑÔ¥¤Ò'Ð'Ð'Ð'Ý
�:Ð.Ð.Ð.Ð.Ñ/Ô/Ð/Ý
�:Ð.Ð.Ð.Ð.Ñ/Ô/Ð/Ð/Ð/r   c                  ó  ‡ — t          ddt          d¦  «        iidt          ¦  «        Š ‰                      ddt          d¦  «        ¦  «         ‰ t          dt          d¦  «        t          d¦  «        dœidt          ¦  «        k    sJ ‚‰                      ddt          d¦  «        ¦  «         ‰ t          t          d¦  «        t          d¦  «        dœdt          d¦  «        idœdt          ¦  «        k    sJ ‚‰                      ddt          d¦  «        ¦  «         ‰ t          dt          d¦  «        t          d¦  «        dœidt          ¦  «        k    sJ ‚‰                      ddt          d¦  «        ¦  «         ‰ t          dt          d¦  «        t          d¦  «        dœidt          ¦  «        k    sJ ‚‰                      ddt          d¦  «        ¦  «         ‰ t          ddt          d¦  «        iidt          ¦  «        k    s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„¦  «         d S )Nr   r   r   r#   c                  óL   •— ‰                       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¬uÑ5Ô5€ r   c                  óL   •— ‰                       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”EÑÔÐØ•�Q�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)Ð*¨FµBÑ7Ô7Ò7Ð7Ð7Ð7Ø‡I‚Iˆa�•B�q‘E”EÑÔÐØ•�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)¨aµ°1±´¨YÐ7Ð7¸ÅÑDÔDÒDÐDÐDÐDØ‡I‚Iˆa�•B�q‘E”EÑÔÐØ•�Q�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)Ð*¨FµBÑ7Ô7Ò7Ð7Ð7Ð7à‡I‚Iˆa�•B�q‘E”EÑÔÐØ•�Q�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)Ð*¨FµBÑ7Ô7Ò7Ð7Ð7Ð7Ø‡I‚Iˆa�•B�q‘E”EÑÔÐØ•�Q˜�"˜Q™%œ%�y�M 6­2Ñ.Ô.Ò.Ð.Ð.Ð.à‡I‚Iˆa�•B�q‘E”EÑÔÐØ•�Q˜�"˜Q™%œ%�y�M 6­2Ñ.Ô.Ò.Ð.Ð.Ð.Ý
�:Ð5Ð5Ð5Ð5Ñ6Ô6Ð6Ý
�:Ð5Ð5Ð5Ð5Ñ6Ô6Ð6Ð6Ð6r   c                  ój  — t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        } |                      t          dd¦  «        t          dd¦  «        ¦  «        }|t          ddt          d¦  «        iidt          ¦  «        k    sJ ‚d S )	Nr   r   r#   é   é   r   r   ©r   r   )r
   r   Úextract_sliceÚslicer,   s     r   Útest_SDM_extract_slicerf   ƒ   s—   € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AØ	�Š�˜a ™œ¥U¨1¨a¡[¤[Ñ1Ô1€AØ•�Q˜�"˜Q™%œ%�y�M 6­2Ñ.Ô.Ò.Ð.Ð.Ð.Ð.Ð.r   c                  óÈ  ‡— t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        Š‰                     dgdg¦  «        } | t          ddt          d¦  «        iidt          ¦  «        k    sJ ‚‰                     ddgddg¦  «        } | t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        k    sJ ‚‰                     ddgddg¦  «        } | t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        k    sJ ‚‰                     d	gd	g¦  «        } | t          ddt          d¦  «        iidt          ¦  «        k    sJ ‚t          i dt          ¦  «        Š‰                     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          ¦  «        Š‰                     g g ¦  «        t          j        dt          ¦  «        k    sJ ‚‰                     dgg ¦  «        t          j        dt          ¦  «        k    s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„¦  «         d S )Nr   r   r#   ra   rb   r   r   rc   rM   )r   r   r   ©ra   r   )r   r   )r   r   c                  ó4   •— ‰                       dgdg¦  «        S rO   ©Úextractr   s   €r   r   z"test_SDM_extract.<locals>.<lambda>�   ó   ø€ ˜qŸyšy¨!¨¨q¨cÑ2Ô2€ r   c                  ó4   •— ‰                       dgdg¦  «        S rT   rj   r   s   €r   r   z"test_SDM_extract.<locals>.<lambda>ž   rl   r   c                  ó4   •— ‰                       dgdg¦  «        S )Néýÿÿÿr   rj   r   s   €r   r   z"test_SDM_extract.<locals>.<lambda>Ÿ   s   ø€ ˜qŸyšy¨"¨°¨sÑ3Ô3€ r   c                  ó4   •— ‰                       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Ô3€ r   )r
   r   rk   Úzerosr   rW   ©r-   r    s    @r   Útest_SDM_extractrs   ‰   s  ø€ Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AØ	�	Š	�1�#˜�sÑÔ€AØ•�Q˜�"˜Q™%œ%�y�M 6­2Ñ.Ô.Ò.Ð.Ð.Ð.Ø	�	Š	�1�a�&˜1˜a˜&Ñ!Ô!€AØ•�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)µ°1±´½¸A¹¼Ð-?Ð-?Ð@Ð@À&Í"ÑMÔMÒMÐMÐMÐMØ	�	Š	�1�a�&˜1˜a˜&Ñ!Ô!€AØ•�"˜Q™%œ%¥2 a¡5¤5Ð)Ð)µ°1±´½¸A¹¼Ð-?Ð-?Ð@Ð@À&Í"ÑMÔMÒMÐMÐMÐMØ	�	Š	�2�$˜˜ÑÔ€AØ•�Q˜�"˜Q™%œ%�y�M 6­2Ñ.Ô.Ò.Ð.Ð.Ð.åˆB��ÑÔ€AØ	�	Š	�)�)�)˜a ˜VÑ$Ô$€AØ•�B˜¥Ñ#Ô#Ò#Ð#Ð#Ð#å•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AØ�9Š9�R˜ÑÔ¥¤	¨&µ"Ñ 5Ô 5Ò5Ð5Ð5Ð5Ø�9Š9�a�S˜"ÑÔ¥¤¨6µ2Ñ!6Ô!6Ò6Ð6Ð6Ð6Ø�9Š9�R˜!˜ÑÔ¥¤¨6µ2Ñ!6Ô!6Ò6Ð6Ð6Ð6å
�:Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Ý
�:Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Ý
�:Ð3Ð3Ð3Ð3Ñ4Ô4Ð4Ý
�:Ð3Ð3Ð3Ð3Ñ4Ô4Ð4Ð4Ð4r   c                  ó¢   — t          j        dt          ¦  «        } | j        t          k    sJ ‚| j        dk    sJ ‚t          | ¦  «        i k    sJ ‚d S )Nr   )r
   rq   r   r   r   r   r   s    r   Útest_SDM_zerosru   £   sL   € ÝŒ	�&�"ÑÔ€AØŒ8•rŠ>ˆ>ˆ>ˆ>ØŒ7�fÒÐÐÐÝ�‰7Œ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 ‚d S )N©r   r   r   r   r#   )r
   Úonesr   r   r   r   r   s    r   Útest_SDM_onesry   ©   sk   € ÝŒ��ÑÔ€AØŒ8•rŠ>ˆ>ˆ>ˆ>ØŒ7�fÒÐÐÐÝ�‰7Œ7�q�B˜q™EœE¥R¨¡U¤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 ‚d S )Nr   r   r   r#   )r
   Úeyer   r   r   r   r   s    r   Útest_SDM_eyer|   ¯   sn   € ÝŒ��ÑÔ€AØŒ8•rŠ>ˆ>ˆ>ˆ>ØŒ7�fÒÐÐÐÝ�‰7Œ7˜!�B˜q™EœE˜ q­¨A©¬ iÐ0Ð0Ò0Ð0Ð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 ‚d S )Nr   r   ©r   ra   r   r#   )r
   Údiagr   r   s    r   Útest_SDM_diagr€   ¶   sd   € ÝŒ•"�Q‘%”%�˜A™œ�¥ VÑ,Ô,€AØ•˜�"˜Q™%œ%�y Q¥r¨!¡u¤u IÐ.Ð.°½Ñ;Ô;Ò;Ð;Ð;Ð;Ð;Ð;r   c                  ó&  — 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          ¦  «        }|                      ¦   «         |k    sJ ‚t          ddt          d¦  «        iidt          ¦  «        } t          ddt          d¦  «        iidt          ¦  «        }|                      ¦   «         |k    sJ ‚t          ddt          d¦  «        iidt          ¦  «        } t          ddt          d¦  «        iid	t          ¦  «        }|                      ¦   «         |k    sJ ‚d S )
Nr   r   r#   ra   rb   r   r   rw   ©r   r   )r
   r   Ú	transposer,   s     r   Útest_SDM_transposer„   »   sQ  € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AÝ•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔ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                  ód  ‡— 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„¦  «         d S )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œh q™j€ r   )r
   r   r   Ú	TypeErrorrr   s    @r   Útest_SDM_mulr‹   É   s©   ø€ ÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AØ�R�‰UŒU‰7�aŠ<ˆ<ˆ<ˆ<Ýˆa‰5Œ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          ¦  «        }|                      ‰¦  «        |k    sJ ‚‰                     | ¦  «        |k    sJ ‚|                      t          ¦  «        Št          ddt          d¦  «        iid	t          ¦  «        Št          t          ˆˆfd
„¦  «         t          t          ˆˆfd„¦  «         d S )Nr   r   r#   r   rb   ra   é   r   rc   c                  ó.   •— ‰                       ‰¦  «        S ©N©Úmul_elementwise)ÚAqr-   s   €€r   r   z*test_SDM_mul_elementwise.<locals>.<lambda>Ý   s   ø€  "×"4Ò"4°QÑ"7Ô"7€ r   c                  ó.   •— ‰                       ‰¦  «        S r�   r�   )ÚA1r-   s   €€r   r   z*test_SDM_mul_elementwise.<locals>.<lambda>Þ   s   ø€  ×!3Ò!3°AÑ!6Ô!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œ5Ð!Ð!Ð" F­BÑ/Ô/€AÝ�•"�Q‘%”%ˆy˜Q�r !™uœu˜IÐ&Ð&¨µÑ3Ô3€AÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AØ×Ò˜QÑÔ 1Ò$Ð$Ð$Ð$Ø×Ò˜QÑÔ 1Ò$Ð$Ð$Ð$à	
�Š•bÑ	Ô	€BÝ	ˆa�•2�a‘5”5�	ˆ]˜F¥BÑ	'Ô	'€Bå
�=Ð7Ð7Ð7Ð7Ð7Ñ8Ô8Ð8Ý
�<Ð6Ð6Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ð7r   c                  ó„  ‡‡‡‡— t          ddt          d¦  «        iidt          ¦  «        Št          ddt          d¦  «        iidt          ¦  «        } ‰                     ‰¦  «        ‰‰z  cxk    r| k    sn 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          ¦  «        } ‰                     ‰¦  «        ‰‰z  cxk    r| k    sn 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          ¦  «        Š|                     ‰¦  «        |k    s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          ¦  «        } ‰                     | ¦  «        ‰| z  cxk    rt          i dt          ¦  «        k    sn J ‚d S )Nr   r   r   rb   c                  ó.   •— ‰                       ‰¦  «        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                  ó.   •— ‰                      ‰ ¦  «        S r�   rš   )ÚA22ÚA23s   €€r   r   z!test_SDM_matmul.<locals>.<lambda>ø   s   ø€  §¢¨C¡¤€ r   rM   rw   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œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AÝ•"�Q‘%”%�2˜b™6œ6Ð"Ð"­¨B©¬µ2°b±6´6Ð&:Ð&:Ð;Ð;¸VÅRÑHÔH€AØ�8Š8�A‰;Œ;˜!˜A™#Ð"Ð"Ò"Ð" Ò"Ð"Ð"Ð"Ð"Ð"å
ˆq�!•B�q‘E”E�ˆm˜V¥RÑ
(Ô
(€CÝ
ˆq�!•B�q‘E”E�ˆm˜V¥RÑ
(Ô
(€CÝ
ˆq�!•B�q‘E”E�ˆm˜V¥RÑ
(Ô
(€CÝ
ˆq�!•B�q‘E”E�ˆm˜V¥RÑ
(Ô
(€CÝ
ˆq�!•B�q‘E”E�ˆm˜V¥RÑ
(Ô
(€CØ�:Š:�c‰?Œ?˜cÒ!Ð!Ð!Ð!Ø�:Š:�c‰?Œ?˜cÒ!Ð!Ð!Ð!õ
 �<Ð0Ð0Ð0Ð0Ð0Ñ1Ô1Ð1åˆQ•B�r‘F”F�r !™uœuÐ%Ð%Ð&¨µÑ3Ô3€AÝ�•B�r‘F”F� ¥B r¡F¤F Ð,Ð,¨fµbÑ9Ô9€AØ�8Š8�A‰;Œ;˜!˜A™#Ð4Ð4Ò4Ð4¥ R¨µÑ!4Ô!4Ò4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r   c                  óV  — d„ } t           j        t           j        t           j        t           j        t           j        g}t          |gdz  Ž D ]^\  }}}} | ||dœ||dœdœ¦  «        } | ||z  ||z  z   ||z  ||z  z   dœ||z  ||z  z   ||z  ||z  z   dœdœ¦  «        }||z  |k    sJ ‚Œ_d S )Nc                 ó°   — i }|                       ¦   «         D ]*\  }}d„ |                      ¦   «         D ¦   «         }|r|||<   Œ+t          |dt          ¦  «        S )Nc                 ó   — i | ]
\  }}|¯||“ŒS r   r   )Ú.0ÚjÚvals      r   ú
<dictcomp>z1test_matmul_exraw.<locals>.dm.<locals>.<dictcomp>  s#   € Ð:Ð:Ð:™V˜Q °cÐ:�1�SÐ:Ð:Ð:r   r   )Úitemsr
   r	   )ÚdÚresultÚiÚrows       r   Údmztest_matmul_exraw.<locals>.dm  sa   € ØˆØ—g’g‘i”ið 	 ð 	 ‰FˆAˆsØ:Ð: s§y¢y¡{¤{Ð:Ñ:Ô:ˆCØð  Ø��q‘	øÝ�6˜6¥5Ñ)Ô)Ð)r   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�ØˆR�q˜A�J�J a¨1 : :Ð.Ð.Ñ/Ô/ˆØˆb˜˜!™˜a ™c™	 Q q¡S¨1¨Q©3¡YÐ/Ð/°a¸±c¸A¸a¹C±iÀAÀaÁCÈ!ÈAÉ#ÁIÐ3NÐ3NÐOÐOÑPÔ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          ¦  «        }‰                     | ¦  «        |                      ‰¦  «        cxk    r‰| z   cxk    r| ‰z   cxk    r|k    sn 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          ¦  «        }‰                     | ¦  «        |                      ‰¦  «        cxk    r‰| z   cxk    r| ‰z   cxk    r|k    sn J ‚t          t          ˆfd	„¦  «         d S )
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Å     s  ø€ Ý�•"�Q‘%”%ˆy�r !™uœu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€AÝ�•"�Q‘%”%ˆy�r "™vœv­¨A©¬Ð/Ð/Ð0Ð0°&½"Ñ=Ô=€AÝ•"�Q‘%”%�2˜a™5œ5Ð!Ð! a­¨1©¬ YÐ/Ð/°½Ñ<Ô<€AØ�5Š5�‰8Œ8�q—u’u˜Q‘x”xÐ6Ð6Ò6Ð6 1 q¡5Ð6Ð6Ò6Ð6¨A°©EÐ6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6Ð6Ð6åˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AÝ�•"�Q‘%”%ˆy�r "™vœv­¨A©¬Ð/Ð/Ð0Ð0°&½"Ñ=Ô=€AÝ•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨2©¬µ"°Q±%´%Ð%8Ð%8Ð9Ð9¸6Å2ÑFÔF€AØ�5Š5�‰8Œ8�q—u’u˜Q‘x”xÐ6Ð6Ò6Ð6 1 q¡5Ð6Ð6Ò6Ð6¨A°©EÐ6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6Ð6Ð6å
�9�n�n�n�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          ¦  «        }‰                     | ¦  «        ‰| z
  cxk    r|k    sn J ‚t          t          ˆfd
„¦  «         d S )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œu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€AÝ�•"�Q‘%”%ˆy�r "™vœv­¨A©¬Ð/Ð/Ð0Ð0°&½"Ñ=Ô=€AÝ•"�R‘&”&�B˜q™EœEÐ"Ð" q­¨A©¬ iÐ0Ð0°&½"Ñ=Ô=€AØ�5Š5�‰8Œ8�q˜1‘uÐ!Ð!Ò!Ð! Ò!Ð!Ð!Ð!Ð!Ð!å
�9�n�n�n�nÑ%Ô%Ð%Ð%Ð%r   c                  ób  — 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          ¦  «        }|                      ¦   «         |  cxk    r|k    sn J ‚d S )	Nr   r   ra   r#   r   rM   rL   ro   )r
   r   Únegr,   s     r   Útest_SDM_negrÌ   '  s¥   € Ý�•"�Q‘%”%ˆy�r !™uœu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€AÝ�•"�R‘&”&ˆz¥ 2¡¤­"¨R©&¬&Ð1Ð1Ð2Ð2°F½BÑ?Ô?€AØ�5Š5‰7Œ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          ¦  «        }|                      t          ¦  «        }||k    sJ ‚|j        t          k    sJ ‚|                      t          ¦  «        }|| k    sJ ‚|j        t          k    sJ ‚d S )Nr   r   ra   r#   r   )r
   r   r   r•   r   )r    r-   r–   ÚDs       r   Útest_SDM_convert_torÏ   -  sÎ   € Ý�•"�Q‘%”%ˆy�r !™uœu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€AÝ�•"�Q‘%”%ˆy�r !™uœu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€AØ	�Š•RÑÔ€AØ�Š6ˆ6ˆ6ˆ6ØŒ8•rŠ>ˆ>ˆ>ˆ>à	�Š•RÑÔ€AØ�Š6ˆ6ˆ6ˆ6ØŒ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 ‚d S )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”5�B˜q™EœEÐ"Ð"Ð# V­RÑ	0Ô	0€BÝ	�•2�a‘5”5�	˜a¥ 1¡¤˜YÐ'Ð'¨µÑ	4Ô	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 ‚d S )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”5�	˜a¥ 1¡¤˜YÐ'Ð'¨µÑ	4Ô	4€BÝ	�•2�a‘5”5�	˜a¥ 1¡¤˜YÐ'Ð'¨µÑ	4Ô	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          ¦  «        }|                      d„ t          ¦  «        |k    sJ ‚d S )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  sg   € Ýˆ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          ¦  «        }|                      ¦   «         |k    sJ ‚d S )	Nr   r   r#   ra   rb   r   rL   rM   )r
   r   Úinvr,   s     r   Útest_SDM_invrà   S  s¡   € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AÝ•"�R‘&”&�B˜q™EœEÐ"Ð"­¨A¨q©¬µR¸¸A±Y´YÐ&?Ð&?Ð@Ð@À&Í"ÑMÔM€AØ�5Š5‰7Œ7�aŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r   c                  óú   — t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        } |                      ¦   «         t          d¦  «        k    sJ ‚d S )Nr   r   r#   ra   rb   r   rL   )r
   r   Údetr   s    r   Útest_SDM_detrã   Y  sh   € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AØ�5Š5‰7Œ7•b˜‘f”fÒÐÐÐÐÐr   c                  óv  — 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          ¦  «        }|                      ¦   «         d         |k    sJ ‚d S )Nr   r   r#   ra   rb   r   r   )r
   r   Úlu)r    ÚLs     r   Útest_SDM_lurç   ^  s™   € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AÝ�•"�Q‘%”%ˆy�r !™uœu­¨1©¬Ð.Ð.Ð/Ð/°½Ñ<Ô<€Að
 �4Š4‰6Œ6�!Œ9˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>r   c                  óÖ  — 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          ¦  «        }|                      |¦  «        |k    sJ ‚|                      |¦  «        |k    sJ ‚d S )	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œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AÝ�•"�Q‘%”%ˆy˜Q�r !™uœu˜IÐ&Ð&¨µÑ3Ô3€AÝˆQ�•"�Q˜‘(”(ˆ|Ð˜f¥bÑ)Ô)€AØ�8Š8�A‰;Œ;˜!ÒÐÐÐØ�:Š:�a‰=Œ=˜AÒÐÐÐÐÐr   c                  ó4  — t          t          d¦  «        t          d¦  «        dœt          d¦  «        t          d¦  «        dœdœdt          ¦  «        } |                      ¦   «         t          d¦  «        t          d¦  «        t          d¦  «        gk    sJ ‚d S )	Nr   r   r#   ra   rb   r   éûÿÿÿrL   )r
   r   Úcharpolyr   s    r   Útest_SDM_charpolyrî   p  s{   € Ý•"�Q‘%”%�2˜a™5œ5Ð!Ð!­¨1©¬µ°A±´Ð%7Ð%7Ð8Ð8¸&Å"ÑEÔE€AØ�:Š:‰<Œ<�B˜q™EœE¥2 b¡6¤6­2¨b©6¬6Ð2Ò2Ð2Ð2Ð2Ð2Ð2r   c                  ó  — t          dt          d¦  «        t          d¦  «        dœidt          ¦  «        } |                      ¦   «         d         t          dt          d¦  «        t          d¦  «        dœidt          ¦  «        k    sJ ‚d S )Nr   r   r#   r   rM   rw   )r
   r   Ú	nullspacer   s    r   Útest_SDM_nullspacerñ   u  su   € åˆQ•"�Q‘%”%�2˜a™5œ5Ð!Ð!Ð" F­BÑ/Ô/€AØ�;Š;‰=Œ=˜Ô�s A­¨B©¬µ2°a±5´5Ð&9Ð&9Ð#:¸FÅBÑGÔGÒGÐGÐGÐGÐGÐGr   c                  ó  — 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          ¦  «        }|                      ¦   «         |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          ¦  «        }|                      ¦   «         |ddgfk    sJ ‚d S )Nr   r   r#   ra   rb   r   r   ©r   r   r   r9   r~   rw   )r
   r   Úrrefr   )r    ÚA_rrefs     r   Útest_SDM_rrefrö   {  sl  € õ 	•"�Q‘%”%�2˜a™5œ5Ð!Ð!Ý�Q‘%”%�2˜a™5œ5Ð!Ð!ð#ð #Ø$*­Bñ	0ô 	0€Aå�Q•r˜!‘u”u�I !¥B q¡E¤E Ð+Ð+¨VµRÑ8Ô8€FØ�6Š6‰8Œ8˜  A Ð'Ò'Ð'Ð'Ð'å•B�q‘E”E�b ™eœe­¨1©¬Ð.Ð.Ý�q‘E”E­¨1©¬Ð.Ð.ð0ð 0Ø17½ñ	=ô 	=€Aå�˜A˜a™œ¥R¨¨!¡W¤WÐ-Ð-Ý˜A˜a™œ¥R¨¨!¡W¤WÐ-Ð-ð/ð /Ø06½ñ<ô <€Fà�6Š6‰8Œ8˜  A Ð'Ò'Ð'Ð'Ð'Ð'Ð'r   c                  ó¼   — t          ddt          d¦  «        iidt          ¦  «        } t          j        dt          ¦  «        }|                      ¦   «         |k    sJ ‚d S )Nr   r   r   rw   )r
   r   rq   Ú
particular)r    ÚAparts     r   Útest_SDM_particularrú   Š  sQ   € ÝˆQ�•"�Q‘%”%ˆyˆM˜6¥2Ñ&Ô&€AÝŒI�f�bÑ!Ô!€EØ�<Š<‰>Œ>˜UÒ"Ð"Ð"Ð"Ð"Ð"r   c                  óè   — t          ddt          d¦  «        iidt          ¦  «        } t          j        dt          ¦  «        }|                      ¦   «         du sJ ‚|                     ¦   «         du sJ ‚d S )Nr   r   r   rw   FT)r
   r   rq   Úis_zero_matrix)r    ÚAzeros     r   Útest_SDM_is_zero_matrixrþ   �  sr   € ÝˆQ�•B�q‘E”E�
ˆO˜V¥RÑ(Ô(€AÝŒI�f�bÑ!Ô!€EØ×ÒÑÔ Ð&Ð&Ð&Ð&Ø×ÒÑ!Ô! TÐ)Ð)Ð)Ð)Ð)Ð)r   c            	      óî  — 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          ¦  «        }|                      ¦   «         du sJ ‚|                     ¦   «         du sJ ‚d S ©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”E�b ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý(*¨1©¬µ"°Q±%´%Ð$8Ð$8ð:ð :à;AÅ2ñ	Gô 	G€Aõ 	•B�q‘E”E�b ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8ð:ð :à;AÅ2ñ	Gô 	G€Að �:Š:‰<Œ<˜4ÐÐÐÐØ�:Š:‰<Œ<˜5Ð Ð Ð Ð Ð Ð r   c            	      ó6  — 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          ¦  «                             ¦   «         }|                      ¦   «         du sJ ‚|                     ¦   «         du sJ ‚d S r   )r
   r   rƒ   Úis_lowerr,   s     r   Útest_SDM_is_lowerr  ¢  sV  € Ý•B�q‘E”E�b ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý(*¨1©¬µ"°Q±%´%Ð$8Ð$8ð:ð :à;AÅ2ñ	ô 	÷ Ši‰kŒkð õ 	•B�q‘E”E�b ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8Ý  ™eœe­¨1©¬µ"°Q±%´%Ð8Ð8ð:ð :à;AÅ2ñ	ô 	÷ Ši‰kŒ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   ru   ry   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     sY  ððð ð Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (Ø (Ð (Ð (Ð (Ð (Ð (ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ðDð Dð DðFð Fð Fð$ð $ð $ðð ð ðQð Qð Qð#ð #ð #ð<ð <ð <ð
)ð )ð )ð
1ð 1ð 1ðð ð ðð ð ð
	0ð 	0ð 	0ð7ð 7ð 7ð(/ð /ð /ð5ð 5ð 5ð4ð ð ð-ð -ð -ð1ð 1ð 1ð<ð <ð <ð
ð ð ð*ð *ð *ð8ð 8ð 8ð5ð 5ð 5ð<ð ð ð"&ð &ð &ð&ð &ð &ðð ð ð	ð 	ð 	ð"ð "ð "ð"ð "ð "ð/ð /ð /ðð ð ðð ð ð
ð ð ðð ð ð3ð 3ð 3ð
Hð Hð Hð(ð (ð (ð#ð #ð #ð*ð *ð *ð!ð !ð !ð
!ð 
!ð 
!ð 
!ð 
!r   