§
    µ³Ùg_.  ã                   ó,  — d dl mZ d dlZd dlmZmZ d dlZd dlm	Z	m
Z
 d dl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ej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢g d¢g d¢gg d¢g d¢g d¢gg d¢g d¢g d¢gg d¢g d¢gg d¢g d¢gdd gdd gd d ggg¦  «        d!„ ¦   «         Zd"„ Zej        j        d#„ ¦   «         Zd$„ Z  ed%dgg d&¢g d'¢g d(¢gg d)¢fg d*¢g d+¢g d,¢gg d-¢fg d.¢g d/¢g d0¢gg d1¢fg d2¢g d3¢g d4¢gg d5¢fd6 e!d7¦  «         e!d7¦  «        g e!d7¦  «         e!d7¦  «        dg e!d7¦  «        d8 e!d7¦  «        ggg d1¢fg¦  «        Z"ej                             d9e"¦  «        d:„ ¦   «         Z#dS );é    )ÚproductN)Úassert_array_equalÚassert_equal)Ú	csr_arrayÚdiags_array)Úmaximum_bipartite_matchingÚ"min_weight_full_bipartite_matchingc                  ó¼   — t          j        t          ¦  «        5  t          j        ddgddgg¦  «        } t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   é   )ÚpytestÚraisesÚ	TypeErrorÚnpÚarrayr   )Úgraphs    ú^/granary/edev/quantum/lib/python3.11/site-packages/scipy/sparse/csgraph/tests/test_matching.pyÚ5test_maximum_bipartite_matching_raises_on_dense_inputr      s    € Ý	Œ•yÑ	!Ô	!ð *ð *Ý”˜1˜a˜& 1 a &Ð)Ñ*Ô*ˆÝ" 5Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s   š*AÁAÁAc                  óÐ   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          j        g ¦  «        }t	          ||¦  «         t	          ||¦  «         d S )N©r   r   Úrow©Ú	perm_typeÚcolumn©r   r   r   r   r   ©r   ÚxÚyÚexpected_matchings       r   Ú+test_maximum_bipartite_matching_empty_graphr      si   € Ý�fÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝœ ™œÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,ó    c                  óô   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g ¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )N©é   r   r   r   r   éÿÿÿÿ©r   r   r   r   r   ©r   r   r   s      r   Ú4test_maximum_bipartite_matching_empty_left_partitionr'      so   € Ý�fÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x ‘|”| QÑ'Ô'Ð'Ý•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ð-Ð-r    c                  óô   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g d¢¦  «        |¦  «         t          t          j        g ¦  «        |¦  «         d S )N©r   é   r   r   r   )r$   r$   r$   r%   r&   s      r   Ú5test_maximum_bipartite_matching_empty_right_partitionr+   $   so   € Ý�fÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x   Ñ-Ô-¨qÑ1Ô1Ð1Ý•r”x ‘|”| QÑ'Ô'Ð'Ð'Ð'r    c                  óø   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        ddg¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )N©r#   r#   r   r   r   r$   r%   r&   s      r   Ú3test_maximum_bipartite_matching_graph_with_no_edgesr.   ,   su   € Ý�fÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ý•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ð-Ð-r    c                  óà   — t          ddgddgg¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          j        ddg¦  «        }t	          ||¦  «         t	          ||¦  «         d S )Nr   r   r   r   r   r   r   s       r   Ú>test_maximum_bipartite_matching_graph_that_causes_augmentationr0   4   s~   € õ ˜˜1�v  1˜vÐ&Ñ'Ô'€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝœ ! Q Ñ(Ô(ÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,r    c                  ó
  — t          ddgddgddgg¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g d¢¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )Nr   r   r   r   r   ©r   r$   r   r#   r%   r&   s      r   ÚAtest_maximum_bipartite_matching_graph_with_more_rows_than_columnsr3   ?   sˆ   € Ý˜˜1�v  1˜v¨¨1 vÐ.Ñ/Ô/€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝ•r”x 
 
 
