| // -*- C++ -*- C math library. |
| |
| // Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 |
| // Free Software Foundation, Inc. |
| // |
| // This file is part of the GNU ISO C++ Library. This library is free |
| // software; you can redistribute it and/or modify it under the |
| // terms of the GNU General Public License as published by the |
| // Free Software Foundation; either version 2, or (at your option) |
| // any later version. |
| |
| // This library is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| |
| // You should have received a copy of the GNU General Public License |
| // along with this library; see the file COPYING. If not, write to |
| // the Free Software Foundation, 51 Franklin Street, Fifth Floor, |
| // Boston, MA 02110-1301, USA. |
| |
| // As a special exception, you may use this file as part of a free software |
| // library without restriction. Specifically, if other files instantiate |
| // templates or use macros or inline functions from this file, or you compile |
| // this file and link it with other files to produce an executable, this |
| // file does not by itself cause the resulting executable to be covered by |
| // the GNU General Public License. This exception does not however |
| // invalidate any other reasons why the executable file might be covered by |
| // the GNU General Public License. |
| |
| // This file was written by Gabriel Dos Reis <gdr@codesourcery.com> |
| |
| /** @file cmath.tcc |
| * This is a Standard C++ Library file. |
| */ |
| |
| #ifndef _GLIBCXX_CMATH_TCC |
| #define _GLIBCXX_CMATH_TCC 1 |
| |
| _GLIBCXX_BEGIN_NAMESPACE(std) |
| |
| template<typename _Tp> |
| inline _Tp |
| __cmath_power(_Tp __x, unsigned int __n) |
| { |
| _Tp __y = __n % 2 ? __x : _Tp(1); |
| |
| while (__n >>= 1) |
| { |
| __x = __x * __x; |
| if (__n % 2) |
| __y = __y * __x; |
| } |
| |
| return __y; |
| } |
| |
| _GLIBCXX_END_NAMESPACE |
| |
| #endif |