机器精度

简介: Julia 的 `eps` 函数用于计算浮点数之间的机器精度,即最小可表示的间隔。例如,`eps(Float32)` 为 `1.1920929f-7`,`eps(Float64)` 为 `2.220446049250313e-16`。`eps(x)` 返回 `x` 与下一个浮点数的差值,间距会随着数值大小变化。此外,`nextfloat` 和 `prevfloat` 函数分别返回大于和小于给定值的相邻浮点数,展示了浮点数在二进制表示中的连续性。

机器精度

大多数实数都无法用浮点数准确地表示,因此有必要知道两个相邻可表示的浮点数间的距离,它通常被叫做机器精度。

Julia 提供了 eps 函数,它可以给出 1.0 与下一个 Julia 能表示的浮点数之间的差值:

实例
julia> eps(Float32)
1.1920929f-7

julia> eps(Float64)
2.220446049250313e-16

julia> eps() # 与 eps(Float64) 相同
2.220446049250313e-16
这些值分别是 Float32 中的 2.0^-23 和 Float64 中的 2.0^-52。eps 函数也可以接受一个浮点值作为参数,然后给出这个值与下一个可表示的浮点数值之间的绝对差。也就是说,eps(x) 产生一个和 x 类型相同的值,并且 x + eps(x) 恰好是比 x 更大的下一个可表示的浮点值:

实例
julia> eps(1.0)
2.220446049250313e-16

julia> eps(1000.)
1.1368683772161603e-13

julia> eps(1e-27)
1.793662034335766e-43

julia> eps(0.0)
5.0e-324
两个相邻可表示的浮点数之间的距离并不是常数,数值越小,间距越小,数值越大,间距越大。换句话说,可表示的浮点数在实数轴上的零点附近最稠密,并沿着远离零点的方向以指数型的速度变得越来越稀疏。根据定义,eps(1.0) 与 eps(Float64) 相等,因为 1.0 是个 64 位浮点值。

Julia 也提供了 nextfloat 和 prevfloat 两个函数分别返回基于参数的下一个更大或更小的可表示的浮点数:

实例
julia> x = 1.25f0
1.25f0

julia> nextfloat(x)
1.2500001f0

julia> prevfloat(x)
1.2499999f0

julia> bitstring(prevfloat(x))
"00111111100111111111111111111111"

julia> bitstring(x)
"00111111101000000000000000000000"

julia> bitstring(nextfloat(x))
"00111111101000000000000000000001"
这个例子体现了一般原则,即相邻可表示的浮点数也有着相邻的二进制整数表示。

相关文章
机器精度
Julia 的 `eps` 函数用于计算浮点数的机器精度,即相邻可表示浮点数间的距离。例如,`eps(Float32)` 为 `1.1920929f-7`,`eps(Float64)` 为 `2.220446049250313e-16`。`eps(x)` 返回 `x` 与下一个浮点数的差值,`nextfloat` 和 `prevfloat` 函数则返回给定值的相邻浮点数。浮点间距在数轴上非均匀分布,靠近零的区域更密集。
|
10月前
15.求函数:sin(x)=x/1! - x3/3! + x5/5! -x7/7! +…,最后一项精度不低于0.000001
15.求函数:sin(x)=x/1! - x3/3! + x5/5! -x7/7! +…,最后一项精度不低于0.000001
43 4
|
10月前
|
机器学习/深度学习 人工智能
SalUn:基于梯度权重显著性的机器反学习方法,实现图像分类和生成的精确反学习
【4月更文挑战第29天】SalUn是一种新的机器反学习方法,专注于图像分类和生成的精确反学习。通过关注权重的梯度显著性,SalUn能更准确、高效地从模型中移除特定数据影响,提高反学习精度并保持稳定性。适用于多种任务,包括图像生成,且在条件扩散模型中表现优越。但计算权重梯度的需求可能限制其在大规模模型的应用,且在数据高度相关时效果可能不理想。[链接](https://arxiv.org/abs/2310.12508)
213 1
|
数据采集 数据可视化 数据挖掘
使用Sentieon BWA-Meth进行WGBS甲基化分析,速度和精度双提升
在甲基化分析中,Sentieon软件可以与其他工具结合使用以提高分析速度和准确性。在这种情况下,Sentieon BWA被用来替换原始的BWA-mem,与MethyDackel结合,建立起Sentieon BWA-Meth流程。 在这个流程中,Sentieon BWA首先负责处理亚硫酸盐转化后的测序数据进行高效的序列比对。由于Sentieon BWA的优化,比对速度和准确性得到了提高,同时减少了计算资源的消耗。
597 0
使用Sentieon BWA-Meth进行WGBS甲基化分析,速度和精度双提升
|
机器学习/深度学习 存储 边缘计算
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(一)
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(一)
1267 0
|
机器学习/深度学习
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(二)
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(二)
387 0
|
tengine 数据可视化 API
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(二)
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(二)
559 0
|
机器学习/深度学习 缓存 算法
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(一)
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(一)
431 0
|
算法 调度
m基于NSGAII的多机器多任务调度排序优化matlab仿真,考虑机器任务完成时间、机器总负荷和最大负荷
m基于NSGAII的多机器多任务调度排序优化matlab仿真,考虑机器任务完成时间、机器总负荷和最大负荷
130 0
m基于NSGAII的多机器多任务调度排序优化matlab仿真,考虑机器任务完成时间、机器总负荷和最大负荷
|
PyTorch 算法框架/工具
在pytorch中,模型权重的精度会影响模型在cpu上的推理速度吗?
在用pytorch训练模型时发现,模型训练的eopch越多,保存模型时模型权重的精度越好,模型在cpu上的推理的速度越慢,是因为模型权重精度会影响推理速度吗?如何调整pytorch模型参数的精度?
774 0