标签: fixed-point

用PHP进行精确的实数运算

在PHP中表示实数的字符串上进行基本算术运算的最快速,最简单的方法是什么?我有一个字符串表示我想要操作的MySQL的DECIMAL值,然后将结果返回给数据库.我想避免浮点实数表示引入的错误.

有没有像Python的十进制标准库?您可以推荐任何FOSS库吗?

问候

php fixed-point decimal

5
推荐指数
1
解决办法
4310
查看次数

固定点的反平方

我正在寻找固定点16.16数字的最佳逆平方根算法。到目前为止,下面的代码是我所拥有的(但是基本上,它取平方根并除以原始数,我想得到不除数的平方根倒数)。如果更改了任何内容,则将为armv5te编译代码。

uint32_t INVSQRT(uint32_t n)
{
    uint64_t op, res, one;
    op = ((uint64_t)n<<16);
    res = 0;
    one = (uint64_t)1 << 46;
    while (one > op) one >>= 2;
    while (one != 0)
    {
        if (op >= res + one)
        {
            op -= (res + one);
            res +=  (one<<1);
        }
        res >>= 1;
        one >>= 2;
    }
    res<<=16;
    res /= n;
    return(res);
}
Run Code Online (Sandbox Code Playgroud)

math fixed-point inverse sqrt

5
推荐指数
1
解决办法
3740
查看次数

有没有办法强制PMULHRSW将0x8000视为1.0而不是-1.0?

要处理8位像素,在不丢失信息的情况下执行伽马校正等操作,我们通常会对值进行上采样,以16位或其他方式工作,然后将它们下采样到8位.

现在,这对我来说是一个新的领域,请原谅不正确的术语等.

根据我的需要,我选择在"非标准"Q15中工作,其中我只使用范围的上半部分(0.0-1.0),而0x8000代表1.0而不是-1.0.这使得用C计算事物变得更加容易.

但我遇到了SSSE3的问题.它有PMULHRSW指令乘以Q15数字,但它使用Q15的"标准"范围是[-1,1-2 - 19],所以乘以(我的)0x8000(1.0)乘以0x4000(0.5)给出0xC000( - 0.5),因为它认为0x8000是-1.这很烦人.

我究竟做错了什么?我应该将像素值保持在0000-7FFF范围内吗?难道这种失败的目的是它是一种定点格式吗?有没有解决的办法?也许有些诡计?

在Q15上是否有某种明确的论文讨论了所有这些?

assembly sse fixed-point image-processing

5
推荐指数
1
解决办法
435
查看次数

Compile-time metaprogramming-based fixed-point arithmetic. Multiplication overflow?

I'm currently implementing a compile-time 3d raster though template metaprogramming.

After implementing the algebraic basics (2d/3d/4d vectors, 3x3/4x4 matrices arithmetic, aabb2d/3d for culling purposes, etc), I noted that integer arithmetic is not good enough for vector transformations. So I started to write a fixed-point implementation:

The library has a base header with declarations of common metafunctions that the algebraic types will implement (To provide an uniform interface). Here is the set of definitions used by the fixed-point implementation:

template<typename T> …
Run Code Online (Sandbox Code Playgroud)

c++ fixed-point template-meta-programming c++11

5
推荐指数
1
解决办法
681
查看次数

限制JavaScript中的Float精度

我正在使用JavaScript中的函数.我取两个变量x和y.

我需要划分两个变量并在屏幕上显示结果:

x=9; y=110;
x/y;
Run Code Online (Sandbox Code Playgroud)

然后我得到的结果如下:

0.08181818181818181

我需要使用BigDecimal.js我在另一篇文章中找到的东西.

我希望结果显示为:

0.081

javascript floating-point fixed-point

5
推荐指数
1
解决办法
1万
查看次数

VHDL 的 IEEE 库中可综合的固定/浮点

我正在创建一个 VHDL 项目(Xilinx ISE for Spartan-6),需要在定点/浮点中使用十进制“实型”数字(我希望定点就足够了)。

作为 VHDL 的新手,我发现非常困难的方法是real综合不支持非常量类型,所以我开始寻找 IP 核或库来解决这个问题。

到目前为止,我找到了 3 个选项;

1) Xilinx 提供的浮点 IP 核

2) David Bishop 编写的可下载的“ieee_proposed”库在这里找到

3) 在尝试解决如何“创建”一个包含 David Bishops 文件的新库的过程中花费了大量时间后,我快速浏览了默认IEEE库并看到它包含ieee.fixed_generic_pkgieee.fixed_pkg包。

我的问题是 - 在这两个库中 - 使用哪一个是明智的?一个适合合成而一个不适合,还是一个比另一个更老?然后如果提供了浮点,那么Xilinx提供的浮点IP核有没有真正的指向?

