1/* $OpenBSD: modf_test.c,v 1.1 2023/08/13 07:02:36 miod Exp $ */ 2 3/* 4 * Written by Willemijn Coene. Public domain 5 */ 6 7#include <assert.h> 8#include <math.h> 9 10void 11modff_infnan(void) 12{ 13 float f, i; 14 15 f = modff(__builtin_inff(), &i); 16 assert(isinf(i)); 17 assert(signbit(i) == 0); 18 assert(f == 0.0f); 19 20 f = modff(-__builtin_inff(), &i); 21 assert(isinf(i)); 22 assert(signbit(i) != 0); 23 assert(f == -0.0f); 24 25 f = modff(NAN, &i); 26 assert(isnan(i)); 27 assert(signbit(i) == 0); 28 assert(isnan(f)); 29 assert(signbit(f) == 0); 30 31 f = modff(-NAN, &i); 32 assert(isnan(i)); 33 assert(signbit(i) != 0); 34 assert(isnan(f)); 35 assert(signbit(f) != 0); 36} 37 38void 39modfl_infnan(void) 40{ 41 long double f, i; 42 43 f = modfl(__builtin_infl(), &i); 44 assert(isinf(i)); 45 assert(signbit(i) == 0); 46 assert(f == 0.0L); 47 48 f = modfl(-__builtin_infl(), &i); 49 assert(isinf(i)); 50 assert(signbit(i) != 0); 51 assert(f == -0.0L); 52 53 f = modfl(NAN, &i); 54 assert(isnan(i)); 55 assert(signbit(i) == 0); 56 assert(isnan(f)); 57 assert(signbit(f) == 0); 58 59 f = modfl(-NAN, &i); 60 assert(isnan(i)); 61 assert(signbit(i) != 0); 62 assert(isnan(f)); 63 assert(signbit(f) != 0); 64} 65 66int 67main(void) 68{ 69 modff_infnan(); 70 modfl_infnan(); 71} 72