Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.14.15.
 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 is
11	 * to nearest and that denormal numbers are supported.
12	 * Volatile variables are used to avoid compiler optimizing
13	 * 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	else
36		return -EINVAL;
37}