Ñ+Ô+¨QÑ/Ô/Ð/Ý•r”x  A Ñ'Ô'¨Ñ+Ô+Ð+Ð+Ð+r    c                  ó  — t          g d¢g d¢g¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        ddg¦  «        |¦  «         t          t          j        g d¢¦  «        |¦  «         d S )	N)r   r   r   ©r   r   r   r   r   r   r   r#   r2   r%   r&   s      r   ÚAtest_maximum_bipartite_matching_graph_with_more_columns_than_rowsr6   G   s‚   € Ý�y�y�y ) ) )Ð,Ñ-Ô-€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝ•r”x  A Ñ'Ô'¨Ñ+Ô+Ð+Ý•r”x 
 
 
Ñ+Ô+¨QÑ/Ô/Ð/Ð/Ð/r    c                  óö   — ddg} ddg}g d¢}t          | ||fd¬¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }t          j        ddg¦  «        }t	          ||¦  «         t	          ||¦  «         d S )	Nr   r   )r   r   r#   r-   ©Úshaper   r   r   r   )ÚdataÚindicesÚindptrr   r   r   r   s          r   Ú=test_maximum_bipartite_matching_explicit_zeros_count_as_edgesr=   O   s–   € Øˆqˆ6€DØ�!ˆf€GØˆYˆY€FÝ�t˜W fÐ-°VÐ<Ñ<Ô<€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝœ ! Q Ñ(Ô(ÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,r    c                  ó0  — t          j        dt          ¬¦  «        } g d¢}g d¢}t          | ||fd¬¦  «        }t	          |d¬¦  «        }t	          |d	¬¦  «        }|d
k                         ¦   «         dk    sJ ‚|d
k                         ¦   «         dk    sJ ‚t          t          |j        d         ¦  «        |¦  «        D ]\  }}|d
k    r|||f         sJ ‚Œt          |t          |j        d         ¦  «        ¦  «        D ]\  }}|d
k    r|||f         sJ ‚Œd S )Né2   ©Údtype)2é   é   é   é   é   é   rE   r*   é   é
   rG   é   rB   rC   é   rG   rK   é   é   rE   r*   é   r*   rK   rL   rB   rC   rD   rE   rF   rG   rE   r*   rH   rI   rG   rJ   rB   rC   rK   rG   rK   rL   rM   rE   r*   rN   r*   rK   rL   )r   rG   é   rI   rI   rN   rM   rE   rE   rF   é   é   é    é#   rS   é(   é-   é/   rV   é0   r?   )rM   rP   r8   r   r   r   r$   rK   r   r   )	r   ÚonesÚintr   r   ÚsumÚzipÚranger9   )r:   r;   r<   r   r   r   ÚuÚvs           r   Ú5test_maximum_bipartite_matching_feasibility_of_resultr_   [   sN  € åŒ7�2�SÐ!Ñ!Ô!€DðJð Jð J€Gðð ð €Få�t˜W fÐ-°XÐ>Ñ>Ô>€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AØ�ŠG�=Š=‰?Œ?˜bÒ Ð Ð Ð Ø�ŠG�=Š=‰?Œ?˜bÒ Ð Ð Ð å•E˜%œ+ aœ.Ñ)Ô)¨1Ñ-Ô-ð ð ‰ˆˆ1Ø�Š7ˆ7Ø˜˜A˜”;ÐÐÐøÝ�A•u˜Uœ[¨œ^Ñ,Ô,Ñ-Ô-ð ð ‰ˆˆ1Ø�Š7ˆ7Ø˜˜A˜”;ÐÐÐøðð r    c                  ó\  — t           j                             d¦  «         t          t          j        d¦  «        dd¬¦  «        } t           j                             d¦  «        }t           j                             d¦  «        }t          j        d¦  «        }|}t          j        dt          ¬¦  «        }t          |||ff¦  «        }|}t          j        d¦  «        }t          j        dt          ¬¦  «        }	t          |	||ff¦  «        }
|| z  |
z  }t          |d¬¦  «        }t          j        d¦  «        }|}t          j        dt          ¬¦  «        }t          |||ff¦  «        }||z  }t          |d	¬¦  «        }|}t          j        d¦  «        }t          j        dt          ¬¦  «        }	t          |	||ff¦  «        }
||
z  }t          t          |                     ¦   «         dk    ¦  «        d
¦  «         t          t          |                     ¦   «         dk    ¦  «        d
¦  «         d S )Né*   rP   r   Úcsr)ÚoffsetsÚformatr@   r   r   r   F)r   ÚrandomÚseedr   rX   ÚpermutationÚarangerY   r   r   r   ÚanyÚdiagonal)ÚAÚ	rand_permÚ
rand_perm2ÚRrowÚRcolÚRdataÚRmatÚCrowÚCcolÚCdataÚCmatÚBÚpermÚC1Úperm2ÚC2s                   r   ÚFtest_matching_large_random_graph_with_one_edge_incident_to_each_vertexr{   q   så  € Ý„I‡N‚N�2ÑÔÐÝ•B”G˜B‘K”K¨°5Ð9Ñ9Ô9€AÝ”	×%Ò% bÑ)Ô)€IÝ”×&Ò& rÑ*Ô*€JåŒ9�R‰=Œ=€DØ€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�e˜d D˜\Ð*Ñ+Ô+€Dà€DÝŒ9�R‰=Œ=€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�e˜d D˜\Ð*Ñ+Ô+€Dàˆq‰�4‰€Aõ & a°5Ð9Ñ9Ô9€DÝŒ9�R‰=Œ=€DØ€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�e˜d D˜\Ð*Ñ+Ô+€DØ	�‰€Bõ ' q°HÐ=Ñ=Ô=€EØ€DÝŒ9�R‰=Œ=€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�e˜d D˜\Ð*Ñ+Ô+€DØ	
ˆT‰€Bõ •�R—[’[‘]”] aÒ'Ñ(Ô(¨%Ñ0Ô0Ð0Ý•�R—[’[‘]”] aÒ'Ñ(Ô(¨%Ñ0Ô0Ð0Ð0Ð0r    znum_rows,num_cols)r   r"   r)   c                 ó    — t          || f¦  «        }t          |¦  «        \  }}t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚d S )Nr   )r   r	   Úlen)Únum_rowsÚnum_colsÚbiadjacencyÚrow_indÚcol_inds        r   Ú+test_min_weight_full_matching_trivial_graphrƒ   ˜   sZ   € å˜X xÐ0Ñ1Ô1€KÝ9¸+ÑFÔFÑ€GˆWÝˆw‰<Œ<˜1ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÐÐr    r€   )r   r   r   )r   r   r   r5   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r#   r   r   )r   r   r   )r   r#   r   r   r#   rG   c                 ó¢   — t          j        t          ¦  «        5  t          t	          | ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   r   Ú
ValueErrorr	   r   ©r€   s    r   Ú1test_min_weight_full_matching_infeasible_problemsrˆ       s¢   € õ 
Œ•zÑ	"Ô	"ð Cð CÝ*­9°[Ñ+AÔ+AÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs   šAÁAÁAc                  óR  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        } t          j        t          d¬¦  «        5  t          t          | ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)ç        rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   çü©ñÒMbP?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Š   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Š   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Š   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Š   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Š   )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Š   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   r‹   )rŠ   g»ì|ä{ë½?rŠ   rŠ   gCðÏw}‹?gN•RDD9³?rŠ   rŠ   rŠ   g½­p¢ÈÀç?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   g<(@¹òé?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   rŠ   gI}þ 7èê?rŠ   rŠ   rŠ   rŠ   gÇ	vˆ?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   gV¾€ÁâŽê?rŠ   rŠ   rŠ   gÛY‰³\½?rŠ   rŠ   rŠ   gü!‘«š¼?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )gj]8J=È?rŠ   gÉ$]ë}¤?rŠ   rŠ   rŠ   rŠ   rŠ   gâ¦«à\Hè?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   gYI!åæ?rŠ   rŠ   rŠ   rŠ   rŠ   g³ðÿ$œ?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )g-™ Oé?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   gˆö-J;ûÂ?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   gzm�)Ô»?rŠ   rŠ   rŠ   gËz{!.Šì?rŠ   rŠ   rŠ   güoFI%°?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   g-Æe�nä?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   g¸ÐðÁÆÐç?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   gÂÅâ§7¹?rŠ   rŠ   gýqÒfbÛÇ?g¹]!¹Ñ?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   g‡Ÿæ�kç?rŠ   rŠ   gT#P¹Ý?g:àãáw²Ø?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   )gvÁCÅöâÒ?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   gŽŒ8»¾¸?rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   rŠ   zno full matching exists)Úmatch)r   Úasarrayr   r   r†   r	   r   )Úas    r   Ú.test_min_weight_full_matching_large_infeasibler�   ®   s0  € å
Œ
ð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	"ð 	"ð 	"ð	Eð 	Eð 	Eð	Eð 	Eð 	Eð	ð 	ð 	ð	Jð 	Jð 	Jð	Jð 	Jð 	Jð	Jð 	Jð 	Jð	Eð 	Eð 	Eð	Bð 	Bð 	Bð	Eð 	Eð 	Eð	Fð 	Fð 	Fð	Gð 	Gð 	Gð	Eð 	Eð 	Eð[/
ñ /	ô /	€Aõ` 
Œ•zÐ)BÐ	CÑ	CÔ	Cð 9ð 9Ý*­9°Q©<¬<Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   Á2BÂB Â#B c                  ó¦   — t          j        t          ¦  «        5  t          d¦  «        } t	          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N))r#   r   r*   )r   r   r   )r   r#   r*   )r   ÚwarnsÚUserWarningr   r	   r‡   s    r   Ú!test_explicit_zero_causes_warningr“   ä   s’   € å	Œ•kÑ	"Ô	"ð 8ð 8ÝÐ AÑBÔBˆÝ*¨;Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   šAÁA
ÁA
c           
      ót  — |\  }}|dk    }| ||¦  «        z  }|t          j        |¦  «        z  } | ||¬¦  «        \  }}t          |t          j        |¦  «        ¦  «         t          |t          j        |||f         ¦  «                             ¦   «         ¦  «         |j        } | ||¬¦  «        \  }}t          |t          j        |¦  «        ¦  «         t          t          j        |¦  «        t          j        t          j        |||f         ¦  «        ¦  «                             ¦   «         ¦  «         d S )Nr$   )Úmaximize)r   r   r   ÚsortÚflattenÚT)	ÚsolverÚ
array_typeÚsignÚ	test_caseÚcost_matrixÚexpected_costr•   r�   r‚   s	            r   Ú linear_sum_assignment_assertionsrŸ   í   sH  € ð "+Ñ€K�Ø�rŠz€HØ˜˜ KÑ0Ô0Ñ0€KØ�2œ8 MÑ2Ô2Ñ2€Mà�v˜k°HÐ=Ñ=Ô=Ñ€GˆWÝ�w¥¤¨Ñ 0Ô 0Ñ1Ô1Ð1Ý�}Ý”x ¨G°WÐ,<Ô =Ñ>Ô>×FÒFÑHÔHñJô Jð Jð ”-€KØ�v˜k°HÐ=Ñ=Ô=Ñ€GˆWÝ�w¥¤¨Ñ 0Ô 0Ñ1Ô1Ð1Ý•r”w˜}Ñ-Ô-Ý”w�rœxØ& w°Ð'7Ô8ñ :ô  :ñ ;ô ;ß;Bº7¹9¼9ñFô Fð Fð Fð Fr    r$   )é�  é–   r    )r    éÂ  éX  )é,  éá   r¤   )r¡   r    r¤   )r    r¡   r    r   )r    r¢   r£   r#   )r¤   r¥   r¤   r*   )r¡   r#   r¤   )rI   rI   rH   )é	   rH   r   )r¦   rO   é   )rI   r   rO   )rI   rI   rH   rB   )r¦   rH   r   r   )r¦   rO   r§   rI   )rI   r   r§   rI   ÚinfrO   zsign,test_casec                 ó>   — t          t          t          | |¦  «         d S r…   )rŸ   r	   r   )r›   rœ   s     r   Ú*test_min_weight_full_matching_small_inputsrª   $  s,   € å$Ý*­I°t¸YñHô Hð Hð Hð Hr    )$Ú	itertoolsr   Únumpyr   Únumpy.testingr   r   r   Úscipy.sparser   r   Úscipy.sparse.csgraphr   r	   r   r   r'   r+   r.   r0   r3   r6   r=   r_   r{   ÚmarkÚparametrizerƒ   rˆ   r�   Úthread_unsafer“   rŸ   ÚfloatÚ linear_sum_assignment_test_casesrª   © r    r   ú<module>r¶      sÈ  ðØ Ð Ð Ð Ð Ð à Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø €€€à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð
*ð *ð *ð-ð -ð -ð.ð .ð .ð(ð (ð (ð.ð .ð .ð-ð -ð -ð,ð ,ð ,ð0ð 0ð 0ð	-ð 	-ð 	-ðð ð ð,$1ð $1ð $1ðN „×ÒÐ,Ð.FÐ.FÐ.FÑGÔGðð ñ HÔGðð „×Ò˜à&˜Y˜Y¨	¨	¨	°9°9°9Ð=Ø&˜Y˜Y¨	¨	¨	°9°9°9Ð=Ø)˜\˜\¨<¨<¨<¸¸¸ÐFØ&˜Y˜Y¨	¨	¨	Ð2Ø&˜Y˜Y¨	¨	¨	Ð2Ø ˜V a¨ V¨a°¨VÐ4ðñô ðCð Cñô ðCð
39ð 39ð 39ðl „Ôð8ð 8ñ Ôð8ðFð Fð Fð* $+ 7Øˆ€Gð ˆ/ˆ/Ø
ˆ/ˆ/Ø
ˆ/ˆ/ð
ð 
ˆˆð	ð Ð
Ð
Ø
Ð
Ð
Ø
Ð
Ð
ð
ð 
ˆˆð	ð
 ˆ+ˆ+Ø
ˆ)ˆ)Ø
ˆ)ˆ)ð
ð 
ˆˆð	ð ˆ/ˆ/Ø
ˆ,ˆ,Ø
ˆ-ˆ-ð
ð 
ˆˆð	ð ˆuˆu�U‰|Œ|˜U˜U 5™\œ\Ð
*Øˆ5�‰<Œ<˜˜˜u™œ qÐ
)Øˆ5�‰<Œ<˜˜E˜E %™LœLÐ
)ð
+ð 
ˆˆð	ð3ñ$ô $Ð  ðD „×ÒÐ)Ð+KÑLÔLðHð Hñ MÔLðHð Hð Hr    