+/*----------------------------------------------------------------------------
+| Returns a quiet NaN from a signalling NaN for the floating point value `a'.
+*----------------------------------------------------------------------------*/
+
+float16 float16_silence_nan(float16 a, float_status *status)
+{
+ FloatParts p = float16_unpack_raw(a);
+ p.frac <<= float16_params.frac_shift;
+ p = parts_silence_nan(p, status);
+ p.frac >>= float16_params.frac_shift;
+ return float16_pack_raw(p);
+}
+
+float32 float32_silence_nan(float32 a, float_status *status)
+{
+ FloatParts p = float32_unpack_raw(a);
+ p.frac <<= float32_params.frac_shift;
+ p = parts_silence_nan(p, status);
+ p.frac >>= float32_params.frac_shift;
+ return float32_pack_raw(p);
+}
+
+float64 float64_silence_nan(float64 a, float_status *status)
+{
+ FloatParts p = float64_unpack_raw(a);
+ p.frac <<= float64_params.frac_shift;
+ p = parts_silence_nan(p, status);
+ p.frac >>= float64_params.frac_shift;
+ return float64_pack_raw(p);
+}
+