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

Функция pow() - C++

Восстановить пароль Регистрация
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
14.11.2012, 23:56     Функция pow() #1
Здравствуйте!Хотелось спросить у опытных программистов - скажите пожалуйста, как функция pow() считает число в степень?Она же не в лоб, как я понимаю, умножает n раз число, возводимое в степень...Использует ли функция pow() бинарное возведение в степень, если число целое?Или какие ещё виды оптимизаций использует эта функция?

Очень интересно узнать!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 23:56     Функция pow()
Посмотрите здесь:

C++ Функция pow. Преобразование типов
Срочно функция pow(a,n) C++
C++ Функция pow() перегрузки
Функция pow и график C++
C++ Рекурсивная функция pow(x, n)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:05     Функция pow() #2
Найдено в файле math.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
 template<class _Ty> inline
        _Ty _Pow_int(_Ty _X, int _Y)
        {unsigned int _N;
        if (_Y >= 0)
                _N = (unsigned int)_Y;
        else
                _N = (unsigned int)(-_Y);
        for (_Ty _Z = _Ty(1); ; _X *= _X)
                {if ((_N & 1) != 0)
                        _Z *= _X;
                if ((_N >>= 1) == 0)
                        return (_Y < 0 ? _Ty(1) / _Z : _Z); }}
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
15.11.2012, 00:34  [ТС]     Функция pow() #3
Croessmah , спасибо большое за вырезку из файла.Но не могли вы пояснить мне работу этого куска кода, если Вам не составит труда?А то я с шаблонами не совсем(=вообще) не знаком.

Заранее спасибо!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:38     Функция pow() #4
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
А то я с шаблонами не совсем(=вообще) не знаком.
не обращайте внимания на шаблон. Поставьте вместо _Ty везде int(или другой тип данных)
Yandex
Объявления
15.11.2012, 00:38     Функция pow()
Ответ Создать тему
Опции темы

Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru