/* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * @(#)pow_ri.c 5.2 7/9/85 */ float flt_retval; float pow_ri(ap, bp) float *ap; long int *bp; { double pow, x; long int n; pow = 1; x = *ap; n = *bp; if(n != 0) { if(n < 0) { if(x == 0) { flt_retval = pow; return(flt_retval); } n = -n; x = 1/x; } for( ; ; ) { if(n & 01) pow *= x; if(n >>= 1) x *= x; else break; } } flt_retval = pow; return(flt_retval); }