• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

kcalc

  • sources
  • kde-4.12
  • kdeutils
  • kcalc
  • knumber
knumber.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2001 - 2013 Evan Teran
3  evan.teran@gmail.com
4 
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef KNUMBER_H_
20 #define KNUMBER_H_
21 
22 #include "knumber_operators.h"
23 #include <QSharedPointer>
24 #include <QString>
25 #include <QtGlobal>
26 
27 namespace detail {
28 class knumber_base;
29 }
30 
31 class KNumber {
32 private:
33  friend bool operator==(const KNumber &lhs, const KNumber &rhs);
34  friend bool operator!=(const KNumber &lhs, const KNumber &rhs);
35  friend bool operator>=(const KNumber &lhs, const KNumber &rhs);
36  friend bool operator<=(const KNumber &lhs, const KNumber &rhs);
37  friend bool operator>(const KNumber &lhs, const KNumber &rhs);
38  friend bool operator<(const KNumber &lhs, const KNumber &rhs);
39 
40 public:
41  enum Type {
42  TYPE_ERROR,
43  TYPE_INTEGER,
44  TYPE_FLOAT,
45  TYPE_FRACTION
46  };
47 
48 public:
49  // useful constants
50  static const KNumber Zero;
51  static const KNumber One;
52  static const KNumber NegOne;
53  static const KNumber PosInfinity;
54  static const KNumber NegInfinity;
55  static const KNumber NaN;
56 
57 public:
58  static KNumber Pi();
59  static KNumber Euler();
60 
61 public:
62  // construction/destruction
63  KNumber();
64  explicit KNumber(const QString &s);
65 
66  explicit KNumber(qint32 value);
67  explicit KNumber(qint64 value);
68  explicit KNumber(quint32 value);
69  explicit KNumber(quint64 value);
70 
71  KNumber(qint64 num, quint64 den);
72  KNumber(quint64 num, quint64 den);
73 
74 #ifdef HAVE_LONG_DOUBLE
75  explicit KNumber(long double value);
76 #endif
77  explicit KNumber(double value);
78 
79  KNumber(const KNumber &other);
80  ~KNumber();
81 
82 public:
83  Type type() const;
84 
85 public:
86  // assignment
87  KNumber &operator=(const KNumber &rhs);
88 
89 public:
90  // basic math operators
91  KNumber &operator+=(const KNumber &rhs);
92  KNumber &operator-=(const KNumber &rhs);
93  KNumber &operator*=(const KNumber &rhs);
94  KNumber &operator/=(const KNumber &rhs);
95  KNumber &operator%=(const KNumber &rhs);
96 
97 public:
98  // bitwise operators
99  KNumber &operator&=(const KNumber &rhs);
100  KNumber &operator|=(const KNumber &rhs);
101  KNumber &operator^=(const KNumber &rhs);
102  KNumber &operator<<=(const KNumber &rhs);
103  KNumber &operator>>=(const KNumber &rhs);
104 
105 public:
106  // neg/cmp
107  KNumber operator-() const;
108  KNumber operator~() const;
109 
110 public:
111  KNumber integerPart() const;
112 
113 public:
114  QString toQString(int width = -1, int precision = -1) const;
115  quint64 toUint64() const;
116  qint64 toInt64() const;
117 
118 
119 public:
120  KNumber abs() const;
121  KNumber cbrt() const;
122  KNumber sqrt() const;
123  KNumber pow(const KNumber &x) const;
124 
125  KNumber sin() const;
126  KNumber cos() const;
127  KNumber tan() const;
128  KNumber asin() const;
129  KNumber acos() const;
130  KNumber atan() const;
131  KNumber sinh() const;
132  KNumber cosh() const;
133  KNumber tanh() const;
134  KNumber asinh() const;
135  KNumber acosh() const;
136  KNumber atanh() const;
137 
138  KNumber factorial() const;
139 
140  KNumber log2() const;
141  KNumber log10() const;
142  KNumber ln() const;
143  KNumber exp2() const;
144  KNumber exp10() const;
145  KNumber exp() const;
146  KNumber bin(const KNumber &x) const;
147 
148 public:
149  static void setDefaultFloatPrecision(int precision);
150  static void setSplitoffIntegerForFractionOutput(bool x);
151  static void setDefaultFractionalInput(bool x);
152  static void setDefaultFloatOutput(bool x);
153  static void setGroupSeparator(const QString &ch);
154  static void setDecimalSeparator(const QString &ch);
155 
156  static QString groupSeparator();
157  static QString decimalSeparator();
158 
159 public:
160  void swap(KNumber &other);
161 
162 private:
163  void simplify();
164 
165 private:
166  detail::knumber_base *value_;
167 
168 private:
169  static QString GroupSeparator;
170  static QString DecimalSeparator;
171 };
172 
173 #endif
KNumber::operator==
friend bool operator==(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:237
KNumber::exp2
KNumber exp2() const
Definition: knumber.cpp:862
KNumber::operator>=
friend bool operator>=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:251
KNumber::operator>
friend bool operator>(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:265
KNumber::toQString
QString toQString(int width=-1, int precision=-1) const
Definition: knumber.cpp:593
KNumber::pow
KNumber pow(const KNumber &x) const
Definition: knumber.cpp:674
KNumber::NegInfinity
static const KNumber NegInfinity
Definition: knumber.h:54
KNumber::groupSeparator
static QString groupSeparator()
Definition: knumber.cpp:196
KNumber::abs
KNumber abs() const
Definition: knumber.cpp:644
KNumber::asinh
KNumber asinh() const
Definition: knumber.cpp:785
KNumber::atan
KNumber atan() const
Definition: knumber.cpp:745
KNumber::NaN
static const KNumber NaN
Definition: knumber.h:55
KNumber::One
static const KNumber One
Definition: knumber.h:51
KNumber::exp
KNumber exp() const
Definition: knumber.cpp:882
KNumber::decimalSeparator
static QString decimalSeparator()
Definition: knumber.cpp:203
KNumber::operator/=
KNumber & operator/=(const KNumber &rhs)
Definition: knumber.cpp:516
KNumber::operator<<=
KNumber & operator<<=(const KNumber &rhs)
Definition: knumber.cpp:558
KNumber::setGroupSeparator
static void setGroupSeparator(const QString &ch)
Definition: knumber.cpp:182
KNumber::setDefaultFloatOutput
static void setDefaultFloatOutput(bool x)
Definition: knumber.cpp:233
KNumber::Zero
static const KNumber Zero
Definition: knumber.h:50
KNumber::acosh
KNumber acosh() const
Definition: knumber.cpp:795
KNumber::cos
KNumber cos() const
Definition: knumber.cpp:705
KNumber::operator>>=
KNumber & operator>>=(const KNumber &rhs)
Definition: knumber.cpp:566
KNumber::operator-=
KNumber & operator-=(const KNumber &rhs)
Definition: knumber.cpp:498
KNumber::TYPE_INTEGER
Definition: knumber.h:43
KNumber::Euler
static KNumber Euler()
Definition: knumber.cpp:255
KNumber::toInt64
qint64 toInt64() const
Definition: knumber.cpp:637
KNumber::integerPart
KNumber integerPart() const
Definition: knumber.cpp:434
KNumber::TYPE_FRACTION
Definition: knumber.h:45
KNumber::bin
KNumber bin(const KNumber &x) const
Definition: knumber.cpp:892
KNumber::setDefaultFloatPrecision
static void setDefaultFloatPrecision(int precision)
Definition: knumber.cpp:210
KNumber::operator+=
KNumber & operator+=(const KNumber &rhs)
Definition: knumber.cpp:489
KNumber::operator<
friend bool operator<(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:272
KNumber::log10
KNumber log10() const
Definition: knumber.cpp:842
detail::knumber_base
Definition: knumber_base.h:38
KNumber::operator!=
friend bool operator!=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:244
KNumber::KNumber
KNumber()
Definition: knumber.cpp:270
KNumber::type
Type type() const
Definition: knumber.cpp:400
KNumber::setDefaultFractionalInput
static void setDefaultFractionalInput(bool x)
Definition: knumber.cpp:226
KNumber::log2
KNumber log2() const
Definition: knumber.cpp:832
KNumber::operator&=
KNumber & operator&=(const KNumber &rhs)
Definition: knumber.cpp:534
KNumber::exp10
KNumber exp10() const
Definition: knumber.cpp:872
KNumber::operator<=
friend bool operator<=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:258
KNumber::setSplitoffIntegerForFractionOutput
static void setSplitoffIntegerForFractionOutput(bool x)
Definition: knumber.cpp:219
KNumber
Definition: knumber.h:31
KNumber::swap
void swap(KNumber &other)
Definition: knumber.cpp:427
KNumber::sin
KNumber sin() const
Definition: knumber.cpp:695
KNumber::tan
KNumber tan() const
Definition: knumber.cpp:715
KNumber::operator~
KNumber operator~() const
Definition: knumber.cpp:584
KNumber::toUint64
quint64 toUint64() const
Definition: knumber.cpp:630
KNumber::cosh
KNumber cosh() const
Definition: knumber.cpp:765
KNumber::~KNumber
~KNumber()
Definition: knumber.cpp:393
KNumber::setDecimalSeparator
static void setDecimalSeparator(const QString &ch)
Definition: knumber.cpp:189
KNumber::operator|=
KNumber & operator|=(const KNumber &rhs)
Definition: knumber.cpp:542
KNumber::PosInfinity
static const KNumber PosInfinity
Definition: knumber.h:53
KNumber::operator=
KNumber & operator=(const KNumber &rhs)
Definition: knumber.cpp:419
KNumber::cbrt
KNumber cbrt() const
Definition: knumber.cpp:654
KNumber::factorial
KNumber factorial() const
Definition: knumber.cpp:815
KNumber::operator*=
KNumber & operator*=(const KNumber &rhs)
Definition: knumber.cpp:507
KNumber::Pi
static KNumber Pi()
Definition: knumber.cpp:240
KNumber::asin
KNumber asin() const
Definition: knumber.cpp:725
KNumber::TYPE_FLOAT
Definition: knumber.h:44
KNumber::ln
KNumber ln() const
Definition: knumber.cpp:852
KNumber::acos
KNumber acos() const
Definition: knumber.cpp:735
KNumber::atanh
KNumber atanh() const
Definition: knumber.cpp:805
knumber_operators.h
KNumber::operator-
KNumber operator-() const
Definition: knumber.cpp:575
KNumber::Type
Type
Definition: knumber.h:41
KNumber::NegOne
static const KNumber NegOne
Definition: knumber.h:52
KNumber::sinh
KNumber sinh() const
Definition: knumber.cpp:755
KNumber::sqrt
KNumber sqrt() const
Definition: knumber.cpp:664
KNumber::operator^=
KNumber & operator^=(const KNumber &rhs)
Definition: knumber.cpp:550
KNumber::operator%=
KNumber & operator%=(const KNumber &rhs)
Definition: knumber.cpp:525
KNumber::TYPE_ERROR
Definition: knumber.h:42
KNumber::tanh
KNumber tanh() const
Definition: knumber.cpp:775
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:08:05 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcalc

Skip menu "kcalc"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • kremotecontrol
  • ktimer
  • kwallet
  • superkaramba
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal