Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизация по скорости sin cos log e 
:(
    Опции темы
gastly
Дата 14.12.2011, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.12.2011

Репутация: нет
Всего: нет



Нужна помощь по курсачу. Задание состоит в следующем: написать sin cos log e работающие в 2 раза быстрее чем из Math.h. Вообщем программы по оптимизации я написал. А вот что писать в самой курсовой я даже понятия не имею) подкиньте кто нить хорошие идеи и книги которые помогут написать курсачь)
P.S. Эт моя первая курсовая в универе.
P.P.S. кто подскажет как мне всю курсовую написать тому огромнейшее будет спасибо от меня) 
PM MAIL   Вверх
alexvs11
Дата 15.12.2011, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



курсовая это небольшое исследование
разделы на мой взгляд
1) зачем нужна подобная оптимизация, в чем цель ускорения этих функций
2) текущая реализация математических функций в math.h
3) обзор основных методов вычислительной математики, которые можно применить
4) описание, код вашего метода
5) проверка на правильность его работы, сравнение скорости работы оригинальной и вашей
6) выводы о том, что лучше, почему и как
 smile 
PM MAIL   Вверх
volatile
Дата 15.12.2011, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(gastly @  14.12.2011,  23:45 Найти цитируемый пост)
писать sin cos log e работающие в 2 раза быстрее чем из Math.h. Вообщем программы по оптимизации я написал

хотелось бы посмотреть, хотя бы синус, чтоли.. 
PM MAIL   Вверх
bsa
Дата 15.12.2011, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



На мой взгляд, оптимизировать можно только путем создания таблицы из некоторого числа значений. Когда тебе необходимо получить результат функции, то ты находишь пару близких записей в таблице и аппроксимируешь (линейно) до искомого значения. Например, у тебя есть запись для 85 и 90 градусов. А тебе надо найти результат для 89. Тогда искомый будет: r89 = (r90 * (89 - 85) + r85 * (90 - 89)) / (90 - 85). Чем больше таблица, тем выше точность. Записи в таблице должны быть с равным периодом (иначе считать будет сложней). Для логарифма этот вариант не подходит (если только для какого-то диапазона).
Кстати, e - это вообще константа.
функции Math.h используют средства "математического сопроцессора", который давно уже есть во всех настольных процессорах (AMD, Intel, Via). А вот у процессоров для встраиваемых систем (ARM, AVR...) его может и не быть. Я сильно сомневаюсь, что у тебя получится что-то ускорить в первом случае...
PM   Вверх
alexvs11
Дата 15.12.2011, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



может подразумеваться и другая оптимизация
если нужны значения мат функций с заданной ограниченной точности, то простенький алгоритм вычислительной математики сосчитает функцию быстрее чем из math.h

PM MAIL   Вверх
gastly
Дата 15.12.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.12.2011

Репутация: нет
Всего: нет



alexvs11  +1) спасибо за разьясние именно этого я и хотел)
 от меня и требуется) обрезать тип double) я обрезал до 10 знаков) а так может кто подкинуть статьи и книги по моей теме?)
PM MAIL   Вверх
volatile
Дата 15.12.2011, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(gastly @  15.12.2011,  14:17 Найти цитируемый пост)
double) я обрезал до 10 знаков

там всего 8 байт. До каких 10 знаков вы обрезали?  smile 
Цитата(gastly @  15.12.2011,  14:17 Найти цитируемый пост)
а так может кто подкинуть статьи и книги по моей теме?) 

Если вы создали алгоритмы
Цитата(gastly @  14.12.2011,  23:45 Найти цитируемый пост)
работающие в 2 раза быстрее чем из Math.h.

то вам в пору самому писать книги и статьи... smile 
PM MAIL   Вверх
gastly
Дата 15.12.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.12.2011

Репутация: нет
Всего: нет



volatile, в дабле 16 знаков после запятой) я до 10 знаков обрезал)
PM MAIL   Вверх
volatile
Дата 15.12.2011, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



gastly, дабл это двоичный формат.
при вычислении синуса никаких 16 знаков нет и в помине.

Знаки появляются только при выводе / вводе.
 smile 
короче, все ясно...

PM MAIL   Вверх
gastly
Дата 16.12.2011, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.12.2011

Репутация: нет
Всего: нет



volatile, вот тебе лог к примеру(так же и для остальных функций) 
Код

int i;
  double x1,x2,y,z;
  x1=1.0; x2=2.0-1.0e-10;//1.9999999999; 
  y=(x2-x1)/N;
for(i=0,z=x1;i<N;i++,z+=y)
   {zn_ln[i]=log(z);}

препод сказал код абсолютно правильный))))) вот так вот=))))))))
PM MAIL   Вверх
volatile
Дата 16.12.2011, 02:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



gastly, Это какой-то обрывок цикла, вычисляющего std-lib логарифмы для чисел  в диапазоне от 1.0; до1.9999999999 и записывающего в массив.
Ну, ни к селу ни к городу, ...

Цитата(gastly @  16.12.2011,  00:06 Найти цитируемый пост)
препод сказал код абсолютно правильный

А если еще и правильный, то ему вообще цены нет. smile 
Ладно, всё! я ушел из этой темы.

---
to all:
вот здесь что-то близко к теме, и похоже на реальные результаты.
http://gruntthepeon.free.fr/ssemath/


Это сообщение отредактировал(а) volatile - 16.12.2011, 02:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.