Задать вопрос
@Nickellick

Как сравнивать числа четвёртой точности в C11?

Как сравнивать числа четвёртой точности в C с использованием библиотеки quadmath?
В данном коде сравнение происходит следующим образом:
#include <stdio.h>
#include <math.h>
#include <quadmath.h>
#include <string.h>
#include <stdlib.h>

typedef __complex128 long_double_q_t;

int main() {
    long_double_q_t e = 2.7182818284590452353602874713526625Q;
    long_double_q_t pi = 3.1415926535897932384626433832795029Q;
    if (e < pi) {
        printf("true");
    }
    else {
        printf("false");
    }

Однако компилятор выдаёт ошибку:
error: invalid operands to binary < (have ‘long_double_q_t’ {aka ‘_Complex _Float128’} and ‘long_double_q_t’ {aka ‘_Complex _Float128’})
     if (e < pi) {
           ^

Как сравнивать числа четвёртой точности? Поиск в недрах библиотеки не дал результатов, как и документация. Возможно есть некая функция, позволяющая осуществить сравнение?
Использую CMake 3.14 / gcc 8.3.0 / Ubuntu 19.04 64-bit / CLion 2019.1
Содержимое Cmake
cmake_minimum_required(VERSION 3.14)
project(untitled C)

set(CMAKE_C_STANDARD 11)

add_executable(untitled main.c)
target_link_libraries(untitled m)
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Вам нужен тип __float128. Вы пытаетесь сравнить комплексные числа.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы