3 * Read the file COPYING
5 * \author Alejandro Aguilar Sierra
8 * Full author contact details are available in file CREDITS
11 #include "ControlMath.h"
13 char const * function_names[] = {
14 "arccos", "arcsin", "arctan", "arg", "bmod",
15 "cos", "cosh", "cot", "coth", "csc", "deg",
16 "det", "dim", "exp", "gcd", "hom", "inf", "ker",
17 "lg", "lim", "liminf", "limsup", "ln", "log",
18 "max", "min", "sec", "sin", "sinh", "sup",
22 int const nr_function_names = sizeof(function_names) / sizeof(char const *) - 1;
24 char const * latex_arrow[] = {
25 "downarrow", "leftarrow", "Downarrow", "Leftarrow",
26 "hookleftarrow", "rightarrow", "uparrow", "Rightarrow", "Uparrow",
27 "hookrightarrow", "updownarrow", "Leftrightarrow", "leftharpoonup",
28 "rightharpoonup", "rightleftharpoons", "leftrightarrow", "Updownarrow",
29 "leftharpoondown", "rightharpoondown", "mapsto",
30 "Longleftarrow", "Longrightarrow", "Longleftrightarrow",
31 "longleftrightarrow", "longleftarrow", "longrightarrow", "longmapsto",
32 "nwarrow", "nearrow", "swarrow", "searrow", "",
35 int const nr_latex_arrow = sizeof(latex_arrow) / sizeof(char const *);
37 char const * latex_bop[] = {
38 "pm", "cap", "diamond", "oplus",
39 "mp", "cup", "bigtriangleup", "ominus",
40 "times", "uplus", "bigtriangledown", "otimes",
41 "div", "sqcap", "triangleright", "oslash",
42 "cdot", "sqcup", "triangleleft", "odot",
43 "star", "vee", "amalg", "bigcirc",
44 "setminus", "wedge", "dagger", "circ",
45 "bullet", "wr", "ddagger", ""
48 int const nr_latex_bop = sizeof(latex_bop) / sizeof(char const *);
50 char const * latex_brel[] = {
51 "leq", "geq", "equiv", "models",
52 "prec", "succ", "sim", "perp",
53 "preceq", "succeq", "simeq", "mid",
54 "ll", "gg", "asymp", "parallel",
55 "subset", "supset", "approx", "smile",
56 "subseteq", "supseteq", "cong", "frown",
57 "sqsubseteq", "sqsupseteq", "doteq", "neq",
58 "in", "ni", "propto", "notin",
59 "vdash", "dashv", "bowtie", ""
62 int const nr_latex_brel = sizeof(latex_brel) / sizeof(char const *);
64 char const * latex_dots[] = {
65 "ldots", "cdots", "vdots", "ddots"
68 int const nr_latex_dots = sizeof(latex_dots) / sizeof(char const *);
70 char const * latex_greek[] = {
71 "Gamma", "Delta", "Theta", "Lambda", "Xi", "Pi",
72 "Sigma", "Upsilon", "Phi", "Psi", "Omega",
73 "alpha", "beta", "gamma", "delta", "epsilon", "varepsilon", "zeta",
74 "eta", "theta", "vartheta", "iota", "kappa", "lambda", "mu",
75 "nu", "xi", "pi", "varpi", "rho", "sigma", "varsigma",
76 "tau", "upsilon", "phi", "varphi", "chi", "psi", "omega", ""
79 int const nr_latex_greek = sizeof(latex_greek) / sizeof(char const *);
81 char const * latex_misc[] = {
82 "nabla", "partial", "infty", "prime", "ell",
83 "emptyset", "exists", "forall", "imath", "jmath",
84 "Re", "Im", "aleph", "wp", "hbar",
85 "angle", "top", "bot", "Vert", "neg",
86 "flat", "natural", "sharp", "surd", "triangle",
87 "diamondsuit", "heartsuit", "clubsuit", "spadesuit",
88 "textrm Å", "textrm Ø", "mathcircumflex", "_",
90 "mathbb N", "mathbb Z", "mathbb Q",
91 "mathbb R", "mathbb C", "mathbb H",
92 "mathcal F", "mathcal L",
93 "mathcal H", "mathcal O", ""
96 int const nr_latex_misc = sizeof(latex_misc) / sizeof(char const *);
98 char const * latex_varsz[] = {
100 "prod", "coprod", "bigsqcup",
101 "bigotimes", "bigodot", "bigoplus",
102 "bigcap", "bigcup", "biguplus",
103 "bigvee", "bigwedge", ""
106 int const nr_latex_varsz = sizeof(latex_varsz) / sizeof(char const *);
108 char const * latex_ams_misc[] = {
109 "digamma", "varkappa", "beth", "daleth", "gimel",
110 "ulcorner", "urcorner", "llcorner", "lrcorner",
111 "hbar", "hslash", "vartriangle",
112 "triangledown", "square", "lozenge",
113 "circledS", "angle", "measuredangle",
114 "nexists", "mho", "Finv",
115 "Game", "Bbbk", "backprime",
116 "varnothing", "blacktriangle", "blacktriangledown",
117 "blacksquare", "blacklozenge", "bigstar",
118 "sphericalangle", "complement", "eth",
119 "diagup", "diagdown", ""
122 int const nr_latex_ams_misc = sizeof(latex_ams_misc) / sizeof(char const *);
124 char const * latex_ams_arrows[] = {
125 "dashrightarrow", "dashleftarrow", "leftleftarrows",
126 "leftrightarrows", "Lleftarrow", "twoheadleftarrow",
127 "leftarrowtail", "looparrowleft", "leftrightharpoons",
128 "curvearrowleft", "circlearrowleft", "Lsh",
129 "upuparrows", "upharpoonleft", "downharpoonleft",
130 "multimap", "leftrightsquigarrow", "rightrightarrows",
131 "rightleftarrows", "rightrightarrows", "rightleftarrows",
132 "twoheadrightarrow", "rightarrowtail", "looparrowright",
133 "rightleftharpoons", "curvearrowright", "circlearrowright",
134 "Rsh", "downdownarrows", "upharpoonright",
135 "downharpoonright", "rightsquigarrow",
136 "nleftarrow", "nrightarrow", "nLeftarrow",
137 "nRightarrow", "nleftrightarrow", "nLeftrightarrow", ""
140 int const nr_latex_ams_arrows = sizeof(latex_ams_arrows) / sizeof(char const *);
142 char const * latex_ams_rel[] = {
143 "leqq", "leqslant", "eqslantless", "eqslantgtr", "gtrsim", "gtrapprox",
144 "lesssim", "lessapprox", "approxeq", "gtrdot", "ggg", "gtrless",
145 "lessdot", "lll", "lessgtr", "gtreqless", "gtreqqless", "eqcirc",
146 "lesseqgtr", "lesseqqgtr", "doteqdot", "circeq", "triangleq", "thicksim",
147 "risingdotseq", "fallingdotseq", "backsim", "thickapprox", "supseteqq", "Supset",
148 "backsimeq", "subseteqq", "Subset","sqsupset", "succcurlyeq", "curlyeqsucc",
149 "sqsubset", "preccurlyeq", "curlyeqprec", "succsim", "succapprox", "vartriangleright",
150 "precsim", "precapprox", "vartriangleleft", "trianglerighteq", "Vdash", "shortmid",
151 "trianglelefteq", "vDash", "Vvdash", "shortparallel", "between", "pitchfork",
152 "smallsmile", "smallfrown", "bumpeq", "varpropto", "blacktriangleleft", "therefore",
153 "Bumpeq", "geqq", "geqslant", "backepsilon", "blacktriangleright", "because", ""
156 int const nr_latex_ams_rel = sizeof(latex_ams_rel) / sizeof(char const *);
158 char const * latex_ams_nrel[] = {
159 "nless", "nleq", "nleqslant", "ngeqslant", "ngeqq", "gneq",
160 "nleqq", "lneq", "lneqq","gneqq", "gvertneqq", "gnsim",
161 "lvertneqq", "lnsim", "lnapprox", "gnapprox", "nsucc", "nsucceq",
162 "nprec", "npreceq", "precnsim","succnsim", "succnapprox", "ncong",
163 "precnapprox", "nsim", "nshortmid", "nshortparallel", "nparallel", "nvDash",
165 "nmid", "nvdash", "nvDash","nVDash", "ntriangleright", "ntrianglerighteq",
166 "ntriangleleft", "ntrianglelefteq", "nsubseteq", "nsupseteq", "nsupseteqq", "supsetneq",
167 "subsetneq", "varsubsetneq", "subsetneqq", "varsupsetneq", "supsetneqq", "varsupsetneqq",
168 "varsubsetneqq", "ngtr", "ngeq","", "", ""
171 int const nr_latex_ams_nrel = sizeof(latex_ams_nrel) / sizeof(char const *);
174 char const * latex_ams_ops[] = {
175 "dotplus", "smallsetminus", "Cap",
176 "Cup", "barwedge", "veebar",
177 "doublebarwedge", "boxminus", "boxtimes",
178 "boxdot", "boxplus", "divideontimes",
179 "ltimes", "rtimes", "leftthreetimes",
180 "rightthreetimes", "curlywedge", "curlyvee",
181 "circleddash", "circledast", "circledcirc",
182 "centerdot", "intercal", ""
185 int const nr_latex_ams_ops = sizeof(latex_ams_ops) / sizeof(char const *);