GiNaC  1.8.0
utils.cpp
Go to the documentation of this file.
1 
6 /*
7  * GiNaC Copyright (C) 1999-2020 Johannes Gutenberg University Mainz, Germany
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  */
23 
24 #include "ex.h"
25 #include "numeric.h"
26 #include "utils.h"
27 #include "version.h"
28 
29 namespace GiNaC {
30 
31 /* Version information buried into the library */
35 
36 
38 pole_error::pole_error(const std::string& what_arg, int degree)
39  : domain_error(what_arg), deg(degree) { }
40 
42 int pole_error::degree() const
43 {
44  return deg;
45 }
46 
48 unsigned log2(unsigned n)
49 {
50  unsigned k;
51  for (k = 0; n > 1; n >>= 1)
52  ++k;
53  return k;
54 }
55 
59 const numeric
60 multinomial_coefficient(const std::vector<unsigned> & p)
61 {
62  numeric n = 0, d = 1;
63  for (auto & it : p) {
64  n = n.add(numeric(it));
65  d = d.mul(factorial(numeric(it)));
66  }
67  return factorial(n).div(d);
68 }
69 
71 // flyweight chest of numbers is initialized here:
73 
76 int library_init::count = 0;
77 
78 // static numeric -120
80 const ex _ex_120 = _ex_120;
81 
82 // static numeric -60
84 const ex _ex_60 = _ex_60;
85 
86 // static numeric -48
88 const ex _ex_48 = _ex_48;
89 
90 // static numeric -30
92 const ex _ex_30 = _ex_30;
93 
94 // static numeric -25
96 const ex _ex_25 = _ex_25;
97 
98 // static numeric -24
100 const ex _ex_24 = _ex_24;
101 
102 // static numeric -20
104 const ex _ex_20 = _ex_20;
105 
106 // static numeric -18
108 const ex _ex_18 = _ex_18;
109 
110 // static numeric -15
112 const ex _ex_15 = _ex_15;
113 
114 // static numeric -12
116 const ex _ex_12 = _ex_12;
117 
118 // static numeric -11
120 const ex _ex_11 = _ex_11;
121 
122 // static numeric -10
124 const ex _ex_10 = _ex_10;
125 
126 // static numeric -9
128 const ex _ex_9 = _ex_9;
129 
130 // static numeric -8
132 const ex _ex_8 = _ex_8;
133 
134 // static numeric -7
136 const ex _ex_7 = _ex_7;
137 
138 // static numeric -6
140 const ex _ex_6 = _ex_6;
141 
142 // static numeric -5
144 const ex _ex_5 = _ex_5;
145 
146 // static numeric -4
148 const ex _ex_4 = _ex_4;
149 
150 // static numeric -3
152 const ex _ex_3 = _ex_3;
153 
154 // static numeric -2
156 const ex _ex_2 = _ex_2;
157 
158 // static numeric -1
160 const ex _ex_1 = _ex_1;
161 
162 // static numeric -1/2
165 
166 // static numeric -1/3
169 
170 // static numeric -1/4
173 
174 // static numeric 0
177 const ex _ex0 = _ex0;
178 
179 // static numeric 1/4
181 const ex _ex1_4 = _ex1_4;
182 
183 // static numeric 1/3
185 const ex _ex1_3 = _ex1_3;
186 
187 // static numeric 1/2
189 const ex _ex1_2 = _ex1_2;
190 
191 // static numeric 1
193 const ex _ex1 = _ex1;
194 
195 // static numeric 2
197 const ex _ex2 = _ex2;
198 
199 // static numeric 3
201 const ex _ex3 = _ex3;
202 
203 // static numeric 4
205 const ex _ex4 = _ex4;
206 
207 // static numeric 5
209 const ex _ex5 = _ex5;
210 
211 // static numeric 6
213 const ex _ex6 = _ex6;
214 
215 // static numeric 7
217 const ex _ex7 = _ex7;
218 
219 // static numeric 8
221 const ex _ex8 = _ex8;
222 
223 // static numeric 9
225 const ex _ex9 = _ex9;
226 
227 // static numeric 10
229 const ex _ex10 = _ex10;
230 
231 // static numeric 11
233 const ex _ex11 = _ex11;
234 
235 // static numeric 12
237 const ex _ex12 = _ex12;
238 
239 // static numeric 15
241 const ex _ex15 = _ex15;
242 
243 // static numeric 18
245 const ex _ex18 = _ex18;
246 
247 // static numeric 20
249 const ex _ex20 = _ex20;
250 
251 // static numeric 24
253 const ex _ex24 = _ex24;
254 
255 // static numeric 25
257 const ex _ex25 = _ex25;
258 
259 // static numeric 30
261 const ex _ex30 = _ex30;
262 
263 // static numeric 48
265 const ex _ex48 = _ex48;
266 
267 // static numeric 60
269 const ex _ex60 = _ex60;
270 
271 // static numeric 120
273 const ex _ex120 = _ex120;
274 
278 {
279  if (count++==0) {
280  _num_120_p = (const numeric *)&dynallocate<numeric>(-120);
281  _num_60_p = (const numeric *)&dynallocate<numeric>(-60);
282  _num_48_p = (const numeric *)&dynallocate<numeric>(-48);
283  _num_30_p = (const numeric *)&dynallocate<numeric>(-30);
284  _num_25_p = (const numeric *)&dynallocate<numeric>(-25);
285  _num_24_p = (const numeric *)&dynallocate<numeric>(-24);
286  _num_20_p = (const numeric *)&dynallocate<numeric>(-20);
287  _num_18_p = (const numeric *)&dynallocate<numeric>(-18);
288  _num_15_p = (const numeric *)&dynallocate<numeric>(-15);
289  _num_12_p = (const numeric *)&dynallocate<numeric>(-12);
290  _num_11_p = (const numeric *)&dynallocate<numeric>(-11);
291  _num_10_p = (const numeric *)&dynallocate<numeric>(-10);
292  _num_9_p = (const numeric *)&dynallocate<numeric>(-9);
293  _num_8_p = (const numeric *)&dynallocate<numeric>(-8);
294  _num_7_p = (const numeric *)&dynallocate<numeric>(-7);
295  _num_6_p = (const numeric *)&dynallocate<numeric>(-6);
296  _num_5_p = (const numeric *)&dynallocate<numeric>(-5);
297  _num_4_p = (const numeric *)&dynallocate<numeric>(-4);
298  _num_3_p = (const numeric *)&dynallocate<numeric>(-3);
299  _num_2_p = (const numeric *)&dynallocate<numeric>(-2);
300  _num_1_p = (const numeric *)&dynallocate<numeric>(-1);
301  _num_1_2_p = (const numeric *)&dynallocate<numeric>(-1,2);
302  _num_1_3_p = (const numeric *)&dynallocate<numeric>(-1,3);
303  _num_1_4_p = (const numeric *)&dynallocate<numeric>(-1,4);
304  _num0_p = (const numeric *)&dynallocate<numeric>(0);
305  _num0_bp = _num0_p; // Cf. class ex default ctor.
306  _num1_4_p = (const numeric *)&dynallocate<numeric>(1,4);
307  _num1_3_p = (const numeric *)&dynallocate<numeric>(1,3);
308  _num1_2_p = (const numeric *)&dynallocate<numeric>(1,2);
309  _num1_p = (const numeric *)&dynallocate<numeric>(1);
310  _num2_p = (const numeric *)&dynallocate<numeric>(2);
311  _num3_p = (const numeric *)&dynallocate<numeric>(3);
312  _num4_p = (const numeric *)&dynallocate<numeric>(4);
313  _num5_p = (const numeric *)&dynallocate<numeric>(5);
314  _num6_p = (const numeric *)&dynallocate<numeric>(6);
315  _num7_p = (const numeric *)&dynallocate<numeric>(7);
316  _num8_p = (const numeric *)&dynallocate<numeric>(8);
317  _num9_p = (const numeric *)&dynallocate<numeric>(9);
318  _num10_p = (const numeric *)&dynallocate<numeric>(10);
319  _num11_p = (const numeric *)&dynallocate<numeric>(11);
320  _num12_p = (const numeric *)&dynallocate<numeric>(12);
321  _num15_p = (const numeric *)&dynallocate<numeric>(15);
322  _num18_p = (const numeric *)&dynallocate<numeric>(18);
323  _num20_p = (const numeric *)&dynallocate<numeric>(20);
324  _num24_p = (const numeric *)&dynallocate<numeric>(24);
325  _num25_p = (const numeric *)&dynallocate<numeric>(25);
326  _num30_p = (const numeric *)&dynallocate<numeric>(30);
327  _num48_p = (const numeric *)&dynallocate<numeric>(48);
328  _num60_p = (const numeric *)&dynallocate<numeric>(60);
329  _num120_p = (const numeric *)&dynallocate<numeric>(120);
330 
331  new((void*)&_ex_120) ex(*_num_120_p);
332  new((void*)&_ex_60) ex(*_num_60_p);
333  new((void*)&_ex_48) ex(*_num_48_p);
334  new((void*)&_ex_30) ex(*_num_30_p);
335  new((void*)&_ex_25) ex(*_num_25_p);
336  new((void*)&_ex_24) ex(*_num_24_p);
337  new((void*)&_ex_20) ex(*_num_20_p);
338  new((void*)&_ex_18) ex(*_num_18_p);
339  new((void*)&_ex_15) ex(*_num_15_p);
340  new((void*)&_ex_12) ex(*_num_12_p);
341  new((void*)&_ex_11) ex(*_num_11_p);
342  new((void*)&_ex_10) ex(*_num_10_p);
343  new((void*)&_ex_9) ex(*_num_9_p);
344  new((void*)&_ex_8) ex(*_num_8_p);
345  new((void*)&_ex_7) ex(*_num_7_p);
346  new((void*)&_ex_6) ex(*_num_6_p);
347  new((void*)&_ex_5) ex(*_num_5_p);
348  new((void*)&_ex_4) ex(*_num_4_p);
349  new((void*)&_ex_3) ex(*_num_3_p);
350  new((void*)&_ex_2) ex(*_num_2_p);
351  new((void*)&_ex_1) ex(*_num_1_p);
352  new((void*)&_ex_1_2) ex(*_num_1_2_p);
353  new((void*)&_ex_1_3) ex(*_num_1_3_p);
354  new((void*)&_ex_1_4) ex(*_num_1_4_p);
355  new((void*)&_ex0) ex(*_num0_p);
356  new((void*)&_ex1_4) ex(*_num1_4_p);
357  new((void*)&_ex1_3) ex(*_num1_3_p);
358  new((void*)&_ex1_2) ex(*_num1_2_p);
359  new((void*)&_ex1) ex(*_num1_p);
360  new((void*)&_ex2) ex(*_num2_p);
361  new((void*)&_ex3) ex(*_num3_p);
362  new((void*)&_ex4) ex(*_num4_p);
363  new((void*)&_ex5) ex(*_num5_p);
364  new((void*)&_ex6) ex(*_num6_p);
365  new((void*)&_ex7) ex(*_num7_p);
366  new((void*)&_ex8) ex(*_num8_p);
367  new((void*)&_ex9) ex(*_num9_p);
368  new((void*)&_ex10) ex(*_num10_p);
369  new((void*)&_ex11) ex(*_num11_p);
370  new((void*)&_ex12) ex(*_num12_p);
371  new((void*)&_ex15) ex(*_num15_p);
372  new((void*)&_ex18) ex(*_num18_p);
373  new((void*)&_ex20) ex(*_num20_p);
374  new((void*)&_ex24) ex(*_num24_p);
375  new((void*)&_ex25) ex(*_num25_p);
376  new((void*)&_ex30) ex(*_num30_p);
377  new((void*)&_ex48) ex(*_num48_p);
378  new((void*)&_ex60) ex(*_num60_p);
379  new((void*)&_ex120) ex(*_num120_p);
380 
381  // Initialize print context class info (this is not strictly necessary
382  // but we do it anyway to make print_context_class_info::dump_hierarchy()
383  // output the whole hierarchy whether or not the classes are actually
384  // used)
385  print_context::get_class_info_static();
386  print_dflt::get_class_info_static();
387  print_latex::get_class_info_static();
388  print_python::get_class_info_static();
389  print_python_repr::get_class_info_static();
390  print_tree::get_class_info_static();
391  print_csrc::get_class_info_static();
392  print_csrc_float::get_class_info_static();
393  print_csrc_double::get_class_info_static();
394  print_csrc_cl_N::get_class_info_static();
395  }
396 }
397 
398 
402 {
403  if (--count==0) {
404  // It's really necessary to clean up, since the program
405  // lifetime might not be the same as libginac.{so,dll} one
406  // (e.g. consider // dlopen/dlsym/dlclose sequence).
407  // Let the ex dtors care for deleting the numerics!
408  _ex120.~ex();
409  _ex_120.~ex();
410  _ex60.~ex();
411  _ex_60.~ex();
412  _ex48.~ex();
413  _ex_48.~ex();
414  _ex30.~ex();
415  _ex_30.~ex();
416  _ex25.~ex();
417  _ex_25.~ex();
418  _ex24.~ex();
419  _ex_24.~ex();
420  _ex20.~ex();
421  _ex_20.~ex();
422  _ex18.~ex();
423  _ex_18.~ex();
424  _ex15.~ex();
425  _ex_15.~ex();
426  _ex12.~ex();
427  _ex_12.~ex();
428  _ex11.~ex();
429  _ex_11.~ex();
430  _ex10.~ex();
431  _ex_10.~ex();
432  _ex9.~ex();
433  _ex_9.~ex();
434  _ex8.~ex();
435  _ex_8.~ex();
436  _ex7.~ex();
437  _ex_7.~ex();
438  _ex6.~ex();
439  _ex_6.~ex();
440  _ex5.~ex();
441  _ex_5.~ex();
442  _ex4.~ex();
443  _ex_4.~ex();
444  _ex3.~ex();
445  _ex_3.~ex();
446  _ex2.~ex();
447  _ex_2.~ex();
448  _ex1.~ex();
449  _ex_1.~ex();
450  _ex1_2.~ex();
451  _ex_1_2.~ex();
452  _ex1_3.~ex();
453  _ex_1_3.~ex();
454  _ex1_4.~ex();
455  _ex_1_4.~ex();
456  _ex0.~ex();
457  }
458 }
459 
461 
462 // comment skeleton for header files
463 
464 
465 // member functions
466 
467  // default constructor, destructor, copy constructor and assignment operator
468  // none
469 
470  // other constructors
471  // none
472 
473  // functions overriding virtual functions from base classes
474  // none
475 
476  // new virtual functions which can be overridden by derived classes
477  // none
478 
479  // non-virtual functions in this class
480  // none
481 
482 // member variables
483 // none
484 
485 
486 
487 // comment skeleton for implementation files
488 
489 
491 // default constructor, destructor, copy constructor and assignment operator
493 
494 // public
495 // protected
496 
498 // other constructors
500 
501 // public
502 // none
503 
505 // functions overriding virtual functions from base classes
507 
508 // public
509 // protected
510 // none
511 
513 // new virtual functions which can be overridden by derived classes
515 
516 // public
517 // protected
518 // none
519 
521 // non-virtual functions in this class
523 
524 // public
525 // protected
526 // none
527 
529 // static member variables
531 
532 // protected
533 // private
534 // none
535 
536 
537 } // namespace GiNaC
GiNaC::_num3_p
const numeric * _num3_p
Definition: utils.cpp:200
GiNaC::_ex_3
const ex _ex_3
Definition: utils.cpp:152
GiNaC::_ex120
const ex _ex120
Definition: utils.cpp:273
GINACLIB_MICRO_VERSION
#define GINACLIB_MICRO_VERSION
Definition: version.h:33
GiNaC::_ex10
const ex _ex10
Definition: utils.cpp:229
GiNaC::_ex30
const ex _ex30
Definition: utils.cpp:261
GiNaC::_ex_25
const ex _ex_25
Definition: utils.cpp:96
GiNaC::_ex24
const ex _ex24
Definition: utils.cpp:253
GiNaC::library_init::~library_init
~library_init()
Dtor of static initialization helpers.
Definition: utils.cpp:401
GiNaC::_num10_p
const numeric * _num10_p
Definition: utils.cpp:228
GiNaC::_ex0
const ex _ex0
Definition: utils.cpp:177
numeric.h
Makes the interface to the underlying bignum package available.
GiNaC::_ex1_3
const ex _ex1_3
Definition: utils.cpp:185
GiNaC::_ex_1_4
const ex _ex_1_4
Definition: utils.cpp:172
GiNaC::version_micro
const int version_micro
Definition: utils.cpp:34
GiNaC::_ex5
const ex _ex5
Definition: utils.cpp:209
GiNaC::_num_6_p
const numeric * _num_6_p
Definition: utils.cpp:139
GiNaC::_num5_p
const numeric * _num5_p
Definition: utils.cpp:208
k
vector< int > k
Definition: factor.cpp:1466
GiNaC::_num4_p
const numeric * _num4_p
Definition: utils.cpp:204
GiNaC::_ex_30
const ex _ex_30
Definition: utils.cpp:92
GiNaC::_ex9
const ex _ex9
Definition: utils.cpp:225
GiNaC::_num7_p
const numeric * _num7_p
Definition: utils.cpp:216
GiNaC::_num_5_p
const numeric * _num_5_p
Definition: utils.cpp:143
GiNaC::_ex1
const ex _ex1
Definition: utils.cpp:193
GiNaC::_num_1_3_p
const numeric * _num_1_3_p
Definition: utils.cpp:167
GiNaC::_ex25
const ex _ex25
Definition: utils.cpp:257
GiNaC::_num11_p
const numeric * _num11_p
Definition: utils.cpp:232
version.h
GiNaC library version information.
GINACLIB_MAJOR_VERSION
#define GINACLIB_MAJOR_VERSION
Definition: version.h:27
GiNaC::_num_15_p
const numeric * _num_15_p
Definition: utils.cpp:111
GiNaC::_num_3_p
const numeric * _num_3_p
Definition: utils.cpp:151
GiNaC::version_major
const int version_major
Definition: utils.cpp:32
GiNaC::_ex_9
const ex _ex_9
Definition: utils.cpp:128
GiNaC::_num1_4_p
const numeric * _num1_4_p
Definition: utils.cpp:180
GINACLIB_MINOR_VERSION
#define GINACLIB_MINOR_VERSION
Definition: version.h:30
GiNaC::factorial
const numeric factorial(const numeric &n)
Factorial combinatorial function.
Definition: numeric.cpp:2113
GiNaC::_num1_3_p
const numeric * _num1_3_p
Definition: utils.cpp:184
GiNaC::_num30_p
const numeric * _num30_p
Definition: utils.cpp:260
GiNaC::_num_4_p
const numeric * _num_4_p
Definition: utils.cpp:147
GiNaC::_ex_5
const ex _ex_5
Definition: utils.cpp:144
GiNaC
Definition: add.cpp:38
GiNaC::_ex6
const ex _ex6
Definition: utils.cpp:213
GiNaC::_num8_p
const numeric * _num8_p
Definition: utils.cpp:220
GiNaC::library_init::init_unarchivers
static void init_unarchivers()
Definition: utils.cpp:460
GiNaC::_num_12_p
const numeric * _num_12_p
Definition: utils.cpp:115
GiNaC::_ex_12
const ex _ex_12
Definition: utils.cpp:116
GiNaC::pole_error::degree
int degree() const
Return the degree of the pole_error exception class.
Definition: utils.cpp:42
GiNaC::_ex7
const ex _ex7
Definition: utils.cpp:217
GiNaC::_num120_p
const numeric * _num120_p
Definition: utils.cpp:272
GiNaC::_ex_7
const ex _ex_7
Definition: utils.cpp:136
GiNaC::library_init::count
static int count
How many static objects were created? Only the first one must create the static flyweights on the hea...
Definition: ex.h:56
utils.h
Interface to several small and furry utilities needed within GiNaC but not of any interest to the use...
GiNaC::_num_48_p
const numeric * _num_48_p
Definition: utils.cpp:87
GiNaC::pole_error::deg
int deg
Definition: numeric.h:75
GiNaC::_num48_p
const numeric * _num48_p
Definition: utils.cpp:264
GiNaC::_num_9_p
const numeric * _num_9_p
Definition: utils.cpp:127
GiNaC::_num_2_p
const numeric * _num_2_p
Definition: utils.cpp:155
GiNaC::_ex_2
const ex _ex_2
Definition: utils.cpp:156
GiNaC::_ex48
const ex _ex48
Definition: utils.cpp:265
GiNaC::_ex_60
const ex _ex_60
Definition: utils.cpp:84
GiNaC::ex
Lightweight wrapper for GiNaC's symbolic objects.
Definition: ex.h:72
GiNaC::_num_1_4_p
const numeric * _num_1_4_p
Definition: utils.cpp:171
GiNaC::_ex2
const ex _ex2
Definition: utils.cpp:197
GiNaC::_num_60_p
const numeric * _num_60_p
Definition: utils.cpp:83
GiNaC::_ex4
const ex _ex4
Definition: utils.cpp:205
GiNaC::_ex_10
const ex _ex_10
Definition: utils.cpp:124
GiNaC::_num6_p
const numeric * _num6_p
Definition: utils.cpp:212
GiNaC::_num_1_2_p
const numeric * _num_1_2_p
Definition: utils.cpp:163
GiNaC::_num_7_p
const numeric * _num_7_p
Definition: utils.cpp:135
GiNaC::_num_30_p
const numeric * _num_30_p
Definition: utils.cpp:91
GiNaC::_num_10_p
const numeric * _num_10_p
Definition: utils.cpp:123
GiNaC::_num_11_p
const numeric * _num_11_p
Definition: utils.cpp:119
GiNaC::_ex_4
const ex _ex_4
Definition: utils.cpp:148
ex.h
Interface to GiNaC's light-weight expression handles.
GiNaC::_ex8
const ex _ex8
Definition: utils.cpp:221
GiNaC::_ex11
const ex _ex11
Definition: utils.cpp:233
GiNaC::_num_24_p
const numeric * _num_24_p
Definition: utils.cpp:99
GiNaC::_ex3
const ex _ex3
Definition: utils.cpp:201
GiNaC::_num_18_p
const numeric * _num_18_p
Definition: utils.cpp:107
GiNaC::_ex15
const ex _ex15
Definition: utils.cpp:241
GiNaC::_num1_2_p
const numeric * _num1_2_p
Definition: utils.cpp:188
GiNaC::multinomial_coefficient
const numeric multinomial_coefficient(const std::vector< unsigned > &p)
Compute the multinomial coefficient n!/(p1!*p2!*...*pk!) where n = p1+p2+...+pk, i....
Definition: utils.cpp:60
GiNaC::_num20_p
const numeric * _num20_p
Definition: utils.cpp:248
GiNaC::_ex_24
const ex _ex_24
Definition: utils.cpp:100
GiNaC::_ex_120
const ex _ex_120
Definition: utils.cpp:80
GiNaC::library_init::library_init
library_init()
Ctor of static initialization helpers.
Definition: utils.cpp:277
GiNaC::_ex1_4
const ex _ex1_4
Definition: utils.cpp:181
GiNaC::_ex_48
const ex _ex_48
Definition: utils.cpp:88
GiNaC::_num_1_p
const numeric * _num_1_p
Definition: utils.cpp:159
GiNaC::_num18_p
const numeric * _num18_p
Definition: utils.cpp:244
GiNaC::_ex20
const ex _ex20
Definition: utils.cpp:249
GiNaC::_ex_8
const ex _ex_8
Definition: utils.cpp:132
GiNaC::_ex_20
const ex _ex_20
Definition: utils.cpp:104
GiNaC::_num_25_p
const numeric * _num_25_p
Definition: utils.cpp:95
GiNaC::_ex1_2
const ex _ex1_2
Definition: utils.cpp:189
GiNaC::degree
int degree(const ex &thisex, const ex &s)
Definition: ex.h:736
GiNaC::_ex12
const ex _ex12
Definition: utils.cpp:237
n
size_t n
Definition: factor.cpp:1463
GiNaC::_ex_15
const ex _ex_15
Definition: utils.cpp:112
GiNaC::_num12_p
const numeric * _num12_p
Definition: utils.cpp:236
GiNaC::_ex_6
const ex _ex_6
Definition: utils.cpp:140
GiNaC::basic
This class is the ABC (abstract base class) of GiNaC's class hierarchy.
Definition: basic.h:105
GiNaC::_num_20_p
const numeric * _num_20_p
Definition: utils.cpp:103
GiNaC::_num_120_p
const numeric * _num_120_p
Definition: utils.cpp:79
GiNaC::_num15_p
const numeric * _num15_p
Definition: utils.cpp:240
GiNaC::_num0_p
const numeric * _num0_p
Definition: utils.cpp:175
GiNaC::_ex60
const ex _ex60
Definition: utils.cpp:269
GiNaC::numeric::div
const numeric div(const numeric &other) const
Numerical division method.
Definition: numeric.cpp:890
GiNaC::_ex_1_3
const ex _ex_1_3
Definition: utils.cpp:168
GiNaC::log2
unsigned log2(unsigned n)
Integer binary logarithm.
Definition: utils.cpp:48
GiNaC::_num_8_p
const numeric * _num_8_p
Definition: utils.cpp:131
GiNaC::pole_error::pole_error
pole_error(const std::string &what_arg, int degree)
ctor for pole_error exception class.
Definition: utils.cpp:38
GiNaC::_num1_p
const numeric * _num1_p
Definition: utils.cpp:192
GiNaC::_ex_18
const ex _ex_18
Definition: utils.cpp:108
GiNaC::_num9_p
const numeric * _num9_p
Definition: utils.cpp:224
GiNaC::_ex_1_2
const ex _ex_1_2
Definition: utils.cpp:164
GiNaC::_num60_p
const numeric * _num60_p
Definition: utils.cpp:268
GiNaC::_num24_p
const numeric * _num24_p
Definition: utils.cpp:252
GiNaC::_num25_p
const numeric * _num25_p
Definition: utils.cpp:256
GiNaC::version_minor
const int version_minor
Definition: utils.cpp:33
GiNaC::_ex_1
const ex _ex_1
Definition: utils.cpp:160
GiNaC::numeric
This class is a wrapper around CLN-numbers within the GiNaC class hierarchy.
Definition: numeric.h:82
GiNaC::_ex_11
const ex _ex_11
Definition: utils.cpp:120
GiNaC::_ex18
const ex _ex18
Definition: utils.cpp:245
GiNaC::_num2_p
const numeric * _num2_p
Definition: utils.cpp:196
GiNaC::_num0_bp
const basic * _num0_bp
Definition: utils.cpp:176

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.