Files
lammps/lib/linalg/pow_lmp_di.cpp

32 lines
459 B
C++

#include "lmp_f2c.h"
extern "C" {
double pow_lmp_di(doublereal *ap, integer *bp)
{
double pow, x;
integer n;
unsigned long u;
pow = 1;
x = *ap;
n = *bp;
if (n != 0) {
if (n < 0) {
n = -n;
x = 1 / x;
}
for (u = n;;) {
if (u & 01) pow *= x;
if (u >>= 1)
x *= x;
else
break;
}
}
return (pow);
}
}