libqalculate-0.9.8
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Number Class Reference

A number. More...

#include <Number.h>

Public Member Functions

 Number ()
 
 Number (string number, const ParseOptions &po=default_parse_options)
 
 Number (int numerator, int denominator=1, int exp_10=0)
 
 Number (const Number &o)
 
void set (string number, const ParseOptions &po=default_parse_options)
 
void set (int numerator, int denominator=1, int exp_10=0)
 
void setInfinity ()
 
void setPlusInfinity ()
 
void setMinusInfinity ()
 
void setFloat (double d_value)
 
void setInternal (const cln::cl_N &cln_value)
 
void setImaginaryPart (const Number &o)
 
void setImaginaryPart (int numerator, int denominator=1, int exp_10=0)
 
void set (const Number &o)
 
void clear ()
 
const cln::cl_N & internalNumber () const
 
double floatValue () const
 
int intValue (bool *overflow=NULL) const
 
bool isApproximate () const
 
bool isApproximateType () const
 
void setApproximate (bool is_approximate=true)
 
int precision () const
 
void setPrecision (int prec)
 
bool isUndefined () const
 
bool isInfinite () const
 
bool isInfinity () const
 
bool isPlusInfinity () const
 
bool isMinusInfinity () const
 
Number realPart () const
 
Number imaginaryPart () const
 
Number numerator () const
 
Number denominator () const
 
Number complexNumerator () const
 
Number complexDenominator () const
 
void operator= (const Number &o)
 
void operator-- (int)
 
void operator++ (int)
 
Number operator- () const
 
Number operator* (const Number &o) const
 
Number operator/ (const Number &o) const
 
Number operator+ (const Number &o) const
 
Number operator- (const Number &o) const
 
Number operator^ (const Number &o) const
 
Number operator&& (const Number &o) const
 
Number operator|| (const Number &o) const
 
Number operator! () const
 
void operator*= (const Number &o)
 
void operator/= (const Number &o)
 
void operator+= (const Number &o)
 
void operator-= (const Number &o)
 
void operator^= (const Number &o)
 
bool operator== (const Number &o) const
 
bool operator!= (const Number &o) const
 
bool bitAnd (const Number &o)
 
bool bitOr (const Number &o)
 
bool bitXor (const Number &o)
 
bool bitNot ()
 
bool bitEqv (const Number &o)
 
bool shiftLeft (const Number &o)
 
bool shiftRight (const Number &o)
 
bool shift (const Number &o)
 
bool hasRealPart () const
 
bool hasImaginaryPart () const
 
bool isComplex () const
 
bool isInteger () const
 
Number integer () const
 
bool isRational () const
 
bool isReal () const
 
bool isFraction () const
 
bool isZero () const
 
bool isOne () const
 
bool isTwo () const
 
bool isI () const
 
bool isMinusI () const
 
bool isMinusOne () const
 
bool isNegative () const
 
bool isNonNegative () const
 
bool isPositive () const
 
bool isNonPositive () const
 
bool realPartIsNegative () const
 
bool realPartIsPositive () const
 
bool imaginaryPartIsNegative () const
 
bool imaginaryPartIsPositive () const
 
bool hasNegativeSign () const
 
bool hasPositiveSign () const
 
bool equalsZero () const
 
bool equals (const Number &o) const
 
bool equalsApproximately (const Number &o, int prec) const
 
ComparisonResult compare (const Number &o) const
 
ComparisonResult compareApproximately (const Number &o, int prec=EQUALS_PRECISION_LOWEST) const
 
ComparisonResult compareImaginaryParts (const Number &o) const
 
ComparisonResult compareRealParts (const Number &o) const
 
bool isGreaterThan (const Number &o) const
 
bool isLessThan (const Number &o) const
 
bool isGreaterThanOrEqualTo (const Number &o) const
 
bool isLessThanOrEqualTo (const Number &o) const
 
bool isEven () const
 
bool denominatorIsEven () const
 
bool denominatorIsTwo () const
 
bool numeratorIsEven () const
 
