所有的C语言数学函数名称都非常易懂,但我找不到fdim的缩写代表什么。
(fdim函数计算两个浮点数输入值之间的正差)。
fdim
,不幸的是,该存档没有提供那个时期提案的电子副本链接。这证实了与Fortran的联系,如评论所述。至于名称本身,Ctx's answer在这一次对一个存在了50年的小函数做出了最好的解释。发件人:Jim Thomas
收件人:Norbert Juffa
时间:2020年2月15日周六上午8:42
主题:关于ISO-C99中fdim()函数的命名和基本原理
[...]
C fdim函数是Fortran DIM(正差)函数的C版本。C函数及其名称旨在为从Fortran移植代码的程序员提供帮助。
我的猜测是,这个函数的名称源于 difference 和 max 两个词的组合,因为这正是该函数所执行的操作。
伪代码:
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)的值的函数。
因此,此处的函数名称源于差异和最小值。请参见F77 DIM手册
fdim
,而C99的解释(7.12.12)仅提到了以下内容:f
代表浮点数。fdimf
中的最后一个f
代表float
,而fdiml
中的最后一个l
代表long double
。这些前缀/后缀字母通常用于标准库中。strpbrk
为例。 - Lundin
DIM
是 Fortran 77 标准的一部分。猜测 C 从那里窃取了这个名字,因此您可能需要 Fortran 历史学家来找出这个名字的来源。 - Mark Dickinson