1 /*  All these constants are #define to be used in switch () case :
2  *  Copyright (C) 2000,2014 B. Parisse, Institut Fourier, 38402 St Martin d'Heres
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 3 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef _GIAC_DISPATCH_H
19 #define _GIAC_DISPATCH_H
20 #include "global.h"
21 
22 #ifndef NO_NAMESPACE_GIAC
23 namespace giac {
24 #endif // ndef NO_NAMESPACE_GIAC
25 
26 #if !defined DOUBLEVAL && (defined __amd64 || defined x86_64) && !defined SMARTPTR64
27 #define DOUBLEVAL 1
28 #endif
29 
30   enum {
31     _DECALAGE=8, // 2^8=256
32     _DISPATCHBASE=256,
33     _QUOTE_ARGUMENTS=1
34   } ;
35 
36   enum gen_unary_types {
37     // immediate type (without mem allocation) should be < _ZINT
38     _INT_= 0, // int val
39     _DOUBLE_= 1, // double _DOUBLE_val
40     // all type below or equal to _DOUBLE_ must be non pointers
41     _ZINT= 2, // mpz_t * _ZINTptr
42     _REAL= 3, // mpf_t * _REALptr
43     // all type strictly below _CPLX must be real types
44     _CPLX= 4, // gen * _CPLXptr
45     _POLY= 5, // polynome * _POLYptr
46     _IDNT= 6, // identificateur * _IDNTptr
47     _VECT= 7, // vecteur * _VECTptr
48     _SYMB= 8, // symbolic * _SYMBptr
49     _SPOL1= 9, // sparse_poly1 * _SPOL1ptr
50     _FRAC= 10, // fraction * _FRACptr
51     _EXT= 11, // gen * _EXTptr
52     _STRNG= 12, // string * _STRNGptr
53     _FUNC= 13, // unary_fonction_ptr * _FUNCptr
54     _ROOT= 14, // real_complex_rootof *_ROOTptr
55     _MOD= 15, // gen * _MODptr
56     _USER= 16, // gen_user * _USERptr
57     _MAP=17, // map<gen.gen> * _MAPptr
58     _EQW=18, // eqwdata * _EQWptr
59     _GROB=19, // grob * _GROBptr
60     _POINTER_=20, // void * _POINTER_val
61     _FLOAT_=21 // immediate, _FLOAT_val
62   } ;
63 
64   enum gen_binary_types {
65     _INT___INT_ = _INT_*_DISPATCHBASE+_INT_,
66     _INT___ZINT = _INT_*_DISPATCHBASE+_ZINT,
67     _INT___CPLX = _INT_*_DISPATCHBASE+_CPLX,
68     _INT___POLY = _INT_*_DISPATCHBASE+_POLY,
69     _INT___IDNT = _INT_*_DISPATCHBASE+_IDNT,
70     _INT___SYMB = _INT_*_DISPATCHBASE+_SYMB,
71     _INT___DOUBLE_ = _INT_*_DISPATCHBASE+_DOUBLE_,
72     _INT___FLOAT_ = _INT_*_DISPATCHBASE+_FLOAT_,
73     _INT___VECT = _INT_*_DISPATCHBASE+_VECT,
74     _INT___MAP = _INT_*_DISPATCHBASE+_MAP,
75     _INT___REAL = _INT_*_DISPATCHBASE+_REAL,
76     _INT___FRAC = _INT_*_DISPATCHBASE+_FRAC,
77     _INT___STRNG = _INT_*_DISPATCHBASE+_STRNG,
78     _ZINT__INT_ = _ZINT*_DISPATCHBASE+_INT_,
79     _ZINT__ZINT =_ZINT*_DISPATCHBASE+_ZINT,
80     _ZINT__CPLX = _ZINT*_DISPATCHBASE+_CPLX,
81     _ZINT__POLY =_ZINT*_DISPATCHBASE+_POLY,
82     _ZINT__IDNT = _ZINT*_DISPATCHBASE+_IDNT,
83     _ZINT__SYMB = _ZINT*_DISPATCHBASE+_SYMB,
84     _ZINT__DOUBLE_ = _ZINT*_DISPATCHBASE+_DOUBLE_,
85     _ZINT__FLOAT_ = _ZINT*_DISPATCHBASE+_FLOAT_,
86     _ZINT__VECT = _ZINT*_DISPATCHBASE+_VECT,
87     _ZINT__MAP = _ZINT*_DISPATCHBASE+_MAP,
88     _ZINT__REAL = _ZINT*_DISPATCHBASE+_REAL,
89     _ZINT__FRAC = _ZINT*_DISPATCHBASE+_FRAC,
90     _CPLX__INT_ = _CPLX*_DISPATCHBASE+_INT_,
91     _CPLX__ZINT = _CPLX*_DISPATCHBASE+_ZINT,
92     _CPLX__CPLX = _CPLX*_DISPATCHBASE+_CPLX,
93     _CPLX__POLY = _CPLX*_DISPATCHBASE+_POLY,
94     _CPLX__IDNT = _CPLX*_DISPATCHBASE+_IDNT,
95     _CPLX__SYMB = _CPLX*_DISPATCHBASE+_SYMB,
96     _CPLX__DOUBLE_ = _CPLX*_DISPATCHBASE+_DOUBLE_,
97     _CPLX__FLOAT_ = _CPLX*_DISPATCHBASE+_FLOAT_,
98     _CPLX__REAL = _CPLX*_DISPATCHBASE+_REAL,
99     _CPLX__VECT = _CPLX*_DISPATCHBASE+_VECT,
100     _CPLX__MAP = _CPLX*_DISPATCHBASE+_MAP,
101     _POLY__INT_ = _POLY*_DISPATCHBASE+_INT_,
102     _POLY__ZINT = _POLY*_DISPATCHBASE+_ZINT,
103     _POLY__CPLX = _POLY*_DISPATCHBASE+_CPLX,
104     _POLY__POLY = _POLY*_DISPATCHBASE+_POLY,
105     _POLY__IDNT = _POLY*_DISPATCHBASE+_IDNT,
106     _POLY__SYMB = _POLY*_DISPATCHBASE+_SYMB,
107     _POLY__DOUBLE_ = _POLY*_DISPATCHBASE+_DOUBLE_,
108     _POLY__FLOAT_ = _POLY*_DISPATCHBASE+_FLOAT_,
109     _POLY__VECT = _POLY*_DISPATCHBASE+_VECT,
110     _POLY__MAP = _POLY*_DISPATCHBASE+_MAP,
111     _POLY__USER = _POLY*_DISPATCHBASE+_USER,
112     _POLY__REAL = _POLY*_DISPATCHBASE+_REAL,
113     _POLY__EXT = _POLY*_DISPATCHBASE+_EXT,
114     _IDNT__INT_=  _IDNT*_DISPATCHBASE+_INT_,
115     _IDNT__ZINT = _IDNT*_DISPATCHBASE+_ZINT,
116     _IDNT__CPLX = _IDNT*_DISPATCHBASE+_CPLX,
117     _IDNT__POLY = _IDNT*_DISPATCHBASE+_POLY,
118     _IDNT__IDNT = _IDNT*_DISPATCHBASE+_IDNT,
119     _IDNT__SYMB = _IDNT*_DISPATCHBASE+_SYMB,
120     _IDNT__DOUBLE_ = _IDNT*_DISPATCHBASE+_DOUBLE_,
121     _IDNT__FLOAT_ = _IDNT*_DISPATCHBASE+_FLOAT_,
122     _IDNT__VECT = _IDNT*_DISPATCHBASE+_VECT,
123     _IDNT__MAP = _IDNT*_DISPATCHBASE+_MAP,
124     _SYMB__INT_=  _SYMB*_DISPATCHBASE+_INT_,
125     _SYMB__ZINT = _SYMB*_DISPATCHBASE+_ZINT,
126     _SYMB__CPLX = _SYMB*_DISPATCHBASE+_CPLX,
127     _SYMB__POLY = _SYMB*_DISPATCHBASE+_POLY,
128     _SYMB__IDNT = _SYMB*_DISPATCHBASE+_IDNT,
129     _SYMB__SYMB = _SYMB*_DISPATCHBASE+_SYMB,
130     _SYMB__DOUBLE_ = _SYMB*_DISPATCHBASE+_DOUBLE_,
131     _SYMB__FLOAT_ = _SYMB*_DISPATCHBASE+_FLOAT_,
132     _SYMB__VECT = _SYMB*_DISPATCHBASE+_VECT,
133     _SYMB__MAP = _SYMB*_DISPATCHBASE+_MAP,
134     _DOUBLE___INT_=  _DOUBLE_*_DISPATCHBASE+_INT_,
135     _DOUBLE___ZINT = _DOUBLE_*_DISPATCHBASE+_ZINT,
136     _DOUBLE___CPLX = _DOUBLE_*_DISPATCHBASE+_CPLX,
137     _DOUBLE___POLY = _DOUBLE_*_DISPATCHBASE+_POLY,
138     _DOUBLE___IDNT = _DOUBLE_*_DISPATCHBASE+_IDNT,
139     _DOUBLE___SYMB = _DOUBLE_*_DISPATCHBASE+_SYMB,
140     _DOUBLE___DOUBLE_ = _DOUBLE_*_DISPATCHBASE+_DOUBLE_,
141     _DOUBLE___FLOAT_ = _DOUBLE_*_DISPATCHBASE+_FLOAT_,
142     _DOUBLE___VECT = _DOUBLE_*_DISPATCHBASE+_VECT,
143     _DOUBLE___MAP = _DOUBLE_*_DISPATCHBASE+_MAP,
144     _DOUBLE___REAL = _DOUBLE_*_DISPATCHBASE+_REAL,
145     _DOUBLE___FRAC = _DOUBLE_*_DISPATCHBASE+_FRAC,
146     _DOUBLE___STRNG = _DOUBLE_*_DISPATCHBASE+_STRNG,
147     _FLOAT___INT_=  _FLOAT_*_DISPATCHBASE+_INT_,
148     _FLOAT___ZINT = _FLOAT_*_DISPATCHBASE+_ZINT,
149     _FLOAT___CPLX = _FLOAT_*_DISPATCHBASE+_CPLX,
150     _FLOAT___POLY = _FLOAT_*_DISPATCHBASE+_POLY,
151     _FLOAT___IDNT = _FLOAT_*_DISPATCHBASE+_IDNT,
152     _FLOAT___SYMB = _FLOAT_*_DISPATCHBASE+_SYMB,
153     _FLOAT___FLOAT_ = _FLOAT_*_DISPATCHBASE+_FLOAT_,
154     _FLOAT___DOUBLE_ = _FLOAT_*_DISPATCHBASE+_DOUBLE_,
155     _FLOAT___VECT = _FLOAT_*_DISPATCHBASE+_VECT,
156     _FLOAT___MAP = _FLOAT_*_DISPATCHBASE+_MAP,
157     _FLOAT___REAL = _FLOAT_*_DISPATCHBASE+_REAL,
158     _FLOAT___FRAC = _FLOAT_*_DISPATCHBASE+_FRAC,
159     _VECT__INT_=  _VECT*_DISPATCHBASE+_INT_,
160     _VECT__DOUBLE_ = _VECT*_DISPATCHBASE+_DOUBLE_,
161     _VECT__FLOAT_ = _VECT*_DISPATCHBASE+_FLOAT_,
162     _VECT__ZINT = _VECT*_DISPATCHBASE+_ZINT,
163     _VECT__CPLX = _VECT*_DISPATCHBASE+_CPLX,
164     _VECT__POLY = _VECT*_DISPATCHBASE+_POLY,
165     _VECT__IDNT = _VECT*_DISPATCHBASE+_IDNT,
166     _VECT__SYMB = _VECT*_DISPATCHBASE+_SYMB,
167     _VECT__VECT = _VECT*_DISPATCHBASE+_VECT,
168     _VECT__EXT = _VECT*_DISPATCHBASE+_EXT,
169     _VECT__FRAC = _VECT*_DISPATCHBASE+_FRAC,
170     _VECT__REAL = _VECT*_DISPATCHBASE+_REAL,
171     _VECT__MAP = _VECT*_DISPATCHBASE+_MAP,
172     _MAP__INT_=  _MAP*_DISPATCHBASE+_INT_,
173     _MAP__DOUBLE_ = _MAP*_DISPATCHBASE+_DOUBLE_,
174     _MAP__FLOAT_ = _MAP*_DISPATCHBASE+_FLOAT_,
175     _MAP__ZINT = _MAP*_DISPATCHBASE+_ZINT,
176     _MAP__CPLX = _MAP*_DISPATCHBASE+_CPLX,
177     _MAP__POLY = _MAP*_DISPATCHBASE+_POLY,
178     _MAP__IDNT = _MAP*_DISPATCHBASE+_IDNT,
179     _MAP__SYMB = _MAP*_DISPATCHBASE+_SYMB,
180     _MAP__VECT = _MAP*_DISPATCHBASE+_VECT,
181     _MAP__MAP = _MAP*_DISPATCHBASE+_MAP,
182     _MAP__EXT = _MAP*_DISPATCHBASE+_EXT,
183     _MAP__FRAC = _MAP*_DISPATCHBASE+_FRAC,
184     _MAP__REAL = _MAP*_DISPATCHBASE+_REAL,
185     _FRAC__VECT = _FRAC*_DISPATCHBASE+_VECT,
186     _FRAC__MAP = _FRAC*_DISPATCHBASE+_MAP,
187     _FRAC__FRAC = _FRAC*_DISPATCHBASE+_FRAC,
188     _FRAC__FLOAT_ = _FRAC*_DISPATCHBASE+_FLOAT_,
189     _FRAC__DOUBLE_ = _FRAC*_DISPATCHBASE+_DOUBLE_,
190     _FRAC__INT_=  _FRAC*_DISPATCHBASE+_INT_,
191     _FRAC_ZINT=  _FRAC*_DISPATCHBASE+_ZINT,
192     _FRAC__REAL=  _FRAC*_DISPATCHBASE+_REAL,
193     _SPOL1__SPOL1 = _SPOL1*_DISPATCHBASE+_SPOL1,
194     _EXT__EXT = _EXT*_DISPATCHBASE+_EXT,
195     _EXT__VECT = _EXT*_DISPATCHBASE+_VECT,
196     _EXT__MAP = _EXT*_DISPATCHBASE+_MAP,
197     _EXT__INT_=  _EXT*_DISPATCHBASE+_INT_,
198     _EXT__POLY=  _EXT*_DISPATCHBASE+_POLY,
199     _STRNG__STRNG = _STRNG*_DISPATCHBASE+_STRNG,
200     _STRNG__INT_=  _STRNG*_DISPATCHBASE+_INT_,
201     _STRNG__DOUBLE_=  _STRNG*_DISPATCHBASE+_DOUBLE_,
202     _FUNC__FUNC = _FUNC*_DISPATCHBASE+_FUNC,
203     _MOD__MOD = _MOD*_DISPATCHBASE+_MOD,
204     _ZINT__MOD = _ZINT*_DISPATCHBASE+_MOD,
205     _MOD__ZINT = _MOD*_DISPATCHBASE+_ZINT,
206     _MOD__VECT = _MOD*_DISPATCHBASE+_VECT,
207     _MOD__MAP = _MOD*_DISPATCHBASE+_MAP,
208     _VECT__MOD = _VECT*_DISPATCHBASE+_MOD,
209     _MAP__MOD = _MAP*_DISPATCHBASE+_MOD,
210     _MOD__POLY = _MOD*_DISPATCHBASE+_POLY,
211     _POLY__MOD = _POLY*_DISPATCHBASE+_MOD,
212     _INT___MOD=  _INT_*_DISPATCHBASE+_MOD,
213     _MOD__INT_=  _MOD*_DISPATCHBASE+_INT_,
214     _REAL__CPLX = _REAL*_DISPATCHBASE+_CPLX,
215     _REAL__ZINT = _REAL*_DISPATCHBASE+_ZINT,
216     _REAL__REAL = _REAL*_DISPATCHBASE+_REAL,
217     _REAL__INT_ = _REAL*_DISPATCHBASE+_INT_,
218     _REAL__DOUBLE_ = _REAL*_DISPATCHBASE+_DOUBLE_,
219     _REAL__FLOAT_ = _REAL*_DISPATCHBASE+_FLOAT_,
220     _REAL__POLY = _REAL*_DISPATCHBASE+_POLY,
221     _REAL__VECT = _REAL*_DISPATCHBASE+_VECT,
222     _REAL__MAP = _REAL*_DISPATCHBASE+_MAP,
223     _REAL__FRAC = _REAL*_DISPATCHBASE+_FRAC,
224     _USER__USER=  _USER*_DISPATCHBASE+_USER,
225     _USER__INT_=  _USER*_DISPATCHBASE+_INT_,
226     _USER__POLY=  _USER*_DISPATCHBASE+_POLY
227   } ;
228 
229   enum comp_subtypes {
230     _SEQ__VECT=1,
231     _SET__VECT=2,
232     _RPN_FUNC__VECT=3,
233     _RPN_STACK__VECT=4,
234     _GROUP__VECT=5,
235     _LINE__VECT=6,
236     _VECTOR__VECT=7,
237     _PNT__VECT=8,
238     _CURVE__VECT=8,
239     _HALFLINE__VECT=9,
240     _POLY1__VECT=10,
241     _MATRIX__VECT=11,
242     _RUNFILE__VECT=12,
243     _ASSUME__VECT=13,
244     _SPREAD__VECT=14,
245     _CELL__VECT=15,
246     _EQW__VECT=16,
247     _HIST__VECT=17,
248     _TILIST__VECT=0,
249     _FOLDER__VECT=18,
250     _SORTED__VECT=19,
251     _POINT__VECT=20,
252     _POLYEDRE__VECT=21,
253     _RGBA__VECT=22,
254     _LIST__VECT=23,
255     _LOGO__VECT=24,
256     _GGB__VECT=25,
257     _INTERVAL__VECT=26,
258     _GGBVECT=27,
259     _PRINT__VECT=28,
260     _TUPLE__VECT=29,
261     _TABLE__VECT=30,
262     _GRAPH__VECT =31,
263     _PRG__VECT=32,
264   } ;
265 
266   enum symb_subtypes {
267     _GLOBAL__EVAL =-1,
268     _SPREAD__SYMB =123, // do not use this value elsewhere
269     _FORCHK__SYMB=124, // cached subtype value for for inside a for loop
270   } ;
271 
272   enum map_subtypes {
273     _SPARSE_MATRIX=2,
274   };
275 
276   enum point_styles {
277     _STYLE_DOT=0,
278     _STYLE_BOX=1,
279     _STYLE_CROSS=2,
280     _STYLE_PLUS=3
281   };
282 
283   enum line_styles {
284     _STYLE_FULL=0,
285     _STYLE_DOTTED=1,
286     _STYLE_DASHED=2
287   };
288 
289   enum plot_options {
290     _ADAPTIVE=0,
291     _AXES=1,
292     _COLOR=2,
293     _FILLED=3,
294     _FONT=4,
295     _LABELS=5,
296     _LEGEND=6,
297     _LINESTYLE=7,
298     _RESOLUTION=12,
299     _SAMPLE=9,
300     _SCALING=10,
301     _STYLE=11,
302     _SYMBOL=8, // same as _SYMB!
303     _SYMBOLSIZE=13,
304     _THICKNESS=14,
305     _TITLE=15,
306     _TITLEFONT=16,
307     _VIEW=17,
308     _AXESFONT=18,
309     _COORDS=19,
310     _LABELFONT=20,
311     _LABELDIRECTIONS=21,
312     _NUMPOINTS=22,
313     _TICKMARKS=23,
314     _XTICKMARKS=24,
315     _XSTEP=25,
316     _YSTEP=26,
317     _ZSTEP=27,
318     _TSTEP=28,
319     _USTEP=29,
320     _VSTEP=30,
321     _NSTEP=31,
322     _FRAMES=32,
323     _GL_LIGHT0=33,
324     _GL_LIGHT1=34,
325     _GL_LIGHT2=35,
326     _GL_LIGHT3=36,
327     _GL_LIGHT4=37,
328     _GL_LIGHT5=38,
329     _GL_LIGHT6=39,
330     _GL_LIGHT7=40,
331     _GL_AMBIENT=50,
332     _GL_SPECULAR=51,
333     _GL_DIFFUSE=52,
334     _GL_POSITION=53,
335     _GL_SPOT_DIRECTION=54,
336     _GL_SPOT_EXPONENT=55,
337     _GL_SPOT_CUTOFF=56,
338     _GL_CONSTANT_ATTENUATION=57,
339     _GL_LINEAR_ATTENUATION=58,
340     _GL_QUADRATIC_ATTENUATION=59,
341     _GL_LIGHT_MODEL_AMBIENT=60,
342     _GL_LIGHT_MODEL_LOCAL_VIEWER=61,
343     _GL_LIGHT_MODEL_TWO_SIDE=62,
344     _GL_LIGHT_MODEL_COLOR_CONTROL=72,
345     _GL_OPTION=63,
346     _GL_SMOOTH=64,
347     _GL_FLAT=65,
348     _GL_SHININESS=66,
349     _GL_FRONT=67,
350     _GL_BACK=68,
351     _GL_FRONT_AND_BACK=69,
352     _GL_AMBIENT_AND_DIFFUSE=70,
353     _GL_EMISSION=71,
354     _GL_SEPARATE_SPECULAR_COLOR=73,
355     _GL_SINGLE_COLOR=74,
356     _GL_BLEND=75,
357     _GL_SRC_ALPHA=76,
358     _GL_ONE_MINUS_SRC_ALPHA=77,
359     _GL_MATERIAL=78,
360     _GL_COLOR_INDEXES=79,
361     _GL_LIGHT=80,
362     _GL_PERSPECTIVE=81,
363     _GL_ORTHO=82,
364     _GL_QUATERNION=83,
365     _GL_X=84,
366     _GL_Y=85,
367     _GL_Z=86,
368     _GL_XTICK=87,
369     _GL_YTICK=88,
370     _GL_ZTICK=89,
371     _GL_ANIMATE=90,
372     _GL_SHOWAXES=91,
373     _GL_SHOWNAMES=92,
374     _GL_X_AXIS_NAME=93,
375     _GL_Y_AXIS_NAME=94,
376     _GL_Z_AXIS_NAME=95,
377     _GL_X_AXIS_UNIT=96,
378     _GL_Y_AXIS_UNIT=97,
379     _GL_Z_AXIS_UNIT=98,
380     _GL_TEXTURE=99,
381     _GL_ROTATION_AXIS=100,
382     _GL_X_AXIS_COLOR=101,
383     _GL_Y_AXIS_COLOR=102,
384     _GL_Z_AXIS_COLOR=103,
385     _GL_LOGX=104,
386     _GL_LOGY=105,
387     _GL_LOGZ=106,
388   };
389 
390   enum solver_methods {
391     _BISECTION_SOLVER=0,
392     _FALSEPOS_SOLVER=1,
393     _BRENT_SOLVER=2,
394     _NEWTON_SOLVER=3,
395     _SECANT_SOLVER=4,
396     _STEFFENSON_SOLVER=5,
397     _HYBRIDSJ_SOLVER=6,
398     _HYBRIDJ_SOLVER=7,
399     _NEWTONJ_SOLVER=8,
400     _HYBRIDS_SOLVER=9,
401     _HYBRID_SOLVER=10,
402     _DNEWTON_SOLVER=11,
403     _GOLUB_REINSCH_DECOMP=12,
404     _GOLUB_REINSCH_MOD_DECOMP=13,
405     _JACOBI_DECOMP=14,
406     _MINOR_DET=15,
407     _HESSENBERG_PCAR=16,
408     _RATIONAL_DET=17,
409     _KEEP_PIVOT=18,
410     _TRAPEZE=19,
411     _RECTANGLE_DROIT=20,
412     _RECTANGLE_GAUCHE=21,
413     _POINT_MILIEU=22,
414     _SIMPSON=23,
415     _UNFACTORED=24,
416     _FADEEV=25,
417     _BAREISS=26,
418     _ROMBERGT=27,
419     _ROMBERGM=28,
420     _GAUSS15=29,
421   };
422 
423   enum groebner_switches {
424     _WITH_COCOA=0,
425     _WITH_F5=1,
426     _TDEG_ORDER=2,
427     _PLEX_ORDER=6,
428     _REVLEX_ORDER=4,
429     _MODULAR_CHECK=5,
430     _3VAR_ORDER=3,
431     _7VAR_ORDER=7, // GROEBNER_VARS==15 : double revlex 7 params at end, 7 variables
432     _11VAR_ORDER=11, // GROEBNER_VARS==15 : 3 params at end, 11 variables
433     // use negative values for RUR
434     _16VAR_ORDER=16, // 16 variables to eliminate
435     _32VAR_ORDER=32, // 32 variables to eliminate
436     _48VAR_ORDER=48, // 48 variables to eliminate // not implemented currently
437     _64VAR_ORDER=64, // 64 variables to eliminate
438     _RUR_REVLEX=-4,
439     _RUR_3VAR=-3,
440     _RUR_7VAR=-7,
441     _RUR_11VAR=-11,
442     _RUR_16VAR=-16,
443     _RUR_32VAR=-32,
444     _RUR_48VAR=-48,
445     _RUR_64VAR=-64,
446   };
447 
448   enum int_subtypes {
449     _INT_INT=0,
450     _INT_TYPE=1,
451     _INT_CHAR=2,
452     _INT_ORDER=3,
453     _INT_SOLVER=4,
454     _INT_COLOR=5,
455     _INT_BOOLEAN=6,
456     _INT_PLOT=7,
457     _INT_VECT=8,
458     _INT_MAPLELIB=9,
459     _INT_MAPLECONVERSION=10,
460     _INT_MUPADOPERATOR=11,
461     _INT_FD=12,
462     _INT_COMP_SUBTYPE=13,
463     _INT_GROEBNER=14
464   };
465 
466   enum pointer_subtypes {
467     _FILE_POINTER=0,
468     _FL_WIDGET_POINTER=1,
469     _FL_IMAGE_POINTER=2,
470     _CONTEXT_POINTER=3,
471     _THREAD_POINTER=4,
472     _VARFUNCDEF_POINTER=5,
473     _APPLET_POINTER=6
474   };
475 
476   enum color_values {
477 #ifdef KHICAS
478     _BLACK=0,
479     _RED=0xf800,
480     _GREEN=0x0400,
481     _YELLOW=0xffe0,
482     _BLUE=0x001f,
483     _MAGENTA=0xf81f,
484     _CYAN=0x07ff,
485     _WHITE=0xffff,
486 #else // KHICAS
487 #ifdef GIAC_HAS_STO_38
488     _WHITE=0,
489 #else
490     _BLACK=0,
491 #endif
492     _RED=1,
493     _GREEN=2,
494     _YELLOW=3,
495     _BLUE=4,
496     _MAGENTA=5,
497     _CYAN=6,
498 #ifdef GIAC_HAS_STO_38
499     _BLACK=7,
500 #else
501     _WHITE=7,
502 #endif
503 #endif // KHICAS
504     _POINT_LOSANGE= 1 << 25,
505     _POINT_PLUS = 1 << 26,
506     _POINT_INVISIBLE = 1 << 27,
507     _POINT_CARRE = 100663296,
508     _POINT_TRIANGLE = 167772160,
509     _POINT_ETOILE = 201326592,
510     _POINT_POINT = 234881024,
511     _FILL_POLYGON = 1 << 30,
512     _QUADRANT1 = 0,
513     _QUADRANT2 = 1 << 28,
514     _QUADRANT3 = 1 << 29,
515     _QUADRANT4 = 805306368,
516     _DASH_LINE = 1 << 22,
517     _DOT_LINE = 2 << 22,
518     _DASHDOT_LINE = 3 << 22,
519     _DASHDOTDOT_LINE = 4 << 22,
520     _CAP_FLAT_LINE = 5 << 22,
521     _CAP_ROUND_LINE = 6 << 22,
522     _CAP_SQUARE_LINE = 7 << 22,
523     _LINE_WIDTH_1 = 0,
524     _LINE_WIDTH_2 = 1 << 16,
525     _LINE_WIDTH_3 = 2 << 16,
526     _LINE_WIDTH_4 = 3 << 16,
527     _LINE_WIDTH_5 = 4 << 16,
528     _LINE_WIDTH_6 = 5 << 16,
529     _LINE_WIDTH_7 = 6 << 16,
530     _LINE_WIDTH_8 = 7 << 16,
531     _POINT_WIDTH_1 = 0,
532     _POINT_WIDTH_2 = 1 << 19,
533     _POINT_WIDTH_3 = 2 << 19,
534     _POINT_WIDTH_4 = 3 << 19,
535     _POINT_WIDTH_5 = 4 << 19,
536     _POINT_WIDTH_6 = 5 << 19,
537     _POINT_WIDTH_7 = 6 << 19,
538     _POINT_WIDTH_8 = 7 << 19,
539 #ifdef BESTA_OS
540 #pragma diag_suppress 61
541 #endif
542     _HIDDEN_NAME = 1 << 31
543   };
544 
545   enum maple_libs {
546     _LINALG=0,
547     _NUMTHEORY=1,
548     _GROEBNER=2
549   };
550 
551   enum maple_conversion {
552     _TRIG=100,
553     _EXPLN=101,
554     _PARFRAC=102,
555     _FULLPARFRAC=103,
556     _BASE=104,
557     _CONFRAC=105,
558     _MAPLE_LIST=256,
559     _POSINT=1*256+2,
560     _NEGINT=2*256+2,
561     _NONPOSINT=3*256+2,
562     _NONNEGINT=4*256+2,
563     _LP_BINARY=106,           //   * binary
564     _LP_BINARYVARIABLES=107,  //   * binaryvariables
565     _LP_DEPTHLIMIT=108,       //   * depthlimit
566     _LP_INTEGER=109,          //   * integer
567     _LP_INTEGERVARIABLES=110, //   * integervariables
568     _LP_MAXIMIZE=111,         //   * maximize
569     _LP_NONNEGATIVE=112,      //   * nonnegative
570     _LP_NONNEGINT=113,        //   * nonnegint
571     _LP_VARIABLES=114,        //   * variables
572     _LP_ASSUME=115,
573     _LP_NODE_LIMIT = 116,             // lp_nodelimit
574     _LP_INTEGER_TOLERANCE = 117,      // lp_integertolerance
575     _LP_METHOD = 118,                 // lp_method
576     _LP_SIMPLEX = 119,                // lp_simplex
577     _LP_INTERIOR_POINT = 120,         // lp_interiorpoint
578     _LP_INITIAL_POINT = 121 ,          // lp_initialpoint
579     _LP_MAX_CUTS = 122,            // lp_maxcuts            option
580     _LP_GAP_TOLERANCE = 123,       // lp_gaptolerance       option
581     _LP_NODESELECT = 124,          // lp_nodeselect         option
582     _LP_VARSELECT = 125,           // lp_varselect          option
583     _LP_FIRSTFRACTIONAL = 126,     // lp_firstfractional    value
584     _LP_LASTFRACTIONAL = 127,      // lp_lastfractional     value
585     _LP_MOSTFRACTIONAL = 128,      // lp_mostfractional     value
586     _LP_PSEUDOCOST = 129,          // lp_pseudocost         value
587     _LP_DEPTHFIRST = 130,          // lp_depthfirst         value
588     _LP_BREADTHFIRST = 131,        // lp_breadthfirst       value
589     _LP_BEST_PROJECTION = 132,     // lp_bestprojection     value
590     _LP_HYBRID = 133,              // lp_hybrid             value
591     _LP_ITERATION_LIMIT = 134,     // lp_iterationlimit     option
592     _LP_TIME_LIMIT = 135,          // lp_timelimit          option
593     _LP_VERBOSE =136,             // lp_verbose            option
594     _NLP_INITIALPOINT = 137,    //nlp_initialpoint
595     _NLP_ITERATIONLIMIT = 138,  //nlp_iterationlimit
596     _NLP_NONNEGATIVE = 139,     //nlp_nonnegative
597     _NLP_PRECISION = 140,       //nlp_precision
598     _NLP_MAXIMIZE = 141,         //nlp_maximize
599     _GT_CONNECTED = 142, // connected
600     _GT_SPRING = 143, // spring
601     _GT_TREE = 144, // tree
602     _GT_PLANAR = 145, // planar
603     _GT_DIRECTED = 146, // directed
604     _GT_WEIGHTED = 147, // weighted
605     _GT_WEIGHTS = 148, // weights
606     _GT_BIPARTITE = 149, // bipartite
607     _GT_ACYCLIC = 150, // acyclic
608     _KDE_BANDWIDTH = 151, // bandwidth
609     _KDE_BINS = 152, // bins
610   };
611 
612   enum mupad_operator {
613     _DELETE_OPERATOR=0,
614     _PREFIX_OPERATOR=1,
615     _POSTFIX_OPERATOR=2,
616     _BINARY_OPERATOR=3,
617     _NARY_OPERATOR=4
618   };
619 
620   enum is_num_mask {
621     num_mask_withint=1,
622     num_mask_withfrac=2,
623   };
624 
625   enum step_special {
626     step_nothing_special=0,
627     step_ratfrac=1,
628     step_cyclotomic=2,
629     step_nthroot=3,
630     step_linearizable=4,
631     step_triglinearizable=5,
632     step_polyexp=6,
633     step_ratfracexp=7,
634     step_backsubst=8,
635     step_ratfractrig=9,
636     step_ratfracpow=10,
637     step_ratfracsqrfree=11,
638     step_ratfrachermite=12,
639     step_ratfracfinal=13,
640     step_ratfracchgvar=14,
641     step_linear=15,
642     step_funclinear=16,
643     step_fuuprime=17,
644     step_bypart=18,
645     step_bypart1=19,
646     step_risch=20,
647     step_rrefexchange=21,
648     step_rrefpivot=22,
649     step_rrefpivot0=23,
650     step_rrefend=24,
651     step_extrema1=25,
652     step_extrema2=26,
653     step_extrema3=27,
654     step_extrema4=28,
655     step_extrema5=29,
656     step_extrema6=30,
657     step_extrema7=31,
658     step_extrema8=32,
659     step_integrate_header=33,
660     step_derive_header=34,
661   };
662 
663 
664 
665 #ifndef NO_NAMESPACE_GIAC
666 } // namespace giac
667 #endif // ndef NO_NAMESPACE_GIAC
668 
669 #endif // _GIAC_DISPATCH_H
670