我很难用固定点算法跟踪Horner规则下的小数点。
int16_t horner(int16_t q)
{
const int16_t c0 = 0x0033;
const int16_t c1 = 0x0055;
const int16_t c2 = 0x001C;
const int16_t c3 = 0x0048;
const int16_t c4 = 0x0200;
horner_rule = c0 + q * (c1 - q * (c2 + q * (c3 - q * c4)));
return horner_rule;
}
c0
,c1
,等是不同的16位有符号系数,q
是我想要评估的值({ {1}}被视为输入并转换为16位带符号格式)。所有这些值都已转换为带符号的16位格式。我已经在浮点运算中实现了它,它只是工作正常。
我的问题是,如何让我的期望值保持小数点并保持溢出控制?
答案 0 :(得分:1)
首先要确定多项式的域和codomain以及部分域。然后,您可以调整移位以最小化截断错误,同时避免溢出。
如果你需要自动化这个过程,你必须找到所有这些多项式的最小值和最大值,这需要求解真正的根。