Changeset e76d8cb in git for libpolys/coeffs/shortfl.cc
- Timestamp:
- Feb 20, 2013, 10:38:38 AM (10 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- ce537eb3f2484e9e9a7a4ce023fcf855a68f301c
- Parents:
- 7c537a47dd975a6046f786932a51b53e7595d43b
- git-author:
- Yue Ren <ren@mathematik.uni-kl.de>2013-02-20 10:38:38+01:00
- git-committer:
- Yue Ren <ren@mathematik.uni-kl.de>2013-02-20 10:53:39+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/shortfl.cc
r7c537a4 re76d8cb 420 420 /* read out the enumerator */ 421 421 mpz_ptr z=GET_NOM(from); 422 if(mpz_size1(z)>4) 423 { 424 WerrorS("float overflow"); 425 return nf(0.0).N(); 426 } 422 int i = mpz_size1(z); 427 423 mpf_t e; 428 424 mpf_init(e); … … 432 428 if(IS_INT(from)) 433 429 { 430 if(i>4) 431 { 432 WerrorS("float overflow"); 433 return nf(0.0).N(); 434 } 434 435 double basis; 435 436 signed long int exp; … … 442 443 /* else read out the denominator */ 443 444 mpz_ptr n = GET_DENOM(from); 444 if(mpz_size1(n)>4) 445 int j = mpz_size1(n); 446 if(j-i>4) 445 447 { 446 448 WerrorS("float overflow"); … … 466 468 return nf(f).N(); 467 469 } 470 471 // old version: 472 // number nrMapQ(number from, const coeffs aRing, const coeffs r) 473 // { 474 // /* in longrat.h 475 // #define SR_INT 1 476 // #define mpz_size1(A) (ABS((A)->_mp_size)) 477 // */ 478 // #define SR_HDL(A) ((long)(A)) 479 // #define mpz_isNeg(A) ((A)->_mp_size<0) 480 // #define mpz_limb_size(A) ((A)->_mp_size) 481 // #define mpz_limb_d(A) ((A)->_mp_d) 482 // #define MPZ_DIV(A,B,C) mpz_tdiv_q((A),(B),(C)) 483 // #define IS_INT(A) ((A)->s==3) 484 // #define IS_IMM(A) (SR_HDL(A)&SR_INT) 485 // #define GET_NOM(A) ((A)->z) 486 // #define GET_DENOM(A) ((A)->n) 487 // #define MPZ_INIT mpz_init 488 // #define MPZ_CLEAR mpz_clear 489 490 // assume( getCoeffType(r) == ID ); 491 // assume( getCoeffType(aRing) == n_Q ); 492 493 // mpz_t h; 494 // mpz_ptr g,z,n; 495 // int i,j,t,s; 496 // float ba,rr,rn,y; 497 498 // if (IS_IMM(from)) 499 // return nf((float)nlInt(from,NULL /* dummy for nlInt*/)).N(); 500 // z=GET_NOM(from); 501 // s=0X10000; 502 // ba=(float)s; 503 // ba*=ba; 504 // rr=0.0; 505 // i=mpz_size1(z); 506 // if(IS_INT(from)) 507 // { 508 // if(i>4) 509 // { 510 // WerrorS("float overflow"); 511 // return nf(rr).N(); 512 // } 513 // i--; 514 // rr=(float)mpz_limb_d(z)[i]; 515 // while(i>0) 516 // { 517 // i--; 518 // y=(float)mpz_limb_d(z)[i]; 519 // rr=rr*ba+y; 520 // } 521 // if(mpz_isNeg(z)) 522 // rr=-rr; 523 // return nf(rr).N(); 524 // } 525 // n=GET_DENOM(from); 526 // j=s=mpz_limb_size(n); 527 // if(j>i) 528 // { 529 // g=n; n=z; z=g; 530 // t=j; j=i; i=t; 531 // } 532 // t=i-j; 533 // if(t>4) 534 // { 535 // if(j==s) 536 // WerrorS("float overflow"); 537 // return nf(rr).N(); 538 // } 539 // if(t>1) 540 // { 541 // g=h; 542 // MPZ_INIT(g); 543 // MPZ_DIV(g,z,n); 544 // t=mpz_size1(g); 545 // if(t>4) 546 // { 547 // MPZ_CLEAR(g); 548 // if(j==s) 549 // WerrorS("float overflow"); 550 // return nf(rr).N(); 551 // } 552 // t--; 553 // rr=(float)mpz_limb_d(g)[t]; 554 // while(t) 555 // { 556 // t--; 557 // y=(float)mpz_limb_d(g)[t]; 558 // rr=rr*ba+y; 559 // } 560 // MPZ_CLEAR(g); 561 // if(j!=s) 562 // rr=1.0/rr; 563 // if(mpz_isNeg(z)) 564 // rr=-rr; 565 // return nf(rr).N(); 566 // } 567 // rn=(float)mpz_limb_d(n)[j-1]; 568 // rr=(float)mpz_limb_d(z)[i-1]; 569 // if(j>1) 570 // { 571 // rn=rn*ba+(float)mpz_limb_d(n)[j-2]; 572 // rr=rr*ba+(float)mpz_limb_d(z)[i-2]; 573 // i--; 574 // } 575 // if(t!=0) 576 // rr=rr*ba+(float)mpz_limb_d(z)[i-2]; 577 // if(j==s) 578 // rr=rr/rn; 579 // else 580 // rr=rn/rr; 581 // if(mpz_isNeg(z)) 582 // rr=-rr; 583 // return nf(rr).N(); 584 // } 468 585 469 586 nMapFunc nrSetMap(const coeffs src, const coeffs dst)
Note: See TracChangeset
for help on using the changeset viewer.