Мне нужно рассчитать значение фиксированной точки для формул:
e ^ ( Konst/x*y )
Я использую сторонние функции divide()
и antilog()
, например:
div = divide( Konst, x*y );
out = antilog( div );
Мой divide()
дает на выходеbits 23…0 fractional part
(это на самом деле формат Q0.31
при смещении << 8
)
иbits 31…24 exponent
.
antilog()
ожидает на входе значение Q6.25
.
Как я могу передать что-то значимое для antilog()
в формате Q6.25
?
Как мне перейти от одного формата к другому в этом конкретном случае?
p.s. Что произойдет, если divide
выдаст очень большой результат, который не уместится в Q6.25
без масштабирования? В таком случае, как сделать e^(scale*Q6.25)
?