Цитата
Что-то не сходится.. Ну не может функция расчета логарифма занимать пол-флеша у mega8535. Одно из двух либо она будет работать очень быстро (если столько памяти занимает) либо вы что-то преврали.
В общем стандартное решение:
#include <math.h>
y = log10(x);
Вообще-то используя строку :
#include <math.h>
кроме логарифмической функции попадает куча ненужной информации,
что приводит к быстрому расходу памяти в микроконтроллере, оссобенно в tiny и classic.
Предлагаю использовать примерно такую функцию для всех x>0 ( вместо log (x) log_x (x),
а вместо log10 (x) log10_x (x) ):
double log_x (double );
double log_x (double x){
int m= ; /* (m-длина ряда, целое число) присвойте m значение , чем больше длина ряда,
тем точнее значение логарифма, но тем дольше идет его расчет */
double b,c,d,e,f;
b=(x-1)/(x+1);
с=b*b;
d=1/b;
f=0;
e=-1;
while (m>0){
d*=c;
e+=2;
f+=(d/e);
m--;
}
f*=2;
return f;
}
А для вычисления десятичного логарифма важно помнить след. соотношение:
lg (x) = ln (x) / ln (10 ) , а точнее это будет выглядеть так :
log10_x (x) = log_x (x)/log_x (10);