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

 
 
 
Reply to this topicStart new topic
> Преобразование в 64-бит плавающую точку
Visor
сообщение May 31 2008, 10:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Есть 2 целых числа, одно целая часть, другое значение после запятой. Необходимо из них сделать число 64-бит с плавающей точкой. Ни как не могу сообразить как реализовать. Посоветуйте Си алгоритм, микроконтроллер AVR. Скорость преобразования критична. Или не стоит игра свечь, и воспользоваться арифметикой с double?
Go to the top of the page
 
+Quote Post
rezident
сообщение May 31 2008, 13:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Вам видимо нужно ознакомится со стандартом упаковки чисел с плавающей точкой. ПоГулите на предмет стандарта IEEE-754. Вот, например. ссылка. http://babbage.cs.qc.edu/IEEE-754/
Go to the top of the page
 
+Quote Post
Visor
сообщение Jun 7 2008, 06:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Как активировать формат двойной точности для чисел с плавающей точкой (64-bit)?
Прописал компилятору "--64bit_doubles", но ругается, что ещё не учёл?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jun 7 2008, 16:07
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Visor @ Jun 7 2008, 09:05) *
ругается, что ещё не учёл?

Ну хоть бы сообщение привели.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jun 7 2008, 19:41
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(IgorKossak @ Jun 8 2008, 00:07) *
Ну хоть бы сообщение привели.

Error[e117]: Incompatible runtime models. Module data_send specifies that '__64bit_doubles' must be 'enabled', but module ?low_level_init has the value 'disabled'
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jun 8 2008, 20:19
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Пока Вы не раскололись о версии компилятора, платформе/МК и способе задания для компилятора (среда или командная строка), попробую предположить, что речь идёт об AVR.
Попробуйте подключить нужную библиотеку, её название должно содержать цифры 64, установите модель памяти Small, функция __low_level_init (если Вы сами её определяете) должна возвращать 1, хотя не понятно как это может повлиять на double 07.gif
А если выложите архив с минимальным проектом и всеми его настройками, то будет вообще чудненько.
Ещё идея, возможно это и никак не относится к double, а Вы просто не ту библиотеку взяли, имеется в виду clib вместо dlib или наоборот.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jun 9 2008, 11:39
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



IgorKossak спасибо большое. По вашей наводке подключил библиотеку dlAVR-3s-64-f.r90 и всё пошло.
Вот только в мануале речь идёт о файле dlavr-3s-ec-64-f.r90 , которого нет в комплекте. (IAR for AVR
4.30A)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jun 9 2008, 17:12
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



ec означает extended core, что желательно, по крайней мере у меня для ATmega128.
f означает full, имеется в виду
Цитата
Use the full configuration of the C/EC++
runtime library. Full locale interface,
C locale, file descriptor support,
multibytes in printf and scanf, and
hex floats in strtod.
. Сильно ли оно Вам надо?
Я пользуюсь библиотекой dlAVR-3s-ec_mul-64-n.r90, где mul означает поддержку аппаратного умножителя. Ваш МК его не имеет?
Кстати dlAVR-3s-ec_mul-64-f.r90 тоже имеется, а вот dlavr-3s-ec-64-f.r90 действительно нет, но есть dlAVR-3s-ec_nomul-64-f.r90
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:40
Рейтинг@Mail.ru


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