#ifndef __MATH_EMU_OP_2_H__
#define __MATH_EMU_OP_2_H__
#define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0 = 0, X##_f1 = 0
#define _FP_FRAC_COPY_2(D,S) (D##_f0 = S##_f0, D##_f1 = S##_f1)
#define _FP_FRAC_SET_2(X,I) __FP_FRAC_SET_2(X, I)
#define _FP_FRAC_HIGH_2(X) (X##_f1)
#define _FP_FRAC_LOW_2(X) (X##_f0)
#define _FP_FRAC_WORD_2(X,w) (X##_f##w)
#define _FP_FRAC_SLL_2(X, N) ( \
(void) (((N) < _FP_W_TYPE_SIZE) \
if (__builtin_constant_p(N) && (N) == 1) { \
X##_f1 = X##_f1 + X##_f1 + \
(((_FP_WS_TYPE) (X##_f0)) < 0); \
X##_f1 = X##_f1 << (N) | X##_f0 >> \
(_FP_W_TYPE_SIZE - (N)); \
X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
#define _FP_FRAC_SRL_2(X, N) ( \
(void) (((N) < _FP_W_TYPE_SIZE) \
X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \