
    h                         S SK Jr  S SKrS SKrS SKJr  S SKJr       SS\R                  S\R                  S\\R                     S\
S	\
S
\S\S\R                  4S jjr " S S\5      rg)    )OptionalN)Base)expectABCalphabetatransAtransBreturnc                     US:X  a  U OU R                   n US:X  a  UOUR                   nUb  UO[        R                  " S5      nU[        R                  " X5      -  XB-  -   nU$ )Nr   )Tnparraydot)r   r   r   r	   r
   r   r   Ys           Z/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/gemm.pygemm_reference_implementationr      sW     q[accAq[accA]Aqtx'AH    c                       \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       rSrg)Gemm    Nc                     [         R                  R                  S/ SQS/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  " SS/5      R                  [        R                  5      n[        XU5      n[        XX#/U/S	S
9  g )Nr   abcyinputsoutputs            test_gemm_default_zero_biasr!   r"   nameonnxhelper	make_noder   randomranfastypefloat32zerosr   r   noder   r   r   r   s        r   export_default_zero_biasGemm.export_default_zero_bias!   s    {{$$VOcU$SIINNAq6"))"**5IINNAq6"))"**5HHaV##BJJ/)!2tIs9VWr   c                  r   [         R                  R                  SSS/S/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        X5      n[        XU/U/S	S
9  g )Nr   r   r   r   r       
   r#   test_gemm_default_no_biasr(   
r+   r,   r-   r   r.   r/   r0   r1   r   r   )r4   r   r   r   s       r   export_default_no_biasGemm.export_default_no_bias*   s    {{$$VS#J$NIINNAr7#**2::6IINNB7#**2::6)!/tFQC6QRr   c                     [         R                  R                  S/ SQS/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  " S5      R                  [        R                  5      n[        XU5      n[        XX#/U/S	S
9  g )Nr   r   r   r    r8   r#   r%   gQ	@test_gemm_default_scalar_biasr(   )r+   r,   r-   r   r.   r/   r0   r1   r   r   r   r3   s        r   export_default_scalar_biasGemm.export_default_scalar_bias2   s    {{$$VOcU$SIINNAq6"))"**5IINNAq6"))"**5HHTN!!"**-)!2QQC6U	
r   c                     [         R                  R                  S/ SQS/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  S/5      R                  [        R                  5      n[        XU5      n[        U XU/U/SS	9  g )
Nr   r   r   r    r#      r&   )test_gemm_default_single_elem_vector_biasr(   r;   r3   s        r   &export_default_single_elem_vector_bias+Gemm.export_default_single_elem_vector_bias=   s    {{$$VOcU$SIINNAq6"))"**5IINNAq6"))"**5IINNA3&&rzz2)!2!9C<		
r   c                     [         R                  R                  S/ SQS/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        XU5      n[        XX#/U/S	S
9  g )Nr   r   r   r    r8   rC   r%   r&   test_gemm_default_vector_biasr(   r;   r3   s        r   export_default_vector_biasGemm.export_default_vector_biasK       {{$$VOcU$SIINNAq6"))"**5IINNAq6"))"**5IINNAq6"))"**5)!2QQC6U	
r   c                     [         R                  R                  S/ SQS/S9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        XU5      n[        XX#/U/SS	9  g )
Nr   r   r   r    r#      r%   test_gemm_default_matrix_biasr(   r;   r3   s        r   export_default_matrix_biasGemm.export_default_matrix_biasV   rK   r   c                     [         R                  R                  S/ SQS/SS9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  " SS/5      R                  [        R                  5      n[        XUSS	9n[        XX#/U/S
S9  g )Nr   r   r   r&   )r!   r"   r   rM   r#   r%   )r   test_gemm_transposeAr(   r*   r3   s        r   export_transposeAGemm.export_transposeAa       {{$$?SE! % 
 IINNAq6"))"**5IINNAq6"))"**5HHaV##BJJ/)!!<tIs9OPr   c                     [         R                  R                  S/ SQS/SS9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  " SS/5      R                  [        R                  5      n[        XUSS	9n[        XX#/U/S
S9  g )Nr   r   r   r&   )r!   r"   r   r#   rM   r%   )r   test_gemm_transposeBr(   r*   r3   s        r   export_transposeBGemm.export_transposeBl   rU   r   c                     [         R                  R                  S/ SQS/SS9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  " S	S/5      R                  [        R                  5      n[        XUSS
9n[        XX#/U/SS9  g )Nr   r   r         ?)r!   r"   r	   r#   r$   r%   r&   )r	   test_gemm_alphar(   r*   r3   s        r   export_alphaGemm.export_alphaw   s    {{$$?SE % 
 IINNAq6"))"**5IINNAq6"))"**5HHaV##BJJ/)!=tIs9JKr   c                     [         R                  R                  S/ SQS/SS9n [        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  SS/5      R                  [        R                  5      n[        R                  R                  S	S/5      R                  [        R                  5      n[        XUSS
9n[        XX#/U/SS9  g )Nr   r   r   r[   )r!   r"   r
   r8   rC   r%   r&   )r
   test_gemm_betar(   r;   r3   s        r   export_betaGemm.export_beta   s    {{$$?SE % 
 IINNAq6"))"**5IINNAq6"))"**5IINNAq6"))"**5)!<tIs9IJr   c            
         [         R                  R                  S/ SQS/SSSSS9n [        R                  R                  SS	/5      R                  [        R                  5      n[        R                  R                  S
S/5      R                  [        R                  5      n[        R                  R                  SS
/5      R                  [        R                  5      n[        XUSSSSS9n[        XX#/U/SS9  g )Nr   r   r   g      ?gffffff?r&   )r!   r"   r	   r
   r   r   r%   r#   r$   )r   r   r	   r
   test_gemm_all_attributesr(   r;   r3   s        r   export_all_attributesGemm.export_all_attributes   s    {{$$"E % 
 IINNAq6"))"**5IINNAq6"))"**5IINNAq6"))"**5)!Aat$
 	tIs9STr    )r   N)__name__
__module____qualname____firstlineno__staticmethodr5   r<   r@   rE   rI   rO   rS   rX   r]   ra   re   __static_attributes__rg   r   r   r   r       s    X X S S 
 
 
 
 
 
 
 
 Q Q Q Q L L K K U Ur   r   )N      ?rn   r   r   )typingr   numpyr   r+   onnx.backend.test.case.baser   onnx.backend.test.case.noder   ndarrayfloatintr   r   rg   r   r   <module>rv      s   
    , . #	zz	zz 

 	
    ZZ$~U4 ~Ur   