![]() |
|
Модераторы: bsa |
![]()
|
|
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
и у меня на компе и на LWS mysin быстрее http://liveworkspace.org/code/963cec3c07a8...bb94dd79915c457 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
||||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
На моём компе (MSVS 2008)
на LWS
Кста, может ты в Debug-режиме запускаешь ??? Тогда может быть всё, что хочешь. Нужно в Release Это сообщение отредактировал(а) borisbn - 6.2.2012, 16:33 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
да в дебаге) чесно говоря первый раз слышу про Release )не подскажешь как через него запускать? Добавлено через 9 минут и 59 секунд Всё разобрался что такое Releaseи как через него запускать) всё работает) Спасибо))Теперь для полного счастья мучает вопрос) по заданию мне надо чтоб точность было ровно 10 знаков? возможно ли это? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Staskot, ровно никогда не говорят. Обычно, "не менее 10 знаков". Это разные вещи. Например, синус 0 равен 0. И ты можешь убиться, но точность будет ограничена особенностями типа double (например, больше 10 знаков).
Если ты хочешь проверить, то делается это очень просто. Модуль разницы между твоим значением и стандартным должен быть меньше 1.0e-10. Это сообщение отредактировал(а) bsa - 6.2.2012, 17:18 |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
||||
|
||||
| feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Прошу прощения, что я опять со своим C)))
Пользуясь формулой
и тем, что cos(dx) ~ 1 и sin(dx) ~ dx при малых dx, можно повысить точность вычисления на несколько порядков, потеряв в скорости... Получилось так:
Время получается такое:
но, как выяснилось, на него нельзя положиться))) Это сообщение отредактировал(а) feodorv - 6.2.2012, 21:08 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
| feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Вот результаты LWS: http://liveworkspace.org/code/e981bae92390...f769efa0cac0587
По уму нужно сгенерировать таблицы tableSin etc, а не вычислять на ходу. Рабочий отрезок 0<=z<PI, следовательно, нужны дополнительные манипуляции с аргументом, чтобы охватить всю числовую прямую, что также займёт время. Если поиграться со значением константы MAX_ANGLE, то в конце концов можно достигнуть желаемой точности (при MAX_ANGLE=256*1024): http://liveworkspace.org/code/676649223321...7fbdf4b095fb2b6
Это сообщение отредактировал(а) feodorv - 6.2.2012, 21:39 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
на моей VS 2010 отказывается почему-то показывать время) по нулям показывает)
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Какой вариант используется? С LWS? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
||||
|
||||
| Staskot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.2.2012 Репутация: нет Всего: нет |
проблема решилась отключением оптимизации) вроде всё заработало) то что я её отключил сильно на что-нибудь повлияет?)
|
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ну да все привально,
а если его обрамить необходимыми проверками на выход из диапазона. (кстати вы не пробовали синус отрицательного угла вычислить по вашей таблице то выигрыш будет совсем ничтожным. Это притом что для таблицы в 3600 даблов, достигается точность т.е фактически 3 знака. значит для 10 знаков точности понадобится таблица в 36000000000 даблов LWS компилит в дебаговом режиме, если не о шибаюсь, так что проверять там быстродействие не стоит. Добавлено через 3 минуты и 28 секунд
Можно и еще замедлить стандартный синус. напишите обертку для него, тогда точно его обгоните |
||||
|
|||||
| feodorv |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Вот-вот Вариант!!! Да, стоит переписать программу так, чтобы получаемые значения как-то использовались, а то, действительно, компилятор понимает, что они нафик не нужны, вот и не вычисляет... На LWS используется clock() вместо QueryPerformanceCounter()((( Какие цифры получились?
По новому варианту хватает трёх таблиц по 256*1024 элементов))) Это сообщение отредактировал(а) feodorv - 7.2.2012, 00:13 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||
|
|||||||||
![]()
|
| Правила форума "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. |