
    Ng                         d dl mZ d dlZd dlZd dlmZ d dlmZ 	 	 	 	 	 ddej	        dej	        deej	                 d	e
d
e
dededej	        fdZ G d de          ZdS )    )OptionalN)Base)expect      ?ABCalphabetatransAtransBreturnc                     |dk    r| n| j         } |dk    r|n|j         }||nt          j        d          }|t          j        | |          z  ||z  z   }|S )Nr   )Tnparraydot)r   r   r	   r
   r   r   r   Ys           \/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/case/node/gemm.pygemm_reference_implementationr      sa     q[[acAq[[acA]Aq!tax'AH    c                      e Zd Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd	            Z
edd
            Zedd            Zedd            Zedd            ZdS )Gemmr   Nc                     t           j                            dg ddg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j        ddg                              t          j                  }t          |||          }t          | |||g|gd	
           d S )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_biaszGemm.export_default_zero_bias!   s    {$$VOOOcU$SSINNAq6""))"*55INNAq6""))"*55HaV##BJ//)!Q22tQ1Is9VWWWWWWr   c                     t           j                            dddgdg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          ||          }t          | ||g|gd	
           d S )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_biaszGemm.export_default_no_bias*   s    {$$VS#J$NNINNAr7##**2:66INNB7##**2:66)!Q//tQFQC6QRRRRRRr   c                     t           j                            dg ddg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j        d                              t          j                  }t          |||          }t          | |||g|gd	
           d S )Nr   r   r   r    r7   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_biaszGemm.export_default_scalar_bias2   s    {$$VOOOcU$SSINNAq6""))"*55INNAq6""))"*55HTNN!!"*--)!Q22!QQC6U	
 	
 	
 	
 	
 	
r   c                     t           j                            dg ddg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j                            dg                              t          j                  }t          |||          }t          | |||g|gd	           d S )
Nr   r   r   r    r#      r&   )test_gemm_default_single_elem_vector_biasr(   r:   r3   s        r   &export_default_single_elem_vector_biasz+Gemm.export_default_single_elem_vector_bias=   s    {$$VOOOcU$SSINNAq6""))"*55INNAq6""))"*55INNA3&&rz22)!Q22q!9C<		
 	
 	
 	
 	
 	
r   c                     t           j                            dg ddg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          |||          }t          | |||g|gd	
           d S )Nr   r   r   r    r7   r@   r%   r&   test_gemm_default_vector_biasr(   r:   r3   s        r   export_default_vector_biaszGemm.export_default_vector_biasK       {$$VOOOcU$SSINNAq6""))"*55INNAq6""))"*55INNAq6""))"*55)!Q22!QQC6U	
 	
 	
 	
 	
 	
r   c                     t           j                            dg ddg          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          |||          }t          | |||g|gd	           d S )
Nr   r   r   r    r#      r%   test_gemm_default_matrix_biasr(   r:   r3   s        r   export_default_matrix_biaszGemm.export_default_matrix_biasV   rF   r   c                     t           j                            dg ddgd          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j        ddg                              t          j                  }t          |||d	          }t          | |||g|gd
           d S )Nr   r   r   r&   )r!   r"   r   rH   r#   r%   )r   test_gemm_transposeAr(   r*   r3   s        r   export_transposeAzGemm.export_transposeAa       {$$???SE! % 
 
 INNAq6""))"*55INNAq6""))"*55HaV##BJ//)!Q!<<<tQ1Is9OPPPPPPr   c                     t           j                            dg ddgd          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j        ddg                              t          j                  }t          |||d	          }t          | |||g|gd
           d S )Nr   r   r   r&   )r!   r"   r   r#   rH   r%   )r   test_gemm_transposeBr(   r*   r3   s        r   export_transposeBzGemm.export_transposeBl   rN   r   c                     t           j                            dg ddgd          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j        d	dg                              t          j                  }t          |||d
          }t          | |||g|gd           d S )Nr   r   r         ?)r!   r"   r
   r#   r$   r%   r&   )r
   test_gemm_alphar(   r*   r3   s        r   export_alphazGemm.export_alphaw   s    {$$???SE % 
 
 INNAq6""))"*55INNAq6""))"*55HaV##BJ//)!Q===tQ1Is9JKKKKKKr   c                     t           j                            dg ddgd          } t          j                            ddg                              t          j                  }t          j                            ddg                              t          j                  }t          j                            d	dg                              t          j                  }t          |||d
          }t          | |||g|gd           d S )Nr   r   r   rS   )r!   r"   r   r7   r@   r%   r&   )r   test_gemm_betar(   r:   r3   s        r   export_betazGemm.export_beta   s    {$$???SE % 
 
 INNAq6""))"*55INNAq6""))"*55INNAq6""))"*55)!Q<<<tQ1Is9IJJJJJJr   c            	      &   t           j                            dg ddgdddd          } t          j                            dd	g                              t          j                  }t          j                            d
dg                              t          j                  }t          j                            dd
g                              t          j                  }t          |||dddd          }t          | |||g|gd           d S )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_attributeszGemm.export_all_attributes   s    {$$"??E % 
 
 INNAq6""))"*55INNAq6""))"*55INNAq6""))"*55)q!Aat$
 
 
 	tQ1Is9STTTTTTr   )r   N)__name__
__module____qualname__staticmethodr5   r;   r>   rB   rE   rJ   rM   rQ   rU   rX   r[    r   r   r   r       s       X X X \X S S S \S 
 
 
 \
 
 
 
 \
 
 
 
 \
 
 
 
 \
 Q Q Q \Q Q Q Q \Q L L L \L K K K \K U U U \U U Ur   r   )Nr   r   r   r   )typingr   numpyr   r+   onnx.backend.test.case.baser   onnx.backend.test.case.noder   ndarrayfloatintr   r   r`   r   r   <module>rh      s  
            , , , , , , . . . . . . # 	z	z 
 	
    Z   $~U ~U ~U ~U ~U4 ~U ~U ~U ~U ~Ur   