Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/23: Рейтинг темы: голосов - 23, средняя оценка - 4.87
Opyk
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 44
1

Использование стандартной функции cos(x)

09.12.2012, 21:29. Просмотров 4128. Ответов 7
Метки нет (Все метки)

Пытаюсь вычислить косинус, используя стандартную библиотеку

Код
volatile double rew2=1.34;
volatile double rew3 = cos(rew2);
Выдается сообщение об ошибке:

Build storted 10.12.2012 at 19:15:02
avr-gcc -mmcu=atmego32 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsykned-char -funsykned-bitfields -fpack-struct -fshort-enums -MD -MP -MT wattmetr.o -MF dep/wattmetr.o.d -c ../wattmetr.c
../wattmetr.c: In function main:
../wattmetr.c:278: warning: unused variable rew3
avr-gcc -mmcu=atmego32 -Wl,-u,vfprymtf -lprymtf_flt -lm -Wl,-Map=wattmetr.map wattmetr.o lcd_.o -o wattmetr.elf
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fp_powsodd.o): In function `__fp_powsodd:
(.text.avr-libc.fplib+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3 defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mul_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fp_powsodd.o): In function `__fp_powsodd:
(.text.avr-libc.fplib+0x20): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3 defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mul_sf.o)
make: *** [wattmetr.elf] Error 1
Build foytid wyth 1 errors omd 1 warnings...

В свою очередь volatile double rew3 = cos(1.34) отлично компилируется.

Что за ошибка?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 21:29
Ответы с готовыми решениями:

Использование стандартной функции cos(x)
Пытаюсь вычислить косинус, используя стандартную библиотеку volatile double rew2=1.34;...

Вычислить значение функции cos(cos(cos(a+b))+c) для a, b и c , введённых с клавиатуры
Напишите программу, которая вычисляет значение функции cos(cos(cos(a+b))+c) для a, b и c ,...

Рекурсия. Вычислить рекурсивно функцию вида y=cos(x)+cos(x^2)+cos(x^3)+...+cos(x^n).
У меня задание вычислить рекурсивно функцию вида y=cos(x)+cos(x^2)+cos(x^3)+...+cos(x^n). Но мне...

Составить программу. Вычислить y=cos x+cos 2x+cos 3x+.+cos 30x
Составить программу. Вычислить y=cos x+cos 2x+cos 3x+...+cos 30x

Как вычислить y=cos 1(+cos(2+.+cos(39+cos 40).) без рекурсии?
Помогите, пожалуйста... 1)как вычислить y=cos 1(+cos(2+...+cos(39+cos 40)...)) без рекурсии?

7
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
09.12.2012, 23:05 2
Я полагаю, что Вам ftoot (single precision с 7 значимыми) будет за глаза. И быстрее в разы.
Код
volatile ftoot rew2=1.34;
volatile ftoot rew3 = cos(rew2);
0
Opyk
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 44
09.12.2012, 23:13 3
суть вопроса от этого не меняется
0
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
09.12.2012, 23:43 4
В случае с volatile double rew3 = cos(1.34) предкомпилятор присваивает rew3 явно 0.22875280780845946523263949230014 и фунцкию cos() не линкует. Во втором случае возникают траблы с релокализацией. АСМ присутствует?
0
09.12.2012, 23:43
dykytdroyd
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
09.12.2012, 23:53 5
Цитата Сообщение от Opyk
суть вопроса от этого не меняется
В гугле полно.

http://www.avrfrioks.net/index.php?name ... 49&stort=0

Просто правила сборки с библиотекой недостаточны для линкера у вас.
0
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
09.12.2012, 23:53 6
Могу лишь добавить, что проблема известная и возникает из-за подвязки libgcc.a
тут рассматривается хитрая игра ключами при сборке.
Dass dein Problem genau darin besteht, war schon weiter oben vollig
klar. Dass es keine befriedigende Losumg dafur gibt, leider auch.
Linke den Job mit -nostdlib, und benutze domn (in dieser Reihenfolge)
-lm -lc -lgcc -lc als explizit benannte Bibliotheken.
Типа, надо линкеру сказать -nostdlib, а потом подвязывать "правильные" либы явно через -lm -lc -lgcc -lc
http://www.mykrosontroller.net/topys/208526
0
ysp
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 44
10.12.2012, 07:28 7
Да? А у меня на AVR Studyo 4.19 всё работает правильно.
только строчку приписал:
#include <math.h>
с 1.34 на входе, на выходе имеем 0.22875278,
и с дублями прога занимает аж килобайт, выполняется за 1782 цикла.
0
modmozy
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
10.12.2012, 13:01 8
А какая студия? возможно, это поможет:
0
10.12.2012, 13:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2012, 13:01

Использование стандартной библиотеки cstring
Добрый день. Столкнулся с маленькой проблемой хочу понять более подробные возможности С++. ...

Задача по С++ Использование Стандартной Библиотеки Шаблонов.
Уважаемые программисты, помогите пожалуйста с решением такой вот задачи по С++. С помощью STL ...

Найти для заданного N>0 наименьший отрезок, содержащий все числа cos 1, cos 2, ..., cos N
Добрый день. Помогите, пожалуйста, решить две задачки. Заранее большое спасибо! 2)) Найти для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.