С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Medved.tolik
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 15
#1

Sin быстрее чем из math.h - C++

03.02.2012, 17:35. Просмотров 1392. Ответов 9
Метки нет (Все метки)

ребят, вообщем мне задали написать программу которая считала синус быстрее чем из math.h ) скорость должна достигаться путем потери точности) Я вот написал код который(как я думаю должен быстрее работать) но на деле не вижу что он быстрее) подтолкните кто нить)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
const int N=100000;
void main(void)
{int i;
double x1,x2,y,z;
x1=1.0; x2=2.0-1.0e-10;// вот здесь я обрезаю точность до 10 знаков 
y=(x2-x1)/N;
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
 
LARGE_INTEGER time1;
QueryPerformanceCounter(&time1);
for(i=0,z=x1;i<N;i++,z+=y)
{
sin(z);
}
LARGE_INTEGER time2;
QueryPerformanceCounter(&time2);
time2.QuadPart -= time1.QuadPart;
double span = (double) time2.QuadPart / freq.QuadPart; 
printf( "for sin time: %f seconds\n", span );
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2012, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Sin быстрее чем из math.h (C++):

Задача math, не могу понять в чем ошибки - C++
Приветствую, в универе задали сделать задачку, написать пример с парой переменных. Записать этот пример в языке c++ и после, чтобы можно...

Быстрее чем цикл - C++
Доброго времени уток дорогие форумчане. Интересует вот какая штуковина, допусти есть программа которая открывает два файла, смотрит на...

C# работает быстрее чем С++ - C++
имеется файл типа 6 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0...

Правда что С быстрее чем С++? - C++
Имеется в виду на исполнении, а не на момент компиляции... Наверняка такая тема уже была, но я не нашёл, если дадите ссылку также буду...

C программа компилируется быстрее чем C++ - C++
Почему программа на C компилируется быстрее чем на С++?

Подскажите как написать в С++: Вывести «столбиком» значения sin 0,l, sin 0,2, ., sin l,l - C++
Вот такое задание Вывести «столбиком» значения sin 0,l, sin 0,2, ..., sin l,l.

9
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
03.02.2012, 17:45 #2
Как мне кажется, преимущества в скорости можно добиться, используя при вычислении синуса его N первыx коэффициентов разложения в ряд Маклорена
0
icpu
369 / 283 / 65
Регистрация: 10.03.2011
Сообщений: 1,219
Записей в блоге: 2
03.02.2012, 17:50 #3
а то, что вы сделали, я не знаю, как называются.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.02.2012, 17:57 #4
По моему даже месяца не прошло с тех пор, как эта тема поднималась чуть ли не в такой же формулировке.
Вот хоть бы для приличия поиском пользовались...
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
03.02.2012, 18:03 #5
Цитата Сообщение от Medved.tolik Посмотреть сообщение
написать программу которая считала синус быстрее чем из math.h ) скорость должна достигаться путем потери точности
Берёте таблицу Брадиса, заносите её в массив, приводите угол к минимальным целым единицам (по этой таблице судя к минутам), выводите результат по таблице...
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.02.2012, 18:35 #6
Цитата Сообщение от icpu Посмотреть сообщение
а то, что вы сделали, я не знаю, как называются.
пичалька
0
icpu
369 / 283 / 65
Регистрация: 10.03.2011
Сообщений: 1,219
Записей в блоге: 2
03.02.2012, 18:43 #7
Jupiter, нет, конкретно у него я не понял, что в программе написано. в единственном цикле он считает единственный синус стандартной реализации... Я просто не понял суть ЧЕГО ИМЕННО необычного в этой программе? В том, что вместо 1. у него 0.9999999999something?
0
Jupiter
03.02.2012, 18:49
  #8

Не по теме:

icpu, пардон, неправильно трактовал ваш пост и вообще перепутал вас с топик стартером

0
Medved.tolik
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 15
05.02.2012, 19:45  [ТС] #9
Ну а с таблицами там не совсем понял) вот чтот поднакидал) помогите доделать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//// заголовочный файл
#pragma once
#define MAX_ANGLE 360
class GE_FastMath
{private:    
static double mCosTable[MAX_ANGLE];
static double mSinTable[MAX_ANGLE];public:    
static void Initialize();    
static double Cos(int iAngle) 
{ return mCosTable[iAngle]; }    
static double Sin(int iAngle) 
{ return mSinTable[iAngle]; }};
// cpp-файл
#include "StdAfx.h"
#define _USE_MATH_DEFINES
#include <math.h>
#include "GE_FastMath.h"
double GE_FastMath::mCosTable[MAX_ANGLE];
double GE_FastMath::mSinTable[MAX_ANGLE];
void GE_FastMath::Initialize(void)
{    for(int i = 0; i<MAX_ANGLE; i++)   
 {        double lRadian = i * (M_PI / 180); 
       mCosTable[i] = cos(lRadian);       
 mSinTable[i] = sin(lRadian);    }}
Добавлено через 2 часа 31 минуту
есть у кого-нибудь какие-нибудь идеи?
0
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,838
Записей в блоге: 28
05.02.2012, 20:22 #10
Если тебе это чем-то поможет, то вот glibc'шная реализация:

http://sourceware.org/git/?p=glibc.g...sinf.c;hb=HEAD
отсюда тебе можно брать только первую ветку (т.е. аргумент от -pi/4 до +pi/4) и далее продолжение в следующем файле:
http://sourceware.org/git/?p=glibc.g...sinf.c;hb=HEAD

Макрос GET_FLOAT_WORD просто побитно копирует из float'а в int. Если тебе это непонятно, то см. реализацию тут: http://sourceware.org/git/?p=glibc.g...vate.h;hb=HEAD
0
05.02.2012, 20:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2012, 20:22
Привет! Вот еще темы с ответами:

Почему код, написанный на С++, в разы быстрее работает с большим объемом памяти, чем с маленьким? - C++
Привет! Понадобилось мне сравнить скорость работы идентичных алгоритмов на Fortran и C++. Алгоритм - перемножение матриц. Решил...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Быстрее ли вывов функции, переданной через параметр шаблона, чем через простой указатель на функцию? - C++
Здравствуйте! Есть два варианта передачи некоторой переменной типа &quot;указатель на функцию&quot; в класс - через параметр шаблона и просто с...

Вычислить выражение sin(sin(sin...(x))...) - C++
Вычислить y=sinsin...sinx, где количество повторений sin=n. #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int...


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

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

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