#include <perms.h>
double Impfexp(int P, double X) {
  double R;
  if (P == 0) return (1.0);
  if (X == 0.0) return (0.0);
  if (P < 0) {
    X = 1.0 / X;
    P = -P;
  }
  R = 1.0;
  for (;;) {
    if ((P & 1) != 0) R = R * X;
    P = (unsigned)P >> 1;
    if (P == 0) return (R);
    X = X * X;
  }
}
int Impiexp(int Y, int X) {
  int Value;
  if ((Y < 0)) _imp_signal(5, 2, Y, _imp_str_literal(""));
  Value = 1;
  while (Y > 0) {
    Value = Value * X;
    Y--;
  }
  return (Value);
}
