相关疑难解决方法(0)

我的fma()坏了吗?

在使用中,double fma(double x, double y, double z);我希望d下面标有的输出行中有一个非零值'?'.它似乎在内部只使用long double精度,而不是无限精度的规定.

fma函数计算(x× y)+ z,四舍五入一个三元操作:它们计算的值(仿佛)到无限精度和圆一次的结果的格式,根据当前的舍入模式.§7.12.13.12(我的重点)

那我的fma()坏了,或者我在代码或编译选项中如何错误地使用它?

#include <float.h>
#include <math.h>
#include <stdio.h>

int main(void) {
  // Invoking: Cygwin C Compiler
  // gcc -std=c11 -O0 -g3 -pedantic -Wall -Wextra -Wconversion -c -fmessage-length=0 
  //   -v -MMD -MP -MF"x.d" -MT"x.o" -o "x.o" "../x.c"

  printf("FLT_EVAL_METHOD %d\n", FLT_EVAL_METHOD);
  for (unsigned i = 20; i < 55; i++) …
Run Code Online (Sandbox Code Playgroud)

c floating-point gcc5

9
推荐指数
1
解决办法
330
查看次数

精确浮点计算两个乘积的和与差

两个乘积之差和两个乘积之和是在各种常见计算中发现的两个原语。diff_of_products (a,b,c,d) := ab - cd 和 sum_of_products(a,b,c,d) := ab + cd 是密切相关的伴随函数,仅部分操作数的符号不同。使用这些原语的示例是:

\n

计算 x = (a + i b) 和 y = (c + i d)的复数乘法:

\n

x*y = diff_of_products (a, c, b, d) + i sum_of_products (a, d, b, c)

\n

计算 2x2 矩阵的行列式:diff_of_products (a, d, b, c):

\n
| a  b |\n| c  d |\n
Run Code Online (Sandbox Code Playgroud)\n

在直角三角形中,计算斜边和相邻内切线的相对内切线的长度: diff_of_products (h, h, a, a)ha

\n

计算具有正判别式的二次方程的两个实数解:

\n

q = -(b + copysign …

algorithm floating-point floating-accuracy

3
推荐指数
1
解决办法
451
查看次数

标签 统计

floating-point ×2

algorithm ×1

c ×1

floating-accuracy ×1

gcc5 ×1