Fix modf/f for NaN input
For NaN input the modf/f procedures should return NaN instead of zero with the sign of the input.
This commit is contained in:
		
							parent
							
								
									9e8da7bd21
								
							
						
					
					
						commit
						4ad9ba42fc
					
				|  | @ -100,6 +100,7 @@ static double one = 1.0; | |||
| 	} else if (j0>51) {		/* no fraction part */ | ||||
| 	    __uint32_t high; | ||||
| 	    *iptr = x*one; | ||||
| 	    if (__fpclassifyd(x) == FP_NAN) return x+x; /* x is NaN, return NaN */ | ||||
| 	    GET_HIGH_WORD(high,x); | ||||
| 	    INSERT_WORDS(x,high&0x80000000,0);	/* return +-0 */ | ||||
| 	    return x; | ||||
|  |  | |||
|  | @ -52,6 +52,7 @@ static float one = 1.0; | |||
| 	} else {			/* no fraction part */ | ||||
| 	    __uint32_t ix; | ||||
| 	    *iptr = x*one; | ||||
| 	    if (__fpclassifyf(x) == FP_NAN) return x+x; /* x is NaN, return NaN */ | ||||
| 	    GET_FLOAT_WORD(ix,x); | ||||
| 	    SET_FLOAT_WORD(x,ix&0x80000000);	/* return +-0 */ | ||||
| 	    return x; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue