cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 2334|回复: 1

函数机实现数值判断的新方法

[复制链接]
发表于 2021-2-26 09:38:24 | 显示全部楼层 |阅读模式
f(x)=(16!+1)√x,16!+1是在默认情况下能使f(0)=0&f(1E-99~1E99)=1&f(-1E99~-1E-99)=-1的方根数,如果设定保留的小数点位更小的话可以使用更小的数值。

not:1-x,x为0或1
and:x*y,x和y均为0或1
or:(16!+1)√(x+y),x和y均为0或1

两数相等返回1,否则返回0:1-abs((16!+1)√(a-b))
a==b -> 1-abs(f(0))=1
a!=b -> 1-abs(f(1或-1))=0

两数不相等返回1,否则返回0:abs((16!+1)√(a-b))
a!=b -> abs(f(1或-1))=1
a==b -> abs(f(0))=0

假设a-b=c:

a小于b返回1,否则返回0:(16!+1)√(abs(c)-c)
a<b -> f(正数-负数) -> f(正数)=1
a==b ->f(0-0)=0
a>b ->f(正数-正数) -> f(0)=0


a大于b返回1,否则返回0:(16!+1)√(abs(c)+c)
a>b -> f(正数+正数) -> f(正数)=1
a==b ->f(0+0)=0
a<b -> f(正数+负数) -> f(0)=0

 楼主| 发表于 2021-3-28 09:43:20 | 显示全部楼层
本帖最后由 kai901 于 2021-3-28 09:58 编辑

尽可能高的精度和尽可能少的字符数和尽可能不影响性能的比较方法:E15√(abs(x)),E15为10的15次方
(上面的16!没有考虑到内部精度)
not:1-x,x为0或1
and:x*y,x和y均为0或1
or:E15√(x+y),x和y均为0或1
==: 1-E15√(abs(x-y))
!=: E15√(abs(x-y))
a-b=c:
<: E15√(abs(c)-c)
<=: 1-E15√(abs(c)+c)
>: E15√(abs(c)+c)
>=: 1-E15√(abs(c)-c)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-21 18:21 , Processed in 0.052189 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表