ó
    Ñ‘®i  ã                  ó€   • S SK Jr  S SKJr  S SKJr  S SKJr  \(       a  S SKJr  / r	   S             S	S jjr
g)
é    )Úannotations)ÚTYPE_CHECKING)Ú_C_ops)Úin_dynamic_or_pir_mode)ÚTensorNc                ó^   • [        5       (       d   S5       e[        R                  " XX#U5      $ )aÛ  
Applies matrix multiplication for `x` and `y` , `input` is added to
the final result. The equation is:

..  math::

    out = alpha * x * y + beta * input

The supported input/output Tensor layout are as follows:

Note:
    input[SparseCsrTensor] + x[SparseCsrTensor] @ y[SparseCsrTensor] -> out[SparseCsrTensor]
    input[DenseTensor] + x[SparseCsrTensor] @ y[DenseTensor] -> out[DenseTensor]
    input[SparseCooTensor] + x[SparseCooTensor] @ y[SparseCooTensor] -> out[SparseCooTensor]
    input[DenseTensor] + x[SparseCooTensor] @ y[DenseTensor] -> out[DenseTensor]

It supports backward propagation.

Dimensions `input` , `x` , `y` must be same and >= 2D. Automatic broadcasting of Tensor is not supported.

Args:
    input (SparseTensor|DenseTensor): The input tensor. Shape is [*, M, N]. The data type can be float32 or float64.
    x (SparseTensor): The input SparseTensor. Shape is [*, M, K]. The data type can be float32 or float64.
    y (SparseTensor|DenseTensor): The input tensor. Shape is [*, K, N]. The data type can be float32 or float64.
    beta (float, optional): Coefficient of `input` . Default: 1.0
    alpha (float, optional): Coefficient of `x * y` . Default: 1.0
    name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.

Returns:
    SparseTensor|DenseTensor: Tensor type, date type and shape is the same with `input` .

Examples:

    .. code-block:: python

        >>> # doctest: +REQUIRES(env:GPU)
        >>> import paddle
        >>> paddle.device.set_device('gpu')

        >>> # dense + csr @ dense -> dense
        >>> input = paddle.rand([3, 2])
        >>> crows = [0, 1, 2, 3]
        >>> cols = [1, 2, 0]
        >>> values = [1., 2., 3.]
        >>> x = paddle.sparse.sparse_csr_tensor(crows, cols, values, [3, 3])
        >>> y = paddle.rand([3, 2])
        >>> out = paddle.sparse.addmm(input, x, y, 3.0, 2.0)

        >>> # dense + coo @ dense -> dense
        >>> input = paddle.rand([3, 2])
        >>> indices = [[0, 1, 2], [1, 2, 0]]
        >>> values = [1., 2., 3.]
        >>> x = paddle.sparse.sparse_coo_tensor(indices, values, [3, 3])
        >>> y = paddle.rand([3, 2])
        >>> out = paddle.sparse.addmm(input, x, y, 3.0, 2.0)

z<Currently, Sparse API only support dynamic mode or pir mode.)r   r   Úsparse_addmm)ÚinputÚxÚyÚbetaÚalphaÚnames         ÚV/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/sparse/multiary.pyÚaddmmr      s5   € ôB "×#Ñ#ð ØFóÐ#ô ×Ò˜u¨°%Ó8Ð8ó    )ç      ð?r   N)r
   r   r   r   r   r   r   Úfloatr   r   r   z
str | NoneÚreturnr   )Ú
__future__r   Útypingr   Úpaddler   Úpaddle.base.frameworkr   r   Ú__all__r   © r   r   Ú<module>r      sx   ðõ #å  å Ý 8æÝà
€ð ØØðD9ØðD9àðD9ð ðD9ð ð	D9ð
 ðD9ð ðD9ð öD9r   