си после расчета функции на вывод я получаю значение -nan

при программировани на си столкнулся с проблеммой, есть простая программа, при определенных значениях b в переменную l присваивается значение -nan, как можно в дальнейшем проверить что в l находится значение -nan например через if

#include <stdio.h>
#include <math.h>

int main()
{
    double b,l;
        b = M_PI;
        l = sqrt(sqrt(pow(1,4)+4*pow(b,2)*pow(1,2))-pow(b,2)-pow(1,2));
        printf("%.7f", l);
}

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

Автор решения: Harry

Разберем по кускам...

l = sqrt(sqrt(pow(1,4)+4*pow(b,2)*pow(1,2))-pow(b,2)-pow(1,2));

Имеем:

pow(1,4) == 1
pow(1,2) == 1

Итого sqrt(1+4*pow(b,2)) примерно равно 6,362265....

Затем минус пи в квадрате, минус 1... Итог — -4.5...

Еще раз: отрицательное значение.

И чему должен быть равен квадратный корень из него?

Может, вы что-то не то считаете? Очень смущают ваши pow(1,2)...

Ну, а проверить на то, не NaN ли получилось - просто: isnan(). Типа,

if (isnan(l))
    puts("Error");
else
    printf("%.7f", l);
→ Ссылка