Lines Matching refs:fp80

30 #include <fputils/fp80.h>
48 fp80_sgn(fp80_t fp80)
50 return (fp80.repr.se & FP80_SIGN_BIT) ? -1 : 1;
54 fp80_isspecial(fp80_t fp80)
56 const int exp = FP80_EXP(fp80);
62 fp80_isinf(fp80_t fp80)
64 const uint64_t frac = FP80_FRAC(fp80);
66 return fp80_isspecial(fp80) && frac == 0 ? fp80_sgn(fp80) : 0;
71 fp80_isqnan(fp80_t fp80)
73 const uint64_t frac = FP80_FRAC(fp80);
75 return fp80_isspecial(fp80) && (frac & FP80_QNAN_BIT);
79 fp80_isqnani(fp80_t fp80)
81 const uint64_t frac_low = fp80.repr.fi & (FP80_FRAC_MASK >> 1);
83 return fp80_isqnan(fp80) && (fp80.repr.se & FP80_SIGN_BIT) && !frac_low;
87 fp80_issnan(fp80_t fp80)
89 const uint64_t frac = FP80_FRAC(fp80);
91 return fp80_isspecial(fp80) && !(frac & FP80_QNAN_BIT) && frac;
95 fp80_isfinite(fp80_t fp80)
97 return !fp80_isnan(fp80) && !fp80_isinf(fp80);
101 fp80_isnan(fp80_t fp80)
103 return fp80_issnan(fp80) || fp80_isqnan(fp80) ? fp80_sgn(fp80) : 0;
107 fp80_iszero(fp80_t fp80)
109 return fp80.repr.fi == 0 && FP80_EXP(fp80) == 0 ? fp80_sgn(fp80) : 0;
113 fp80_isnormal(fp80_t fp80)
115 return FP80_EXP(fp80) != 0 && !fp80_isspecial(fp80) ?
116 fp80_sgn(fp80) : 0;
120 fp80_issubnormal(fp80_t fp80)
122 return FP80_FRAC(fp80) && FP80_EXP(fp80) == 0 ? fp80_sgn(fp80) : 0;
126 fp80_classify(fp80_t fp80)
128 if (fp80_issubnormal(fp80)) {
130 } else if (fp80_iszero(fp80)) {
132 } else if (fp80_isinf(fp80)) {
134 } else if (fp80_isnan(fp80)) {
137 assert(fp80_isfinite(fp80));
143 fp80_cvtd(fp80_t fp80)
145 return fp80_cvtfp64(fp80).value;
149 fp80_cvtfp64(fp80_t fp80)
151 const int sign = fp80.repr.se & FP80_SIGN_BIT;
153 if (!fp80_isspecial(fp80)) {
154 const uint64_t frac = fp80.repr.fi;
155 const int unb_exp = FP80_EXP(fp80) - FP80_EXP_BIAS;
172 if (fp80_isinf(fp80)) {
174 } else if (fp80_issnan(fp80)) {
175 return fp80_sgn(fp80) > 0 ? fp64_snan : fp64_nsnan;
176 } else if (fp80_isqnani(fp80)) {
179 assert(fp80_isqnan(fp80));
180 return fp80_sgn(fp80) > 0 ? fp64_qnan : fp64_nqnan;
205 const fp80_t fp80 = BUILD_FP80(fp64.bits & FP64_SIGN_BIT,
207 return fp80;
210 const fp80_t fp80 = BUILD_FP80(fp64.bits & FP64_SIGN_BIT, 0, 0);
211 return fp80;
221 const fp80_t fp80 = BUILD_FP80(fp64.bits & FP64_SIGN_BIT,
223 return fp80;
228 fp80_debug_dump(FILE *fout, fp80_t fp80)
231 fp80_sgn(fp80), !!(fp80.repr.fi & FP80_INT_BIT), FP80_FRAC(fp80),
232 FP80_EXP(fp80), FP80_EXP(fp80) - FP80_EXP_BIAS);