степенная функция без использования математической библиотеки


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

Мне нужно использовать функцию мощности. Проблема в том, что недостаточно памяти для поддержки функции pow и sqrt. Это происходит потому, что микроконтроллер изначально не поддерживает операции FP и выдает большое количество инструкций для их использования. Я все еще могу умножать и делить числа с плавающей запятой.

архитектура: Freescale HCS12 (16-бит)

2 4

2 ответа:

Если вы упомянули архитектуру, вы можете получить более конкретный ответ.

Ядро linux все еще имеет старую библиотеку математической эмуляции x87 IEEE-754 для процессоров i386 и i486 без аппаратного блока с плавающей запятой, в разделе: arch/x86/math-emu/

Есть много ресурсов в интернете для программ с плавающей точкой, реализованных для PIC micros, и AVR libc имеет библиотеку с плавающей точкой - хотя она находится в сборке AVR.

Glibc имеет реализации для функций pow в sysdeps/ieee754. Очевидно, что компилятор должен обрабатывать элементарные операции с плавающей запятой, используя аппаратные инструкции или вызовы эмуляции / функций.

Создайте свою собственную функцию, которая многократно умножается в цикле.