【发布时间】:2012-03-24 21:48:33
【问题描述】:
C89 (ANSI C) 标准中有一种数据类型称为long double,但没有任何数学函数支持long double (<math.h>)。例如,sin 函数接受 long 参数。
C99 支持 long double 的数学函数。
我的问题是,当 ANSI C 中没有任何数学函数支持 long double 时,long double 有用吗?
【问题讨论】:
-
+、-、*和/怎么样? -
对于使用
long double以获得最佳效果的这类应用程序,+、-、*、/ 是不够的。 -
对于 x86_64 浮点数,已被 SSE 取代。但是,至少对于 GCC,long double 仍然使用 x87,即使 float 和 double 使用 SSE。因此,如果有人想将 x87 用于某些代码 long double 是实现它的一种方法。使用 MSVC,long double 似乎只是 double 的同义词,因此当 double 使用 SSE 时它不会为您提供 x87。也许您的问题是:x87 仍然有用(除了兼容之外)还是 80 位浮点仍然有用?这是一个有趣的问题。
标签: math c99 c89 long-double