Example #1
0
int _Q_flt(const long double a, const long double b)
{
  FP_DECL_EX;
  FP_DECL_Q(A); FP_DECL_Q(B);
  int r;

  FP_UNPACK_RAW_Q(A, a);
  FP_UNPACK_RAW_Q(B, b);
  FP_CMP_Q(r, B, A, 3, 2);
  FP_HANDLE_EXCEPTIONS;

  return (r == 1);
}
Example #2
0
int _Q_cmpe(const long double a, const long double b)
{
  FP_DECL_EX;
  FP_DECL_Q(A); FP_DECL_Q(B);
  int r;

  FP_UNPACK_RAW_Q(A, a);
  FP_UNPACK_RAW_Q(B, b);
  FP_CMP_Q(r, B, A, 3, 2);
  if (r == -1) r = 2;
  FP_HANDLE_EXCEPTIONS;

  return r;
}
Example #3
0
CMPtype __letf2(TFtype a, TFtype b)
{
  FP_DECL_EX;
  FP_DECL_Q(A); FP_DECL_Q(B);
  CMPtype r;

  FP_UNPACK_RAW_Q(A, a);
  FP_UNPACK_RAW_Q(B, b);
  FP_CMP_Q(r, A, B, 2);
  if (r == 2 && (FP_ISSIGNAN_Q(A) || FP_ISSIGNAN_Q(B)))
    FP_SET_EXCEPTION(FP_EX_INVALID);
  FP_HANDLE_EXCEPTIONS;

  return r;
}
Example #4
0
int _Q_flt(const long double a, const long double b)
{
  FP_DECL_EX;
  FP_DECL_Q(A); FP_DECL_Q(B);
  int r;

  FP_UNPACK_RAW_Q(A, a);
  FP_UNPACK_RAW_Q(B, b);
  FP_CMP_Q(r, B, A, 3);
  if (r == 3)
    FP_SET_EXCEPTION(FP_EX_INVALID);
  FP_HANDLE_EXCEPTIONS;

  return (r == 1);
}
Example #5
0
CMPtype
__getf2 (TFtype a, TFtype b)
{
  FP_DECL_EX;
  FP_DECL_Q (A);
  FP_DECL_Q (B);
  CMPtype r;

  FP_INIT_EXCEPTIONS;
  FP_UNPACK_RAW_Q (A, a);
  FP_UNPACK_RAW_Q (B, b);
  FP_CMP_Q (r, A, B, -2, 2);
  FP_HANDLE_EXCEPTIONS;

  return r;
}
Example #6
0
int _Q_cmp(const long double a, const long double b)
{
  FP_DECL_EX;
  FP_DECL_Q(A); FP_DECL_Q(B);
  int r;

  FP_UNPACK_RAW_Q(A, a);
  FP_UNPACK_RAW_Q(B, b);
  FP_CMP_Q(r, B, A, 3);
  if (r == -1) r = 2;
  if (r == 3 && (FP_ISSIGNAN_Q(A) || FP_ISSIGNAN_Q(B)))
    FP_SET_EXCEPTION(FP_EX_INVALID);
  FP_HANDLE_EXCEPTIONS;

  return r;
}
Example #7
0
int FCMPEQ(void *rd, void *rs2, void *rs1)
{
	FP_DECL_Q(A); FP_DECL_Q(B);
	long ret;
	int fccno = ((long)rd) & 3;
	unsigned long fsr;
	
	rd = (void *)(((long)rd)&~3);
	__FP_UNPACK_Q(A, rs1);
	__FP_UNPACK_Q(B, rs2);
	FP_CMP_Q(ret, B, A, 3);
	if (ret == -1) ret = 2;
	fsr = *(unsigned long *)rd;
	switch (fccno) {
	case 0: fsr &= ~0xc00; fsr |= (ret << 10); break;
	case 1: fsr &= ~0x300000000UL; fsr |= (ret << 32); break;
	case 2: fsr &= ~0xc00000000UL; fsr |= (ret << 34); break;
	case 3: fsr &= ~0x3000000000UL; fsr |= (ret << 36); break;
	}
	*(unsigned long *)rd = fsr;
	return 1;
}