реклама на сайте
подробности

 
 
> Не считает функция log().
-Игорь-
сообщение Oct 21 2014, 16:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-10-11
Пользователь №: 67 615



Споткнулся на ровном месте. Надо подсчитывать натуральный логарифм. Иcпользую функцию log(), logf(), но как-то странно работает. send_base массив 16 битных слов.
В таком виде не работает.
Код
volatile float x=((adc_ext_result[i]/5*20000.0)/(65535.0-adc_ext_result[i]/5));
send_base[adc_ext_index[i]]=logf(x);

x=21521.0; log(x)= 65535.

А так работает:
Код
volatile float x=((adc_ext_result[i]/5*20000.0)/(65535.0-adc_ext_result[i]/5));
float r=21521.0;
send_base[adc_ext_index[i]]=logf(r);


logf®=9;

arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.8.4 20140725 (release) [ARM/embedded-4_8-branch revision 213147]
на работе пробовал компилить другим тулчайном резльтат тот же. Не могу понять где копать.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 22)
-Игорь-
сообщение Oct 22 2014, 10:48
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-10-11
Пользователь №: 67 615



Да. Вы правы. Проверил, преобразовывает именно так.
Тогда вообще ничего не понимаю. Может быть кроме преобразования отрицательного в целое безнаковое еще и переполнение было?

Да. если происходит переполнение, то результат не предсказуем.
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 22 2014, 11:00
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(-Игорь- @ Oct 22 2014, 14:48) *
Проверил, преобразовывает именно так.

Каждый раз веселюсь, когда вижу, как свойства языка Си снова открывают эмпирическим путём :-)
А книжку почитать не судьба? В том же K&R всё хорошо написано. Иначе будете по этим граблям блуждать и дальше.
Go to the top of the page
 
+Quote Post
-Игорь-
сообщение Oct 22 2014, 11:15
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-10-11
Пользователь №: 67 615



Читал, не единожды. Видимо голова небольшого объема.
Я собственно оветил, чтобы отметить, что с компилятором как всегда все ок.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 22 2014, 15:36
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Каждый раз веселюсь, когда вижу, как свойства языка Си снова открывают эмпирическим путём


тут это уже на уровне руки помнят. То есть всю жизнь было так и я всегда это применял, но когда увидел запись что нет, задумался... вдруг это не закон а просто всегда везлоsm.gif. Такой фигни много бывает, стирается из памяти источник знаний, остаются только факты и опыт применений. Весело, возможно, но что не стыдно сто пудовоsm.gif...

У флоат если мне не изменяет память есть спец символ +- бесконечность. Может на него так log реагирует? exp(65535) - это прям дофига-дофигища, и число уж больно интересное 16 единичек...

проверил, виндовый калькулятор на e^65535 честно заявляет переполнение, хотя и на 65534 тоже), где то в районе 22000 предел наступает. При этом я уверен он считает в даблах, так что для флота переполнение еще раньше. Скорее всего полученный ответ - это какой-то флаг...

Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 22 2014, 16:06
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Golikov A. @ Oct 22 2014, 19:36) *
Такой фигни много бывает, стирается из памяти источник знаний, остаются только факты и опыт применений. Весело, возможно, но что не стыдно сто пудовоsm.gif...

Расскажу по секрету: есть такие полезные штуки - "справочники" называются. Очень помогают. А в наш век тырнетов и гуглов они все на расстоянии вытянутой руки. Пользуйтесь, пока санкции тырнет не отрубили :-)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 22 2014, 17:33
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вы все известные вам факты, от которых вы забыли источник, пробиваете по гуглу?
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 22 2014, 19:12
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Golikov A. @ Oct 22 2014, 21:33) *
вы все известные вам факты, от которых вы забыли источник, пробиваете по гуглу?

Скажем так: перед обращением к помощи форума обязательно сверяюсь со справочниками. Кстати, что-то давно не обращался :-)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 22 2014, 20:05
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



не делаете ничего нового, наверное? wink.gif
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 14:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016