/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PhysicsTools/Utilities/interface/Power.h
35 строк
1 KB
camolezi
removed boost dependencies
07 июн 2020, 22:44
07 июн 2020, 22:44
65eda09
Код
Авторство
О чём код?
#ifndef PhysicsTools_Utilities_Power_h #define PhysicsTools_Utilities_Power_h #include <cmath> namespace funct { template <typename A, typename B> struct PowerStruct { PowerStruct(const A& a, const B& b) : _1(a), _2(b) {} double operator()() const { return std::pow(_1(), _2()); } operator double() const { return std::pow(_1(), _2()); } double operator()(double x) const { return std::pow(_1(x), _2(x)); } double operator()(double x, double y) const { return std::pow(_1(x, y), _2(x, y)); } A _1; B _2; }; template <typename A, typename B> struct Power { typedef PowerStruct<A, B> type; static type combine(const A& a, const B& b) { return type(a, b); } }; template <typename A, typename B> inline typename Power<A, B>::type operator^(const A& a, const B& b) { return Power<A, B>::combine(a, b); } template <typename A, typename B> inline typename Power<A, B>::type pow(const A& a, const B& b) { return Power<A, B>::combine(a, b); } } // namespace funct #endif