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

Что такое compile-time алгоритмы и для чего они нужны? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужен эмулятор диспечера задач. http://www.cyberforum.ru/cpp/thread419470.html
Ребят,помогите,пожалуйста,может у кого завалялся эмулятор диспечера задач на С/С++,очень надо. Нужно,что бы он создавал процесс,вводил его в состояние ожидания/выполнения и закрывал. Не откажусь от...
C++ Excel Automation in C++ Коллеги, прошу помощи! Нужен пример рабочего С++ кода, который делает следущее: - конектится к работающему в настоящий момент Excel; если Excel не запущен, то кидает exception; - конектится к... http://www.cyberforum.ru/cpp/thread419418.html
C++ Совместимость кода Code Composer Studio (CCS) с C/C++
С преподавателем друг друга не поняли. Как результат, прихожу с честно сделанными в Паскале лабами под занавес года, а он мне встречный подарок: "раз ты так редко ходишь, то почему не сделал лабы в...
C++ Как получить TID текущего потока? (библиотека pthread, компилятор g++ 4.6.1 открытый вопрос niXmanу)
Да, как? #include <windows.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> void *BusyWork(void *t) { printf("TID= %x\n", pthread_self()); printf("TID= %x\n", (unsigned...
C++ Непонятная разница в производительности http://www.cyberforum.ru/cpp/thread416848.html
Уважаемые эксперты! Есть у меня программа на С++, код которой я транслировал в двух системах: • Microsoft Visual Studio 2010 со штатным компилятором среды; • Code::Blocks версии 10.05 с пакетом...
C++ Высота бинарного дерева поиска Что неправильно в программе? Полное условие #include <iostream> #include <cstdio> #pragma comment (linker, "/stack:250000000") using namespace std; подробнее

Показать сообщение отдельно
niXman
Эксперт С++
3138 / 1450 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.12.2011, 23:38
кстати, вот и компайл-тайм реализация sqrt() без единого шаблона
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 <cmath>
 
constexpr double my_sqrt_impl(double lower, double upper, double v, bool d) {
   return
   upper-lower>0.0000000000001
      ? ((lower+upper)/2)*((lower+upper)/2)>v
         ? my_sqrt_impl(lower, (lower+upper)/2, v, d)
         : my_sqrt_impl((lower+upper)/2, upper, v, d)
      : d?lower:upper
   ;
}
 
constexpr double my_sqrt(double v) {
   return (my_sqrt_impl(v<1?v:1, v<1?1:v, v, true)+my_sqrt_impl(v<1?v:1, v<1?1:v, v, false))/2;
}
 
int main() {
   constexpr double v = 1.00006;
 
   std::cout << "standard implementation: " << sqrt(v) << std::endl;
   std::cout << "my own   implementation: " << my_sqrt(v) << std::endl;
 
   char array[int(my_sqrt(v))]; // check if my_sqrt(v) is constant expression
   std::cout << sizeof(array) << std::endl;
}
http://liveworkspace.org/code/1949cd97d970953b4b135dc93086cf4d

Evg, стандартной соответствует? выполняется в компайл-тайм?
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru