Я хочу выполнять вычисления с плавающей запятой половинной точности на Jetson AGX Xavier (с архитектурой armv8.2), который изначально поддерживает вычисления с плавающей запятой половинной точности. Поскольку тип данных _Float16 является арифметическим типом данных для чисел с плавающей запятой половинной точности, я написал следующий пример:
#include <stdio.h>
#include <math.h>
int main()
{
_Float16 x = 38808.5;
_Float16 y = 33096;
_Float16 res;
res=333.75*y*y*y*y*y*y+4*x*x*(11*4*x*x*y*y-y*y*y*y*y*y-121*y*y*y*y-2.0)
+5.5*y*y*y*y*y*y*y*y+2*x/(2*y);
printf("%e\n", (double)res);
return 0;
}
Используя gcc-7, я могу успешно скомпилировать и запустить его, но с g++-7 я получил ошибку:
‘_Float16’ was not declared in this scope
Согласно этой ссылке, кажется, что _Float16 не поддерживается C++ . Мне было интересно, есть ли альтернатива использованию типа данных _Float16 в C++?
__fp16
, который доступен при компиляции с-mfp16-format
. См. также Половина точности GCC. В связанном вопросе обратите внимание на ответ @phuclv - person Pixelchemist   schedule 11.03.2020