双向量数组的log精度误差
C++ log precision error for double vector array?
我有双向量数组(vector
当我做下面的子操作时,日志给出(1.#INF00000000000000000)的最大值索引为(1 - 1.000000000000001)(双精度)。
如何防止这种精度错误?
log( 1 - array[ i ] );
你是这个意思吗?
if(array[i] >= 1)
return 0;
else if(array[i] <= 0)
return std::numeric_limits<double>::infinity();
else
return log(1 - array[i]);
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 正在将csv文件读取为双精度矢量
- 为什么在浮点中从大到小会引入更多的误差
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 此外,在计算大斐波那契数时存在精度误差
- cmath精度误差中的楼层函数
- 双倍到科学记数法转换 - 精度误差
- 如何在 +、-、* 和 / 中舍入误差后计算浮点精度
- 精度误差为双精度
- 浮点到双精度转换的舍入误差
- c++ linux x86_64中如何控制双精度计算以避免舍入误差
- 双向量数组的log精度误差
- 由于浮点和双精度有限而产生的误差
- c++中数字的n次方根的精度误差