| 160 | } |
| 161 | |
| 162 | Variable rootOf( const CanonicalForm & mipo, char name ) |
| 163 | { |
| 164 | ASSERT (mipo.isUnivariate(), "not a legal extension"); |
| 165 | |
| 166 | int l; |
| 167 | if ( var_names_ext == 0 ) { |
| 168 | var_names_ext = new char [3]; |
| 169 | var_names_ext[0] = '@'; |
| 170 | var_names_ext[1] = name; |
| 171 | var_names_ext[2] = '\0'; |
| 172 | l = 1; |
| 173 | Variable result( -l, true ); |
| 174 | algextensions = new ext_entry [2]; |
| 175 | algextensions[1] = ext_entry( 0, false ); |
| 176 | algextensions[1] = ext_entry( (InternalPoly*)(conv2mipo( mipo, result ).getval()), true ); |
| 177 | return result; |
| 178 | } |
| 179 | else { |
| 180 | int i, n = strlen( var_names_ext ); |
| 181 | char * newvarnames = new char [n+2]; |
| 182 | for ( i = 0; i < n; i++ ) |
| 183 | newvarnames[i] = var_names_ext[i]; |
| 184 | newvarnames[n] = name; |
| 185 | newvarnames[n+1] = 0; |
| 186 | delete [] var_names_ext; |
| 187 | var_names_ext = newvarnames; |
| 188 | l = n; |
| 189 | Variable result( -l, true ); |
| 190 | ext_entry * newalgext = new ext_entry [n+1]; |
| 191 | for ( i = 0; i < n; i++ ) |
| 192 | newalgext[i] = algextensions[i]; |
| 193 | newalgext[n] = ext_entry( 0, false ); |
| 194 | delete [] algextensions; |
| 195 | algextensions = newalgext; |
| 196 | algextensions[n] = ext_entry( (InternalPoly*)(conv2mipo( mipo, result ).getval()), true ); |
| 197 | return result; |
| 198 | } |
| 199 | } |
| 200 | |
| 201 | InternalPoly * getInternalMipo ( const Variable & alpha ) |
| 202 | { |
no test coverage detected