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

kcalc

  • sources
  • kde-4.14
  • 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 <QString>
24 #include <QtGlobal>
25 
26 namespace detail {
27 class knumber_base;
28 }
29 
30 class KNumber {
31 private:
32  friend bool operator==(const KNumber &lhs, const KNumber &rhs);
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 
39 public:
40  enum Type {
41  TYPE_ERROR,
42  TYPE_INTEGER,
43  TYPE_FLOAT,
44  TYPE_FRACTION
45  };
46 
47 public:
48  // useful constants
49  static const KNumber Zero;
50  static const KNumber One;
51  static const KNumber NegOne;
52  static const KNumber PosInfinity;
53  static const KNumber NegInfinity;
54  static const KNumber NaN;
55 
56 public:
57  static KNumber Pi();
58  static KNumber Euler();
59 
60 public:
61  // construction/destruction
62  KNumber();
63  explicit KNumber(const QString &s);
64 
65  explicit KNumber(qint32 value);
66  explicit KNumber(qint64 value);
67  explicit KNumber(quint32 value);
68  explicit KNumber(quint64 value);
69 
70  KNumber(qint64 num, quint64 den);
71  KNumber(quint64 num, quint64 den);
72 
73 #ifdef HAVE_LONG_DOUBLE
74  explicit KNumber(long double value);
75 #endif
76  explicit KNumber(double value);
77 
78  KNumber(const KNumber &other);
79  ~KNumber();
80 
81 public:
82  Type type() const;
83 
84 public:
85  // assignment
86  KNumber &operator=(const KNumber &rhs);
87 
88 public:
89  // basic math operators
90  KNumber &operator+=(const KNumber &rhs);
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 
96 public:
97  // bitwise operators
98  KNumber &operator&=(const KNumber &rhs);
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 
104 public:
105  // neg/cmp
106  KNumber operator-() const;
107  KNumber operator~() const;
108 
109 public:
110  KNumber integerPart() const;
111 
112 public:
113  QString toQString(int width = -1, int precision = -1) const;
114  quint64 toUint64() const;
115  qint64 toInt64() const;
116 
117 
118 public:
119  KNumber abs() const;
120  KNumber cbrt() const;
121  KNumber sqrt() const;
122  KNumber pow(const KNumber &x) const;
123 
124  KNumber sin() const;
125  KNumber cos() const;
126  KNumber tan() const;
127  KNumber asin() const;
128  KNumber acos() const;
129  KNumber atan() const;
130  KNumber sinh() const;
131  KNumber cosh() const;
132  KNumber tanh() const;
133  KNumber asinh() const;
134  KNumber acosh() const;
135  KNumber atanh() const;
136  KNumber tgamma() const;
137 
138  KNumber factorial() const;
139 
140  KNumber log2() const;
141  KNumber log10() const;
142  KNumber ln() const;
143  KNumber floor() const;
144  KNumber ceil() const;
145  KNumber exp2() const;
146  KNumber exp10() const;
147  KNumber exp() const;
148  KNumber bin(const KNumber &x) const;
149 
150 public:
151  static void setDefaultFloatPrecision(int precision);
152  static void setSplitoffIntegerForFractionOutput(bool x);
153  static void setDefaultFractionalInput(bool x);
154  static void setDefaultFloatOutput(bool x);
155  static void setGroupSeparator(const QString &ch);
156  static void setDecimalSeparator(const QString &ch);
157 
158  static QString groupSeparator();
159  static QString decimalSeparator();
160 
161 public:
162  void swap(KNumber &other);
163 
164 private:
165  void simplify();
166 
167 private:
168  detail::knumber_base *value_;
169 
170 private:
171  static QString GroupSeparator;
172  static QString DecimalSeparator;
173 };
174 
175 #endif
KNumber::operator==
friend bool operator==(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:259
KNumber::exp2
KNumber exp2() const
Definition: knumber.cpp:911
KNumber::operator>=
friend bool operator>=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:273
KNumber::operator>
friend bool operator>(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:287
KNumber::toQString
QString toQString(int width=-1, int precision=-1) const
Definition: knumber.cpp:601
KNumber::pow
KNumber pow(const KNumber &x) const
Definition: knumber.cpp:682
KNumber::NegInfinity
static const KNumber NegInfinity
Definition: knumber.h:53
KNumber::groupSeparator
static QString groupSeparator()
Definition: knumber.cpp:196
KNumber::abs
KNumber abs() const
Definition: knumber.cpp:652
KNumber::asinh
KNumber asinh() const
Definition: knumber.cpp:814
KNumber::atan
KNumber atan() const
Definition: knumber.cpp:774
KNumber::NaN
static const KNumber NaN
Definition: knumber.h:54
KNumber::One
static const KNumber One
Definition: knumber.h:50
KNumber::exp
KNumber exp() const
Definition: knumber.cpp:931
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:566
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:49
KNumber::acosh
KNumber acosh() const
Definition: knumber.cpp:824
KNumber::cos
KNumber cos() const
Definition: knumber.cpp:721
KNumber::operator>>=
KNumber & operator>>=(const KNumber &rhs)
Definition: knumber.cpp:574
KNumber::operator-=
KNumber & operator-=(const KNumber &rhs)
Definition: knumber.cpp:498
KNumber::TYPE_INTEGER
Definition: knumber.h:42
KNumber::Euler
static KNumber Euler()
Definition: knumber.cpp:255
KNumber::toInt64
qint64 toInt64() const
Definition: knumber.cpp:645
KNumber::integerPart
KNumber integerPart() const
Definition: knumber.cpp:434
KNumber::TYPE_FRACTION
Definition: knumber.h:44
KNumber::floor
KNumber floor() const
Definition: knumber.cpp:891
KNumber::bin
KNumber bin(const KNumber &x) const
Definition: knumber.cpp:941
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:294
KNumber::log10
KNumber log10() const
Definition: knumber.cpp:871
detail::knumber_base
Definition: knumber_base.h:38
KNumber::operator!=
friend bool operator!=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:266
KNumber::KNumber
KNumber()
Definition: knumber.cpp:270
KNumber::tgamma
KNumber tgamma() const
Definition: knumber.cpp:741
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:861
KNumber::operator&=
KNumber & operator&=(const KNumber &rhs)
Definition: knumber.cpp:542
KNumber::exp10
KNumber exp10() const
Definition: knumber.cpp:921
QString
KNumber::operator<=
friend bool operator<=(const KNumber &lhs, const KNumber &rhs)
Definition: knumber_operators.cpp:280
KNumber::setSplitoffIntegerForFractionOutput
static void setSplitoffIntegerForFractionOutput(bool x)
Definition: knumber.cpp:219
KNumber
Definition: knumber.h:30
KNumber::swap
void swap(KNumber &other)
Definition: knumber.cpp:427
KNumber::sin
KNumber sin() const
Definition: knumber.cpp:711
KNumber::tan
KNumber tan() const
Definition: knumber.cpp:731
KNumber::ceil
KNumber ceil() const
Definition: knumber.cpp:901
KNumber::operator~
KNumber operator~() const
Definition: knumber.cpp:592
KNumber::toUint64
quint64 toUint64() const
Definition: knumber.cpp:638
KNumber::cosh
KNumber cosh() const
Definition: knumber.cpp:794
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:550
KNumber::PosInfinity
static const KNumber PosInfinity
Definition: knumber.h:52
KNumber::operator=
KNumber & operator=(const KNumber &rhs)
Definition: knumber.cpp:419
KNumber::cbrt
KNumber cbrt() const
Definition: knumber.cpp:662
KNumber::factorial
KNumber factorial() const
Definition: knumber.cpp:844
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:754
KNumber::TYPE_FLOAT
Definition: knumber.h:43
KNumber::ln
KNumber ln() const
Definition: knumber.cpp:881
KNumber::acos
KNumber acos() const
Definition: knumber.cpp:764
KNumber::atanh
KNumber atanh() const
Definition: knumber.cpp:834
knumber_operators.h
KNumber::operator-
KNumber operator-() const
Definition: knumber.cpp:583
KNumber::Type
Type
Definition: knumber.h:40
KNumber::NegOne
static const KNumber NegOne
Definition: knumber.h:51
KNumber::sinh
KNumber sinh() const
Definition: knumber.cpp:784
KNumber::sqrt
KNumber sqrt() const
Definition: knumber.cpp:672
KNumber::operator^=
KNumber & operator^=(const KNumber &rhs)
Definition: knumber.cpp:558
KNumber::operator%=
KNumber & operator%=(const KNumber &rhs)
Definition: knumber.cpp:533
KNumber::TYPE_ERROR
Definition: knumber.h:41
KNumber::tanh
KNumber tanh() const
Definition: knumber.cpp:804
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:28 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
  • ktimer
  • kwallet
  • 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