Проверки на ошибки вычисления выражения
Пытаюсь создать программу для проверки на ошибки вычисления следующего выражения:

Моя неудачная попытка:
#include <stdio.h>
#include <math.h>
#include <locale.h>
int main() {
setlocale(0, "");
float a, b, x;
printf("Введите a,b,x:\n");
scanf("%f%f%f", &a, &b, &x);
if (x > b) {
if (cosf(a * x) == 0.0f) {
printf("error. tg = infinity");
}
}else if (x <= b){
// Проблема тут
if (cosf( sqrtf( fabs( pow(x, 2)))) == 0.0f) {
printf("error. tg = infinity");
}
}
printf("No errors");
return 0;
}
Сделать проверку для x>b у меня получилось правильно, а вот для x<=b нет, по следующей причине:
Где проверка с учетом погрешности e надо проверять, чтобы модуль разности двух переменных был меньше погрешности. Никаких "==" не должно быть.
Я пытался разобраться несколько дней, но все тщетно. Что значит погрешность e и разность каких двух переменных я должен использовать?
Ответы (1 шт):
Автор решения: becouse
→ Ссылка
Это значит, что машинного нуля "нет" есть некое число, которое достоверно содержит некоторое количество нулей.
#define TOL 0.0000000000001
в коде
if fabs(x-y)<TOL ...