#include "libft.h"

/**
 * round  x to the nearest integer,
 * but round halfway cases away from zero, regardless of the current rounding direction
 */
double ft_round(double x)
{
    // Handle special cases
    if (x != x)
    {             // Check for NaN (NaN is not equal to itself)
        return x; // Return NaN
    }
    if (x == (double)LLONG_MAX + 1.0 || x == (double)LLONG_MIN - 1.0)
    {
        return x; // Return ±Infinity or the original value if overflow would occur
    }

    // Handle positive and negative numbers
    if (x >= 0)
    {
        return (double)(long long)(x + 0.5);
    }
    else
    {
        return (double)(long long)(x - 0.5);
    }
}