函数并使用逻辑非操作符

比较浮点数相似性的方法
部署运行你感兴趣的模型镜像
1
2
3
4
5
6
#include <cmath> // for fabs()
bool isAlmostEqual(double a, double b, double epsilon)
{
    // if the distance between a and b is less than epsilon, then a and b are "close enough"
    return fabs(a - b) <= epsilon;
}

图书馆返回形参的绝对值函数。晶圆厂(A - B)为一个正数回报A和B之间的距离。这个函数检查a和b之间的距离是否小于代表“足够接近”的ε值。如果A和B足够接近,函数返回true。


虽然这起作用,但并不伟大。一个0.00001的ε对1左右的输入是好的,对于0.0000001左右的数字来说太大了,对于像10000这样的数字来说太小了。这意味着每次调用这个函数时,我们必须选择一个适合我们输入的ε。如果我们知道我们必须按照我们的输入比例进行ε,我们也可以修改函数来为我们做这些。

#include <cmath>
 
// return true if the difference between a and b is within epsilon percent of the larger of a and b
bool approximatelyEqual(double a, double b, double epsilon)
{
    return fabs(a - b) <= ( (fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}

在这种情况下,我们不使用ε作为绝对数,而是用ε作为乘子,所以它的效应与我们的输入有关。


让我们更详细研究如何approximatelyequal()功能。在操作符的左边,a的绝对值告诉我们a和b之间的距离为正数。在操作符的右边,我们需要计算我们愿意接受的“足够接近”的最大值。为了做到这一点,该算法选择A和B的较大(作为数字整体大小的粗略指示符),然后乘以ε。在这个函数中,ε表示百分数。例如,如果我们想说“足够接近”意味着A和B在A和B的较大的1%以内,我们传递一个ε1%(1%=1/100=0.01)。ε的值可以调整到任何最适合情况的(例如0.01%=ε0.0001)。做不等式(!=)而不是相等,只需调用这个函数并使用逻辑非操作符(!)翻转结果:

您可能感兴趣的与本文相关的镜像

Dify

Dify

AI应用
Agent编排

Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了 后端即服务(Backend as a Service) 和LLMOps 的理念,让开发者能快速、高效地构建和部署生产级的生成式AI应用。 它提供了包含模型兼容支持、Prompt 编排界面、RAG 引擎、Agent 框架、工作流编排等核心技术栈,并且提供了易用的界面和API,让技术和非技术人员都能参与到AI应用的开发过程中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值