计算器上on表示啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器上on表示啥相关的知识,希望对你有一定的参考价值。
计算器上的ON/C键为开关键,ON表示开,C为Close的缩写表示关闭。因此说,电子计算器的“ON/C”是开机键,按一下这个键,就接通计算器电源,还有清屏的作用。
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件,通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。
计算器标准型使用方法如下:
1、键入数字时,按下相应的数字键的,如果按错可用(CE)键消去一个数值,再重新输入正确的数字。
2、直接输入数字后,按下乘号将它变为乘数,在不输入被乘数的情况下直接按(=)键,就是该数字的二次方值。
3、根号(√)键默认是开二次方根,只有科学计算器才能开多次方根。
4、按下(+/-)键可改变数字的正负值。
参考技术A在电子计算器上ON键是开机键。
计算器各键说明如下:
1.上电/全清键(ON/AC):按下该键表示上电,或清除所有寄存器中的数值。
2.清除键(C):在数字输入期间,第一次按下此键将清除除存储器内容外的所有数值。
3.清除输入键(CE):在数字输入期间按下此键将清除输入寄存器中的值并显示"0"。
4.平方根√:显示一个输入正数的平方根。
5. M+:把目前显示的值放在存储器中;中断数字输入。
6. M-:从存储器内容中减去当前显示值;中断数字输入。
7. MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容。
8. MR:调用存储器内容。
9. MC:清除存储器内容。
10. GT:按下GT键,传送GT存储寄存器内容到显示寄存器;按AC或C键消除GT显示标志。
11. MU(Mark-up and Mark-down键):按下该键完成利率和税率计算。
12. MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容。
13. MR:调用存储器内容。
14. MC:清除存储器内容。
15. GT:按下GT键,传送GT存储寄存器内容到显示寄存器;按AC或C键消除GT显示标志。
16. MU(Mark-up and Mark-down键):按下该键完成利率和税率计算。
着色器中自己的双精度 cos() 实现的结果为 ON,但在 CPU 上运行良好。出了啥问题?
【中文标题】着色器中自己的双精度 cos() 实现的结果为 ON,但在 CPU 上运行良好。出了啥问题?【英文标题】:The result of own double precision cos() implemention in a shader is NaN, but works well on the CPU. What is going wrong?着色器中自己的双精度 cos() 实现的结果为 ON,但在 CPU 上运行良好。出了什么问题? 【发布时间】:2015-03-05 11:50:55 【问题描述】:正如我所说,我想在使用 GLSL 的计算着色器中实现我自己的双精度 cos() 函数,因为只有一个内置版本的浮点数。
这是我的代码:
double faculty[41];//values are calculated at the beginning of main()
double myCOS(double x)
double sum,tempExp,sign;
sum = 1.0;
tempExp = 1.0;
sign = -1.0;
for(int i = 1; i <= 30; i++)
tempExp *= x;
if(i % 2 == 0)
sum = sum + (sign * (tempExp / faculty[i]));
sign *= -1.0;
return sum;
这段代码的结果是,总和在着色器上是 NaN,但在 CPU 上算法运行良好。 我也尝试调试这段代码,得到以下信息:
faculty[i] 对于所有条目都是正数而不是零 tempExp 在每一步都是正数 在每个步骤中,其他变量都不是 NaN 第一次总和为 NaN 在 i=4 的步骤中现在我的问题是:如果每个变量都是一个数字并且没有任何内容被零除,特别是当算法在 CPU 上运行时,究竟会出现什么问题?
【问题讨论】:
无穷除以无穷,例如。你的输入数据是什么? ***.com/a/4430934/17034 @Dancelgel:GLSL 有点奇怪,因为它允许内置浮点函数的精度和范围发生变化。您应该查看GLSL 4.50 specification 的第 83-84 页了解更多详细信息。 GLSL 甚至不需要对 NaN 的支持,但几乎所有 DX11 硬件(以及任何支持双精度的硬件)都有它。 提供教师的样本值或初始化它的代码将有很大帮助。 导致 NaN 的 x 值是多少? cos 算法的第一步是让 x 在 -pi 【参考方案1】:让我猜猜:
首先您确定问题出在循环中,并且您仅使用以下操作:+
、*
、/
。
从这些操作生成NaN
的规则是:
0/0
和 ±∞/±∞
部门
0×±∞
和 ±∞×0
的乘法
加法∞ + (−∞)
、(−∞) + ∞
和等效减法
您通过声明faculty[]
已正确初始化,排除了0/0
和±∞/±∞
的可能性。
变量sign
始终为1.0
或-1.0
,因此无法通过*
操作生成NaN
。
如果tempExp
变成±∞
,剩下的就是+
操作。
所以可能tempExp
在你的函数入口处太高而变成±∞
,这将使sum
也成为±∞
。在下一次迭代中,您将通过∞ + (−∞)
触发NaN
生成操作。这是因为您将加法的一侧乘以 sign
并在每次迭代时在正负之间切换符号。
您正试图在 0.0
附近逼近 cos(x)
。因此,您应该使用cos()
函数的属性将输入值减少到接近0.0
的值。理想情况下在[0, pi/4]
范围内。比如去掉2*pi
的倍数,通过围绕0.0
计算sin(x)
得到[pi/4, pi/2]
中cos()
的值等等。
【讨论】:
【参考方案2】:可能会出现严重错误的是精度损失。 cos(x)
通常是通过范围缩小来实现的,然后是范围 [0, pi/2]
的专用实现。范围缩小使用cos(x+2*pi) = cos(x)
。但这种范围缩小并不完美。对于初学者,pi
不能用有限数学精确表示。
现在,如果您尝试像 cos(1<<30)
这样荒谬的事情会发生什么?范围缩减算法很可能会在x
中引入大于2*pi
的错误,在这种情况下,结果毫无意义。在这种情况下返回NaN
是合理的。
【讨论】:
以上是关于计算器上on表示啥的主要内容,如果未能解决你的问题,请参考以下文章