问题标签 [fixed-point]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3140 浏览

floating-point - 定点算法的浮点转换

我有一个使用 24 位定点计算的应用程序。我将它移植到支持浮点的硬件,因此为了速度优化,我需要将所有基于定点的计算转换为基于浮点的计算。

对于此代码段,它正在计算尾数

因此,由于此计算,确实将整数转换为尾数,并将指数转换为定点精度(23 位)。当我尝试将其转换为浮点数时,将尾数部分除以精度位并用精度位减去指数部分,它真的不起作用。请帮助提出更好的方法。

0 投票
3 回答
2866 浏览

performance - 定点算术值得我麻烦吗?

我正在研究应该实时运行的流体动力学 Navier-Stokes 求解器。因此,性能很重要。

现在,我正在研究许多紧密循环,每个循环都占执行时间的很大一部分:没有单一的瓶颈。这些循环中的大多数都执行一些浮点运算,但中间有很多分支。

浮点运算主要限于加法、减法、乘法、除法和比较。所有这些都是使用 32 位浮点数完成的。我的目标平台是至少带有 SSE1 指令的 x86。(我在汇编器输出中验证了编译器确实生成了 SSE 指令。)

我正在使用的大多数浮点值都有一个相当小的上限,接近零值的精度并不是很重要。所以我想到了:也许切换到定点算术可以加快速度?我知道真正确定的唯一方法是衡量它,这可能需要几天时间,所以我想事先知道成功的几率。

定点在 Doom 时代风靡一时,但我不确定它在 2010 年的表现如何。考虑到现在有多少硅投入到浮点性能中,定点算法是否仍有机会给我一个显着的速度提升?有没有人有任何可能适用于我的情况的实际经验?

0 投票
1 回答
178 浏览

java - 反向公式转换

我有一个计算 Y 位置的公式,这里是:

现在我有了 sy,我需要像这样计算 y:

但转换不等于.. 我认为是因为我不知道如何转换 ~ 和 & 运算符。

0 投票
2 回答
3402 浏览

android - 在 Android 上使用 GL_FIXED 或 GL_FLOAT 更好吗

我本以为这样会GL_FIXED更快,但 iPhone 文档实际上说要使用GL_FLOAT,因为GL_FIXED必须转换为GL_FLOAT. 安卓上也一样吗?我想它因手机而异,但最近流行的手机(Nexus One、Droid/Milestone 等)呢?

奖励积分:这似乎完全没有记录(例如在谷歌搜索GL_FIXED!)但是“点”在GL_FIXED哪里?即(GL_FIXED)1值多少钱?

0 投票
1 回答
613 浏览

fixed-point - 定点乘法“解决方案”是疯狂的还是可行的?

假设这么多:
我使用的是 16.16 定点系统。
系统是 32 位的。
CPU 没有浮点处理器。
对于任何大于 1.0 * 0.4999 的乘法,溢出是迫在眉睫的

最后一个假设...假设我正在工作的值不会高到导致此操作溢出...

所以问题是......这是天才的一击(并不是说它还没有被想到或任何东西)还是完全浪费时间?

0 投票
7 回答
35671 浏览

c++ - C++定点库?

我正在寻找一个免费的 C++ 定点库(主要用于嵌入式设备,而不是用于任意精度数学)。基本上,要求是:

  • 没有不必要的运行时开销:任何可以在编译时完成的,都应该在编译时完成。
  • 能够在定点和浮点之间透明地切换代码,没有固有的开销。
  • 定点数学函数。如果您需要来回转换以求平方根,则使用定点没有多大意义。
  • 占地面积小。

有什么建议么?

0 投票
1 回答
486 浏览

assembly - 手臂组装机在乘法长后右移?

新手ARM汇编程序问题。我正在编写我的第一个 arm 汇编程序,我正在尝试编写这个 C 片段。

我已经对第一部分进行了编码并计算了 r10、r11 寄存器中的总和。

现在我需要通过将“long long”右移 24 位来从 r10 和 r11 寄存器中提取“res”的值。我怎么做 ?

-谢谢,

0 投票
3 回答
2232 浏览

math - C中的浮点算法

我最近在思考浮点数学是如何在计算机上工作的,我很难理解公式背后的所有技术细节。我需要了解加法、减法、乘法、除法和余数的基础知识。有了这些,我将能够制作三角函数和公式。

我可以猜到一些东西,但它有点不清楚。我知道可以通过用信号标志、基数和尾数分隔一个 4 字节整数来确定一个固定点。有了这个,我们有一个 1 位标志、一个 5 位基数和一个 10 位尾数。一个 32 位的字非常适合浮点值 :)

要在两个浮点数之间进行加法,我可以简单地尝试添加两个尾数并将进位添加到 5 位基数?这是一种进行浮点数学(或定点数学,是真的)的方法,还是我完全错了?

我看到的所有解释都使用公式、乘法等,我猜它们看起来很复杂,会更简单一些。我需要一个更针对初学者而不是数学家的解释。

0 投票
1 回答
718 浏览

c - 已知范围内的定点乘法

我正在尝试以A*B16 位定点乘法,同时保持尽可能高的精度。A是无符号整数范围内的 16 位,B除以 1000 并且始终介于0.001和之间9.999。自从我处理这样的问题以来已经有一段时间了,所以:

  • 我知道我可以A*B/1000在移动到 32 位变量后做,然后剥离回 16 位
  • 我想让它比那更快
  • 我想在不移动到 32 位的情况下完成所有操作(因为我只有 16 位乘法)

有什么简单的方法可以做到这一点吗?

编辑:A将介于 0 和 4000 之间,因此所有可能的结果也在 16 位范围内。

编辑:来自用户,在掩码中B逐位设置,这就是为什么操作是.X.XXX/1000

0 投票
1 回答
1809 浏览

floating-point - float to fixed conversion with different scaling factors

Can anyone please let me know What will be the difference between these approcahes when I convert fixed to float and float to fixed.

a) int a=32767; float b = 32765*(1/32767) // 16 bit scaling factor int c = b*32767;

b) int a=32767; float b = 32765*(1/1.0) // scaling factor=1 int c = b*1;

a) int a=32767; float b = 32765*(1/0x80000) // 24 bit scaling factor int c = b*(0x80000);

If my machine uses Q23 fixed point representation, which should I use ?