степенная функция без использования математической библиотеки
Я работаю над микроконтроллером, который содержит доступ к операциям с плавающей запятой.
Мне нужно использовать функцию мощности. Проблема в том, что недостаточно памяти для поддержки функции pow и sqrt. Это происходит потому, что микроконтроллер изначально не поддерживает операции FP и выдает большое количество инструкций для их использования. Я все еще могу умножать и делить числа с плавающей запятой.
архитектура: Freescale HCS12 (16-бит)
2 ответа:
Если вы упомянули архитектуру, вы можете получить более конкретный ответ.
Ядро linux все еще имеет старую библиотеку математической эмуляции x87 IEEE-754 для процессоров i386 и i486 без аппаратного блока с плавающей запятой, в разделе:arch/x86/math-emu/
Есть много ресурсов в интернете для программ с плавающей точкой, реализованных для PIC micros, и AVR libc имеет библиотеку с плавающей точкой - хотя она находится в сборке AVR.
Glibc имеет реализации для функций
pow
вsysdeps/ieee754
. Очевидно, что компилятор должен обрабатывать элементарные операции с плавающей запятой, используя аппаратные инструкции или вызовы эмуляции / функций.