libqalculate-4.9.0
Classes | Macros | Enumerations | Variables
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   (4)
 
#define QALCULATE_MINOR_VERSION   (9)
 
#define QALCULATE_MICRO_VERSION   (0)
 
#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 || i == COMPARISON_RESULT_EQUAL)
 
#define COMPARISON_MIGHT_BE_NOT_EQUAL(i)   (i >= COMPARISON_RESULT_UNKNOWN || i == COMPARISON_RESULT_EQUAL_OR_LESS || i == COMPARISON_RESULT_EQUAL_OR_GREATER || i == COMPARISON_RESULT_NOT_EQUAL)
 
#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)   ((x >= BASE_SEXAGESIMAL && x <= BASE_SEXAGESIMAL_3) || (x >= BASE_LATITUDE && x <= BASE_LONGITUDE_2))
 
#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  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
 
Calculatorcalculator
 

Enumeration Type Documentation

◆ 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

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

Type of ExpressionItem.

Enumerator
TYPE_VARIABLE 

class Variable

TYPE_FUNCTION 

class MathFunction

TYPE_UNIT 

class Unit

◆ 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

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

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

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
}