-const ex & _ex1_4(void)
-{
- static ex * e = new ex(_num1_4());
- return *e;
-}
-
-// numeric 1/3
-const numeric & _num1_3(void)
-{
- const static ex e = ex(numeric(1,3));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex1_3(void)
-{
- static ex * e = new ex(_num1_3());
- return *e;
-}
-
-// numeric 1/2
-const numeric & _num1_2(void)
-{
- const static ex e = ex(numeric(1,2));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex1_2(void)
-{
- static ex * e = new ex(_num1_2());
- return *e;
-}
-
-// numeric 1
-const numeric & _num1(void)
-{
- const static ex e = ex(numeric(1));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex1(void)
-{
- static ex * e = new ex(_num1());
- return *e;
-}
-
-// numeric 2
-const numeric & _num2(void)
-{
- const static ex e = ex(numeric(2));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex2(void)
-{
- static ex * e = new ex(_num2());
- return *e;
-}
-
-// numeric 3
-const numeric & _num3(void)
-{
- const static ex e = ex(numeric(3));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex3(void)
-{
- static ex * e = new ex(_num3());
- return *e;
-}
-
-// numeric 4
-const numeric & _num4(void)
-{
- const static ex e = ex(numeric(4));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex4(void)
-{
- static ex * e = new ex(_num4());
- return *e;
-}
-
-// numeric 5
-const numeric & _num5(void)
-{
- const static ex e = ex(numeric(5));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex5(void)
-{
- static ex * e = new ex(_num5());
- return *e;
-}
-
-// numeric 6
-const numeric & _num6(void)
-{
- const static ex e = ex(numeric(6));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex6(void)
-{
- static ex * e = new ex(_num6());
- return *e;
-}
-
-// numeric 7
-const numeric & _num7(void)
-{
- const static ex e = ex(numeric(7));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex7(void)
-{
- static ex * e = new ex(_num7());
- return *e;
-}
-
-// numeric 8
-const numeric & _num8(void)
-{
- const static ex e = ex(numeric(8));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex8(void)
-{
- static ex * e = new ex(_num8());
- return *e;
-}
-
-// numeric 9
-const numeric & _num9(void)
-{
- const static ex e = ex(numeric(9));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex9(void)
-{
- static ex * e = new ex(_num9());
- return *e;
-}
-
-// numeric 10
-const numeric & _num10(void)
-{
- const static ex e = ex(numeric(10));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex10(void)
-{
- static ex * e = new ex(_num10());
- return *e;
-}
-
-// numeric 11
-const numeric & _num11(void)
-{
- const static ex e = ex(numeric(11));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex11(void)
-{
- static ex * e = new ex(_num11());
- return *e;
-}
-
-// numeric 12
-const numeric & _num12(void)
-{
- const static ex e = ex(numeric(12));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex12(void)
-{
- static ex * e = new ex(_num12());
- return *e;
-}
-
-// numeric 15
-const numeric & _num15(void)
-{
- const static ex e = ex(numeric(15));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex15(void)
-{
- static ex * e = new ex(_num15());
- return *e;
-}
-
-// numeric 18
-const numeric & _num18(void)
-{
- const static ex e = ex(numeric(18));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex18(void)
-{
- static ex * e = new ex(_num18());
- return *e;
-}
-
-// numeric 20
-const numeric & _num20(void)
-{
- const static ex e = ex(numeric(20));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex20(void)
-{
- static ex * e = new ex(_num20());
- return *e;
-}
-
-// numeric 24
-const numeric & _num24(void)
-{
- const static ex e = ex(numeric(24));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex24(void)
-{
- static ex * e = new ex(_num24());
- return *e;
-}
-
-// numeric 25
-const numeric & _num25(void)
-{
- const static ex e = ex(numeric(25));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex25(void)
-{
- static ex * e = new ex(_num25());
- return *e;
-}
-
-// numeric 30
-const numeric & _num30(void)
-{
- const static ex e = ex(numeric(30));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex30(void)
-{
- static ex * e = new ex(_num30());
- return *e;
-}
-
-// numeric 48
-const numeric & _num48(void)
-{
- const static ex e = ex(numeric(48));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex48(void)
-{
- static ex * e = new ex(_num48());
- return *e;
-}
-
-// numeric 60
-const numeric & _num60(void)
-{
- const static ex e = ex(numeric(60));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex60(void)
-{
- static ex * e = new ex(_num60());
- return *e;
-}
-
-// numeric 120
-const numeric & _num120(void)
-{
- const static ex e = ex(numeric(120));
- const static numeric * n = static_cast<const numeric *>(e.bp);
- return *n;
-}
-
-const ex & _ex120(void)
-{
- static ex * e = new ex(_num120());
- return *e;
-}
+// static numeric 1/4
+const numeric *_num1_4_p;
+const ex _ex1_4 = _ex1_4;
+
+// static numeric 1/3
+const numeric *_num1_3_p;
+const ex _ex1_3 = _ex1_3;
+
+// static numeric 1/2
+const numeric *_num1_2_p;
+const ex _ex1_2 = _ex1_2;
+
+// static numeric 1
+const numeric *_num1_p;
+const ex _ex1 = _ex1;
+
+// static numeric 2
+const numeric *_num2_p;
+const ex _ex2 = _ex2;
+
+// static numeric 3
+const numeric *_num3_p;
+const ex _ex3 = _ex3;
+
+// static numeric 4
+const numeric *_num4_p;
+const ex _ex4 = _ex4;
+
+// static numeric 5
+const numeric *_num5_p;
+const ex _ex5 = _ex5;
+
+// static numeric 6
+const numeric *_num6_p;
+const ex _ex6 = _ex6;
+
+// static numeric 7
+const numeric *_num7_p;
+const ex _ex7 = _ex7;
+
+// static numeric 8
+const numeric *_num8_p;
+const ex _ex8 = _ex8;
+
+// static numeric 9
+const numeric *_num9_p;
+const ex _ex9 = _ex9;
+
+// static numeric 10
+const numeric *_num10_p;
+const ex _ex10 = _ex10;
+
+// static numeric 11
+const numeric *_num11_p;
+const ex _ex11 = _ex11;
+
+// static numeric 12
+const numeric *_num12_p;
+const ex _ex12 = _ex12;
+
+// static numeric 15
+const numeric *_num15_p;
+const ex _ex15 = _ex15;
+
+// static numeric 18
+const numeric *_num18_p;
+const ex _ex18 = _ex18;
+
+// static numeric 20
+const numeric *_num20_p;
+const ex _ex20 = _ex20;
+
+// static numeric 24
+const numeric *_num24_p;
+const ex _ex24 = _ex24;
+
+// static numeric 25
+const numeric *_num25_p;
+const ex _ex25 = _ex25;
+
+// static numeric 30
+const numeric *_num30_p;
+const ex _ex30 = _ex30;
+
+// static numeric 48
+const numeric *_num48_p;
+const ex _ex48 = _ex48;
+
+// static numeric 60
+const numeric *_num60_p;
+const ex _ex60 = _ex60;
+
+// static numeric 120
+const numeric *_num120_p;
+const ex _ex120 = _ex120;
+
+/** Ctor of static initialization helpers. The fist call to this is going
+ * to initialize the library, the others do nothing. */
+library_init::library_init()
+{
+ if (count++==0) {
+ (_num_120_p = new numeric(-120))->setflag(status_flags::dynallocated);
+ (_num_60_p = new numeric(-60))->setflag(status_flags::dynallocated);
+ (_num_48_p = new numeric(-48))->setflag(status_flags::dynallocated);
+ (_num_30_p = new numeric(-30))->setflag(status_flags::dynallocated);
+ (_num_25_p = new numeric(-25))->setflag(status_flags::dynallocated);
+ (_num_24_p = new numeric(-24))->setflag(status_flags::dynallocated);
+ (_num_20_p = new numeric(-20))->setflag(status_flags::dynallocated);
+ (_num_18_p = new numeric(-18))->setflag(status_flags::dynallocated);
+ (_num_15_p = new numeric(-15))->setflag(status_flags::dynallocated);
+ (_num_12_p = new numeric(-12))->setflag(status_flags::dynallocated);
+ (_num_11_p = new numeric(-11))->setflag(status_flags::dynallocated);
+ (_num_10_p = new numeric(-10))->setflag(status_flags::dynallocated);
+ (_num_9_p = new numeric(-9))->setflag(status_flags::dynallocated);
+ (_num_8_p = new numeric(-8))->setflag(status_flags::dynallocated);
+ (_num_7_p = new numeric(-7))->setflag(status_flags::dynallocated);
+ (_num_6_p = new numeric(-6))->setflag(status_flags::dynallocated);
+ (_num_5_p = new numeric(-5))->setflag(status_flags::dynallocated);
+ (_num_4_p = new numeric(-4))->setflag(status_flags::dynallocated);
+ (_num_3_p = new numeric(-3))->setflag(status_flags::dynallocated);
+ (_num_2_p = new numeric(-2))->setflag(status_flags::dynallocated);
+ (_num_1_p = new numeric(-1))->setflag(status_flags::dynallocated);
+ (_num_1_2_p = new numeric(-1,2))->setflag(status_flags::dynallocated);
+ (_num_1_3_p = new numeric(-1,3))->setflag(status_flags::dynallocated);
+ (_num_1_4_p = new numeric(-1,4))->setflag(status_flags::dynallocated);
+ (_num0_p = new numeric(0))->setflag(status_flags::dynallocated);
+ _num0_bp = _num0_p; // Cf. class ex default ctor.
+ (_num1_4_p = new numeric(1,4))->setflag(status_flags::dynallocated);
+ (_num1_3_p = new numeric(1,3))->setflag(status_flags::dynallocated);
+ (_num1_2_p = new numeric(1,2))->setflag(status_flags::dynallocated);
+ (_num1_p = new numeric(1))->setflag(status_flags::dynallocated);
+ (_num2_p = new numeric(2))->setflag(status_flags::dynallocated);
+ (_num3_p = new numeric(3))->setflag(status_flags::dynallocated);
+ (_num4_p = new numeric(4))->setflag(status_flags::dynallocated);
+ (_num5_p = new numeric(5))->setflag(status_flags::dynallocated);
+ (_num6_p = new numeric(6))->setflag(status_flags::dynallocated);
+ (_num7_p = new numeric(7))->setflag(status_flags::dynallocated);
+ (_num8_p = new numeric(8))->setflag(status_flags::dynallocated);
+ (_num9_p = new numeric(9))->setflag(status_flags::dynallocated);
+ (_num10_p = new numeric(10))->setflag(status_flags::dynallocated);
+ (_num11_p = new numeric(11))->setflag(status_flags::dynallocated);
+ (_num12_p = new numeric(12))->setflag(status_flags::dynallocated);
+ (_num15_p = new numeric(15))->setflag(status_flags::dynallocated);
+ (_num18_p = new numeric(18))->setflag(status_flags::dynallocated);
+ (_num20_p = new numeric(20))->setflag(status_flags::dynallocated);
+ (_num24_p = new numeric(24))->setflag(status_flags::dynallocated);
+ (_num25_p = new numeric(25))->setflag(status_flags::dynallocated);
+ (_num30_p = new numeric(30))->setflag(status_flags::dynallocated);
+ (_num48_p = new numeric(48))->setflag(status_flags::dynallocated);
+ (_num60_p = new numeric(60))->setflag(status_flags::dynallocated);
+ (_num120_p = new numeric(120))->setflag(status_flags::dynallocated);
+
+ new((void*)&_ex_120) ex(*_num_120_p);
+ new((void*)&_ex_60) ex(*_num_60_p);
+ new((void*)&_ex_48) ex(*_num_48_p);
+ new((void*)&_ex_30) ex(*_num_30_p);
+ new((void*)&_ex_25) ex(*_num_25_p);
+ new((void*)&_ex_24) ex(*_num_24_p);
+ new((void*)&_ex_20) ex(*_num_20_p);
+ new((void*)&_ex_18) ex(*_num_18_p);
+ new((void*)&_ex_15) ex(*_num_15_p);
+ new((void*)&_ex_12) ex(*_num_12_p);
+ new((void*)&_ex_11) ex(*_num_11_p);
+ new((void*)&_ex_10) ex(*_num_10_p);
+ new((void*)&_ex_9) ex(*_num_9_p);
+ new((void*)&_ex_8) ex(*_num_8_p);
+ new((void*)&_ex_7) ex(*_num_7_p);
+ new((void*)&_ex_6) ex(*_num_6_p);
+ new((void*)&_ex_5) ex(*_num_5_p);
+ new((void*)&_ex_4) ex(*_num_4_p);
+ new((void*)&_ex_3) ex(*_num_3_p);
+ new((void*)&_ex_2) ex(*_num_2_p);
+ new((void*)&_ex_1) ex(*_num_1_p);
+ new((void*)&_ex_1_2) ex(*_num_1_2_p);
+ new((void*)&_ex_1_3) ex(*_num_1_3_p);
+ new((void*)&_ex_1_4) ex(*_num_1_4_p);
+ new((void*)&_ex0) ex(*_num0_p);
+ new((void*)&_ex1_4) ex(*_num1_4_p);
+ new((void*)&_ex1_3) ex(*_num1_3_p);
+ new((void*)&_ex1_2) ex(*_num1_2_p);
+ new((void*)&_ex1) ex(*_num1_p);
+ new((void*)&_ex2) ex(*_num2_p);
+ new((void*)&_ex3) ex(*_num3_p);
+ new((void*)&_ex4) ex(*_num4_p);
+ new((void*)&_ex5) ex(*_num5_p);
+ new((void*)&_ex6) ex(*_num6_p);
+ new((void*)&_ex7) ex(*_num7_p);
+ new((void*)&_ex8) ex(*_num8_p);
+ new((void*)&_ex9) ex(*_num9_p);
+ new((void*)&_ex10) ex(*_num10_p);
+ new((void*)&_ex11) ex(*_num11_p);
+ new((void*)&_ex12) ex(*_num12_p);
+ new((void*)&_ex15) ex(*_num15_p);
+ new((void*)&_ex18) ex(*_num18_p);
+ new((void*)&_ex20) ex(*_num20_p);
+ new((void*)&_ex24) ex(*_num24_p);
+ new((void*)&_ex25) ex(*_num25_p);
+ new((void*)&_ex30) ex(*_num30_p);
+ new((void*)&_ex48) ex(*_num48_p);
+ new((void*)&_ex60) ex(*_num60_p);
+ new((void*)&_ex120) ex(*_num120_p);
+
+ // Initialize print context class info (this is not strictly necessary
+ // but we do it anyway to make print_context_class_info::dump_hierarchy()
+ // output the whole hierarchy whether or not the classes are actually
+ // used)
+ print_context::get_class_info_static();
+ print_dflt::get_class_info_static();
+ print_latex::get_class_info_static();
+ print_python::get_class_info_static();
+ print_python_repr::get_class_info_static();
+ print_tree::get_class_info_static();
+ print_csrc::get_class_info_static();
+ print_csrc_float::get_class_info_static();
+ print_csrc_double::get_class_info_static();
+ print_csrc_cl_N::get_class_info_static();
+ }
+}
+
+
+/** Dtor of static initialization helpers. The last call to this is going
+ * to shut down the library, the others do nothing. */
+library_init::~library_init()
+{
+ if (--count==0) {
+ // It's really necessary to clean up, since the program
+ // lifetime might not be the same as libginac.{so,dll} one
+ // (e.g. consider // dlopen/dlsym/dlclose sequence).
+ delete _num120_p;
+ delete _num_120_p;
+ delete _num60_p;
+ delete _num_60_p;
+ delete _num48_p;
+ delete _num_48_p;
+ delete _num30_p;
+ delete _num_30_p;
+ delete _num25_p;
+ delete _num_25_p;
+ delete _num24_p;
+ delete _num_24_p;
+ delete _num20_p;
+ delete _num_20_p;
+ delete _num18_p;
+ delete _num_18_p;
+ delete _num15_p;
+ delete _num_15_p;
+ delete _num12_p;
+ delete _num_12_p;
+ delete _num11_p;
+ delete _num_11_p;
+ delete _num10_p;
+ delete _num_10_p;
+ delete _num9_p;
+ delete _num_9_p;
+ delete _num8_p;
+ delete _num_8_p;
+ delete _num7_p;
+ delete _num_7_p;
+ delete _num6_p;
+ delete _num_6_p;
+ delete _num5_p;
+ delete _num_5_p;
+ delete _num4_p;
+ delete _num_4_p;
+ delete _num3_p;
+ delete _num_3_p;
+ delete _num2_p;
+ delete _num_2_p;
+ delete _num1_p;
+ delete _num_1_p;
+ delete _num1_2_p;
+ delete _num_1_2_p;
+ delete _num1_3_p;
+ delete _num_1_3_p;
+ delete _num1_4_p;
+ delete _num_1_4_p;
+ delete _num0_p;
+ }
+}
+
+void library_init::init_unarchivers() { }