Форум программистов, компьютерный форум CyberForum.ru

Максимально быстрый вариант вычисления sinf/cosf - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Простое создание строки из объектов разных типов данных http://www.cyberforum.ru/cpp-beginners/thread1234710.html
Всем доброго времени суток. Создал класс, который (по моему мнению) сделает более удобным создание строк и их передачу в функции, принимающие строки. Посоветуйте, как можно (если нужно) его улучшить. Пример использования string num = mkstr() << 15 //число в строку //передача строки в функцию int a = rand()%100 ofstream fout(mkstr() << "file" << a << ".txt"); Исходный код
C++ Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор Скажите правильно ли я выделяю и очищаю память под двухмерный вектор class A { private: std::vector< std::vector<int> >* vec; public: A() http://www.cyberforum.ru/cpp-beginners/thread1234703.html
C++ Циклы: вычисление синуса
Приступил к циклам. Задание такое: Как известно, функция sin(x) может может быть вычислена в виде ряда sin(x)=x-x^3/3!+x^5/5!-...=\sum_{n=0}^{\propto }(-1)^n*(x^(2n+1))/(2n+1)! На практике при вычислении значения функции sin(x) соответствующий ряд ограничивают, т.е. рассматривают приближенное выражение sin(x)= x-x^3/3!+x^5/5!-x^7/7!+...+...
Boost::regex не могу сформировать ссылку на паттерн при поиске C++
Необходимо найти 2 повторяющихся заголовка и объединить некоторое содержимое через replace. Хотел создать выражение для поиска: ^(prefix=)(.*)(\n)(*)($2) Вот только ссылка $2 не возвращает содержимое (.*). Можно как-то сделать подобную ссылку? Спасибо.
C++ Инициализация переменных - некорректно работает пример из книги http://www.cyberforum.ru/cpp-beginners/thread1234669.html
Взял задачку из книги Г.Шилда. Должно показывать 1 3 6 10 15. Но у меня выдает 1 2 3 4 5. Набрал всё точь в точь с книги, в чём проблема, кто подскажет? #include <iostream> #include <conio.h> using namespace std; void total (int x); int main(){ setlocale(LC_ALL,"RUS"); cout << "Вычисление суммы чисел от 1 до 5.\n"; total(5); _getch();
C++ Не работает цикл for #include <iostream> #include <conio.h> using namespace std; int main() { int x; for(x=0; x<10; x++); cout << x << " "; _getch(); return 0; } подробнее

Показать сообщение отдельно
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
27.07.2014, 07:50     Максимально быстрый вариант вычисления sinf/cosf
Думаю что-то вроде этого (об оптимальности не говорю):
Кликните здесь для просмотра всего текста
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <vector>
#include <cstddef>
#include <cmath>
 
 
auto const pi = std::acos(-1.f);
 
struct sin_table {
    
   explicit sin_table(float const step) : step(step) {
      auto const size = static_cast<std::size_t>(2 * pi / step);
      
      table.resize(size);
      
      for (std::size_t i = 0; i != size; ++i) {
         table[i] = std::sin(i * step);
      }
   }
   
   float operator ()(float const arg) const {
      auto const pos = static_cast<std::size_t>(std::abs(arg / step)) % table.size();
      auto const value = table[pos];
      return std::signbit(arg) ? -value : value;
   }
 
private:
   float const step;
   std::vector<float> table;
};
 
 
int main() {
   sin_table const sin(.01f);
   
   std::cout << sin(.0f)            << std::endl;
   std::cout << sin(pi / 2)         << std::endl;
   std::cout << sin(pi)             << std::endl;
   std::cout << sin(3 * pi / 2)     << std::endl;
   std::cout << sin(5 * pi / 2)     << std::endl;
   std::cout << sin(-pi / 2)        << std::endl;
   std::cout << sin(-3 * pi / 2)    << std::endl;
   std::cout << sin(-5 * pi / 2)    << std::endl;
}
http://ideone.com/DqytmG
 
Текущее время: 22:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru