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

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

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

Следующий код возвращает ошибку потому что 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 функция, которая не поддерживает входные параметры фиксированной точки.

Для просмотра документации необходимо авторизоваться на сайте