• 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_float.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_FLOAT_H_
20 #define KNUMBER_FLOAT_H_
21 
22 #include "knumber_base.h"
23 
24 class KNumber;
25 
26 namespace detail {
27 
28 class knumber_float : public knumber_base {
29  friend class ::KNumber;
30  friend class knumber_error;
31  friend class knumber_integer;
32  friend class knumber_fraction;
33 
34 private:
35 #ifdef KNUMBER_USE_MPFR
36  static const mpfr_rnd_t rounding_mode;
37  static const mpfr_prec_t precision;
38 #endif
39 
40 public:
41  explicit knumber_float(const QString &s);
42  explicit knumber_float(double value);
43 #ifdef HAVE_LONG_DOUBLE
44  explicit knumber_float(long double value);
45 #endif
46 
47  explicit knumber_float(mpf_t mpf);
48  virtual ~knumber_float();
49 
50 private:
51  // conversion constructors
52  explicit knumber_float(const knumber_integer *value);
53  explicit knumber_float(const knumber_fraction *value);
54  explicit knumber_float(const knumber_float *value);
55  explicit knumber_float(const knumber_error *value);
56 
57 public:
58  virtual QString toString(int precision) const;
59  virtual quint64 toUint64() const;
60  virtual qint64 toInt64() const;
61 
62 public:
63  virtual bool is_integer() const;
64  virtual bool is_zero() const;
65  virtual int sign() const;
66 
67 public:
68  virtual knumber_base *add(knumber_base *rhs);
69  virtual knumber_base *sub(knumber_base *rhs);
70  virtual knumber_base *mul(knumber_base *rhs);
71  virtual knumber_base *div(knumber_base *rhs);
72  virtual knumber_base *mod(knumber_base *rhs);
73 
74 public:
75  virtual knumber_base *pow(knumber_base *rhs);
76  virtual knumber_base *neg();
77  virtual knumber_base *cmp();
78  virtual knumber_base *abs();
79  virtual knumber_base *sqrt();
80  virtual knumber_base *cbrt();
81  virtual knumber_base *factorial();
82  virtual knumber_base *reciprocal();
83  virtual knumber_base *tgamma();
84 
85 public:
86  virtual knumber_base *log2();
87  virtual knumber_base *log10();
88  virtual knumber_base *ln();
89  virtual knumber_base *floor();
90  virtual knumber_base *ceil();
91  virtual knumber_base *exp2();
92  virtual knumber_base *exp10();
93  virtual knumber_base *exp();
94  virtual knumber_base *bin(knumber_base *rhs);
95 
96 public:
97  virtual knumber_base *sin();
98  virtual knumber_base *cos();
99  virtual knumber_base *tan();
100  virtual knumber_base *asin();
101  virtual knumber_base *acos();
102  virtual knumber_base *atan();
103  virtual knumber_base *sinh();
104  virtual knumber_base *cosh();
105  virtual knumber_base *tanh();
106  virtual knumber_base *asinh();
107  virtual knumber_base *acosh();
108  virtual knumber_base *atanh();
109 
110 public:
111  virtual int compare(knumber_base *rhs);
112 
113 public:
114  virtual knumber_base *bitwise_and(knumber_base *rhs);
115  virtual knumber_base *bitwise_xor(knumber_base *rhs);
116  virtual knumber_base *bitwise_or(knumber_base *rhs);
117  virtual knumber_base *bitwise_shift(knumber_base *rhs);
118 
119 public:
120  virtual knumber_base *clone();
121 
122 private:
123  template <double F(double)>
124  knumber_base *execute_libc_func(double x);
125 
126  template <double F(double, double)>
127  knumber_base *execute_libc_func(double x, double y);
128 
129 private:
130  mpf_t mpf_;
131 };
132 
133 }
134 
135 #endif
detail::knumber_float::cosh
virtual knumber_base * cosh()
Definition: knumber_float.cpp:647
detail::knumber_float::floor
virtual knumber_base * floor()
Definition: knumber_float.cpp:463
detail::knumber_float::tanh
virtual knumber_base * tanh()
Definition: knumber_float.cpp:664
detail::knumber_float::knumber_float
knumber_float(const QString &s)
Definition: knumber_float.cpp:87
detail::knumber_float::atanh
virtual knumber_base * atanh()
Definition: knumber_float.cpp:740
detail::knumber_float::add
virtual knumber_base * add(knumber_base *rhs)
Definition: knumber_float.cpp:171
detail::knumber_float::sqrt
virtual knumber_base * sqrt()
Definition: knumber_float.cpp:375
detail::knumber_float::tan
virtual knumber_base * tan()
Definition: knumber_float.cpp:529
detail::knumber_float::exp10
virtual knumber_base * exp10()
Definition: knumber_float.cpp:964
detail::knumber_float::mul
virtual knumber_base * mul(knumber_base *rhs)
Definition: knumber_float.cpp:219
detail::knumber_float::sign
virtual int sign() const
Definition: knumber_float.cpp:857
detail::knumber_float::pow
virtual knumber_base * pow(knumber_base *rhs)
Definition: knumber_float.cpp:757
detail::knumber_float::cbrt
virtual knumber_base * cbrt()
Definition: knumber_float.cpp:397
detail::knumber_float::toInt64
virtual qint64 toInt64() const
Definition: knumber_float.cpp:1015
detail::knumber_float::bin
virtual knumber_base * bin(knumber_base *rhs)
Definition: knumber_float.cpp:1022
detail::knumber_float::sin
virtual knumber_base * sin()
Definition: knumber_float.cpp:439
detail::knumber_base
Definition: knumber_base.h:38
detail::knumber_fraction
Definition: knumber_fraction.h:28
detail::knumber_float::ln
virtual knumber_base * ln()
Definition: knumber_float.cpp:920
detail::knumber_float::toUint64
virtual quint64 toUint64() const
Definition: knumber_float.cpp:1008
detail::knumber_float::tgamma
virtual knumber_base * tgamma()
Definition: knumber_float.cpp:681
detail::knumber_integer
Definition: knumber_integer.h:28
detail::knumber_float::toString
virtual QString toString(int precision) const
Definition: knumber_float.cpp:818
detail::knumber_float::div
virtual knumber_base * div(knumber_base *rhs)
Definition: knumber_float.cpp:253
detail::knumber_float::factorial
virtual knumber_base * factorial()
Definition: knumber_float.cpp:424
detail::knumber_float::bitwise_or
virtual knumber_base * bitwise_or(knumber_base *rhs)
Definition: knumber_float.cpp:327
QString
detail::knumber_float::sub
virtual knumber_base * sub(knumber_base *rhs)
Definition: knumber_float.cpp:195
detail::knumber_float::bitwise_xor
virtual knumber_base * bitwise_xor(knumber_base *rhs)
Definition: knumber_float.cpp:317
detail::knumber_float::asinh
virtual knumber_base * asinh()
Definition: knumber_float.cpp:706
detail::knumber_float::cmp
virtual knumber_base * cmp()
Definition: knumber_float.cpp:357
detail::knumber_float::exp2
virtual knumber_base * exp2()
Definition: knumber_float.cpp:942
detail::knumber_float::acos
virtual knumber_base * acos()
Definition: knumber_float.cpp:579
KNumber
Definition: knumber.h:30
detail::knumber_float::mod
virtual knumber_base * mod(knumber_base *rhs)
Definition: knumber_float.cpp:291
knumber_base.h
detail::knumber_float::exp
virtual knumber_base * exp()
Definition: knumber_float.cpp:986
detail::knumber_float::reciprocal
virtual knumber_base * reciprocal()
Definition: knumber_float.cpp:865
detail::knumber_float::log10
virtual knumber_base * log10()
Definition: knumber_float.cpp:898
detail::knumber_float::acosh
virtual knumber_base * acosh()
Definition: knumber_float.cpp:723
detail::knumber_float::abs
virtual knumber_base * abs()
Definition: knumber_float.cpp:366
detail::knumber_float::atan
virtual knumber_base * atan()
Definition: knumber_float.cpp:606
detail::knumber_float::cos
virtual knumber_base * cos()
Definition: knumber_float.cpp:506
detail::knumber_float::bitwise_shift
virtual knumber_base * bitwise_shift(knumber_base *rhs)
Definition: knumber_float.cpp:337
detail::knumber_float::asin
virtual knumber_base * asin()
Definition: knumber_float.cpp:552
detail::knumber_float
Definition: knumber_float.h:28
detail::knumber_float::compare
virtual int compare(knumber_base *rhs)
Definition: knumber_float.cpp:795
detail::knumber_float::clone
virtual knumber_base * clone()
Definition: knumber_float.cpp:155
detail::knumber_error
Definition: knumber_error.h:28
detail::knumber_float::ceil
virtual knumber_base * ceil()
Definition: knumber_float.cpp:485
detail::knumber_float::neg
virtual knumber_base * neg()
Definition: knumber_float.cpp:348
detail::knumber_float::sinh
virtual knumber_base * sinh()
Definition: knumber_float.cpp:629
detail::knumber_float::is_integer
virtual bool is_integer() const
Definition: knumber_float.cpp:841
detail::knumber_float::log2
virtual knumber_base * log2()
Definition: knumber_float.cpp:876
detail::knumber_float::~knumber_float
virtual ~knumber_float()
Definition: knumber_float.cpp:163
detail::knumber_float::bitwise_and
virtual knumber_base * bitwise_and(knumber_base *rhs)
Definition: knumber_float.cpp:307
detail::knumber_float::is_zero
virtual bool is_zero() const
Definition: knumber_float.cpp:849
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