Guest User

bn_poly_synthetic_division routine

a guest
Aug 15th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.78 KB | None | 0 0
  1. void
  2. bn_poly_synthetic_division(register struct bn_poly *quo, register struct bn_poly *rem, register const struct bn_poly *dvdend, register const struct bn_poly *dvsor)
  3. {
  4.     register size_t divisor;
  5.     register size_t n;
  6.  
  7.     *quo = *dvdend;
  8.     *rem = bn_Zero_poly;
  9.  
  10.     if (dvsor->dgr > dvdend->dgr) {
  11.     quo->dgr = -1;
  12.     } else {
  13.     quo->dgr = dvdend->dgr - dvsor->dgr;
  14.     }
  15.     if ((rem->dgr = dvsor->dgr - 1) > dvdend->dgr)
  16.     rem->dgr = dvdend->dgr;
  17.  
  18.     for (n=0; n <= quo->dgr; ++n) {
  19.     quo->cf[n] /= dvsor->cf[0];
  20.     for (divisor=1; divisor <= dvsor->dgr; ++divisor) {
  21.         quo->cf[n+divisor] -= quo->cf[n] * dvsor->cf[divisor]; /* seg fault here... */
  22.     }
  23.     }
  24.     for (n=1; n<=(rem->dgr+1); ++n) {
  25.     rem->cf[n-1] = quo->cf[quo->dgr+n];
  26.     quo->cf[quo->dgr+n] = 0;
  27.     }
  28. }
Advertisement
Add Comment
Please, Sign In to add comment