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 <string.h>`
`#include <iostream>`
`#include <unistd.h>`
`#include <stdint.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...

## Macros

#define | QALCULATE_MAJOR_VERSION (5)
#define | QALCULATE_MINOR_VERSION (9)
#define | QALCULATE_MICRO_VERSION (0)
#define | COMPARISON_MIGHT_BE_LESS_OR_GREATER(i)
#define | COMPARISON_NOT_FULLY_KNOWN(i)
#define | COMPARISON_IS_EQUAL_OR_GREATER(i)
#define | COMPARISON_IS_EQUAL_OR_LESS(i)
#define | COMPARISON_IS_NOT_EQUAL(i)
#define | COMPARISON_MIGHT_BE_EQUAL(i)
#define | COMPARISON_MIGHT_BE_NOT_EQUAL(i)
#define | NR_OF_PRIMES 600
#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 | NR_OF_SQUARE_PRIMES 170
#define | LARGEST_RAISED_PRIME_EXPONENT 10
#define | BASE_ROMAN_NUMERALS -1
| Special values for PrintOptions::base and ParseOptions::base.
#define | BASE_TIME -2
#define | BASE_BINARY 2
#define | BASE_OCTAL 8
#define | BASE_DECIMAL 10
#define | BASE_DUODECIMAL 12
#define | BASE_HEXADECIMAL 16
#define | BASE_SEXAGESIMAL 60
#define | BASE_SEXAGESIMAL_2 62
#define | BASE_SEXAGESIMAL_3 63
#define | BASE_LATITUDE 70
#define | BASE_LATITUDE_2 71
#define | BASE_LONGITUDE 72
#define | BASE_LONGITUDE_2 73
#define | BASE_CUSTOM -3
| Use Calculate::setCustomOutputBase() or Calculate::setCustomInputBase() to specify a number base which greater than 36, negative, or a non-integer.
#define | BASE_UNICODE -4
#define | BASE_GOLDEN_RATIO -5
#define | BASE_SUPER_GOLDEN_RATIO -6
#define | BASE_PI -7
#define | BASE_E -8
#define | BASE_SQRT2 -9
#define | BASE_BINARY_DECIMAL -20
#define | BASE_BIJECTIVE_26 -26
#define | BASE_FP16 -30
#define | BASE_FP32 -31
#define | BASE_FP64 -32
#define | BASE_FP128 -33
#define | BASE_FP80 -34
#define | BASE_IS_SEXAGESIMAL(x)
#define | EXP_BASE_3 -3
| Primary values for PrintOptions::min_exp.
#define | EXP_PRECISION -1
#define | EXP_NONE 0
#define | EXP_PURE 1
#define | EXP_SCIENTIFIC 3
#define | TZ_TRUNCATE -21586
#define | TZ_DOZENAL -53172
#define | STRUCTURING_SIMPLIFY STRUCTURING_EXPAND
#define | POST_CONVERSION_BEST POST_CONVERSION_OPTIMAL_SI
#define | PARSE_PERCENT_AS_ORDINARY_CONSTANT 0x10
#define | CALCULATOR calculator
#define | DEFAULT_PRECISION 8
#define | PRECISION (CALCULATOR ? CALCULATOR->getPrecision() : DEFAULT_PRECISION)
#define | SIGN_DEGREE "°"
#define | SIGN_POWER_0 "⁰"
#define | SIGN_POWER_1 "¹"
#define | SIGN_POWER_2 "²"
#define | SIGN_POWER_3 "³"
#define | SIGN_POWER_4 "⁴"
#define | SIGN_POWER_5 "⁵"
#define | SIGN_POWER_6 "⁶"
#define | SIGN_POWER_7 "⁷"
#define | SIGN_POWER_8 "⁸"
#define | SIGN_POWER_9 "⁹"
#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_MIDDLEDOT "·"
#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 | THIN_SPACE " "
#define | NNBSP " "
#define | NBSP " "
#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 | 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 , COMPARISON_RESULT_EQUAL_LIMITS ,
COMPARISON_RESULT_CONTAINS , COMPARISON_RESULT_CONTAINED , COMPARISON_RESULT_OVERLAPPING_LESS , COMPARISON_RESULT_OVERLAPPING_GREATER
}

| 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_STYLE_POLAR }
| 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 , PLOT_FILETYPE_PDF }
| 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 , FRACTION_FRACTIONAL_FIXED_DENOMINATOR , FRACTION_COMBINED_FIXED_DENOMINATOR , FRACTION_PERCENT , FRACTION_PERMILLE , FRACTION_PERMYRIAD }
enum | MultiplicationSign { MULTIPLICATION_SIGN_ASTERISK , MULTIPLICATION_SIGN_DOT , MULTIPLICATION_SIGN_X , MULTIPLICATION_SIGN_ALTDOT }
enum | DivisionSign { DIVISION_SIGN_SLASH , DIVISION_SIGN_DIVISION_SLASH , DIVISION_SIGN_DIVISION }
enum | BaseDisplay { BASE_DISPLAY_NONE , BASE_DISPLAY_NORMAL , BASE_DISPLAY_ALTERNATIVE , BASE_DISPLAY_SUFFIX }
enum | IntervalDisplay { INTERVAL_DISPLAY_SIGNIFICANT_DIGITS , INTERVAL_DISPLAY_INTERVAL , INTERVAL_DISPLAY_PLUSMINUS , INTERVAL_DISPLAY_MIDPOINT , INTERVAL_DISPLAY_LOWER , INTERVAL_DISPLAY_UPPER , INTERVAL_DISPLAY_CONCISE , INTERVAL_DISPLAY_RELATIVE }
enum | DigitGrouping { DIGIT_GROUPING_NONE , DIGIT_GROUPING_STANDARD , DIGIT_GROUPING_LOCALE }
enum | DateTimeFormat { DATE_TIME_FORMAT_ISO , DATE_TIME_FORMAT_LOCALE }
enum | TimeZone { TIME_ZONE_UTC , TIME_ZONE_LOCAL , TIME_ZONE_CUSTOM }
enum | ExpDisplay { EXP_DEFAULT , EXP_UPPERCASE_E , EXP_LOWERCASE_E , EXP_POWER_OF_10 }
enum | RoundingMode { ROUNDING_HALF_AWAY_FROM_ZERO , ROUNDING_HALF_TO_EVEN , ROUNDING_HALF_TO_ODD , ROUNDING_HALF_TOWARD_ZERO , ROUNDING_HALF_UP , ROUNDING_HALF_DOWN , ROUNDING_HALF_RANDOM , ROUNDING_TOWARD_ZERO , ROUNDING_AWAY_FROM_ZERO , ROUNDING_UP , ROUNDING_DOWN }
enum | { UNICODE_SIGNS_OFF , UNICODE_SIGNS_ON , UNICODE_SIGNS_ONLY_UNIT_EXPONENTS , UNICODE_SIGNS_WITHOUT_EXPONENTS }
enum | { REPEATING_DECIMALS_OFF , REPEATING_DECIMALS_ELLIPSIS , REPEATING_DECIMALS_OVERLINE }
enum | ApproximationMode { APPROXIMATION_EXACT , APPROXIMATION_TRY_EXACT , APPROXIMATION_APPROXIMATE , APPROXIMATION_EXACT_VARIABLES }
enum | StructuringMode { STRUCTURING_NONE , STRUCTURING_EXPAND , STRUCTURING_FACTORIZE , STRUCTURING_HYBRID }
enum | AutoPostConversion { POST_CONVERSION_NONE , POST_CONVERSION_OPTIMAL_SI , POST_CONVERSION_BASE , POST_CONVERSION_OPTIMAL }
enum | MixedUnitsConversion { MIXED_UNITS_CONVERSION_NONE , MIXED_UNITS_CONVERSION_DOWNWARDS_KEEP , MIXED_UNITS_CONVERSION_DOWNWARDS , MIXED_UNITS_CONVERSION_DEFAULT , MIXED_UNITS_CONVERSION_FORCE_INTEGER , MIXED_UNITS_CONVERSION_FORCE_ALL }
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 , ANGLE_UNIT_CUSTOM }
enum | ComplexNumberForm { COMPLEX_NUMBER_FORM_RECTANGULAR , COMPLEX_NUMBER_FORM_EXPONENTIAL , COMPLEX_NUMBER_FORM_POLAR , COMPLEX_NUMBER_FORM_CIS }
enum | ParsingMode { PARSING_MODE_ADAPTIVE , PARSING_MODE_IMPLICIT_MULTIPLICATION_FIRST , PARSING_MODE_CONVENTIONAL , PARSING_MODE_CHAIN , PARSING_MODE_RPN }
enum | IntervalCalculation { INTERVAL_CALCULATION_NONE , INTERVAL_CALCULATION_VARIANCE_FORMULA , INTERVAL_CALCULATION_INTERVAL_ARITHMETIC , INTERVAL_CALCULATION_SIMPLE_INTERVAL_ARITHMETIC }

## Variables

static std::string | empty_string
static const long int | PRIMES []
static const long int | SQUARE_PRIMES []
static const long int | RAISED_PRIMES [][49]
static const SortOptions | default_sort_options
static const PrintOptions | default_print_options
static const InternalPrintStruct | top_ips
static const ParseOptions | default_parse_options
static const EvaluationOptions | default_evaluation_options
static EvaluationOptions | default_user_evaluation_options
MathStructure | m_undefined
MathStructure | m_empty_vector
MathStructure | m_empty_matrix
MathStructure | m_zero
MathStructure | m_one
MathStructure | m_minus_one
MathStructure | m_one_i
Number | nr_zero
Number | nr_one
Number | nr_two
Number | nr_three
Number | nr_minus_one
Number | nr_one_i
Number | nr_minus_i
Number | nr_half
Number | nr_minus_half
Number | nr_plus_inf
Number | nr_minus_inf
EvaluationOptions | no_evaluation
ExpressionName | empty_expression_name
Calculator * | calculator

## Macro Definition Documentation

## BASE_IS_SEXAGESIMAL

#define BASE_IS_SEXAGESIMAL | ( |  | x | ) |

Value:
((x >= BASE_SEXAGESIMAL && x <= BASE_SEXAGESIMAL_3) || (x >= BASE_LATITUDE && x <= BASE_LONGITUDE_2))

## COMPARISON_IS_EQUAL_OR_GREATER

#define COMPARISON_IS_EQUAL_OR_GREATER | ( |  | i | ) |

Value:
(i == COMPARISON_RESULT_EQUAL || i == COMPARISON_RESULT_GREATER || i == COMPARISON_RESULT_EQUAL_OR_GREATER)

## COMPARISON_IS_EQUAL_OR_LESS

#define COMPARISON_IS_EQUAL_OR_LESS | ( |  | i | ) |

Value:
(i == COMPARISON_RESULT_EQUAL || i == COMPARISON_RESULT_LESS || i == COMPARISON_RESULT_EQUAL_OR_LESS)

## COMPARISON_IS_NOT_EQUAL

#define COMPARISON_IS_NOT_EQUAL | ( |  | i | ) |

Value:
(i == COMPARISON_RESULT_NOT_EQUAL || i == COMPARISON_RESULT_LESS || i == COMPARISON_RESULT_GREATER)

## COMPARISON_MIGHT_BE_EQUAL

#define COMPARISON_MIGHT_BE_EQUAL | ( |  | i | ) |

Value:
(i >= COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER || i == COMPARISON_RESULT_EQUAL)

## COMPARISON_MIGHT_BE_LESS_OR_GREATER

#define COMPARISON_MIGHT_BE_LESS_OR_GREATER | ( |  | i | ) |

Value:
(i >= COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_NOT_EQUAL)

## COMPARISON_MIGHT_BE_NOT_EQUAL

#define COMPARISON_MIGHT_BE_NOT_EQUAL | ( |  | i | ) |

Value:
(i >= COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER || i == COMPARISON_RESULT_NOT_EQUAL)

## COMPARISON_NOT_FULLY_KNOWN

#define COMPARISON_NOT_FULLY_KNOWN | ( |  | i | ) |

Value:
(i >= COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_NOT_EQUAL || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER)

## Enumeration Type Documentation

## ApproximationMode

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.
APPROXIMATION_EXACT_VARIABLES | Used internally.

## AutoPostConversion

enum AutoPostConversion

Enumerator
POST_CONVERSION_NONE | Do not do any conversion of units in addition to syncing.
POST_CONVERSION_OPTIMAL_SI | Convert to the least amount of units. Non-SI units are converted to SI units.
POST_CONVERSION_BASE | Convert to base units.
POST_CONVERSION_OPTIMAL | Convert to the least amount of units. Non-SI units is kept (if optimal), but for conversion only SI units are used.

## ExpressionItemType

enum ExpressionItemType

Type of ExpressionItem.

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

## IntervalCalculation

enum IntervalCalculation

Enumerator
INTERVAL_CALCULATION_NONE | Ignores uncertainties and uses the middle value of intervals.
INTERVAL_CALCULATION_SIMPLE_INTERVAL_ARITHMETIC | Treats all intervals as uncorrelated.

## NumberFractionFormat

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)
FRACTION_FRACTIONAL_FIXED_DENOMINATOR | Display as fraction with denominator specified using Calculator::setFixedDenominator(). Both rational and non-rational numbers are rounded to match the selected denominator.
FRACTION_COMBINED_FIXED_DENOMINATOR | Display as an integer and a fraction with denominator specified using Calculator::setFixedDenominator(). Both rational and non-rational numbers are rounded to match the selected denominator.
FRACTION_PERCENT | Display numbers in decimal format multiplied by percent.
FRACTION_PERMILLE | Display numbers in decimal format multiplied by permille.
FRACTION_PERMYRIAD | Display numbers in decimal format multiplied by permyriad.

## ParsingMode

enum ParsingMode

Enumerator
PARSING_MODE_ADAPTIVE | The default adaptive mode works as the "parse implicit multiplication first" mode, unless spaces are found (<quote>1/5x = 1/(5*x)</quote>, but <quote>1/5 x = (1/5)*x</quote>). In the adaptive mode unit expressions are parsed separately (<quote>5 m/5 m/s = (5*m)/(5*(m/s)) = 1 s</quote>).
PARSING_MODE_IMPLICIT_MULTIPLICATION_FIRST | In the "parse implicit multiplication first" mode, implicit multiplication is parsed before explicit multiplication (<quote>12/2(1+2) = 12/(2*3) = 2</quote>, <quote>5x/5y = (5*x)/(5*y) = x/y</quote>).
PARSING_MODE_CONVENTIONAL | In the conventional mode implicit multiplication does not differ from explicit multiplication (<quote>12/2(1+2) = 12/2*3 = 18</quote>, <quote>5x/5y = 5*x/5*y = xy</quote>).

## StructuringMode

enum StructuringMode

Enumerator
STRUCTURING_NONE | Do not do any factorization or additional simplifications.
STRUCTURING_EXPAND | Simplify the result as much as possible and expand (minimal factorization, normally the same as STRUCTURING_NONE)
STRUCTURING_FACTORIZE | Factorize the result.
STRUCTURING_HYBRID | Deprecated: use STRUCTURING_SIMPLIFY instead.

## Variable Documentation

## RAISED_PRIMES

const long int RAISED_PRIMES[][49]

static

Initial value:
= {
{8L, 27L, 125L, 343L, 1331L, 2197, 4913, 6859, 12167L, 24389L,
29791L, 50653L, 68921L, 79507L, 103823L, 148877L, 205379L, 226981L, 300763L, 357911L,
389017L, 493039L, 571787L, 704969L, 912673L, 1030301L, 1092727L, 1225043L, 1295029, 1442897,
2048383L, 2248091L, 2571353L, 2685619L, 3307949L, 3442951L, 3869893L, 4330747L, 4657463L, 5177717L,
5735339L, 5929741L, 6967871L, 7189057L, 7645373L, 7880599L, 9393931L, 11089567L, 0},
{16L, 81L, 625L, 2401L, 14641L, 28561L, 83521L, 130321L, 279841L, 707281L,
923521L, 1874161L, 2825761L, 3418801L, 4879681L, 7890481L, 12117361L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{32L, 243L, 3125L, 16807L, 161051L, 371293L, 1419857L, 2476099L, 6436343L, 20511149L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{64L, 729L, 15625L, 117649L, 1771561L, 4826809L, 24137569L, 47045881L, 148035889L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{128L, 2187L, 78125L, 823543L, 19487171L, 62748517L, 410338673L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{256L, 6561L, 390625L, 5764801L, 214358881L, 815730721L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{512L, 19683L, 1953125L, 40353607L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1024L, 59049L, 9765625L, 282475249L,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}

## SQUARE_PRIMES

const long int SQUARE_PRIMES[]

static

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