1: /*
   2:  *	"@(#)pow_ii.c	1.2"
   3:  *
   4:  *  Corrections by Robert P. Corbett, 1983 March 2
   5:  *  Revised to restore portability, 1983 March 4
   6:  */
   7: 
   8: 
   9: long int pow_ii(ap, bp)
  10: long int *ap, *bp;
  11: {
  12:     long int pow, x, n;
  13:     int zero = 0;
  14: 
  15:     pow = 1;
  16:     x = *ap;
  17:     n = *bp;
  18: 
  19:     if (n == 0)
  20:         return ( 1L );
  21: 
  22:     if (x == 0)
  23:         return ( 0L );
  24: 
  25:     if (x == 1)
  26:         return ( 1L );
  27: 
  28:     if (x == -1)
  29:     {
  30:         if (n < 0)
  31:         {
  32:             if (n < -2)
  33:                 n += 2;
  34:             n = -n;
  35:         }
  36:         if (n % 2 == 0)
  37:             return ( 1L );
  38:         else
  39:             return ( -1L );
  40:     }
  41: 
  42:     if (n > 0)
  43:         for( ; ; )
  44:         {
  45:             if(n & 01)
  46:                 pow *= x;
  47:             if(n >>= 1)
  48:                 x *= x;
  49:             else
  50:                 break;
  51:         }
  52:     else
  53:         pow = 0;
  54: 
  55:     return(pow);
  56: }

Defined functions

pow_ii defined in line 9; never used
Last modified: 1983-05-20
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 278
Valid CSS Valid XHTML 1.0 Strict