This source file includes following definitions.
- my_ldexpl
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <config.h>
20
21 #include <math.h>
22
23 #include "signature.h"
24 SIGNATURE_CHECK (sqrtl, long double, (long double));
25
26 #include <float.h>
27
28 #include "fpucw.h"
29 #include "macros.h"
30
31 #define DOUBLE long double
32 #define L_(literal) literal##L
33 #define MANT_DIG DBL_MANT_DIG
34 #define SQRT sqrtl
35 #define RANDOM randoml
36 #include "test-sqrt.h"
37
38 static long double
39 my_ldexpl (long double x, int d)
40 {
41 for (; d > 0; d--)
42 x *= 2.0L;
43 for (; d < 0; d++)
44 x *= 0.5L;
45 return x;
46 }
47
48 int
49 main ()
50 {
51 DECL_LONG_DOUBLE_ROUNDING
52
53 BEGIN_LONG_DOUBLE_ROUNDING ();
54
55
56 x = 0.6L;
57 y = sqrtl (x);
58 ASSERT (y >= 0.7745966692L && y <= 0.7745966693L);
59
60
61 {
62 long double z;
63 long double err;
64
65 x = 8.1974099812331540680810141969554806865L;
66 y = sqrtl (x);
67 z = y * y - x;
68 err = my_ldexpl (z, LDBL_MANT_DIG);
69 if (err < 0)
70 err = - err;
71 ASSERT (err <= 100.0L);
72 }
73
74 test_function ();
75
76 return 0;
77 }