bool numeratorIsOne () const
 
bool numeratorIsMinusOne () const
 
bool isOdd () const
 
int integerLength () const
 
bool add (const Number &o)
 
bool subtract (const Number &o)
 
bool multiply (const Number &o)
 
bool divide (const Number &o)
 
bool recip ()
 
bool raise (const Number &o, bool try_exact=true)
 
bool exp10 (const Number &o)
 
bool exp2 (const Number &o)
 
bool exp10 ()
 
bool exp2 ()
 
bool square ()
 
bool negate ()
 
void setNegative (bool is_negative)
 
bool abs ()
 
bool signum ()
 
bool round (const Number &o)
 
bool floor (const Number &o)
 
bool ceil (const Number &o)
 
bool trunc (const Number &o)
 
bool mod (const Number &o)
 
bool isqrt ()
 
bool round ()
 
bool floor ()
 
bool ceil ()
 
bool trunc ()
 
bool frac ()
 
bool rem (const Number &o)
 
bool smod (const Number &o)
 
bool irem (const Number &o)
 
bool irem (const Number &o, Number &q)
 
bool iquo (const Number &o)
 
bool iquo (const Number &o, Number &r)
 
int getBoolean () const
 
void toBoolean ()
 
void setTrue (bool is_true=true)
 
void setFalse ()
 
void setLogicalNot ()
 
void e ()
 
void pi ()
 
void catalan ()
 
void euler ()
 
bool zeta ()
 
bool sin ()
 
bool asin ()
 
bool sinh ()
 
bool asinh ()
 
bool cos ()
 
bool acos ()
 
bool cosh ()
 
bool acosh ()
 
bool tan ()
 
bool atan ()
 
bool tanh ()
 
bool atanh ()
 
bool ln ()
 
bool log (const Number &o)
 
bool exp ()
 
bool lambertW ()
 
bool gcd (const Number &o)
 
bool lcm (const Number &o)
 
bool factorial ()
 
bool multiFactorial (const Number &o)
 
bool doubleFactorial ()
 
bool binomial (const Number &m, const Number &k)
 
bool factorize (vector< Number > &factors)
 
bool add (const Number &o, MathOperation op)
 
string printNumerator (int base=10, bool display_sign=true, BaseDisplay base_display=BASE_DISPLAY_NORMAL, bool lower_case=false) const
 
string printDenominator (int base=10, bool display_sign=true, BaseDisplay base_display=BASE_DISPLAY_NORMAL, bool lower_case=false) const
 
string printImaginaryNumerator (int base=10, bool display_sign=true, BaseDisplay base_display=BASE_DISPLAY_NORMAL, bool lower_case=false) const
 
string printImaginaryDenominator (int base=10, bool display_sign=true, BaseDisplay base_display=BASE_DISPLAY_NORMAL, bool lower_case=false) const
 
string print (const PrintOptions &po=default_print_options, const InternalPrintStruct &ips=top_ips) const
 

Protected Member Functions

void removeFloatZeroPart ()
 
void testApproximate ()
 
void testInteger ()
 
void setPrecisionAndApproximateFrom (const Number &o)
 

Protected Attributes

cln::cl_N value
 
bool b_inf
 
bool b_pinf
 
bool b_minf
 
bool b_approx
 
int i_precision
 

Detailed Description

A number.

Can be rational, floating point, complex or infinite. Has arbitrary precision (uses Calculator::precision()) and infinitely large rational numbers. Implimented using CLN numbers.

Constructor & Destructor Documentation

Number::Number ( )

Constructs a number initialized as zero.

Number::Number ( string  number,
const ParseOptions po = default_parse_options 
)

Constructs a number parsing a text string.

Parameters
numberText string to read number from.
poOptions for parsing the text string.
Number::Number ( int  numerator,
int  denominator = 1,
int  exp_10 = 0 
)

Constructs a rational number.

Parameters
numerator
denominator
exp_10
Number::Number ( const Number o)

Constructs a copy of a number.

Member Function Documentation

