fdim首字母缩写词代表什么?

时间:2020-02-14 13:56:09

标签: c math floating-point acronym

所有C数学函数的名称似乎都可以理解,但是我找不到fdim首字母缩略词的含义。 (fdim计算两个浮点输入的正差)。

3 个答案:

答案 0 :(得分:4)

我搜索了ISO-C工作组的document archive,并注意到,大多数将浮点数增强到C99的提议都是由Jim Thomas贡献的。尽我所知,fdim早在1996年就已包含在新标准草案中,很遗憾,该档案馆没有提供从那时起提案的电子副本的链接。

因此,我直接通过电子邮件与托马斯先生联系,并收到了答复,在得到他许可的情况下,我在此引用了相关部分:

来自:吉姆·托马斯
致:Norbert Juffa
时间:2020年2月15日星期六8:42 AM
主题:Re:ISO-C99中fdim()函数的命名和原理
[...]
C fdim函数是Fortran DIM(正差)函数的C版本。 C函数及其名称是供程序员从Fortran到C的移植代码的。

这确认了与注释中提到的F​​ortran的联系。至于DIM本身的名称,Ctx's answer不仅解决了这一问题,而且在次要功能已经存在了50年的情况下,人们也希望这样做。

在问题下方的评论中,Mark Dickinson指向Fortran 66 standard,在第23页上,Fortran的DIM函数定义为a₁-Min(a₁,a2)。这提供了进一步的证据,证明名称DIM DI 的缩写和 M 的缩写。

答案 1 :(得分:3)

我的猜测是,它是由differencemax组成的,因为这就是函数的作用。

伪代码

double fdim(x, y) { 
    float    tmp = x - y;        // 1st step: "di"fference
    float result = fmax(tmp, 0); // 2nd step: "m"aximum
    return result;
}

例如与fma(a, b, c)相同的命名法,表示“相乘”和“相加” (a*b+c)

编辑:

该功能确实发生在甚至更早的 Fortran 中。 DIM(number, number)被定义为

返回第一个参数的值减去两个参数的最小值(MIN)的函数。

因此,函数名称是从此处的 difference minimum 派生的。参见F77 DIM manual

答案 2 :(得分:1)

为此,我找不到任何好的已发布的第一手资料。 fdim首次出现在C99中,而C99基本原理(7.12.12)仅提到了这一点:

fmax,fmin和fdim的名称具有f前缀以允许 以fabs和abs为例的扩展整数版本。

但是我们已经可以猜到很多,f代表浮点数。

类似地,f中的最后一个fdimf代表floatl中的最后一个fdiml代表long double。这些前缀/后缀字母通常在标准库中使用。