#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  int I;
  int J;
  int K;
  int ERRS;
  const float EPS = 1 @-6;
  float X;
  double Y;
  double Z;
  ERRS = 0;
  for (I = 1; I != 16 + 1; I += 1) {
    K = 2;
    K = IEXP(K, I);
    for (J = 0; J != 4 + 1; J += 1) {
      if (K << J != K * IEXP(2, J)) {
        PRINTSTRING(_imp_str_literal("<< ERROR"));
      }
      if (K >> J != K / (IEXP(2, J))) {
        PRINTSTRING(_imp_str_literal(">> ERROR"));
      }
    }
  }
  for (I = 1; I != 16 + 1; I += 1) {
    for (J = 0; J != 4 + 1; J += 1) {
      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"));
      }
      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 = ERRS + 1;
      }
      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 = ERRS + 1;
      }
      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 = ERRS + 1;
      }
    }
  }
  if (ERRS == 0) PRINTSTRING(_imp_str_literal("TEST OK"));
  _imp_leave();
  exit(0);
  return (0);
}
