Что сделать, если функция не поддерживается для преобразования фиксированной точки

Изолируйте неподдерживаемые функции

Когда вы сталкиваетесь с функцией, которая не поддерживается для преобразования, можно временно оставить ту часть алгоритма в плавающей точке.

Следующий код возвращает ошибку, потому что функция log не поддерживается для входных параметров фиксированной точки.

x = fi(rand(3),1,16,15);
y = log(x)

Бросьте вход, x, к двойному, и затем бросьте вывод назад к типу данных с фиксированной точкой.

 y = fi(log(double(x)),1,16)
y = 

   -0.2050   -0.0906   -1.2783
   -0.0990   -0.4583   -0.6035
   -2.0637   -2.3275   -0.0435

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Этот кастинг позволяет вам продолжать свое преобразование, пока вы не можете найти замену.

Создайте заменяющую функцию

Приближение интерполяционной таблицы

Можно заменить много функций, которые не поддерживаются для преобразования фиксированной точки с интерполяционной таблицей. Для примера смотрите Фиксированную точку Реализации Log2 Используя Интерполяционную таблицу.

Полиномиальное приближение

Можно аппроксимировать результаты функции, которая не поддерживается для фиксированной точки с полиномиальным приближением. Для примера смотрите, Вычисляют Арктангенс Фиксированной точки.

Созданная пользователями функция

Можно также записать собственную функцию, которая поддерживает входные параметры фиксированной точки. Например, с помощью функции mod, которая действительно поддерживает входные параметры фиксированной точки, можно записать собственную версию функции rem, которая не поддерживает входные параметры фиксированной точки.