o
    y“©iž	  ã                   @   sz   d dl mZ d dlZd dlmZ d dlmZ dededeeef fdd	„Zd
ededefdd„Zdededefdd„Z	dS )é    )ÚTupleN)ÚTensor)Ú_check_same_shapeÚpredsÚtargetÚreturnc                 C   sR   t | |ƒ | jr
| n|  ¡ } |jr|n| ¡ }t t | | ¡¡}| ¡ }||fS )zÇUpdates and returns variables required to compute Mean Absolute Error.

    Checks for same shape of input tensors.

    Args:
        preds: Predicted tensor
        target: Ground truth tensor
    )r   Úis_floating_pointÚfloatÚtorchÚsumÚabsÚnumel©r   r   Úsum_abs_errorÚn_obs© r   úZ/home/ubuntu/.local/lib/python3.10/site-packages/torchmetrics/functional/regression/mae.pyÚ_mean_absolute_error_update   s   
	r   r   r   c                 C   s   | | S )aÂ  Computes Mean Absolute Error.

    Args:
        sum_abs_error: Sum of absolute value of errors over all observations
        n_obs: Number of predictions or observations

    Example:
        >>> preds = torch.tensor([0., 1, 2, 3])
        >>> target = torch.tensor([0., 1, 2, 2])
        >>> sum_abs_error, n_obs = _mean_absolute_error_update(preds, target)
        >>> _mean_absolute_error_compute(sum_abs_error, n_obs)
        tensor(0.2500)
    r   )r   r   r   r   r   Ú_mean_absolute_error_compute'   s   r   c                 C   s   t | |ƒ\}}t||ƒS )a}  Computes mean absolute error.

    Args:
        preds: estimated labels
        target: ground truth labels

    Return:
        Tensor with MAE

    Example:
        >>> from torchmetrics.functional import mean_absolute_error
        >>> x = torch.tensor([0., 1, 2, 3])
        >>> y = torch.tensor([0., 1, 2, 2])
        >>> mean_absolute_error(x, y)
        tensor(0.2500)
    )r   r   r   r   r   r   Úmean_absolute_error9   s   
r   )
Útypingr   r
   r   Útorchmetrics.utilities.checksr   Úintr   r   r   r   r   r   r   Ú<module>   s   