Changeset f43a74 in git for Singular/ipconv.cc
- Timestamp:
- May 18, 2005, 5:59:37 PM (19 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 42f5a8bf6b4c7bed01fc4375213acbce2abcfe04
- Parents:
- b340969c053d9f828187f38bac97b1feb96e654e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/ipconv.cc
rb34096 rf43a74 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipconv.cc,v 1.2 6 2002-06-03 12:14:27Singular Exp $ */4 /* $Id: ipconv.cc,v 1.27 2005-05-18 15:59:35 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: automatic type conversions … … 20 20 #include "silink.h" 21 21 #include "syz.h" 22 #include "attrib.h" 22 23 #include "ipconv.h" 23 24 24 25 typedef void * (*iiConvertProc)(void * data); 26 typedef void (*iiConvertProcL)(leftv out,leftv in); 25 27 struct sConvertTypes 26 28 { … … 28 30 int o_typ; 29 31 iiConvertProc p; 32 iiConvertProcL pl; 30 33 }; 31 34 … … 179 182 } 180 183 184 /* 181 185 static void * iiR2L(void * data) 182 186 { 183 187 syStrategy tmp=(syStrategy)data; 184 188 return (void *)syConvRes(tmp,TRUE); 189 } 190 */ 191 static void iiR2L_l(leftv out, leftv in) 192 { 193 int add_row_shift = 0; 194 intvec *weights=(intvec*)atGet(in,"isHomog",INTVEC_CMD); 195 if (weights!=NULL) add_row_shift=weights->min_in(); 196 197 syStrategy tmp=(syStrategy)in->CopyD(); 198 out->data=(void *)syConvRes(tmp,TRUE,add_row_shift); 185 199 } 186 200 … … 197 211 // input type output type convert procedure 198 212 // int -> number 199 { INT_CMD, NUMBER_CMD, iiI2N },213 { INT_CMD, NUMBER_CMD, iiI2N , NULL }, 200 214 // int -> poly 201 { INT_CMD, POLY_CMD, iiI2P },215 { INT_CMD, POLY_CMD, iiI2P , NULL }, 202 216 // int -> vector 203 { INT_CMD, VECTOR_CMD, iiI2V },217 { INT_CMD, VECTOR_CMD, iiI2V , NULL }, 204 218 // int -> ideal 205 { INT_CMD, IDEAL_CMD, iiI2Id },219 { INT_CMD, IDEAL_CMD, iiI2Id , NULL }, 206 220 // int -> matrix 207 { INT_CMD, MATRIX_CMD, iiI2Id },221 { INT_CMD, MATRIX_CMD, iiI2Id , NULL }, 208 222 // int -> intvec 209 { INT_CMD, INTVEC_CMD, iiI2Iv },223 { INT_CMD, INTVEC_CMD, iiI2Iv , NULL }, 210 224 // intvec -> intmat 211 { INTVEC_CMD, INTMAT_CMD, iiDummy },225 { INTVEC_CMD, INTMAT_CMD, iiDummy, NULL }, 212 226 // intvec -> matrix 213 { INTVEC_CMD, MATRIX_CMD, iiIm2Ma },227 { INTVEC_CMD, MATRIX_CMD, iiIm2Ma , NULL }, 214 228 // intmat -> matrix 215 { INTMAT_CMD, MATRIX_CMD, iiIm2Ma },229 { INTMAT_CMD, MATRIX_CMD, iiIm2Ma , NULL }, 216 230 // number -> poly 217 { NUMBER_CMD, POLY_CMD, iiN2P },231 { NUMBER_CMD, POLY_CMD, iiN2P , NULL }, 218 232 // number -> matrix 219 { NUMBER_CMD, MATRIX_CMD, iiN2Ma },233 { NUMBER_CMD, MATRIX_CMD, iiN2Ma , NULL }, 220 234 // number -> ideal 221 235 // number -> vector … … 223 237 // poly -> number 224 238 // poly -> ideal 225 { POLY_CMD, IDEAL_CMD, iiP2Id },239 { POLY_CMD, IDEAL_CMD, iiP2Id , NULL }, 226 240 // poly -> vector 227 { POLY_CMD, VECTOR_CMD, iiP2V },241 { POLY_CMD, VECTOR_CMD, iiP2V , NULL }, 228 242 // poly -> matrix 229 { POLY_CMD, MATRIX_CMD, iiP2Id },243 { POLY_CMD, MATRIX_CMD, iiP2Id , NULL }, 230 244 // vector -> module 231 { VECTOR_CMD, MODUL_CMD, iiP2Id },245 { VECTOR_CMD, MODUL_CMD, iiP2Id , NULL }, 232 246 // vector -> matrix 233 { VECTOR_CMD, MATRIX_CMD, iiV2Ma },247 { VECTOR_CMD, MATRIX_CMD, iiV2Ma , NULL }, 234 248 // ideal -> module 235 { IDEAL_CMD, MODUL_CMD, iiMa2Mo },249 { IDEAL_CMD, MODUL_CMD, iiMa2Mo , NULL }, 236 250 // ideal -> matrix 237 { IDEAL_CMD, MATRIX_CMD, iiDummy },251 { IDEAL_CMD, MATRIX_CMD, iiDummy , NULL }, 238 252 // module -> matrix 239 { MODUL_CMD, MATRIX_CMD, iiMo2Ma },253 { MODUL_CMD, MATRIX_CMD, iiMo2Ma , NULL }, 240 254 // matrix -> ideal 241 255 // matrix -> module 242 { MATRIX_CMD, MODUL_CMD, iiMa2Mo },256 { MATRIX_CMD, MODUL_CMD, iiMa2Mo , NULL }, 243 257 // intvec 244 258 // link 245 { STRING_CMD, LINK_CMD, iiS2Link },259 { STRING_CMD, LINK_CMD, iiS2Link , NULL }, 246 260 // resolution -> list 247 { RESOLUTION_CMD, LIST_CMD, iiR2L},261 { RESOLUTION_CMD, LIST_CMD, NULL /*iiR2L*/ , iiR2L_l }, 248 262 // list -> resolution 249 { LIST_CMD, RESOLUTION_CMD, iiL2R },263 { LIST_CMD, RESOLUTION_CMD, iiL2R , NULL }, 250 264 // end of list 251 { 0, 0, NULL }265 { 0, 0, NULL , NULL } 252 266 }; 253 267 … … 338 352 return TRUE; 339 353 output->rtyp=outputType; 340 output->data=dConvertTypes[index].p(input->CopyD()); 354 if (dConvertTypes[index].p!=NULL) 355 { 356 output->data=dConvertTypes[index].p(input->CopyD()); 357 } 358 else 359 { 360 dConvertTypes[index].pl(output,input); 361 } 341 362 if ((output->data==NULL) 342 363 && ((outputType==IDEAL_CMD) 343 364 ||(outputType==MODUL_CMD) 344 365 ||(outputType==MATRIX_CMD) 366 ||(outputType==INTMAT_CMD) 345 367 ||(outputType==INTVEC_CMD))) 346 368 {
Note: See TracChangeset
for help on using the changeset viewer.