Реализация b ^ p с бинарным возведением в степень
def power(b, p):
"""
Calculates b^p
Complexity O(log p)
b -> double
p -> integer
res -> double
"""
res = 1
while p:
if p & 0x1: res *= b
b *= b
p >>= 1
return res
Минимальная представимая длительность составляет high_resolution_clock::period::num / high_resolution_clock::period::den
секунд. Вы можете напечатать это так:
std::cout << (double) std::chrono::high_resolution_clock::period::num
/ std::chrono::high_resolution_clock::period::den;
Почему это? Член часов ::period
определяется как «Тиковый период часов в секундах». Это специализация std::ratio
, которая представляет собой шаблон для представления отношений во время компиляции. Он обеспечивает две интегральные константы: num
и den
, числитель и знаменатель дроби, соответственно.
Тип std::ratio
, представляющий период тика часов, в секундах. Определен в пространстве имен std::chrono
template<intmax_t Num, intmax_t Denom = 1 > class ratio;