#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  int I;
  int J;
  int K;
  int Errs;
  static const float Eps = 1 @-6;
  float X;
  double Y;
  long double Z;
  Errs = 0;
  for (I = 1; I <= 16; I++) {
    K = 2;
    K = IEXP(K, I);
    for (J = 0; J <= 4; J++) {
      if (K << J != K * IEXP(2, J)) {
        Printstring(_imp_str_literal("<< ERROR"));
        Errs++;
      }
      if ((unsigned)K >> J != K / (IEXP(2, J))) {
        Printstring(_imp_str_literal(">> ERROR"));
        Errs++;
      }
    }
  }
  for (I = 1; I <= 16; I++)
    for (J = 0; J <= 4; J++) {
      X = I;
      Y = I;
      Z = I;
      K = IEXP(I, J);
      if (Mod(K - REXP(X, J)) >= Eps * K ||
          Mod(K - REXP(Y, J)) >= Eps * Eps * K ||
          Mod(K - REXP(Z, J)) >= Eps * Eps * K) {
        Printstring(_imp_str_literal("EXPR+ERROR"));
        Errs++;
      }
      if (Mod(K - (1 / (REXP(X, (-J))))) >= Eps * K) {
        Printstring(_imp_str_literal("real exp error on "));
        Write(I, 1);
        Printstring(_imp_str_literal("** -"));
        Write(J, 1);
        Newline();
        Errs++;
      }
      if (Mod(K - (1 / (REXP(Y, (-J))))) >= Eps * Eps * K) {
        Printstring(_imp_str_literal("double exp error on "));
        Write(I, 1);
        Printstring(_imp_str_literal("** -"));
        Write(J, 1);
        Newline();
        Errs++;
      }
      if (Mod(K - (1 / (REXP(Z, (-J))))) >= Eps * Eps * K) {
        Printstring(_imp_str_literal("quad exp error on "));
        Write(I, 1);
        Printstring(_imp_str_literal("** -"));
        Write(J, 1);
        Newline();
        Errs++;
      }
    }
  if (!Errs) Printstring(_imp_str_literal("TEST OK"));
  exit(0);
  return (1);
}