bool Number::add ( const Number o)

Add to the number (x+o).

Parameters
oNumber to add.
Returns
true if the operation was successful.
void Number::catalan ( )

Set the number to Catalan's constant, calculated with the current default precision.

bool Number::divide ( const Number o)

Divide the number (x/o).

Parameters
oNumber to divide by.
Returns
true if the operation was successful.
void Number::e ( )

Set the number to e, the base of natural logarithm, calculated with the current default precision.

void Number::euler ( )

Set the number to Euler's constant, calculated with the current default precision.

bool Number::exp10 ( const Number o)

Multiply the number with a power of ten (x*10^o).

Parameters
oNumber to raise 10 by.
Returns
true if the operation was successful.
bool Number::exp10 ( )

Set the number to ten raised by the number (10^x).

Returns
true if the operation was successful.
bool Number::exp2 ( const Number o)

Multiply the number with a power of two (x*2^o).

Parameters
oNumber to raise 2 by.
Returns
true if the operation was successful.
bool Number::exp2 ( )

Set the number to two raised by the number (2^x).

Returns
true if the operation was successful.
Number Number::imaginaryPart ( ) const

Returns the imaginary part as real number of the number if it is complex, or zero if it is real.

Returns
true if the imaginary part of a complex number.
int Number::intValue ( bool *  overflow = NULL) const

Converts a number to an integer. If the number does not represent an integer it will rounded using round().

Parameters
[out]overflowIf overflow is non-null it will be set to true if the number was to large to fit in an int.
Returns
Resulting integer.
bool Number::isApproximate ( ) const

Returns true if the number is approximate.

Returns
true if the number is approximate.
bool Number::isApproximateType ( ) const

Returns true if the number has an approximate representation/is of approximate type – if it is a floating point number. Numbers of approximate type are always approximate, but the reversed relation is not always true.

Returns
true if the number has an approximate representation.
bool Number::isInfinite ( ) const

Returns true if the number is infinity, plus infinity or minus infinity.

Returns
true if the number is infinite.
bool Number::isInfinity ( ) const

Returns true if the number is infinity, if the number is plus or minus infinity (which is not known).

Returns
true if the number is infinity.
bool Number::isMinusInfinity ( ) const

Returns true if the number is minus infinity.

Returns
true if the number is minus infinity.
bool Number::isPlusInfinity ( ) const

Returns true if the number is plus infinity.

Returns
true if the number is plus infinity.
bool Number::multiply ( const Number o)

Multiply the number (x*o).

Parameters
oNumber to multiply with.
Returns
true if the operation was successful.
bool Number::negate ( )

Negate the number (-x).

Returns
true if the operation was successful.
void Number::pi ( )

Set the number to pi, Archimede's constant, calculated with the current default precision.

int Number::precision ( ) const

Returns the.precision of the number.

Returns
Precision of the number or -1 if the number is exact or the precision has not been set.
bool Number::raise ( const Number o,
bool  try_exact = true 
)

Raise the number (x^o).

Parameters
oNumber to raise to.
try_exactIf an exact solution should be tried first (might be slow).
Returns
true if the operation was successful.
Number Number::realPart ( ) const

Returns the real part of the number if it is complex, or a copy if it is real.

Returns
true if the real part of a complex number.
bool Number::recip ( )

Invert the number (1/x).

Returns
true if the operation was successful.
void Number::setApproximate ( bool  is_approximate = true)

Defines the number as approximate or exact. If a number of approximate type is set as exact, it will be converted to a rational number.

Parameters
is_approximateIf the number shall be regarded as approximate.
bool Number::square ( )

Raise the number by two (x^2).

Returns
true if the operation was successful.
bool Number::subtract ( const Number o)

Subtracts from to the number (x-o).

Parameters
oNumber to subtract.
Returns
true if the operation was successful.
bool Number::zeta ( )

Set the number to Riemann's zeta with the number as integral point. The number must be an integer greater than one.

Returns
true if the calculation was successful.

The documentation for this class was generated from the following file: