1 #include "def.h"
2 #include "macro.h"
3
4 INT tme_integer__faktor();
tpe_integer__faktor(a,b,f)5 INT tpe_integer__faktor(a,b,f) OP a,b,f;
6 {
7 INT erg = OK;
8 CTO(INTEGER,"tpe_integer__faktor(1)",a);
9 CTTO(HASHTABLE,ELMSYM,"tpe_integer__faktor(2)",b);
10 erg += tme_integer__faktor(a,b,f);
11 ENDR("tpe_integer__faktor");
12 }
13
14 OP find_tme_integer();
15
find_tpe_integer(a)16 OP find_tpe_integer(a) OP a;
17 /* AK 300102 */
18 {
19 INT erg = OK;
20 CTO(INTEGER,"find_tpe_integer(1)",a);
21 return find_tme_integer(a);
22 ENDO("find_tpe_integer");
23 }
24
25 INT mee_hashtable_hashtable_();
26
27 INT t_splitpart();
28 INT t_productexponent();
tpe_partition__faktor(a,b,f)29 INT tpe_partition__faktor(a,b,f) OP a,b,f;
30 {
31 INT erg = OK;
32 CTO(PARTITION,"tpe_partition__faktor(1)",a);
33 CTTO(HASHTABLE,ELMSYM,"tpe_partition__faktor(2)",b);
34 erg += t_productexponent(a,b,f,tpe_integer__faktor,find_tpe_integer);
35 ENDR("tpe_partition__faktor");
36 }
37
38 #ifdef UNDEF
tpe_partition__faktor_pre300102(a,b,f)39 INT tpe_partition__faktor_pre300102(a,b,f) OP a,b,f;
40 {
41 INT erg = OK;
42 CTO(PARTITION,"tpe_partition__faktor(1)",a);
43 CTTO(HASHTABLE,ELMSYM,"tpe_partition__faktor(2)",b);
44 if (S_PA_LI(a) == 0) {
45 erg += tpe_integer__faktor(cons_null,b,f);
46 goto ende;
47 }
48 else if (S_PA_LI(a) == 1) {
49 erg += tpe_integer__faktor(S_PA_I(a,0),b,f);
50 goto ende;
51 }
52 else {
53 erg += t_splitpart(a,b,f,tpe_partition__faktor,mee_hashtable_hashtable_);
54 goto ende;
55 }
56 ende:
57 ENDR("tpe_partition__faktor");
58 }
59 #endif
60
tpe_powsym__faktor(a,b,f)61 INT tpe_powsym__faktor(a,b,f) OP a,b,f;
62 {
63 INT erg = OK;
64 CTTO(HASHTABLE,POWSYM,"tpe_powsym__faktor(1)",a);
65 CTTO(HASHTABLE,ELMSYM,"tpe_powsym__faktor(2)",b);
66 T_FORALL_MONOMIALS_IN_A(a,b,f,tpe_partition__faktor);
67 ENDR("tpe_powsym__faktor");
68 }
69
70
tpe_hashtable__faktor(a,b,f)71 INT tpe_hashtable__faktor(a,b,f) OP a,b,f;
72 {
73 INT erg = OK;
74 CTO(HASHTABLE,"tpe_hashtable__faktor(1)",a);
75 CTTO(HASHTABLE,ELMSYM,"tpe_hashtable__faktor(2)",b);
76 T_FORALL_MONOMIALS_IN_A(a,b,f,tpe_partition__faktor);
77 ENDR("tpe_hashtable__faktor");
78 }
79
80
tpe___faktor(a,b,f)81 INT tpe___faktor(a,b,f) OP a,b,f;
82 {
83 INT erg = OK;
84 CTTTTO(INTEGER,HASHTABLE,POWSYM,PARTITION,"tpe___faktor(1)",a);
85 CTTO(HASHTABLE,ELMSYM,"tpe___faktor(2)",b);
86
87 if (S_O_K(a) == INTEGER) {
88 erg += tpe_integer__faktor(a,b,f);
89 goto eee;
90 }
91 else if (S_O_K(a) == PARTITION) {
92 erg += tpe_partition__faktor(a,b,f);
93 goto eee;
94 }
95 else if (S_O_K(a) == POWSYM) {
96 erg += tpe_powsym__faktor(a,b,f);
97 goto eee;
98 }
99 else /* HASHTABLE */ {
100 erg += tpe_hashtable__faktor(a,b,f);
101 goto eee;
102 }
103 eee:
104 ENDR("tpe___faktor");
105 }
106
t_POWSYM_ELMSYM(a,b)107 INT t_POWSYM_ELMSYM(a,b) OP a,b;
108 {
109 INT erg = OK;
110 INT t=0;
111 CTTTTO(HASHTABLE,INTEGER,PARTITION,POWSYM,"t_POWSYM_ELMSYM",a);
112 TCE2(a,b,t_POWSYM_ELMSYM,ELMSYM);
113
114 if (S_O_K(b) == EMPTY)
115 {
116 erg += init_hashtable(b);
117 t=1;
118 }
119 tpe___faktor(a,b,cons_eins);
120 if (t==1) t_HASHTABLE_ELMSYM(b,b);
121
122
123 ENDR("t_POWSYM_ELMSYM");
124 }
125