This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:TMS320F280048
您好!
库函数是否可用于两个浮点值的模2? 如果是,那是什么?
谢谢、
维克多
维克多
您能否稍微澄清一下要求?
-您希望模2:除法、乘法、...的运算结果是什么?
您对舍入的期望是什么:舍入为零、舍入为最近...?
此致、
Richard
您好 Richard、
例如、模2除法 24.6 MOD2DIV 7.1 = 3.3、 四舍五入到最近。 当然、我可以 通过简单的 while 环路中的减法来实现它
但是、我很好奇 TI 是否提供了更多智能算法和 LIB 功能。
谢谢、
维克多
维克多
我相信您所描述的实际上是24.6模数7.1、换句话说、不涉及模数2操作。 然后、这将属于我们在28004x TMU 指令集中支持的浮点除法类别。 因此、在您的项目中启用 TMU 后、标准除法运算应该会生成/使用适当的 TMU 浮点除法指令(执行该指令需要5个流水线周期)。
Richard、Victor、
请告诉我的理解是否不正确。
谢谢、
Sira
Sira、
你是对的、抱歉。 此操作的 C 函数名称是什么? 是否有此类功能的用户手册?
谢谢、
维克多
维克多
我认为仅仅使用"/"将会起作用。 %不会这样做、因为它仅适用于整数操作数。 FMod()将处理浮点操作数,但我不知道 TI 编译器将用 TMU 指令替换此调用。
谢谢、
Sira
尊敬的 Victor:
我想更好地阐明我的上述几点:
您可以使用 C 库函数 Fmod 来执行模运算、但这非常慢。 似乎需要200个周期。
如果您尝试计算 FMod (a、b)、一个更快的选项是:
C=(a/b)-((((((int)a/b)*b);
因此、有两个除法(如果启用了 TMU、编译器将使用 DIVF32实现、这非常快)和一个乘法。
谢谢、
Sira
抱歉、上面有拼写错误。 正确的公式为:
fmod (a、b)= a -(int)(a/b)*b);
谢谢、
Sira