gpt4 book ai didi

c++ - 如何按偏好使用扩展精度 cmath 函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:55 24 4
gpt4 key购买 nike

我的问题是:有没有办法在提供单精度或 double 参数时始终使用数学函数的扩展精度版本 - 例如 sqrt、exp 和 &c - 而无需使用显式转换?

例如我想要这个功能,没有转换的麻烦:

float x=15.0;
float answer;

answer=sqrt((long double)x);

这是在科学计算的背景下出现的,其中需要包含此类函数的循环的多次迭代。即使在过程结束时我只需要单精度,每次迭代期间产生的浮点错误在几千次迭代后总和可能会很大。谢谢。

最佳答案

在 C 中

如果你#include <math.h> , 它声明了返回一个 double 的函数并接受 double参数,编译器将隐式地为您进行转换。

#include <math.h>

/* ... */

int x = sqrtl(sqrt(sqrtf(42)));
/* 1 ^^ implicit cast of int to float */
/* 2 ^^^^^^^^^ implicit cast of float to double */
/* 3 ^^^^^^^^^^^^^^^ implicit cast of double to long double */
/* 4 ^^^^^^^^^^^^^^^^^^^^^^ implicit cast of long double to int */

关于c++ - 如何按偏好使用扩展精度 cmath 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com