![]() |
|
Модераторы: bsa |
![]()
|
|
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
feodorv
несколько вопросов по коду возникло) как я понял sin из стандартной библиотеки) а mysin ваши функции) а при выводе выдает что стандартный синус быстрее чем ваш синус) извиняюсь за глупые вопросы) просто хочу разобраться) |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Ага. См. мой предыдущий пост))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
Очень жаль) а если попробывать табличный синус) ну и написать что то вроде
|
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
ну что ? у кого какие мысли есть?
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
feodorv, спасибо за небольшое исследование.
я примерно так и думал. А вообще эти задачки написать синус быстрее чем crt-шный идут с допотопных времен. (учителя еще на турбо С 1.0 пишут, тут это не редкость наблюдать) Так вот, в те времена, сопроцессор не был встроен в ЦП, и под него была предусмотрена панелька, которая почти у всех пустовала. Ну и этот сопроцессор эмулировали программно. В те времена, когда и учились нынешние преподаватели В наше время, со встроенным сопроцессором, задачка обогнать встроенный синус, превратилась в практически не решаемую. (ну по крайней мере совсем не для начинающих) Staskot, ну так замерьте, и опубликуйте здесь ваши результаты. кто-ж это кроме вас сделает? |
|||
|
||||
| XLAT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 8.1.2012 Репутация: нет Всего: нет |
Все double замени на float
Вот и будет тебе потеря точности(4 байта вместо 8 на одно число) и лишний профит на компенсацию. можно ещё ассемблерную вставку вставить с соответствующей настройкой CW - регистра управления FPU: 9 и 10 биты сброшены в нуль. Но это если препод разрешит, а, вообще то первого тебе будет достаточно. |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
вставки нельзя использовать) хоть там и хорошее ускорение будет) double менять на float тоже не вариант) меня заставляют работать только с даблой) вот мучаюсь с табличным синусом) может кто-то поможет мне дописать код?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
так уже написан... вызываешь свои же ф-ции GE_FastMath::Sin и GE_FastMath.Cos
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
я знаю как дописать чтобы точность была 10 знаков после запятой)
|
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
упс)) я НЕ знаю как сделать чтоб точность была именно 10 знаков
|
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
Вообщем вот что я имею на данный момент)
Как я понял это кончательный вариант) вот что получилось для стандартного синуса 0.000022 секунды) а для mysin 0.000012) для меня этот результат хороший) но при больших N происходит проигрывание mysin, причем ощутимое проигрывание) вообщем вопрос как сделать чтоб точность сохранялась 10 знаков ни больше ни меньше) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
неправильно. возвращать нужно не x, а
и ещё где-нибудь в начале main() нужно вызвать GE_FastMath::Initialize(); и ещё: 100 итераций для сравнения времени маловато. сделай 1 млн. Добавлено через 1 минуту и 37 секунд P.S. Выводи время в мс (просто умножь на 1e3) - читаеме ж будет -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
Всё равно получается что стандартный синус быстрее чем мой) но это при больших итерациях) а прималеньких мой быстрее) |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
лови, экспериментируй...
файл TimeMeasure.h:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |