9得票1回答
负数的定点乘法

我有以下方法来乘以两个32位的定点数19.13格式。但我认为这种方法存在问题: 当1.5f四舍五入时得到2.0f,而当-1.5f四舍五入时得到-1.0f。 在我看来,-1.5应该被四舍五入为-2.0f。 首先,当前的四舍五入是否合理?如果不是,我该如何更改它以使其更加一致? stati...

8得票6回答
Python 计算错误

我将使用API mpmath来计算以下总和。 让我们考虑由以下定义的序列u0,u1,u2: u0 = 3/2 = 1,5 u1 = 5/3 = 1,6666666… un+1 = 2003 - 6002/un + 4000/un un-1 这个序列收敛于2,但由于四舍五入的问题,看...

7得票2回答
固定点乘法算法

我正在尝试将时间戳(仅秒的分数部分)从纳秒(10^-9秒单位)重新调整为NTP时间戳的下半部分(2^-32秒单位)。 有效地,这意味着乘以4.2949673。 但我需要在没有浮点数的情况下执行此操作,并且不使用大于32位的整数(实际上,我实际上正在为8位微控制器编写此内容,因此甚至32位数学也...

7得票3回答
固定点下的倒数平方根

我正在寻找适用于定点16.16数字的最佳平方根倒数算法。以下是我目前拥有的代码(但基本上它取平方根并除以原始数字,而我想获得不需要除法的平方根倒数)。如果有任何变化,该代码将编译为armv5te。 uint32_t INVSQRT(uint32_t n) { uint64_t op,...

7得票4回答
在C++中将双精度浮点数转换为定点数

我有一个C++中的双精度变量,想将其输出为固定小数位数的数字。 基本上,我想知道如何编写一个函数,该函数接受一个双精度数和一个小数位数,并将该数字输出为指定的小数位数,必要时进行零填充。 例如: convert(1.235, 2) 会打印出 1.24 并且 convert(...

7得票1回答
Matlab:如何在不扩展底层数据类型的情况下执行定点算术运算?

谷歌对此问题保持沉默。我目前正在使用Matlab实现仅支持16位有符号定点数的数字计算器。但是对于16位定点数的算术运算会导致数据类型扩展到以下内容: >> a = int16(1.5 * 4) a = 6 >> T = numerictype(1, 16, 2) ...

7得票1回答
固定点类型无法正确相乘

我刚接触Ada,并尝试使用固定点“delta”类型。具体来说,我创建了一个32位的delta类型范围为0.0 .. 1.0。然而,当我尝试对某些值进行平方时,会出现CONSTRAINT_ERROR错误。据我所知,在我的指定范围内不应该发生这种情况。此错误的阈值似乎为sqrt(1/2)。我正在使...

7得票2回答
有符号和无符号整数的乘法

在固定点数学中,我使用了许多16位信号,并使用32位中间结果进行乘法运算。例如: int16_t a = 16384; //-1.0q14 or 1.0*2^14 int16_t b = -24576; // -1.4q14 or 1.4*2^14 int16_t c; // resul...

7得票1回答
IEEE浮点数与自定义浮点数的性能比较

我正在处理一个没有浮点单元的处理器,因此我必须使用固定或自定义浮点类型来进行用户界面。 这三种类型在乘法方面的性能如何? IEEE Float (32) 带有16位有符号值和有符号16位指数的自定义32位浮点类 32位定点十进制 我希望得到一些可以扩展到具有浮点单元的处理器的东西,那...

7得票2回答
一个高效的方法来计算1到2之间数的以2为底的对数

我正在使用固定点平台(不支持浮点运算)。 我将任何有理数 q 表示为 q * (1 << precision) 的floor值。 我需要一种高效的方法来计算以2为底数的对数 x,其中 1 < x < 2。 以下是我目前所做的: uint64_t Log2(uin...