Skip to content

Commit dc173e3

Browse files
committed
convert signaling NaN (sNaN) to quiet NaN (qNaN)
1 parent 299a753 commit dc173e3

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

libc/src/math/generic/asinf16.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ LLVM_LIBC_FUNCTION(float16, asinf16, (float16 x)) {
3535

3636
// |x| <= 0x1p-1, |x| <= 0.5
3737
if (x_abs <= 0x3800) {
38+
//asinf16(NaN) = NaN
39+
if (xbits.is_nan()) {
40+
if (xbits.is_signaling_nan()) {
41+
fputil::raise_except_if_required(FE_INVALID);
42+
return FPBits::quiet_nan().get_val();
43+
}
44+
45+
return x;
46+
}
47+
3848
// asinf16(+/-0) = +/-0
3949
if (LIBC_UNLIKELY(x_abs == 0))
4050
return x;
@@ -67,9 +77,7 @@ LLVM_LIBC_FUNCTION(float16, asinf16, (float16 x)) {
6777
if (LIBC_UNLIKELY(x_abs > 0x3c00)) {
6878
// |x| <= +/-inf
6979
if (LIBC_UNLIKELY(x_abs <= 0x7c00)) {
70-
if (!xbits.is_signaling_nan())
71-
fputil::set_errno_if_required(EDOM);
72-
80+
fputil::set_errno_if_required(EDOM);
7381
fputil::raise_except_if_required(FE_INVALID);
7482
}
7583

0 commit comments

Comments
 (0)