我已经浏览了许多试图添加库的人的问题ieee_proposed,但似乎没有人提到它们似乎已经存在于现有的IEEE.

非常感谢您的帮助!

============更新(基本上是我自己努力解决的)==================

我实际上无法使用ieee.fixed_pkg- 并且尝试这样做会给我错误Cannot find <fixed_pkg> in library <ieee>

在 C:\Xilinx\14.7\ISE_DS\ISE\vhdl\xst\nt 找到 ieee 库后,我发现它fixed_pkg实际上位于 ieee_proposed。但是,这仍然会引发相同的错误!

synthesis fixed-point vhdl ieee ieee-754

5
推荐指数
1
解决办法
5104
查看次数

如何使用python将浮点数转换为具有预定义位数的定点

我有 numpy 格式的浮动 32 个数字(假设是正数)。我想将它们转换为具有预定义位数的定点数以降低精度。

例如,在 matlab 中使用函数 num2fixpt 将数字 3.1415926 变为 3.25。命令是 num2fixpt(3.1415926,sfix(5),2^(1 + 2-5), 'Nearest','on') 表示整数部分为 3 位,小数部分为 2 位。

我可以用 Python 做同样的事情吗

python fixed-point quantization

5
推荐指数
1
解决办法
6812
查看次数

将 [-1,+1] 浮点映射到 Q31 定点

我需要将浮点数转换为Q31定点,Q31表示1个符号位,0位表示整数部分,31位表示小数部分。这意味着Q31只能表示范围内的数字[-1,0.9999]

\n\n

根据定义,从浮点转换为定点时,乘以2\xcb\x87N会进行乘法,其中 N 是小数部分大小,在本例中为 31。

\n\n

但是,我对这段代码感到困惑,它看起来不正确,但有效:

\n\n
#define q31_float_to_int(x) ( (int) ( (float)(x)*(float)0x7FFFFFFF ) )\n
Run Code Online (Sandbox Code Playgroud)\n\n

而且似乎工作正常。例如:

\n\n
int a = q31_float_to_int(0.5f); \n
Run Code Online (Sandbox Code Playgroud)\n\n

给出Hex: 0x40000000,这没问题。

\n\n

为什么这里的乘法是用 完成的2\xcb\x8731 - 1,而不仅仅是2\xcb\x8731完成的?

\n

c signal-processing fixed-point

5
推荐指数
1
解决办法
2573
查看次数

R中的定点小数算术

我正在寻找一个包或任何其他解决方案来帮助我处理定点十进制数、它们的算术和舍入。主要目的是进行没有浮点错误的货币计算并能够控制精度和舍入。

我已经做了一项研究,例如。我读过有关BrobdingnagRmpfrgmp的内容。我还查看了一些正在讨论该主题的线程,例如。这个和那里提到的这些(以及许多其他的)。遗憾的是,没有人提供满足我的要求的解决方案,如下所示。由于发现的问题很旧,我允许自己刷新这个问题。

包/解决方案的要求是:

  1. 它让我们得到精确的十进制表示。
  2. 它支持定点运算。
  3. 我们能够控制精度和舍入。
  4. 它可以将数字打印为十进制。

我会指出 Python 的 Decimal 或 Java 的 Big Decimal 包作为满足所有标准的示例,并且正在寻找 R 中的等效包。

我希望你们中的一些人可能知道什么可以提供帮助或如何准备我们自己的解决方案。据说这个主题也可以帮助其他人。

期待您的回复并提前致谢。

托马斯

r fixed-point decimal rounding

5
推荐指数
0
解决办法
569
查看次数

How to display two decimal points in python, when a number is perfectly divisible?

Currently I am trying to solve a problem, where I am supposed to print the answer upto two decimal points without rounding off. I have used the below code for this purpose

import math
a=1.175                            #value of a after some division
print(math.floor(a*100)/100)
Run Code Online (Sandbox Code Playgroud)

The output we get is:

1.17                              #Notice value which has two decimal points & not rounded
Run Code Online (Sandbox Code Playgroud)

但当我尝试打印一个可整除的数字时,真正的问题就开始了,小数点后只显示一个零。我使用了与上面相同的代码,但现在

a=25/5                                   #Now a is perfectly divisible
print(math.floor(a*100)/100)
Run Code Online (Sandbox Code Playgroud)

现在显示的输出是

5.0                                      #Notice only one decimal place is printed
Run Code Online (Sandbox Code Playgroud)

必须采取什么措施来纠正这个错误?

python fixed-point decimal string-formatting

5
推荐指数
1
解决办法
2万
查看次数