returns maximal exponent if map_id is applied to pi_id
| 61 | |
| 62 | // returns maximal exponent if map_id is applied to pi_id |
| 63 | static unsigned long maGetMaxExp(ideal pi_id, ring pi_r, ideal map_id, ring map_r) |
| 64 | { |
| 65 | unsigned long max=0; |
| 66 | poly* max_map_monomials = (poly*) omAlloc(IDELEMS(map_id)*sizeof(poly)); |
| 67 | poly max_pi_i, max_map_i; |
| 68 | |
| 69 | int i; |
| 70 | for (i=0; i<IDELEMS(map_id); i++) |
| 71 | { |
| 72 | max_map_monomials[i] = p_GetMaxExpP(map_id->m[i], map_r); |
| 73 | } |
| 74 | |
| 75 | for (i=0; i<IDELEMS(pi_id); i++) |
| 76 | { |
| 77 | max_pi_i = p_GetMaxExpP(pi_id->m[i], pi_r); |
| 78 | max_map_i = maGetMaxExpP(max_map_monomials, IDELEMS(map_id), map_r, |
| 79 | max_pi_i, pi_r); |
| 80 | unsigned long temp = p_GetMaxExp(max_map_i, map_r); |
| 81 | if (temp > max){ max=temp; } |
| 82 | |
| 83 | p_LmFree(max_pi_i, pi_r); |
| 84 | p_LmFree(max_map_i, map_r); |
| 85 | } |
| 86 | for (i=0; i<IDELEMS(map_id); i++) |
| 87 | { |
| 88 | p_LmFree(&max_map_monomials[i], map_r); |
| 89 | } |
| 90 | omFreeSize(max_map_monomials,IDELEMS(map_id)*sizeof(poly)); |
| 91 | |
| 92 | return max; |
| 93 | } |
| 94 | |
| 95 | |
| 96 | /******************************************************************************* |
no test coverage detected