brintos

brintos / linux-shallow public Read only

0
0
Text · 663 B · 777894d Raw
38 lines · c
1// SPDX-License-Identifier: GPL-2.0+2 3#include <linux/errno.h>4 5#include "test_fpu.h"6 7int test_fpu(void)8{9	/*10	 * This sequence of operations tests that rounding mode is11	 * to nearest and that denormal numbers are supported.12	 * Volatile variables are used to avoid compiler optimizing13	 * the calculations away.14	 */15	volatile double a, b, c, d, e, f, g;16 17	a = 4.0;18	b = 1e-15;19	c = 1e-310;20 21	/* Sets precision flag */22	d = a + b;23 24	/* Result depends on rounding mode */25	e = a + b / 2;26 27	/* Denormal and very large values */28	f = b / c;29 30	/* Depends on denormal support */31	g = a + c * f;32 33	if (d > a && e > a && g > a)34		return 0;35	else36		return -EINVAL;37}38