# libqalculate/includes.h File Reference

`#include <vector>`
`#include <string>`
`#include <stack>`
`#include <list>`
`#include <errno.h>`
`#include <stddef.h>`
`#include <math.h>`
`#include <float.h>`
`#include <stdarg.h>`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <unistd.h>`

## Classes

struct | SortOptions
| Options for ordering the parts of a mathematical expression/result before display. More...
struct | PrintOptions
| Options for formatting and display of mathematical structures/results. More...
struct | InternalPrintStruct
struct | ParseOptions
| Options for parsing expressions. More...
struct | EvaluationOptions
| Options for calculation. More...

## Defines

#define | COMPARISON_MIGHT_BE_LESS_OR_GREATER(i) (i == COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_NOT_EQUAL)
#define | COMPARISON_NOT_FULLY_KNOWN(i) (i == COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_NOT_EQUAL || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER)
#define | COMPARISON_IS_EQUAL_OR_GREATER(i) (i == COMPARISON_RESULT_EQUAL || i == COMPARISON_RESULT_GREATER || i == COMPARISON_RESULT_EQUAL_OR_GREATER)
#define | COMPARISON_IS_EQUAL_OR_LESS(i) (i == COMPARISON_RESULT_EQUAL || i == COMPARISON_RESULT_LESS || i == COMPARISON_RESULT_EQUAL_OR_LESS)
#define | COMPARISON_IS_NOT_EQUAL(i) (i == COMPARISON_RESULT_NOT_EQUAL || i == COMPARISON_RESULT_LESS || i == COMPARISON_RESULT_GREATER)
#define | COMPARISON_MIGHT_BE_EQUAL(i) (i == COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER)
#define | COMPARISON_MIGHT_BE_NOT_EQUAL(i) (i == COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER)
#define | NR_OF_PRIMES 174
#define | SQP_LT_1000 11
#define | SQP_LT_2000 17
#define | SQP_LT_10000 28
#define | SQP_LT_25000 40
#define | SQP_LT_100000 68
#define | BASE_ROMAN_NUMERALS -1
#define | BASE_TIME -2
#define | BASE_BINARY 2
#define | BASE_OCTAL 8
#define | BASE_DECIMAL 10
#define | BASE_HEXADECIMAL 16
#define | BASE_SEXAGESIMAL 60
#define | EXP_BASE_3 -3
#define | EXP_PRECISION -1
#define | EXP_NONE 0
#define | EXP_PURE 1
#define | EXP_SCIENTIFIC 3
#define | CALCULATOR calculator
#define | DEFAULT_PRECISION 8
#define | PRECISION CALCULATOR->getPrecision()
#define | SIGN_POWER_0 "°"
#define | SIGN_POWER_1 "¹"
#define | SIGN_POWER_2 "²"
#define | SIGN_POWER_3 "³"
#define | SIGN_EURO "€"
#define | SIGN_POUND "£"
#define | SIGN_CENT "¢"
#define | SIGN_YEN "¥"
#define | SIGN_MICRO "µ"
#define | SIGN_PI "π"
#define | SIGN_MULTIPLICATION "×"
#define | SIGN_MULTIDOT "⋅"
#define | SIGN_MULTIBULLET "∙"
#define | SIGN_SMALLCIRCLE "•"
#define | SIGN_DIVISION_SLASH "∕"
#define | SIGN_DIVISION "÷"
#define | SIGN_MINUS "−"
#define | SIGN_PLUS "＋"
#define | SIGN_SQRT "√"
#define | SIGN_ALMOST_EQUAL "≈"
#define | SIGN_APPROXIMATELY_EQUAL "≅"
#define | SIGN_ZETA "ζ"
#define | SIGN_GAMMA "γ"
#define | SIGN_PHI "φ"
#define | SIGN_LESS_OR_EQUAL "≤"
#define | SIGN_GREATER_OR_EQUAL "≥"
#define | SIGN_NOT_EQUAL "≠"
#define | SIGN_CAPITAL_SIGMA "Σ"
#define | SIGN_CAPITAL_PI "Π"
#define | SIGN_CAPITAL_OMEGA "Ω"
#define | SIGN_CAPITAL_GAMMA "Γ"
#define | SIGN_CAPITAL_BETA "Β"
#define | SIGN_INFINITY "∞"
#define | SIGN_PLUSMINUS "±"
#define | ID_WRAP_LEFT_CH '{'
#define | ID_WRAP_RIGHT_CH '}'
#define | DOT_CH '.'
#define | ZERO_CH '0'
#define | ONE_CH '1'
#define | TWO_CH '2'
#define | THREE_CH '3'
#define | FOUR_CH '4'
#define | FIVE_CH '5'
#define | SIX_CH '6'
#define | SEVEN_CH '7'
#define | EIGHT_CH '8'
#define | NINE_CH '9'
#define | PLUS_CH '+'
#define | MINUS_CH '-'
#define | MULTIPLICATION_CH '*'
#define | MULTIPLICATION_2_CH ' '
#define | DIVISION_CH '/'
#define | EXP_CH 'E'
#define | EXP2_CH 'e'
#define | POWER_CH '^'
#define | SPACE_CH ' '
#define | LEFT_PARENTHESIS_CH '('
#define | RIGHT_PARENTHESIS_CH ')'
#define | LEFT_VECTOR_WRAP_CH '['
#define | RIGHT_VECTOR_WRAP_CH ']'
#define | FUNCTION_VAR_PRE_CH '\\'
#define | COMMA_CH ','
#define | NAME_NUMBER_PRE_CH '_'
#define | UNIT_DIVISION_CH '/'
#define | AND_CH '&'
#define | OR_CH '|'
#define | LESS_CH '<'
#define | GREATER_CH '>'
#define | BITWISE_NOT_CH '~'
#define | LOGICAL_NOT_CH '!'
#define | NOT_CH '!'
#define | EQUALS_CH '='
#define | ID_WRAP_LEFT "{"
#define | ID_WRAP_RIGHT "}"
#define | ID_WRAPS "{}"
#define | DOT "."
#define | SEXADOT ":"
#define | COMMA ","
#define | COMMAS ",;"
#define | NUMBERS "0123456789"
#define | NUMBER_ELEMENTS "0123456789.:"
#define | SIGNS "+-*/^"
#define | OPERATORS "~+-*/^&|!<>="
#define | PARENTHESISS "()"
#define | LEFT_PARENTHESIS "("
#define | RIGHT_PARENTHESIS ")"
#define | VECTOR_WRAPS "[]"
#define | LEFT_VECTOR_WRAP "["
#define | RIGHT_VECTOR_WRAP "]"
#define | SPACES " \t\n"
#define | SPACE " "
#define | RESERVED "\'@?\\{}\""
#define | PLUS "+"
#define | MINUS "-"
#define | MULTIPLICATION "*"
#define | MULTIPLICATION_2 " "
#define | DIVISION "/"
#define | EXP "E"
#define | EXPS "Ee"
#define | POWER "^"
#define | LOGICAL_AND "&&"
#define | LOGICAL_OR "||"
#define | LOGICAL_NOT "!"
#define | BITWISE_AND "&"
#define | BITWISE_OR "|"
#define | BITWISE_NOT "~"
#define | SHIFT_RIGHT ">>"
#define | SHIFT_LEFT "<<"
#define | LESS "<"
#define | GREATER ">"
#define | NOT "!"
#define | EQUALS "="
#define | SINF "INF"
#define | SNAN "NAN"
#define | UNDERSCORE "_"
#define | NOT_IN_NAMES RESERVED OPERATORS SPACES SEXADOT DOT VECTOR_WRAPS PARENTHESISS COMMAS

## Enumerations

enum | ExpressionItemType { TYPE_VARIABLE, TYPE_FUNCTION, TYPE_UNIT }
| Type of ExpressionItem. More...
enum | ComparisonResult { COMPARISON_RESULT_EQUAL, COMPARISON_RESULT_GREATER, COMPARISON_RESULT_LESS, COMPARISON_RESULT_EQUAL_OR_GREATER, COMPARISON_RESULT_EQUAL_OR_LESS, COMPARISON_RESULT_NOT_EQUAL, COMPARISON_RESULT_UNKNOWN }
| The result of a comparison of two values.
enum | PlotLegendPlacement { PLOT_LEGEND_NONE, PLOT_LEGEND_TOP_LEFT, PLOT_LEGEND_TOP_RIGHT, PLOT_LEGEND_BOTTOM_LEFT, PLOT_LEGEND_BOTTOM_RIGHT, PLOT_LEGEND_BELOW, PLOT_LEGEND_OUTSIDE }
| Placement of legend.
enum | PlotStyle { PLOT_STYLE_LINES, PLOT_STYLE_POINTS, PLOT_STYLE_POINTS_LINES, PLOT_STYLE_BOXES, PLOT_STYLE_HISTOGRAM, PLOT_STYLE_STEPS, PLOT_STYLE_CANDLESTICKS, PLOT_STYLE_DOTS }
| Plot type/style.
enum | PlotSmoothing { PLOT_SMOOTHING_NONE, PLOT_SMOOTHING_UNIQUE, PLOT_SMOOTHING_CSPLINES, PLOT_SMOOTHING_BEZIER, PLOT_SMOOTHING_SBEZIER }
| Smoothing a plotted lines.
enum | PlotFileType { PLOT_FILETYPE_AUTO, PLOT_FILETYPE_PNG, PLOT_FILETYPE_PS, PLOT_FILETYPE_EPS, PLOT_FILETYPE_LATEX, PLOT_FILETYPE_SVG, PLOT_FILETYPE_FIG }
| File type for saving plot to image.
enum | MathOperation { OPERATION_MULTIPLY, OPERATION_DIVIDE, OPERATION_ADD, OPERATION_SUBTRACT, OPERATION_RAISE, OPERATION_EXP10, OPERATION_LOGICAL_AND, OPERATION_LOGICAL_OR, OPERATION_LOGICAL_XOR, OPERATION_BITWISE_AND, OPERATION_BITWISE_OR, OPERATION_BITWISE_XOR, OPERATION_LESS, OPERATION_GREATER, OPERATION_EQUALS_LESS, OPERATION_EQUALS_GREATER, OPERATION_EQUALS, OPERATION_NOT_EQUALS }
| Mathematical operations.
enum | ComparisonType { COMPARISON_LESS, COMPARISON_GREATER, COMPARISON_EQUALS_LESS, COMPARISON_EQUALS_GREATER, COMPARISON_EQUALS, COMPARISON_NOT_EQUALS }
| Comparison signs for comparison structures.
enum | SortFlags { SORT_DEFAULT = 1 << 0, SORT_SCIENTIFIC = 1 << 1 }
enum | NumberFractionFormat { FRACTION_DECIMAL, FRACTION_DECIMAL_EXACT, FRACTION_FRACTIONAL, FRACTION_COMBINED }
enum | MultiplicationSign { MULTIPLICATION_SIGN_ASTERISK, MULTIPLICATION_SIGN_DOT, MULTIPLICATION_SIGN_X }
enum | DivisionSign { DIVISION_SIGN_SLASH, DIVISION_SIGN_DIVISION_SLASH, DIVISION_SIGN_DIVISION }
enum | BaseDisplay { BASE_DISPLAY_NONE, BASE_DISPLAY_NORMAL, BASE_DISPLAY_ALTERNATIVE }
enum | ApproximationMode { APPROXIMATION_EXACT, APPROXIMATION_TRY_EXACT, APPROXIMATION_APPROXIMATE }
enum | StructuringMode { STRUCTURING_NONE, STRUCTURING_SIMPLIFY, STRUCTURING_FACTORIZE }
enum | AutoPostConversion { POST_CONVERSION_NONE, POST_CONVERSION_BEST, POST_CONVERSION_BASE }
enum | ReadPrecisionMode { DONT_READ_PRECISION, ALWAYS_READ_PRECISION, READ_PRECISION_WHEN_DECIMALS }
enum | AngleUnit { ANGLE_UNIT_NONE, ANGLE_UNIT_RADIANS, ANGLE_UNIT_DEGREES, ANGLE_UNIT_GRADIANS }

## Variables

static string | empty_string
static const int | PRIMES []
static const int | SQUARE_PRIMES []
static struct SortOptions | default_sort_options
static struct PrintOptions | default_print_options
static struct InternalPrintStruct | top_ips
static struct ParseOptions | default_parse_options
static struct EvaluationOptions | default_evaluation_options
MathStructure | m_undefined
MathStructure | m_empty_vector
MathStructure | m_empty_matrix
MathStructure | m_zero
MathStructure | m_one
MathStructure | m_minus_one
Number | nr_zero
Number | nr_one
Number | nr_minus_one
EvaluationOptions | no_evaluation
ExpressionName | empty_expression_name
Calculator * | calculator

## Detailed Description

## Enumeration Type Documentation

enum ApproximationMode

Enumerator:

  APPROXIMATION_EXACT | Allow only exact results.
  APPROXIMATION_TRY_EXACT | Try to make the result as exact as possible.
  APPROXIMATION_APPROXIMATE | Calculate the result approximately directly.

enum AutoPostConversion

Enumerator:

  POST_CONVERSION_NONE | Do not do any conversion of units in addition to syncing.
  POST_CONVERSION_BEST | Convert to the best suited SI units (the least amount of units).
  POST_CONVERSION_BASE | Convert to base units.

enum ExpressionItemType

Type of ExpressionItem.

Enumerator:

  TYPE_VARIABLE | class Variable
  TYPE_FUNCTION | class MathFunction
  TYPE_UNIT | class Unit

enum NumberFractionFormat

Enumerator:

  FRACTION_DECIMAL | Display numbers in decimal, not fractional, format (ex. 0.333333).
  FRACTION_DECIMAL_EXACT | Display as fraction if necessary to get an exact display of the result (ex. 1/3, but 0.25).
  FRACTION_FRACTIONAL | Display as fraction (ex. 4/3).
  FRACTION_COMBINED | Display as an integer and a fraction (ex. 3 + 1/2).

enum StructuringMode

Enumerator:

  STRUCTURING_NONE | Do not do any factorization or additional simplifications.
  STRUCTURING_SIMPLIFY | Simplify the result as much as possible.
  STRUCTURING_FACTORIZE | Factorize the result.

## Variable Documentation

const int PRIMES[]`[static]`

Initial value:

     {
    2, 3, 5, 7, 11, 13, 17, 19, 21, 23, 29, 31, 37, 41, 31, 37,
    41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103,
    107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167,
    173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
    239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307,
    311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379,
    383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449,
    457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523,
    541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
    613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677,
    683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761,
    769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853,
    857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937,
    941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013
    }

const int SQUARE_PRIMES[]`[static]`

Initial value:

     {
    4, 9, 25, 49, 121, 169, 289, 361, 441, 529,
    841, 961, 1369, 1681, 961, 1369, 1681, 1849, 2209, 2809,
    3481, 3721, 4489, 5041, 5329, 6241, 6889, 7921, 9409, 10201,
    10609, 11449, 11881, 12769, 16129, 17161, 18769, 19321, 22201, 22801,
    24649, 26569, 27889, 29929, 32041, 32761, 36481, 37249, 38809, 39601,
    44521, 49729, 51529, 52441, 54289, 57121, 58081, 63001, 66049, 69169,
    72361, 73441, 76729, 78961, 80089, 85849, 94249, 96721, 97969, 100489,
    109561, 113569, 120409, 121801, 124609, 128881, 134689, 139129, 143641, 146689,
    151321, 157609, 160801, 167281, 175561, 177241, 185761, 187489, 192721, 196249,
    201601, 208849, 212521, 214369, 218089, 229441, 237169, 241081, 249001, 253009,
    259081, 271441, 273529, 292681, 299209, 310249, 316969, 323761, 326041, 332929,
    344569, 351649, 358801, 361201, 368449, 375769, 380689, 383161, 398161, 410881,
    413449, 418609, 426409, 434281, 436921, 452929, 458329, 466489, 477481, 491401,
    502681, 516961, 528529, 537289, 546121, 552049, 564001, 573049, 579121, 591361,
    597529, 619369, 635209, 654481, 657721, 674041, 677329, 683929, 687241, 703921,
    727609, 734449, 737881, 744769, 769129, 776161, 779689, 786769, 822649, 829921,
    844561, 863041, 877969, 885481, 896809, 908209, 935089, 942841, 954529, 966289,
    982081, 994009, 1018081, 1026169
    }