реализация функции isnan ()

Я новичок в программировании на c ++, и мне дано задание по реализации математической арифметики с фиксированной запятой в c ++. здесь я пытаюсь реализовать функцию isnan (), которая возвращает true, если число не является числом, иначе вернет false.

Тестовый файл

#include "fixed_point_header.h"int main()
{
fp::fixed_point<long long int, 63> a=fp::fixed_point<long long int, 63>::positive_infinity(); // will assign positive infinity value to a from an function from header
fp::fixed_point<long long int, 63> b=fp::fixed_point<long long int, 63>::negative_infinity(); // will assign positive infinity value to b from an function from header
float nan=fp::fixed_point<long long int, 63>::isnan(a,b);
printf( "fixed point nan value  == %f\n", float (nan));
}

В заголовке я хочу сделать что-то вроде кода, показанного ниже, если добавлены положительные и отрицательные значения бесконечности, функция isnan должна возвращать 1, иначе 0.

Заголовочный файл

#include fixed_point_header
static fp::fixed_point<FP, I, F> isnan (fp::fixed_point<FP, I, F> x,fp::fixed_point<FP, I, F> y){
/*if ( x + y ) happens, ie. x and y are infinities
{
should return 1; }
else {
should return 0; }
} */

Может кто-нибудь сказать, пожалуйста, как это сделать? или как решить эту парадигму

0

Решение

Я пытаюсь реализовать функцию isnan (), которая возвращает true, если число не является числом, иначе вернет false.

Это достаточно просто; определить зарезервированное значение для представления nan (как у вас на бесконечности), и сравните с этим:

bool isnan(fixed_point x) {
return x == fixed_point::nan();
}

Я хочу сделать что-то вроде кода, показанного ниже, если добавлены положительные и отрицательные значения бесконечности, функция isnan должна возвращать 1, иначе 0

Оператор сложения будет обязан проверять входные данные и возвращать nan при необходимости:

fixed_point operator+(fixed_point x, fixed_point y) {
if (x == fixed_point::nan() || y == fixed_point::nan()) {
return nan;
}
if (x == fixed_point::positive_infinity()) {
return y == fixed_point::negative_infinity() ? fixed_point::nan() : x;
}
// and so on
}

тогда тест в main будет выглядеть так:

bool nan = fixed_point::isnan(a+b);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]