Как отследить, чтобы логарифм из отрицательного числа не вычислялся

Нужно написать программу решающую следующий пример:

введите сюда описание изображения

Мой код печатает NaN - Not a Number. Я понимаю что дело в том, что Log не может быть отрицательным. Но тогда каким образом решить задачу?

static void Main(string[] args)
    {
        
        Console.WriteLine("Hello");
        double x = double.Parse(Console.ReadLine());
        double y = Math.Log(4 - Math.Pow(x, 2));       
        Console.WriteLine(y);

    }    
}

Ответы (2 шт):

Автор решения: VALERY SEMENKIN

Изменённый вариант

Console.WriteLine("Hello");
double x = double.Parse(Console.ReadLine());
if (x > -2 && x < 2)
{
    double y = Math.Log(4 - Math.Pow(x, 2));
    Console.WriteLine(y);
}
else
{
    Console.WriteLine("X не входит в промежуток");
}
→ Ссылка
Автор решения: Максим Фисман

Если программа выдает ошибку, что логарифм не может быть меньше нуля, это значит, что вы пытаетесь найти логарифм меньше нуля. В данном случае это возможно при x > 2 или x < -2

4 - x^2 < 0
-x^2 < -4   |*(-1)
x^2 > 4
x > 2 или x < -2

Значит нужно проверять: если модель x больше 2, то выводим сообщение о неправильном вводе, иначе считаем логарифм. Проверка - это ветвление, условный оператор if. Можно прочитать

Код, таким образом, будет следующий:

static void Main(string[] args)
    {
        Console.WriteLine("Hello");
        // Ввод x
        double x = double.Parse(Console.ReadLine());
        // Если x соответствует условиям, т.е. |x| <= 2
        if (Math.Abs(x) < 2) {
            double y = Math.Log(4 - Math.Pow(x, 2));       
            Console.WriteLine(y);
        }
        else
            Console.WriteLine("Ошибка ввода. При введенных значениях требуется вычисление логарифма отрицательного числа");
    }    
}

Сообщение может быть какое захотите. Можете выбрасывать исключение, показывать картинку - это уже другая тема.

→ Ссылка