这可能听起来像是一个修辞问题,但我在这里提出这个问题有两个原因:
norm()函数定义为与通常被认为是标准(或L2范数,或欧几里德范数等等)不同(虽然密切相关)的函数很奇怪.具体而言,C++标准库将norm()复数定义为模数(或绝对值)的平方,其中当复数为a + i*b时,模数为sqrt(a ^ 2 + b ^ 2).
这违背了我对规范的理解,当规范为欧几里德范数(对应于这里使用的模数)时,是平方和的平方根.我将参考Mathworld对复模数的定义.
这是其他人遇到的事吗?我发现它是将一些信号处理代码从Octave移植到C++的结果,而我发现引用这个差异的唯一其他地方是在GCC邮件列表上(由于1-link限制而无法发布链接).