File indexing completed on 2024-05-12 04:45:54

0001 /*
0002 Copyright (C) 2001 - 2013 Evan Teran
0003                           evan.teran@gmail.com
0004 
0005 This program is free software: you can redistribute it and/or modify
0006 it under the terms of the GNU General Public License as published by
0007 the Free Software Foundation, either version 2 of the License, or
0008 (at your option) any later version.
0009 
0010 This program is distributed in the hope that it will be useful,
0011 but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013 GNU General Public License for more details.
0014 
0015 You should have received a copy of the GNU General Public License
0016 along with this program.  If not, see <http://www.gnu.org/licenses/>.
0017 */
0018 
0019 #ifndef KNUMBER_OPERATORS_H_
0020 #define KNUMBER_OPERATORS_H_
0021 
0022 class KNumber;
0023 
0024 bool operator==(const KNumber &lhs, const KNumber &rhs);
0025 bool operator!=(const KNumber &lhs, const KNumber &rhs);
0026 bool operator>=(const KNumber &lhs, const KNumber &rhs);
0027 bool operator<=(const KNumber &lhs, const KNumber &rhs);
0028 bool operator>(const KNumber &lhs, const KNumber &rhs);
0029 bool operator<(const KNumber &lhs, const KNumber &rhs);
0030 
0031 KNumber operator+(const KNumber &lhs, const KNumber &rhs);
0032 KNumber operator-(const KNumber &lhs, const KNumber &rhs);
0033 KNumber operator*(const KNumber &lhs, const KNumber &rhs);
0034 KNumber operator/(const KNumber &lhs, const KNumber &rhs);
0035 KNumber operator%(const KNumber &lhs, const KNumber &rhs);
0036 
0037 KNumber operator&(const KNumber &lhs, const KNumber &rhs);
0038 KNumber operator|(const KNumber &lhs, const KNumber &rhs);
0039 KNumber operator^(const KNumber &lhs, const KNumber &rhs);
0040 KNumber operator>>(const KNumber &lhs, const KNumber &rhs);
0041 KNumber operator<<(const KNumber &lhs, const KNumber &rhs);
0042 
0043 KNumber abs(const KNumber &x);
0044 KNumber cbrt(const KNumber &x);
0045 KNumber sqrt(const KNumber &x);
0046 KNumber pow(const KNumber &x, const KNumber &y);
0047 
0048 KNumber sin(const KNumber &x);
0049 KNumber cos(const KNumber &x);
0050 KNumber tan(const KNumber &x);
0051 KNumber asin(const KNumber &x);
0052 KNumber tgamma(const KNumber &x);
0053 KNumber acos(const KNumber &x);
0054 KNumber atan(const KNumber &x);
0055 
0056 KNumber factorial(const KNumber &x);
0057 
0058 KNumber log2(const KNumber &x);
0059 KNumber log10(const KNumber &x);
0060 KNumber ceil(const KNumber &x);
0061 KNumber floor(const KNumber &x);
0062 KNumber ln(const KNumber &x);
0063 KNumber exp2(const KNumber &x);
0064 KNumber exp10(const KNumber &x);
0065 KNumber exp(const KNumber &x);
0066 
0067 #endif