Changeset 46f6af6 in git
- Timestamp:
- Jan 7, 2008, 2:36:16 PM (15 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- addc4c2c08713a1b97f0be5fda4a5d67a440eba9
- Parents:
- aa7480c120ef293aaf5a185ec38a2440c23fc879
- Location:
- kernel
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/clapconv.cc
raa7480c r46f6af6 3 3 * Computer Algebra System SINGULAR * 4 4 ****************************************/ 5 // $Id: clapconv.cc,v 1. 9 2007-05-03 13:27:45Singular Exp $5 // $Id: clapconv.cc,v 1.10 2008-01-07 13:36:16 Singular Exp $ 6 6 /* 7 7 * ABSTRACT: convert data between Singular and factory … … 21 21 #include "febase.h" 22 22 #include "ring.h" 23 #include "sbuckets.h" 23 24 24 25 static void convRec( const CanonicalForm & f, int * exp, poly & result ); … … 26 27 static void convRecAlg( const CanonicalForm & f, int * exp, napoly & result ); 27 28 28 static void convRecPP ( const CanonicalForm & f, int * exp, poly & result ); 29 static void conv_RecPP ( const CanonicalForm & f, int * exp, poly & result, ring r ); 29 static void conv_RecPP ( const CanonicalForm & f, int * exp, sBucket_pt result, ring r ); 30 30 31 31 static void convRecPTr ( const CanonicalForm & f, int * exp, napoly & result ); … … 35 35 static void convRecGFGF ( const CanonicalForm & f, int * exp, poly & result ); 36 36 37 static number convClapNSingAN( const CanonicalForm &f); 38 39 CanonicalForm 40 convSingNClapN( number n ) 37 static number convFactoryNSingAN( const CanonicalForm &f); 38 39 CanonicalForm convSingNFactoryN( number n ) 41 40 { 42 41 CanonicalForm term; … … 48 47 else 49 48 { 50 if ( ((long)n) & 1L)51 { 52 term = ((long)n) >>2;49 if ( SR_HDL(n) & SR_INT ) 50 { 51 term = SR_TO_INT(n); 53 52 } 54 53 else … … 60 59 term = make_cf( dummy ); 61 60 } 62 else if ( n->s == 1 ) 63 { 61 else 62 { 63 // assume s==0 or s==1 64 64 MP_INT num, den; 65 65 On(SW_RATIONAL); 66 66 mpz_init_set( &num, &(n->z) ); 67 67 mpz_init_set( &den, &(n->n) ); 68 term = make_cf( num, den, false ); 69 } 70 else 71 { // assume s == 0 72 MP_INT num, den; 73 mpz_init_set( &num, &(n->z) ); 74 mpz_init_set( &den, &(n->n) ); 75 term = make_cf( num, den, true ); 68 term = make_cf( num, den, ( n->s != 1 )); 76 69 } 77 70 } … … 80 73 } 81 74 82 number 83 convClapNSingN( const CanonicalForm & n) 75 number convFactoryNSingN( const CanonicalForm & n) 84 76 { 85 77 if (n.isImm()) … … 92 84 #endif 93 85 z->z = gmp_numerator( n ); 94 if ( n.den() == 1)86 if ( n.den().isOne() ) 95 87 z->s = 3; 96 88 else … … 103 95 } 104 96 105 CanonicalForm conv_SingP ClapP( poly p, ring r )97 CanonicalForm conv_SingPFactoryP( poly p, ring r ) 106 98 { 107 99 CanonicalForm result = 0; … … 109 101 assume( rPar(r)==0); 110 102 111 while ( p != NULL ) 112 { 113 CanonicalForm term; 114 /* does only work for finite fields */ 115 if ( getCharacteristic() != 0 ) 116 { 117 term = npInt( pGetCoeff( p ) ); 118 } 119 else 120 { 121 if ( (long)(pGetCoeff( p )) & 1 ) 122 { 123 term = ((long)( pGetCoeff( p ) )>>2); 103 if ( getCharacteristic() != 0 ) 104 { 105 /* does only work for finite fields Z/p*/ 106 while ( p != NULL ) 107 { 108 CanonicalForm term = npInt( pGetCoeff( p ) ); 109 for ( int i = n; i >0; i-- ) 110 { 111 if ( (e = p_GetExp( p, i, r )) != 0 ) 112 term *= power( Variable( i ), e ); 113 } 114 result += term; 115 pIter( p ); 116 } 117 } 118 else 119 { 120 while ( p != NULL ) 121 { 122 CanonicalForm term; 123 if ( SR_HDL(pGetCoeff( p )) & SR_INT ) 124 { 125 term = SR_TO_INT( pGetCoeff( p ) ); 124 126 } 125 127 else … … 131 133 term = make_cf( dummy ); 132 134 } 133 else if ( pGetCoeff( p )->s == 1 ) 134 { 135 else 136 { 137 // assume s==1 or s==0 135 138 MP_INT num, den; 136 139 On(SW_RATIONAL); 137 140 mpz_init_set( &num, &(pGetCoeff( p )->z) ); 138 141 mpz_init_set( &den, &(pGetCoeff( p )->n) ); 139 term = make_cf( num, den, false ); 140 } 141 else 142 { // assume s == 0 143 MP_INT num, den; 144 mpz_init_set( &num, &(pGetCoeff( p )->z) ); 145 mpz_init_set( &den, &(pGetCoeff( p )->n) ); 146 term = make_cf( num, den, true ); 147 } 148 } 149 } 150 for ( int i = 1; i <= n; i++ ) 151 { 152 if ( (e = p_GetExp( p, i, r )) != 0 ) 153 term *= power( Variable( i ), e ); 154 } 155 result += term; 156 p = pNext( p ); 157 } 158 return result; 159 } 160 161 poly convClapPSingP ( const CanonicalForm & f ) 162 { 163 // cerr << " f = " << f << endl; 164 int n = pVariables+1; 165 /* ASSERT( level( f ) <= pVariables, "illegal number of variables" ); */ 166 int * exp = new int[n]; 167 //for ( int i = 0; i < n; i++ ) exp[i] = 0; 168 memset(exp,0,n*sizeof(int)); 169 poly result = NULL; 170 convRecPP( f, exp, result ); 171 delete [] exp; 172 return result; 173 } 174 175 static void convRecPP ( const CanonicalForm & f, int * exp, poly & result ) 176 { 177 if (f == 0) 178 return; 179 if ( ! f.inCoeffDomain() ) 180 { 181 int l = f.level(); 182 for ( CFIterator i = f; i.hasTerms(); i++ ) 183 { 184 exp[l] = i.exp(); 185 convRecPP( i.coeff(), exp, result ); 186 } 187 exp[l] = 0; 188 } 189 else 190 { 191 poly term = pInit(); 192 pNext( term ) = NULL; 193 for ( int i = 1; i <= pVariables; i++ ) 194 pSetExp( term, i, exp[i]); 195 pSetComp(term, 0); 196 if ( getCharacteristic() != 0 ) 197 { 198 pGetCoeff( term ) = nInit( f.intval() ); 199 } 200 else 201 { 202 if ( f.isImm() ) 203 pGetCoeff( term ) = nInit( f.intval() ); 204 else 205 { 206 number z=(number)omAllocBin(rnumber_bin); 207 #if defined(LDEBUG) 208 z->debug=123456; 209 #endif 210 z->z = gmp_numerator( f ); 211 if ( f.den() == 1 ) 212 z->s = 3; 213 else 214 { 215 z->n = gmp_denominator( f ); 216 z->s = 0; 217 } 218 nlNormalize(z); 219 pGetCoeff( term ) = z; 220 } 221 } 222 pSetm( term ); 223 if ( nIsZero(pGetCoeff(term)) ) 224 { 225 pDelete(&term); 226 } 227 else 228 { 229 result = pAdd( result, term ); 230 } 231 } 232 } 233 234 poly conv_ClapPSingP ( const CanonicalForm & f, ring r ) 142 term = make_cf( num, den, ( pGetCoeff( p )->s != 1 )); 143 } 144 } 145 for ( int i = n; i >0; i-- ) 146 { 147 if ( (e = p_GetExp( p, i, r )) != 0 ) 148 term *= power( Variable( i ), e ); 149 } 150 result += term; 151 pIter( p ); 152 } 153 } 154 return result; 155 } 156 157 poly conv_FactoryPSingP ( const CanonicalForm & f, ring r ) 235 158 { 236 159 // cerr << " f = " << f << endl; 237 160 int n = r->N+1; 238 161 /* ASSERT( level( f ) <= pVariables, "illegal number of variables" ); */ 239 int * exp = new int[n]; 240 //for ( int i = 0; i < n; i++ ) exp[i] = 0; 241 memset(exp,0,n*sizeof(int)); 242 poly result = NULL; 243 conv_RecPP( f, exp, result, r ); 244 delete [] exp; 245 return result; 246 } 247 248 static void 249 conv_RecPP ( const CanonicalForm & f, int * exp, poly & result, ring r ) 250 { 251 if (f == 0) 162 int * exp = (int*)omAlloc0(n*sizeof(int)); 163 sBucket_pt result_bucket=sBucketCreate(r); 164 conv_RecPP( f, exp, result_bucket, r ); 165 poly result; int dummy; 166 sBucketDestroyMerge(result_bucket,&result,&dummy); 167 omFreeSize((ADDRESS)exp,n*sizeof(int)); 168 return result; 169 } 170 171 static void conv_RecPP ( const CanonicalForm & f, int * exp, sBucket_pt result, ring r ) 172 { 173 if (f.isZero()) 252 174 return; 253 175 if ( ! f.inCoeffDomain() ) … … 268 190 p_SetExp( term, i, exp[i], r); 269 191 if (rRing_has_Comp(r)) p_SetComp(term, 0, r); 270 if ( getCharacteristic() != 0 ) 271 { 192 if ( f.isImm() ) 272 193 pGetCoeff( term ) = n_Init( f.intval(), r ); 273 } 274 else 275 { 276 if ( f.isImm() ) 277 pGetCoeff( term ) = n_Init( f.intval(), r ); 194 else 195 { 196 number z=(number)omAllocBin(rnumber_bin); 197 #if defined(LDEBUG) 198 z->debug=123456; 199 #endif 200 z->z = gmp_numerator( f ); 201 if ( f.den().isOne() ) 202 z->s = 3; 278 203 else 279 204 { 280 number z=(number)omAllocBin(rnumber_bin); 281 #if defined(LDEBUG) 282 z->debug=123456; 283 #endif 284 z->z = gmp_numerator( f ); 285 if ( f.den() == 1 ) 286 z->s = 3; 287 else 288 { 289 z->n = gmp_denominator( f ); 290 z->s = 0; 291 } 292 pGetCoeff( term ) = z; 205 z->n = gmp_denominator( f ); 206 z->s = 0; 293 207 nlNormalize(z); 294 208 } 209 pGetCoeff( term ) = z; 295 210 } 296 211 p_Setm( term, r ); … … 301 216 else 302 217 { 303 result = p_Add_q( result, term, r ); 304 } 305 } 306 } 307 308 309 CanonicalForm 310 convSingTrClapP( napoly p ) 218 sBucket_Merge_p(result,term,1); 219 } 220 } 221 } 222 223 224 CanonicalForm convSingTrFactoryP( napoly p ) 311 225 { 312 226 CanonicalForm result = 0; … … 323 237 else 324 238 { 325 //if ( (!(int)(napGetCoeff( p )) & 1 ) 326 //&& ( napGetCoeff( p )->s == 0)) 327 // naNormalize( naGetCoeff( p ) ); 328 if ( (long)(napGetCoeff( p )) & 1L ) 329 term = nlInt( napGetCoeff( p ) ); 239 if ( SR_HDL(napGetCoeff( p )) & SR_INT ) 240 term = SR_TO_INT( napGetCoeff( p ) ); 330 241 else 331 242 { … … 336 247 term = make_cf( dummy ); 337 248 } 338 else if ( napGetCoeff( p )->s == 1 ) 339 { 249 else 250 { 251 // assume s==0 or s==1 340 252 MP_INT num, den; 341 253 On(SW_RATIONAL); 342 254 mpz_init_set( &num, &(napGetCoeff( p )->z) ); 343 255 mpz_init_set( &den, &(napGetCoeff( p )->n) ); 344 term = make_cf( num, den, false ); 345 } 346 else 347 { // assume s == 0 348 MP_INT num, den; 349 On(SW_RATIONAL); 350 mpz_init_set( &num, &(napGetCoeff( p )->z) ); 351 mpz_init_set( &den, &(napGetCoeff( p )->n) ); 352 term = make_cf( num, den, true ); 353 } 354 } 355 } 356 for ( int i = 1; i <= n; i++ ) 256 term = make_cf( num, den, ( napGetCoeff( p )->s != 1 )); 257 } 258 } 259 } 260 for ( int i = n; i >0; i-- ) 357 261 { 358 262 if ( (e = napGetExp( p, i )) != 0 ) … … 365 269 } 366 270 367 napoly 368 convClapPSingTr ( const CanonicalForm & f ) 271 napoly convFactoryPSingTr ( const CanonicalForm & f ) 369 272 { 370 273 // cerr << " f = " << f << endl; 371 274 int n = napVariables+1; 372 275 /* ASSERT( level( f ) <= napVariables, "illegal number of variables" ); */ 373 int * exp = new int[n]; 374 // for ( int i = 0; i < n; i++ ) exp[i] = 0; 375 memset(exp,0,n*sizeof(int)); 276 int * exp = (int *)omAlloc0(n*sizeof(int)); 376 277 napoly result = NULL; 377 278 convRecPTr( f, exp, result ); 378 delete [] exp; 379 return result; 380 } 381 382 static void 383 convRecPTr ( const CanonicalForm & f, int * exp, napoly & result ) 384 { 385 if (f == 0) 279 omFreeSize((ADDRESS)exp,n*sizeof(int)); 280 return result; 281 } 282 283 static void convRecPTr ( const CanonicalForm & f, int * exp, napoly & result ) 284 { 285 if (f.isZero()) 386 286 return; 387 287 if ( ! f.inCoeffDomain() ) … … 401 301 for ( int i = 1; i <= napVariables; i++ ) 402 302 napSetExp( term, i , exp[i]); 403 if ( getCharacteristic() != 0 ) 404 { 405 napGetCoeff( term ) = npInit( f.intval() ); 406 } 407 else 408 { 409 if ( f.isImm() ) 410 napGetCoeff( term ) = nlInit( f.intval() ); 303 if ( f.isImm() ) 304 napGetCoeff( term ) = nacInit( f.intval() ); 305 else 306 { 307 number z=(number)omAllocBin(rnumber_bin); 308 #if defined(LDEBUG) 309 z->debug=123456; 310 #endif 311 z->z = gmp_numerator( f ); 312 if ( f.den().isOne() ) 313 { 314 z->s = 3; 315 } 411 316 else 412 317 { 413 number z=(number)omAllocBin(rnumber_bin); 414 #if defined(LDEBUG) 415 z->debug=123456; 416 #endif 417 z->z = gmp_numerator( f ); 418 if ( f.den() == 1 ) 419 { 420 z->s = 3; 318 z->n = gmp_denominator( f ); 319 if (mpz_cmp_si(&z->n,(long)1)==0) 320 { 321 mpz_clear(&z->n); 322 z->s=3; 421 323 } 422 324 else 423 325 { 424 z->n = gmp_denominator( f ); 425 if (mpz_cmp_si(&z->n,(long)1)==0) 426 { 427 mpz_clear(&z->n); 428 z->s=3; 429 } 430 else 431 { 432 z->s = 0; 433 } 326 z->s = 0; 434 327 nacNormalize(z); 435 328 } 436 napGetCoeff( term ) = z;437 }329 } 330 napGetCoeff( term ) = z; 438 331 } 439 332 if (nacIsZero(pGetCoeff(term))) … … 448 341 } 449 342 450 CanonicalForm convSingAP ClapAP ( poly p , const Variable & a)343 CanonicalForm convSingAPFactoryAP ( poly p , const Variable & a) 451 344 { 452 345 CanonicalForm result = 0; … … 457 350 while ( p!=NULL) 458 351 { 459 CanonicalForm term=convSingA ClapA(((lnumber)pGetCoeff(p))->z,a);352 CanonicalForm term=convSingAFactoryA(((lnumber)pGetCoeff(p))->z,a); 460 353 for ( int i = 1; i <= n; i++ ) 461 354 { … … 464 357 } 465 358 result += term; 466 p = pNext( p );359 pIter( p ); 467 360 } 468 361 return result; … … 472 365 convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start) ; 473 366 474 poly conv ClapAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start )367 poly convFactoryAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start ) 475 368 { 476 369 int n = pVariables+1+rPar(currRing); 477 int * exp = new int[n]; 478 // for ( int i = 0; i < n; i++ ) exp[i] = 0; 479 memset(exp,0,n*sizeof(int)); 370 int * exp = (int *)omAlloc0(n*sizeof(int)); 480 371 poly result = NULL; 481 372 convRecAP_R( f, exp, result,par_start, var_start ); 482 delete [] exp;483 return result; 484 } 485 poly convClapAPSingAP ( const CanonicalForm & f ) 486 { 487 return convClapAPSingAP_R(f,0,rPar(currRing)); 488 } 489 490 static void 491 convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start )492 { 493 if (f == 0)373 omFreeSize((ADDRESS)exp,n*sizeof(int)); 374 return result; 375 } 376 377 poly convFactoryAPSingAP ( const CanonicalForm & f ) 378 { 379 return convFactoryAPSingAP_R(f,0,rPar(currRing)); 380 } 381 382 static void convRecAP_R ( const CanonicalForm & f, int * exp, poly & result, int par_start, int var_start ) 383 { 384 if (f.isZero()) 494 385 return; 495 386 if ( ! f.inCoeffDomain() ) … … 505 396 else 506 397 { 507 napoly z=(napoly)conv ClapASingA( f );398 napoly z=(napoly)convFactoryASingA( f ); 508 399 if (z!=NULL) 509 400 { … … 513 404 for ( i = 1; i <= pVariables; i++ ) 514 405 pSetExp( term, i , exp[i+var_start]); 515 pSetComp(term, 0); 406 if (rRing_has_Comp(currRing->algring)) 407 p_SetComp(term, 0, currRing->algring); 516 408 if (par_start==0) 517 409 { … … 534 426 } 535 427 536 CanonicalForm convSingA ClapA ( napoly p , const Variable & a )428 CanonicalForm convSingAFactoryA ( napoly p , const Variable & a ) 537 429 { 538 430 CanonicalForm result = 0; … … 549 441 else 550 442 { 551 //if ( (!(int)(napGetCoeff( p )) & 1 ) 552 //&& ( napGetCoeff( p )->s == 0)) 553 // naNormalize( naGetCoeff( p ) ); 554 if ( (long)(napGetCoeff( p )) & SR_INT ) 555 term = nlInt( napGetCoeff( p ) ); 556 //term = SR_TO_INT(napGetCoeff( p )) ; 443 if ( SR_HDL(napGetCoeff( p )) & SR_INT ) 444 term = SR_TO_INT(napGetCoeff( p )) ; 557 445 else 558 446 { … … 563 451 term = make_cf( dummy ); 564 452 } 565 else if ( napGetCoeff( p )->s == 1 ) 566 { 453 else 454 { 455 // assume s==0 or s==1 567 456 MP_INT num, den; 568 457 On(SW_RATIONAL); 569 458 mpz_init_set( &num, &(napGetCoeff( p )->z) ); 570 459 mpz_init_set( &den, &(napGetCoeff( p )->n) ); 571 term = make_cf( num, den, false ); 572 } 573 else 574 { // assume s == 0 575 MP_INT num, den; 576 On(SW_RATIONAL); 577 mpz_init_set( &num, &(napGetCoeff( p )->z) ); 578 mpz_init_set( &den, &(napGetCoeff( p )->n) ); 579 term = make_cf( num, den, true ); 460 term = make_cf( num, den, ( napGetCoeff( p )->s != 1 )); 580 461 } 581 462 } … … 589 470 } 590 471 591 static number conv ClapNSingAN( const CanonicalForm &f)592 { 593 if ( (getCharacteristic() != 0) || ( f.isImm() ))472 static number convFactoryNSingAN( const CanonicalForm &f) 473 { 474 if ( f.isImm() ) 594 475 return nacInit( f.intval() ); 595 476 else … … 600 481 #endif 601 482 z->z = gmp_numerator( f ); 602 if ( f.den() == 1)483 if ( f.den().isOne() ) 603 484 { 604 485 z->s = 3; … … 608 489 z->n = gmp_denominator( f ); 609 490 z->s = 0; 610 }611 nlNormalize(z);491 nlNormalize(z); 492 } 612 493 #ifdef LDEBUG 613 494 nlDBTest(z,__FILE__,__LINE__); … … 617 498 } 618 499 619 napoly conv ClapASingA ( const CanonicalForm & f )500 napoly convFactoryASingA ( const CanonicalForm & f ) 620 501 { 621 502 napoly a=NULL; … … 625 506 t=napNew(); 626 507 // napNext( t ) = NULL; //already done by napNew 627 napGetCoeff(t)=conv ClapNSingAN( i.coeff() );508 napGetCoeff(t)=convFactoryNSingAN( i.coeff() ); 628 509 if (nacIsZero(napGetCoeff(t))) 629 510 { … … 647 528 } 648 529 649 CanonicalForm convSingTrP ClapP ( poly p )530 CanonicalForm convSingTrPFactoryP ( poly p ) 650 531 { 651 532 CanonicalForm result = 0; … … 656 537 { 657 538 nNormalize(pGetCoeff(p)); 658 CanonicalForm term=convSingTr ClapP(((lnumber)pGetCoeff(p))->z);539 CanonicalForm term=convSingTrFactoryP(((lnumber)pGetCoeff(p))->z); 659 540 660 541 if ((((lnumber)pGetCoeff(p))->n!=NULL) … … 664 545 } 665 546 666 for ( int i = 1; i <= n; i++)547 for ( int i = n; i > 0; i-- ) 667 548 { 668 549 if ( (e = pGetExp( p, i )) != 0 ) … … 675 556 } 676 557 677 poly conv ClapPSingTrP ( const CanonicalForm & f )558 poly convFactoryPSingTrP ( const CanonicalForm & f ) 678 559 { 679 560 int n = pVariables+1; 680 int * exp = new int[n]; 681 // for ( int i = 0; i < n; i++ ) exp[i] = 0; 682 memset(exp,0,n*sizeof(int)); 561 int * exp = (int*)omAlloc0(n*sizeof(int)); 683 562 poly result = NULL; 684 563 convRecTrP( f, exp, result , rPar(currRing) ); 685 delete [] exp;564 omFreeSize((ADDRESS)exp,n*sizeof(int)); 686 565 return result; 687 566 } … … 690 569 convRecTrP ( const CanonicalForm & f, int * exp, poly & result , int offs) 691 570 { 692 if (f == 0)571 if (f.isZero()) 693 572 return; 694 573 if ( f.level() > offs ) … … 708 587 for ( int i = 1; i <= pVariables; i++ ) 709 588 pSetExp( term, i ,exp[i]); 710 pSetComp(term, 0); 589 if (rRing_has_Comp(currRing)) 590 p_SetComp(term, 0, currRing); 711 591 pGetCoeff(term)=(number)omAlloc0Bin(rnumber_bin); 712 ((lnumber)pGetCoeff(term))->z=conv ClapPSingTr( f );592 ((lnumber)pGetCoeff(term))->z=convFactoryPSingTr( f ); 713 593 pSetm( term ); 714 594 result = pAdd( result, term ); … … 729 609 CanonicalForm xnew,qnew; 730 610 chineseRemainder(X,Q,xnew,qnew); 731 number n=conv ClapNSingN(xnew);732 number p=conv ClapNSingN(qnew);611 number n=convFactoryNSingN(xnew); 612 number p=convFactoryNSingN(qnew); 733 613 number p2=nlIntDiv(p,nlInit(2)); 734 614 if (nlGreater(n,p2)) … … 749 629 #if 0 750 630 CanonicalForm 751 convSingGF ClapGF( poly p )631 convSingGFFactoryGF( poly p ) 752 632 { 753 633 CanonicalForm result = 0; … … 770 650 771 651 poly 772 conv ClapGFSingGF ( const CanonicalForm & f )652 convFactoryGFSingGF ( const CanonicalForm & f ) 773 653 { 774 654 // cerr << " f = " << f << endl; 775 655 int n = pVariables+1; 776 656 /* ASSERT( level( f ) <= pVariables, "illegal number of variables" ); */ 777 int * exp = new int[n]; 778 //for ( int i = 0; i < n; i++ ) exp[i] = 0; 779 memset(exp,0,n*sizeof(int)); 657 int * exp = (int*)omAlloc0(n*sizeof(int)); 780 658 poly result = NULL; 781 659 convRecGFGF( f, exp, result ); 782 delete [] exp;660 omFreeSize((ADDRESS)exp,n*sizeof(int)); 783 661 return result; 784 662 } … … 787 665 convRecGFGF ( const CanonicalForm & f, int * exp, poly & result ) 788 666 { 789 if (f == 0)667 if (f.isZero()) 790 668 return; 791 669 if ( ! f.inCoeffDomain() ) … … 805 683 for ( int i = 1; i <= pVariables; i++ ) 806 684 pSetExp( term, i, exp[i]); 807 pSetComp(term, 0); 685 if (rRing_has_Comp(currRing)) 686 p_SetComp(term, 0, currRing); 808 687 pGetCoeff( term ) = (number) gf_value (f); 809 688 pSetm( term ); … … 813 692 #endif 814 693 815 int conv ClapISingI( const CanonicalForm & f)694 int convFactoryISingI( const CanonicalForm & f) 816 695 { 817 696 if (!f.isImm()) WerrorS("int overflow in det"); -
kernel/clapconv.h
raa7480c r46f6af6 3 3 * Computer Algebra System SINGULAR * 4 4 ****************************************/ 5 // $Id: clapconv.h,v 1. 2 2005-06-13 16:23:30Singular Exp $5 // $Id: clapconv.h,v 1.3 2008-01-07 13:36:16 Singular Exp $ 6 6 /* 7 7 * ABSTRACT: convert data between Singular and factory … … 16 16 #include <factory.h> 17 17 18 napoly conv ClapPSingTr ( const CanonicalForm & f );19 CanonicalForm convSingTr ClapP( napoly p );18 napoly convFactoryPSingTr ( const CanonicalForm & f ); 19 CanonicalForm convSingTrFactoryP( napoly p ); 20 20 21 poly convClapPSingP ( const CanonicalForm & f ); 22 #define convSingPClapP(p) conv_SingPClapP(p,currRing) 21 #define convSingPFactoryP(p) conv_SingPFactoryP(p,currRing) 23 22 24 poly conv_ ClapPSingP ( const CanonicalForm & f, ring r );25 CanonicalForm conv_SingP ClapP( poly p, ring r );23 poly conv_FactoryPSingP ( const CanonicalForm & f, ring r ); 24 CanonicalForm conv_SingPFactoryP( poly p, ring r ); 26 25 27 CanonicalForm convSingAPClapAP ( poly p , const Variable & a ); 28 poly convClapAPSingAP ( const CanonicalForm & f ); 29 poly convClapAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start ); 26 #define convFactoryPSingP(p) conv_FactoryPSingP(p,currRing) 30 27 31 CanonicalForm convSingGFClapGF ( poly p ); 32 poly convClapGFSingGF ( const CanonicalForm & f ); 28 CanonicalForm convSingAPFactoryAP ( poly p , const Variable & a ); 29 poly convFactoryAPSingAP ( const CanonicalForm & f ); 30 poly convFactoryAPSingAP_R ( const CanonicalForm & f, int par_start, int var_start ); 33 31 34 CanonicalForm convSing AClapA ( napoly p , const Variable & a);35 napoly convClapASingA( const CanonicalForm & f );32 CanonicalForm convSingGFFactoryGF ( poly p ); 33 poly convFactoryGFSingGF ( const CanonicalForm & f ); 36 34 37 CanonicalForm convSing TrPClapP ( poly p);38 poly convClapPSingTrP( const CanonicalForm & f );35 CanonicalForm convSingAFactoryA ( napoly p , const Variable & a ); 36 napoly convFactoryASingA ( const CanonicalForm & f ); 39 37 40 CanonicalForm convSingNClapN( number n ); 41 number convClapNSingN( const CanonicalForm & n); 38 CanonicalForm convSingTrPFactoryP ( poly p ); 39 poly convFactoryPSingTrP ( const CanonicalForm & f ); 40 41 CanonicalForm convSingNFactoryN( number n ); 42 number convFactoryNSingN( const CanonicalForm & n); 42 43 43 44 44 // CanonicalForm convSingI ClapI( int i);a <- by constructor of CanonicalForm45 int conv ClapISingI( const CanonicalForm & f);45 // CanonicalForm convSingIFactoryI( int i);a <- by constructor of CanonicalForm 46 int convFactoryISingI( const CanonicalForm & f); 46 47 #endif /* INCL_SINGCONV_H */ -
kernel/clapsing.cc
raa7480c r46f6af6 3 3 * Computer Algebra System SINGULAR * 4 4 ****************************************/ 5 // $Id: clapsing.cc,v 1.2 3 2007-11-07 17:11:53Singular Exp $5 // $Id: clapsing.cc,v 1.24 2008-01-07 13:36:16 Singular Exp $ 6 6 /* 7 7 * ABSTRACT: interface between Singular and factory … … 138 138 #define FACTORY_CFTROUT_POLY( tag, f ) \ 139 139 { \ 140 napoly F=conv ClapPSingTr( f ); \140 napoly F=convFactoryPSingTr( f ); \ 141 141 StringSetS( tag ); \ 142 142 napWrite( F ); \ … … 147 147 #define FACTORY_CFAOUT_POLY( tag, f ) \ 148 148 { \ 149 napoly F=conv ClapASingA( f ); \149 napoly F=convFactoryASingA( f ); \ 150 150 StringSetS( tag ); \ 151 151 napWrite( F ); \ … … 164 164 if (currRing->minpoly!=NULL) \ 165 165 { \ 166 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z); \166 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); \ 167 167 Variable a=rootOf(mipo); \ 168 printPolyPattern( tag, convSingA ClapA( f,a ), rPar( currRing ) ); \168 printPolyPattern( tag, convSingAFactoryA( f,a ), rPar( currRing ) ); \ 169 169 } \ 170 170 else \ 171 171 { \ 172 printPolyPattern( tag, convSingTr ClapP( f ), rPar( currRing ) ); \172 printPolyPattern( tag, convSingTrFactoryP( f ), rPar( currRing ) ); \ 173 173 } 174 174 // CanonicalForm f, represents transcendent extension … … 216 216 CanonicalForm newGCD(const CanonicalForm & A, const CanonicalForm & B); 217 217 setCharacteristic( nGetChar() ); 218 CanonicalForm F( convSingP ClapP( f ) ), G( convSingPClapP( g ) );218 CanonicalForm F( convSingPFactoryP( f ) ), G( convSingPFactoryP( g ) ); 219 219 //if (nGetChar() > 1 ) 220 220 //{ 221 // res=conv ClapPSingP( newGCD( F,G ));221 // res=convFactoryPSingP( newGCD( F,G )); 222 222 // if (!nGreaterZero(pGetCoeff(res))) res=pNeg(res); 223 223 //} 224 224 //else 225 res=conv ClapPSingP( gcd( F, G ) );225 res=convFactoryPSingP( gcd( F, G ) ); 226 226 } 227 227 // and over Q(a) / Fp(a) … … 237 237 { 238 238 // WerrorS( feNotImplemented ); 239 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);239 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 240 240 //Varlist ord; 241 241 //ord.append(mipo.mvar()); 242 242 CFList as(mipo); 243 243 Variable a=rootOf(mipo); 244 //CanonicalForm F( convSingAP ClapAP( f,a ) ), G( convSingAPClapAP( g,a ) );245 CanonicalForm F( convSingTrP ClapP(f) ), G( convSingTrPClapP(g) );246 //res= conv ClapAPSingAP( algcd( F, G, as, ord) );247 //res= conv ClapAPSingAP( alg_gcd( F, G, as) );248 res= conv ClapAPSingAP( alg_gcd( F, G, as) );244 //CanonicalForm F( convSingAPFactoryAP( f,a ) ), G( convSingAPFactoryAP( g,a ) ); 245 CanonicalForm F( convSingTrPFactoryP(f) ), G( convSingTrPFactoryP(g) ); 246 //res= convFactoryAPSingAP( algcd( F, G, as, ord) ); 247 //res= convFactoryAPSingAP( alg_gcd( F, G, as) ); 248 res= convFactoryAPSingAP( alg_gcd( F, G, as) ); 249 249 } 250 250 else 251 251 #endif 252 252 { 253 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);253 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 254 254 Variable a=rootOf(mipo); 255 CanonicalForm F( convSingAP ClapAP( f,a ) ), G( convSingAPClapAP( g,a ) );256 res= conv ClapAPSingAP( gcd( F, G ) );255 CanonicalForm F( convSingAPFactoryAP( f,a ) ), G( convSingAPFactoryAP( g,a ) ); 256 res= convFactoryAPSingAP( gcd( F, G ) ); 257 257 } 258 258 } 259 259 else 260 260 { 261 CanonicalForm F( convSingTrP ClapP( f ) ), G( convSingTrPClapP( g ) );262 res= conv ClapPSingTrP( gcd( F, G ) );261 CanonicalForm F( convSingTrPFactoryP( f ) ), G( convSingTrPFactoryP( g ) ); 262 res= convFactoryPSingTrP( gcd( F, G ) ); 263 263 } 264 264 } … … 271 271 while (t!=nChar) { t*=p;n++; } 272 272 setCharacteristic(p,n,'a'); 273 CanonicalForm F( convSingGF ClapGF( f ) ), G( convSingGFClapGF( g ) );274 res= conv ClapGFSingGF( gcd( F, G ) );273 CanonicalForm F( convSingGFFactoryGF( f ) ), G( convSingGFFactoryGF( g ) ); 274 res= convFactoryGFSingGF( gcd( F, G ) ); 275 275 } 276 276 #endif … … 316 316 Variable X(i); 317 317 setCharacteristic( nGetChar() ); 318 CanonicalForm F( convSingP ClapP( f ) ), G( convSingPClapP( g ) );319 poly res=conv ClapPSingP( resultant( F, G, X ) );318 CanonicalForm F( convSingPFactoryP( f ) ), G( convSingPFactoryP( g ) ); 319 poly res=convFactoryPSingP( resultant( F, G, X ) ); 320 320 Off(SW_RATIONAL); 321 321 return res; … … 332 332 { 333 333 //Variable X(i); 334 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);334 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 335 335 Variable a=rootOf(mipo); 336 CanonicalForm F( convSingAP ClapAP( f,a ) ), G( convSingAPClapAP( g,a ) );337 res= conv ClapAPSingAP( resultant( F, G, X ) );336 CanonicalForm F( convSingAPFactoryAP( f,a ) ), G( convSingAPFactoryAP( g,a ) ); 337 res= convFactoryAPSingAP( resultant( F, G, X ) ); 338 338 } 339 339 else … … 345 345 ef=pGetExp_Var(f,i); 346 346 eg=pGetExp_Var(g,i); 347 CanonicalForm F( convSingTrP ClapP( f ) ), G( convSingTrPClapP( g ) );348 res= conv ClapPSingTrP( resultant( F, G, X ) );347 CanonicalForm F( convSingTrPFactoryP( f ) ), G( convSingTrPFactoryP( g ) ); 348 res= convFactoryPSingTrP( resultant( F, G, X ) ); 349 349 if ((nf!=NULL)&&(!nIsOne(nf))&&(!nIsZero(nf))) 350 350 { … … 448 448 { 449 449 setCharacteristic( nGetChar() ); 450 CanonicalForm F( convSingP ClapP( f ) ), G( convSingPClapP( g ) );450 CanonicalForm F( convSingPFactoryP( f ) ), G( convSingPFactoryP( g ) ); 451 451 CanonicalForm FpG=F+G; 452 452 if (!(FpG.isUnivariate()|| FpG.inCoeffDomain())) … … 459 459 CanonicalForm Fa,Gb; 460 460 On(SW_RATIONAL); 461 res=conv ClapPSingP( extgcd( F, G, Fa, Gb ) );462 pa=conv ClapPSingP(Fa);463 pb=conv ClapPSingP(Gb);461 res=convFactoryPSingP( extgcd( F, G, Fa, Gb ) ); 462 pa=convFactoryPSingP(Fa); 463 pb=convFactoryPSingP(Gb); 464 464 Off(SW_RATIONAL); 465 465 } … … 473 473 if (currRing->minpoly!=NULL) 474 474 { 475 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);475 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 476 476 Variable a=rootOf(mipo); 477 CanonicalForm F( convSingAP ClapAP( f,a ) ), G( convSingAPClapAP( g,a ) );477 CanonicalForm F( convSingAPFactoryAP( f,a ) ), G( convSingAPFactoryAP( g,a ) ); 478 478 CanonicalForm FpG=F+G; 479 479 if (!(FpG.isUnivariate()|| FpG.inCoeffDomain())) … … 483 483 return TRUE; 484 484 } 485 res= conv ClapAPSingAP( extgcd( F, G, Fa, Gb ) );486 pa=conv ClapAPSingAP(Fa);487 pb=conv ClapAPSingAP(Gb);485 res= convFactoryAPSingAP( extgcd( F, G, Fa, Gb ) ); 486 pa=convFactoryAPSingAP(Fa); 487 pb=convFactoryAPSingAP(Gb); 488 488 } 489 489 else 490 490 { 491 CanonicalForm F( convSingTrP ClapP( f ) ), G( convSingTrPClapP( g ) );491 CanonicalForm F( convSingTrPFactoryP( f ) ), G( convSingTrPFactoryP( g ) ); 492 492 CanonicalForm FpG=F+G; 493 493 if (!(FpG.isUnivariate()|| FpG.inCoeffDomain())) … … 498 498 return TRUE; 499 499 } 500 res= conv ClapPSingTrP( extgcd( F, G, Fa, Gb ) );501 pa=conv ClapPSingTrP(Fa);502 pb=conv ClapPSingTrP(Gb);500 res= convFactoryPSingTrP( extgcd( F, G, Fa, Gb ) ); 501 pa=convFactoryPSingTrP(Fa); 502 pb=convFactoryPSingTrP(Gb); 503 503 } 504 504 Off(SW_RATIONAL); … … 522 522 { 523 523 setCharacteristic( nGetChar() ); 524 CanonicalForm F( convSingP ClapP( f ) ), G( convSingPClapP( g ) );525 res = conv ClapPSingP( F / G );524 CanonicalForm F( convSingPFactoryP( f ) ), G( convSingPFactoryP( g ) ); 525 res = convFactoryPSingP( F / G ); 526 526 } 527 527 // and over Q(a) / Fp(a) … … 533 533 if (currRing->minpoly!=NULL) 534 534 { 535 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);535 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 536 536 Variable a=rootOf(mipo); 537 CanonicalForm F( convSingAP ClapAP( f,a ) ), G( convSingAPClapAP( g,a ) );538 res= conv ClapAPSingAP( F / G );537 CanonicalForm F( convSingAPFactoryAP( f,a ) ), G( convSingAPFactoryAP( g,a ) ); 538 res= convFactoryAPSingAP( F / G ); 539 539 } 540 540 else 541 541 { 542 CanonicalForm F( convSingTrP ClapP( f ) ), G( convSingTrPClapP( g ) );543 res= conv ClapPSingTrP( F / G );542 CanonicalForm F( convSingTrPFactoryP( f ) ), G( convSingTrPFactoryP( g ) ); 543 res= convFactoryPSingTrP( F / G ); 544 544 } 545 545 } … … 612 612 } 613 613 FACTORY_ALGOUT( "G", ((lnumber)g1)->z ); 614 g = convSingTr ClapP( ((lnumber)g1)->z );615 g = gcd( g, convSingTr ClapP( ((lnumber)g2)->z ));614 g = convSingTrFactoryP( ((lnumber)g1)->z ); 615 g = gcd( g, convSingTrFactoryP( ((lnumber)g2)->z )); 616 616 617 617 // second run: gcd's … … 622 622 { 623 623 FACTORY_ALGOUT( "h", (((lnumber)pGetCoeff(p))->z) ); 624 h = convSingTr ClapP( ((lnumber)pGetCoeff(p))->z );624 h = convSingTrFactoryP( ((lnumber)pGetCoeff(p))->z ); 625 625 pIter( p ); 626 626 #ifdef FACTORY_GCD_STAT … … 653 653 lnumber c=(lnumber)pGetCoeff(p); 654 654 napDelete(&c->z); 655 c->z=conv ClapPSingTr( i.getItem() / g );655 c->z=convFactoryPSingTr( i.getItem() / g ); 656 656 //nTest((number)c); 657 657 //#ifdef LDEBUG … … 691 691 && (currRing->parameter==NULL)) 692 692 { 693 F=convSingP ClapP( f );694 FAC=convSingP ClapP( fac );693 F=convSingPFactoryP( f ); 694 FAC=convSingPFactoryP( fac ); 695 695 } 696 696 // and over Q(a) / Fp(a) … … 700 700 if (currRing->minpoly!=NULL) 701 701 { 702 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);702 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 703 703 a=rootOf(mipo); 704 F=convSingAP ClapAP( f,a );705 FAC=convSingAP ClapAP( fac,a );704 F=convSingAPFactoryAP( f,a ); 705 FAC=convSingAPFactoryAP( fac,a ); 706 706 } 707 707 else 708 708 { 709 F=convSingTrP ClapP( f );710 FAC=convSingTrP ClapP( fac );709 F=convSingTrPFactoryP( f ); 710 FAC=convSingTrPFactoryP( fac ); 711 711 } 712 712 } … … 727 727 && (currRing->parameter==NULL)) 728 728 { 729 q = conv ClapPSingP( Q );729 q = convFactoryPSingP( Q ); 730 730 } 731 731 else if (( nGetChar()==1 ) /* Q(a) */ … … 734 734 if (currRing->minpoly!=NULL) 735 735 { 736 q= conv ClapAPSingAP( Q );736 q= convFactoryAPSingAP( Q ); 737 737 } 738 738 else 739 739 { 740 q= conv ClapPSingTrP( Q );740 q= convFactoryPSingTrP( Q ); 741 741 } 742 742 } … … 887 887 { 888 888 setCharacteristic( nGetChar() ); 889 CanonicalForm F( convSingP ClapP( f ) );889 CanonicalForm F( convSingPFactoryP( f ) ); 890 890 if (nGetChar()==0) /* Q */ 891 891 { … … 911 911 int c=rChar(currRing); 912 912 setCharacteristic( c, primepower(c) ); 913 CanonicalForm F( convSingGF ClapGF( f ) );913 CanonicalForm F( convSingGFFactoryGF( f ) ); 914 914 if (F.isUnivariate()) 915 915 { … … 929 929 if (currRing->minpoly!=NULL) 930 930 { 931 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);931 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 932 932 Variable a=rootOf(mipo); 933 CanonicalForm F( convSingAP ClapAP( f,a ) );933 CanonicalForm F( convSingAPFactoryAP( f,a ) ); 934 934 L.insert(F); 935 935 if (rField_is_Zp_a() && F.isUnivariate()) … … 939 939 else 940 940 { 941 CanonicalForm G( convSingTrP ClapP( f ) );941 CanonicalForm G( convSingTrPFactoryP( f ) ); 942 942 #ifdef HAVE_LIBFAC_P 943 943 // over Q(a) / multivariate over Fp(a) … … 969 969 else 970 970 { 971 CanonicalForm F( convSingTrP ClapP( f ) );971 CanonicalForm F( convSingTrPFactoryP( f ) ); 972 972 if (rField_is_Q_a()) 973 973 { … … 1012 1012 if (with_exps!=1) (**v)[j] = J.getItem().exp(); 1013 1013 if (rField_is_Zp() || rField_is_Q()) /* Q, Fp */ 1014 //count_Factors(res,*v,f, j, conv ClapPSingP( J.getItem().factor() );1015 res->m[j] = conv ClapPSingP( J.getItem().factor() );1014 //count_Factors(res,*v,f, j, convFactoryPSingP( J.getItem().factor() ); 1015 res->m[j] = convFactoryPSingP( J.getItem().factor() ); 1016 1016 #if 0 1017 1017 else if (rField_is_GF()) 1018 res->m[j] = conv ClapGFSingGF( J.getItem().factor() );1018 res->m[j] = convFactoryGFSingGF( J.getItem().factor() ); 1019 1019 #endif 1020 1020 else if (rField_is_Extension()) /* Q(a), Fp(a) */ … … 1023 1023 if (v!=NULL) w=*v; 1024 1024 if (currRing->minpoly==NULL) 1025 count_Factors(res,w,j,ff,conv ClapPSingTrP( J.getItem().factor() ));1025 count_Factors(res,w,j,ff,convFactoryPSingTrP( J.getItem().factor() )); 1026 1026 else 1027 count_Factors(res,w,j,ff,conv ClapAPSingAP( J.getItem().factor() ));1027 count_Factors(res,w,j,ff,convFactoryAPSingAP( J.getItem().factor() )); 1028 1028 } 1029 1029 } … … 1186 1186 p=pCopy(p); 1187 1187 pCleardenom(p); 1188 L.append(convSingP ClapP(p));1188 L.append(convSingPFactoryP(p)); 1189 1189 } 1190 1190 } … … 1203 1203 p=pCopy(p); 1204 1204 pCleardenom(p); 1205 L.append(convSingTrP ClapP(p));1205 L.append(convSingTrPFactoryP(p)); 1206 1206 } 1207 1207 } … … 1246 1246 { 1247 1247 if ( (nGetChar() == 0) || (nGetChar() > 1) ) 1248 MATELEM(res,m,n)=conv ClapPSingP(Li.getItem());1248 MATELEM(res,m,n)=convFactoryPSingP(Li.getItem()); 1249 1249 else 1250 MATELEM(res,m,n)=conv ClapPSingTrP(Li.getItem());1250 MATELEM(res,m,n)=convFactoryPSingTrP(Li.getItem()); 1251 1251 } 1252 1252 } … … 1271 1271 for(i=0;i<IDELEMS(I);i++) 1272 1272 { 1273 L.append(convSingP ClapP(I->m[i]));1273 L.append(convSingPFactoryP(I->m[i])); 1274 1274 } 1275 1275 } … … 1282 1282 for(i=0;i<IDELEMS(I);i++) 1283 1283 { 1284 L.append(convSingTrP ClapP(I->m[i]));1284 L.append(convSingTrPFactoryP(I->m[i])); 1285 1285 } 1286 1286 } … … 1354 1354 { 1355 1355 setCharacteristic( nGetChar() ); 1356 CanonicalForm F( convSingP ClapP( f ) );1356 CanonicalForm F( convSingPFactoryP( f ) ); 1357 1357 if((nGetChar()>1)&&(!F.isUnivariate())) 1358 1358 goto err; … … 1367 1367 //if (currRing->minpoly!=NULL) 1368 1368 //{ 1369 // CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);1369 // CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 1370 1370 // Variable a=rootOf(mipo); 1371 // CanonicalForm F( convSingAP ClapAP( f,a ) );1371 // CanonicalForm F( convSingAPFactoryAP( f,a ) ); 1372 1372 // ... 1373 1373 //} 1374 1374 //else 1375 1375 { 1376 CanonicalForm F( convSingTrP ClapP( f ) );1376 CanonicalForm F( convSingTrPFactoryP( f ) ); 1377 1377 b=(BOOLEAN)isSqrFree(F); 1378 1378 } … … 1406 1406 for(j=r;j>0;j--) 1407 1407 { 1408 M(i,j)=convSingP ClapP(MATELEM(m,i,j));1409 } 1410 } 1411 res= conv ClapPSingP( determinant(M,r) ) ;1408 M(i,j)=convSingPFactoryP(MATELEM(m,i,j)); 1409 } 1410 } 1411 res= convFactoryPSingP( determinant(M,r) ) ; 1412 1412 } 1413 1413 // and over Q(a) / Fp(a) … … 1421 1421 if (currRing->minpoly!=NULL) 1422 1422 { 1423 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);1423 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 1424 1424 Variable a=rootOf(mipo); 1425 1425 int i,j; … … 1428 1428 for(j=r;j>0;j--) 1429 1429 { 1430 M(i,j)=convSingAP ClapAP(MATELEM(m,i,j),a);1430 M(i,j)=convSingAPFactoryAP(MATELEM(m,i,j),a); 1431 1431 } 1432 1432 } 1433 res= conv ClapAPSingAP( determinant(M,r) ) ;1433 res= convFactoryAPSingAP( determinant(M,r) ) ; 1434 1434 } 1435 1435 else … … 1440 1440 for(j=r;j>0;j--) 1441 1441 { 1442 M(i,j)=convSingTrP ClapP(MATELEM(m,i,j));1442 M(i,j)=convSingTrPFactoryP(MATELEM(m,i,j)); 1443 1443 } 1444 1444 } 1445 res= conv ClapPSingTrP( determinant(M,r) );1445 res= convFactoryPSingTrP( determinant(M,r) ); 1446 1446 } 1447 1447 } … … 1464 1464 } 1465 1465 } 1466 int res= conv ClapISingI( determinant(M,m->rows())) ;1466 int res= convFactoryISingI( determinant(M,m->rows())) ; 1467 1467 Off(SW_RATIONAL); 1468 1468 return res; … … 1480 1480 if (currRing->minpoly!=NULL) 1481 1481 { 1482 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);1482 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 1483 1483 Variable a=rootOf(mipo); 1484 CanonicalForm F( convSingA ClapA( f,a ) ), G( convSingAClapA( g,a ) );1484 CanonicalForm F( convSingAFactoryA( f,a ) ), G( convSingAFactoryA( g,a ) ); 1485 1485 CanonicalForm GCD; 1486 1486 … … 1498 1498 1499 1499 // calculate lcm 1500 res= conv ClapASingA( (F/GCD)*G );1500 res= convFactoryASingA( (F/GCD)*G ); 1501 1501 } 1502 1502 else 1503 1503 { 1504 CanonicalForm F( convSingTr ClapP( f ) ), G( convSingTrClapP( g ) );1504 CanonicalForm F( convSingTrFactoryP( f ) ), G( convSingTrFactoryP( g ) ); 1505 1505 CanonicalForm GCD; 1506 1506 TIMING_START( algLcmTimer ); … … 1517 1517 1518 1518 // calculate lcm 1519 res= conv ClapPSingTr( (F/GCD)*G );1519 res= convFactoryPSingTr( (F/GCD)*G ); 1520 1520 } 1521 1521 … … 1537 1537 if (currRing->minpoly!=NULL) 1538 1538 { 1539 CanonicalForm mipo=convSingTr ClapP(((lnumber)currRing->minpoly)->z);1539 CanonicalForm mipo=convSingTrFactoryP(((lnumber)currRing->minpoly)->z); 1540 1540 Variable a=rootOf(mipo); 1541 CanonicalForm F( convSingA ClapA( f,a ) ), G( convSingAClapA( g,a ) );1541 CanonicalForm F( convSingAFactoryA( f,a ) ), G( convSingAFactoryA( g,a ) ); 1542 1542 CanonicalForm GCD; 1543 1543 … … 1555 1555 if ((GCD!=1) && (GCD!=0)) 1556 1556 { 1557 ff= conv ClapASingA( F/ GCD );1558 gg= conv ClapASingA( G/ GCD );1557 ff= convFactoryASingA( F/ GCD ); 1558 gg= convFactoryASingA( G/ GCD ); 1559 1559 } 1560 1560 } 1561 1561 else 1562 1562 { 1563 CanonicalForm F( convSingTr ClapP( f ) ), G( convSingTrClapP( g ) );1563 CanonicalForm F( convSingTrFactoryP( f ) ), G( convSingTrFactoryP( g ) ); 1564 1564 CanonicalForm GCD; 1565 1565 … … 1577 1577 if ((GCD!=1) && (GCD!=0)) 1578 1578 { 1579 ff= conv ClapPSingTr( F/ GCD );1580 gg= conv ClapPSingTr( G/ GCD );1579 ff= convFactoryPSingTr( F/ GCD ); 1580 gg= convFactoryPSingTr( G/ GCD ); 1581 1581 } 1582 1582 } … … 1608 1608 { 1609 1609 number N=(number)x->m[i-1].Data(); 1610 X[i]=convSingN ClapN(N);1610 X[i]=convSingNFactoryN(N); 1611 1611 } 1612 1612 else … … 1623 1623 { 1624 1624 number N=(number)x->m[i-1].Data(); 1625 Q[i]=convSingN ClapN(N);1625 Q[i]=convSingNFactoryN(N); 1626 1626 } 1627 1627 else … … 1637 1637 res->m[0].rtyp=NUMBER_CMD; 1638 1638 res->m[1].rtyp=NUMBER_CMD; 1639 res->m[0].data=(char *)conv ClapNSingN( r );1640 res->m[1].data=(char *)conv ClapNSingN( prod );1639 res->m[0].data=(char *)convFactoryNSingN( r ); 1640 res->m[1].data=(char *)convFactoryNSingN( prod ); 1641 1641 return res; 1642 1642 } -
kernel/longalg.cc
raa7480c r46f6af6 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longalg.cc,v 1.3 0 2007-07-24 16:55:07Singular Exp $ */4 /* $Id: longalg.cc,v 1.31 2008-01-07 13:36:16 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: algebraic numbers … … 1679 1679 napoly rz=napGcd(x->z, y->z); 1680 1680 CanonicalForm F, G, R; 1681 R=convSingTr ClapP(rz);1681 R=convSingTrFactoryP(rz); 1682 1682 napNormalize(x->z); 1683 F=convSingTr ClapP(x->z)/R;1683 F=convSingTrFactoryP(x->z)/R; 1684 1684 napNormalize(y->z); 1685 G=convSingTr ClapP(y->z)/R;1685 G=convSingTrFactoryP(y->z)/R; 1686 1686 F = gcd( F, G ); 1687 1687 if (F.isOne()) … … 1690 1690 { 1691 1691 napDelete(&rz); 1692 result->z=conv ClapPSingTr( F*R );1692 result->z=convFactoryPSingTr( F*R ); 1693 1693 napNormalize(result->z); 1694 1694 } -
kernel/longrat.cc
raa7480c r46f6af6 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longrat.cc,v 1.2 5 2007-09-13 14:27:50Singular Exp $ */4 /* $Id: longrat.cc,v 1.26 2008-01-07 13:36:16 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: computation with long rational numbers (Hubert Grassmann) … … 64 64 */ 65 65 #define SR_HDL(A) ((long)(A)) 66 /*#define SR_INT 1 */66 /*#define SR_INT 1L*/ 67 67 /*#define INT_TO_SR(INT) ((number) (((long)INT << 2) + SR_INT))*/ 68 68 // #define SR_TO_INT(SR) (((long)SR) >> 2)
Note: See TracChangeset
for help on using the changeset viewer.