intervals 0.3.56

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. data/VERSION.txt +1 -0
  2. data/ext/crlibm/AUTHORS +2 -0
  3. data/ext/crlibm/COPYING +504 -0
  4. data/ext/crlibm/ChangeLog +80 -0
  5. data/ext/crlibm/INSTALL +182 -0
  6. data/ext/crlibm/Makefile.am +84 -0
  7. data/ext/crlibm/Makefile.in +530 -0
  8. data/ext/crlibm/NEWS +0 -0
  9. data/ext/crlibm/README +31 -0
  10. data/ext/crlibm/TODO +47 -0
  11. data/ext/crlibm/VERSION +1 -0
  12. data/ext/crlibm/aclocal.m4 +989 -0
  13. data/ext/crlibm/atan-itanium.c +846 -0
  14. data/ext/crlibm/atan-pentium.c +261 -0
  15. data/ext/crlibm/atan_accurate.c +244 -0
  16. data/ext/crlibm/atan_accurate.h +191 -0
  17. data/ext/crlibm/atan_fast.c +324 -0
  18. data/ext/crlibm/atan_fast.h +678 -0
  19. data/ext/crlibm/config.guess +1461 -0
  20. data/ext/crlibm/config.sub +1566 -0
  21. data/ext/crlibm/configure +7517 -0
  22. data/ext/crlibm/configure.ac +364 -0
  23. data/ext/crlibm/crlibm.h +125 -0
  24. data/ext/crlibm/crlibm_config.h +149 -0
  25. data/ext/crlibm/crlibm_config.h.in +148 -0
  26. data/ext/crlibm/crlibm_private.c +293 -0
  27. data/ext/crlibm/crlibm_private.h +658 -0
  28. data/ext/crlibm/csh_fast.c +631 -0
  29. data/ext/crlibm/csh_fast.h +771 -0
  30. data/ext/crlibm/double-extended.h +496 -0
  31. data/ext/crlibm/exp-td.c +962 -0
  32. data/ext/crlibm/exp-td.h +685 -0
  33. data/ext/crlibm/exp_accurate.c +197 -0
  34. data/ext/crlibm/exp_accurate.h +85 -0
  35. data/ext/crlibm/gappa/log-de-E0-logir0.gappa +106 -0
  36. data/ext/crlibm/gappa/log-de-E0.gappa +79 -0
  37. data/ext/crlibm/gappa/log-de.gappa +81 -0
  38. data/ext/crlibm/gappa/log-td-E0-logir0.gappa +126 -0
  39. data/ext/crlibm/gappa/log-td-E0.gappa +143 -0
  40. data/ext/crlibm/gappa/log-td-accurate-E0-logir0.gappa +230 -0
  41. data/ext/crlibm/gappa/log-td-accurate-E0.gappa +213 -0
  42. data/ext/crlibm/gappa/log-td-accurate.gappa +217 -0
  43. data/ext/crlibm/gappa/log-td.gappa +156 -0
  44. data/ext/crlibm/gappa/trigoSinCosCase3.gappa +204 -0
  45. data/ext/crlibm/gappa/trigoTanCase2.gappa +73 -0
  46. data/ext/crlibm/install-sh +269 -0
  47. data/ext/crlibm/log-de.c +431 -0
  48. data/ext/crlibm/log-de.h +732 -0
  49. data/ext/crlibm/log-td.c +852 -0
  50. data/ext/crlibm/log-td.h +819 -0
  51. data/ext/crlibm/log10-td.c +906 -0
  52. data/ext/crlibm/log10-td.h +823 -0
  53. data/ext/crlibm/log2-td.c +935 -0
  54. data/ext/crlibm/log2-td.h +821 -0
  55. data/ext/crlibm/maple/atan.mpl +359 -0
  56. data/ext/crlibm/maple/common-procedures.mpl +997 -0
  57. data/ext/crlibm/maple/csh.mpl +446 -0
  58. data/ext/crlibm/maple/double-extended.mpl +151 -0
  59. data/ext/crlibm/maple/exp-td.mpl +195 -0
  60. data/ext/crlibm/maple/log-de.mpl +243 -0
  61. data/ext/crlibm/maple/log-td.mpl +316 -0
  62. data/ext/crlibm/maple/log10-td.mpl +345 -0
  63. data/ext/crlibm/maple/log2-td.mpl +334 -0
  64. data/ext/crlibm/maple/trigo.mpl +728 -0
  65. data/ext/crlibm/maple/triple-double.mpl +58 -0
  66. data/ext/crlibm/missing +198 -0
  67. data/ext/crlibm/mkinstalldirs +40 -0
  68. data/ext/crlibm/rem_pio2_accurate.c +219 -0
  69. data/ext/crlibm/rem_pio2_accurate.h +53 -0
  70. data/ext/crlibm/scs_lib/AUTHORS +3 -0
  71. data/ext/crlibm/scs_lib/COPYING +504 -0
  72. data/ext/crlibm/scs_lib/ChangeLog +16 -0
  73. data/ext/crlibm/scs_lib/INSTALL +215 -0
  74. data/ext/crlibm/scs_lib/Makefile.am +18 -0
  75. data/ext/crlibm/scs_lib/Makefile.in +328 -0
  76. data/ext/crlibm/scs_lib/NEWS +0 -0
  77. data/ext/crlibm/scs_lib/README +9 -0
  78. data/ext/crlibm/scs_lib/TODO +4 -0
  79. data/ext/crlibm/scs_lib/addition_scs.c +623 -0
  80. data/ext/crlibm/scs_lib/config.guess +1461 -0
  81. data/ext/crlibm/scs_lib/config.sub +1566 -0
  82. data/ext/crlibm/scs_lib/configure +6226 -0
  83. data/ext/crlibm/scs_lib/division_scs.c +110 -0
  84. data/ext/crlibm/scs_lib/double2scs.c +174 -0
  85. data/ext/crlibm/scs_lib/install-sh +269 -0
  86. data/ext/crlibm/scs_lib/missing +198 -0
  87. data/ext/crlibm/scs_lib/mkinstalldirs +40 -0
  88. data/ext/crlibm/scs_lib/multiplication_scs.c +456 -0
  89. data/ext/crlibm/scs_lib/poly_fct.c +112 -0
  90. data/ext/crlibm/scs_lib/print_scs.c +73 -0
  91. data/ext/crlibm/scs_lib/rand_scs.c +63 -0
  92. data/ext/crlibm/scs_lib/scs.h +353 -0
  93. data/ext/crlibm/scs_lib/scs2double.c +391 -0
  94. data/ext/crlibm/scs_lib/scs2mpf.c +58 -0
  95. data/ext/crlibm/scs_lib/scs2mpfr.c +61 -0
  96. data/ext/crlibm/scs_lib/scs_private.c +23 -0
  97. data/ext/crlibm/scs_lib/scs_private.h +133 -0
  98. data/ext/crlibm/scs_lib/tests/tbx_timing.h +102 -0
  99. data/ext/crlibm/scs_lib/wrapper_scs.h +486 -0
  100. data/ext/crlibm/scs_lib/zero_scs.c +52 -0
  101. data/ext/crlibm/stamp-h.in +1 -0
  102. data/ext/crlibm/tests/Makefile.am +43 -0
  103. data/ext/crlibm/tests/Makefile.in +396 -0
  104. data/ext/crlibm/tests/blind_test.c +148 -0
  105. data/ext/crlibm/tests/generate_test_vectors.c +258 -0
  106. data/ext/crlibm/tests/soak_test.c +334 -0
  107. data/ext/crlibm/tests/test_common.c +627 -0
  108. data/ext/crlibm/tests/test_common.h +28 -0
  109. data/ext/crlibm/tests/test_perf.c +570 -0
  110. data/ext/crlibm/tests/test_val.c +249 -0
  111. data/ext/crlibm/trigo_accurate.c +500 -0
  112. data/ext/crlibm/trigo_accurate.h +331 -0
  113. data/ext/crlibm/trigo_fast.c +1219 -0
  114. data/ext/crlibm/trigo_fast.h +639 -0
  115. data/ext/crlibm/triple-double.h +878 -0
  116. data/ext/extconf.rb +31 -0
  117. data/ext/fpu.c +107 -0
  118. data/ext/jamis-mod.rb +591 -0
  119. data/lib/fpu.rb +287 -0
  120. data/lib/interval.rb +1170 -0
  121. data/lib/intervals.rb +212 -0
  122. data/lib/struct_float.rb +133 -0
  123. data/test/data_atan.txt +360 -0
  124. data/test/data_cos.txt +346 -0
  125. data/test/data_cosh.txt +3322 -0
  126. data/test/data_exp.txt +3322 -0
  127. data/test/data_log.txt +141 -0
  128. data/test/data_sin.txt +140 -0
  129. data/test/data_sinh.txt +3322 -0
  130. data/test/data_tan.txt +342 -0
  131. metadata +186 -0
@@ -0,0 +1,148 @@
1
+ /* crlibm_config.h.in. Generated from configure.ac by autoheader. */
2
+
3
+ /* Processor type */
4
+ #undef CRLIBM_TYPECPU_ALPHA
5
+
6
+ /* Processor type */
7
+ #undef CRLIBM_TYPECPU_AMD64
8
+
9
+ /* Processor type */
10
+ #undef CRLIBM_TYPECPU_ITANIUM
11
+
12
+ /* Processor type */
13
+ #undef CRLIBM_TYPECPU_POWERPC
14
+
15
+ /* Processor type */
16
+ #undef CRLIBM_TYPECPU_SPARC
17
+
18
+ /* Processor type */
19
+ #undef CRLIBM_TYPECPU_X86
20
+
21
+ /* OS type */
22
+ #undef CRLIBM_TYPEOS_BSD
23
+
24
+ /* OS type */
25
+ #undef CRLIBM_TYPEOS_CYGWIN
26
+
27
+ /* OS type */
28
+ #undef CRLIBM_TYPEOS_HPUX
29
+
30
+ /* Define to 1 if you have the <fenv.h> header file. */
31
+ #undef HAVE_FENV_H
32
+
33
+ /* Define to 1 if you have the <float.h> header file. */
34
+ #undef HAVE_FLOAT_H
35
+
36
+ /* Define to 1 if you have the <gmp.h> header file. */
37
+ #undef HAVE_GMP_H
38
+
39
+ /* Define to 1 if you have the <inttypes.h> header file. */
40
+ #undef HAVE_INTTYPES_H
41
+
42
+ /* Define to 1 if you have the `gmp' library (-lgmp). */
43
+ #undef HAVE_LIBGMP
44
+
45
+ /* Define to 1 if you have the `m' library (-lm). */
46
+ #undef HAVE_LIBM
47
+
48
+ /* Define to 1 if you have the `mcr' library (-lmcr). */
49
+ #undef HAVE_LIBMCR
50
+
51
+ /* Define to 1 if you have the <libmcr.h> header file. */
52
+ #undef HAVE_LIBMCR_H
53
+
54
+ /* Define to 1 if you have the `mpfr' library (-lmpfr). */
55
+ #undef HAVE_LIBMPFR
56
+
57
+ /* Define to 1 if you have the `ultim' library (-lultim). */
58
+ #undef HAVE_LIBULTIM
59
+
60
+ /* Define to 1 if long double works and has more range or precision than
61
+ double. */
62
+ #undef HAVE_LONG_DOUBLE
63
+
64
+ /* Define to 1 if your system has a GNU libc compatible `malloc' function, and
65
+ to 0 otherwise. */
66
+ #undef HAVE_MALLOC
67
+
68
+ /* Define to 1 if you have the <MathLib.h> header file. */
69
+ #undef HAVE_MATHLIB_H
70
+
71
+ /* Define to 1 if you have the <memory.h> header file. */
72
+ #undef HAVE_MEMORY_H
73
+
74
+ /* Define to 1 if you have the <mpfr.h> header file. */
75
+ #undef HAVE_MPFR_H
76
+
77
+ /* Define to 1 if you have the `sqrt' function. */
78
+ #undef HAVE_SQRT
79
+
80
+ /* Define to 1 if you have the <stdint.h> header file. */
81
+ #undef HAVE_STDINT_H
82
+
83
+ /* Define to 1 if you have the <stdlib.h> header file. */
84
+ #undef HAVE_STDLIB_H
85
+
86
+ /* Define to 1 if you have the <strings.h> header file. */
87
+ #undef HAVE_STRINGS_H
88
+
89
+ /* Define to 1 if you have the <string.h> header file. */
90
+ #undef HAVE_STRING_H
91
+
92
+ /* Define to 1 if you have the <sys/stat.h> header file. */
93
+ #undef HAVE_SYS_STAT_H
94
+
95
+ /* Define to 1 if you have the <sys/types.h> header file. */
96
+ #undef HAVE_SYS_TYPES_H
97
+
98
+ /* Define to 1 if you have the <unistd.h> header file. */
99
+ #undef HAVE_UNISTD_H
100
+
101
+ /* Name of package */
102
+ #undef PACKAGE
103
+
104
+ /* Define to the address where bug reports for this package should be sent. */
105
+ #undef PACKAGE_BUGREPORT
106
+
107
+ /* Define to the full name of this package. */
108
+ #undef PACKAGE_NAME
109
+
110
+ /* Define to the full name and version of this package. */
111
+ #undef PACKAGE_STRING
112
+
113
+ /* Define to the one symbol short name of this package. */
114
+ #undef PACKAGE_TARNAME
115
+
116
+ /* Define to the version of this package. */
117
+ #undef PACKAGE_VERSION
118
+
119
+ /* Size of an SCS digit */
120
+ #undef SCS_NB_BITS
121
+
122
+ /* Number of digits in the SCS structure */
123
+ #undef SCS_NB_WORDS
124
+
125
+ /* The size of a `int', as computed by sizeof. */
126
+ #undef SIZEOF_INT
127
+
128
+ /* Define to 1 if you have the ANSI C header files. */
129
+ #undef STDC_HEADERS
130
+
131
+ /* Version number of package */
132
+ #undef VERSION
133
+
134
+ /* Define to 1 if your processor stores words with the most significant byte
135
+ first (like Motorola and SPARC, unlike Intel and VAX). */
136
+ #undef WORDS_BIGENDIAN
137
+
138
+ /* Define to empty if `const' does not conform to ANSI C. */
139
+ #undef const
140
+
141
+ /* Define to `__inline__' or `__inline' if that's what the C compiler
142
+ calls it, or to nothing if 'inline' is not supported under any name. */
143
+ #ifndef __cplusplus
144
+ #undef inline
145
+ #endif
146
+
147
+ /* Define to rpl_malloc if the replacement function should be used. */
148
+ #undef malloc
@@ -0,0 +1,293 @@
1
+ /**
2
+ * Variables and common functions shared by many functions
3
+ *
4
+ * This file is part of the crlibm library developed by the Arenaire
5
+ * project at Ecole Normale Superieure de Lyon
6
+ *
7
+ * This program is free software; you can redistribute it and/or modify
8
+ * it under the terms of the GNU Lesser General Public License as published by
9
+ * the Free Software Foundation; either version 2 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this program; if not, write to the Free Software
19
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
+ */
21
+ #include <stdio.h>
22
+ #include <stdlib.h>
23
+ #include "crlibm.h"
24
+ #include "crlibm_private.h"
25
+
26
+ /* I wish I could use C99 fenv.h, but as of 2004 it doesn't specify
27
+ anything about precision, only rounding direction. */
28
+
29
+ #ifdef HAVE_FENV_H
30
+ #include <fenv.h>
31
+ #endif
32
+
33
+ /* Tell the compiler that we're going to mess with FP status register */
34
+ #ifdef FENV_H
35
+ #pragma STDC FENV_ACCESS ON
36
+ #endif
37
+
38
+
39
+
40
+
41
+
42
+ /* TODO proper init and exit functions
43
+
44
+ - for Itanium (set sf2 and/or sf3, one should be kept for saving the
45
+ fpsr when speculating, study operating systems)
46
+
47
+ - for PowerPC: nothing to do usually, however if for some reason the
48
+ CPU was not in the default state then crlibm won't work
49
+
50
+ */
51
+
52
+
53
+
54
+ /* An init function which sets FPU flags when needed */
55
+ unsigned long long crlibm_init() {
56
+ #ifndef CRLIBM_TYPEOS_BSD
57
+ #if (defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64))
58
+ unsigned short oldcw, cw;
59
+ /* save old state */
60
+ _FPU_GETCW(oldcw);
61
+ /* Set FPU flags to use double, not double extended,
62
+ with rounding to nearest */
63
+ cw = (_FPU_DEFAULT & ~_FPU_EXTENDED)|_FPU_DOUBLE;
64
+ _FPU_SETCW(cw);
65
+ return (unsigned long long) oldcw;
66
+
67
+ #elif defined(CRLIBM_TYPECPU_ITANIUM)
68
+ /* On Itanium we assume that SF2 is used fo speculation, and use only SF3 */
69
+
70
+ unsigned long long int old_fpsr;
71
+
72
+ #if defined(__INTEL_COMPILER)
73
+ _Asm_fsetc( 0x00, 0x28, 3 /*_SF3*/ ); /* sf3 = round up, double-precision */
74
+
75
+ // _Asm_mov_to_ar(40,
76
+ // (old_fpsr & 0xfd000000FFFFFFFFULL) || ((0x18ULL<<32) + (0x28ULL<<45)) );
77
+ #elif defined(__GNUC__)
78
+ __asm__ ("fsetc.s3 0, 40\n");
79
+ #endif /* defined(__INTEL_COMPILER) */
80
+ old_fpsr = 0 ; /* TODO */
81
+ return old_fpsr;
82
+
83
+ #else
84
+ return 0;
85
+ #endif /* CRLIBM_TYPECPU_X86 || CRLIBM_TYPECPU_AMD64 */
86
+ #else
87
+ return 0;
88
+ #endif
89
+ }
90
+
91
+ /* An exit function which sets FPU flags to initial value */
92
+ void crlibm_exit(unsigned long long int oldcw) {
93
+ #ifndef CRLIBM_TYPEOS_BSD
94
+ #if (defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64))
95
+ /* Set FPU flags to use double, not double extended,
96
+ with rounding to nearest */
97
+ unsigned short t = (unsigned short)oldcw;
98
+ _FPU_SETCW(t);
99
+ #endif
100
+ #endif
101
+ }
102
+
103
+
104
+
105
+
106
+ #if ADD22_AS_FUNCTIONS
107
+ /*
108
+ * computes double-double addition: zh+zl = xh+xl + yh+yl
109
+ * relative error is smaller than 2^-103
110
+ */
111
+
112
+ void Add22Cond(double *zh, double *zl,
113
+ double xh, double xl, double yh, double yl)
114
+ {
115
+ double r,s;
116
+ r = xh+yh;
117
+ if ((ABS(xh)) > (ABS(yh)))
118
+ {s= ((((xh-r)+yh)+yl)+xl); }
119
+ else {s=((((yh-r)+xh)+xl)+yl);}
120
+ *zh = r+s;
121
+ *zl = r - (*zh) + s;
122
+ }
123
+
124
+ /*
125
+ * computes double-double addition: zh+zl = xh+xl + yh+yl
126
+ * knowing that xh>yh
127
+ * relative error is smaller than 2^-103
128
+ */
129
+
130
+ void Add22(double *zh, double *zl, double xh, double xl, double yh, double yl)
131
+ {
132
+ double r,s;
133
+
134
+ r = xh+yh;
135
+ s = xh-r+yh+yl+xl;
136
+ *zh = r+s;
137
+ *zl = r - (*zh) + s;
138
+ }
139
+
140
+ #endif /*ADD22_AS_FUNCTIONS*/
141
+
142
+
143
+
144
+ #if DEKKER_AS_FUNCTIONS && (!defined PROCESSOR_HAS_FMA)
145
+ /* else it is defined in crlibm_private.h */
146
+
147
+ /*
148
+ * computes rh and rl such that rh + rl = a * b with rh = a @* b exactly
149
+ * under the conditions : a < 2^970 et b < 2^970
150
+ */
151
+ void Mul12(double *rh, double *rl, double u, double v){
152
+ const double c = 134217729.; /* 1+2^27 */
153
+ double up, u1, u2, vp, v1, v2;
154
+
155
+ up = u*c; vp = v*c;
156
+ u1 = (u-up)+up; v1 = (v-vp)+vp;
157
+ u2 = u-u1; v2 = v-v1;
158
+
159
+ *rh = u*v;
160
+ *rl = (((u1*v1-*rh)+(u1*v2))+(u2*v1))+(u2*v2);
161
+ }
162
+
163
+ /*
164
+ * Computes rh and rl such that rh + rl = a * b and rh = a @* b exactly
165
+ */
166
+ void Mul12Cond(double *rh, double *rl, double a, double b){
167
+ const double two_970 = 0.997920154767359905828186356518419283e292;
168
+ const double two_em53 = 0.11102230246251565404236316680908203125e-15;
169
+ const double two_e53 = 9007199254740992.;
170
+ double u, v;
171
+
172
+ if (a>two_970) u = a*two_em53;
173
+ else u = a;
174
+ if (b>two_970) v = b*two_em53;
175
+ else v = b;
176
+
177
+ Mul12(rh, rl, u, v);
178
+
179
+ if (a>two_970) {*rh *= two_e53; *rl *= two_e53;}
180
+ if (b>two_970) {*rh *= two_e53; *rl *= two_e53;}
181
+ }
182
+
183
+
184
+ /*
185
+ * computes double-double multiplication: zh+zl = (xh+xl) * (yh+yl)
186
+ * under the conditions : xh < 2^970 et xl < 2^970
187
+ * relative error is smaller than 2^-102
188
+ */
189
+
190
+ void Mul22(double *zh, double *zl, double xh, double xl, double yh, double yl)
191
+ {
192
+ double mh, ml;
193
+
194
+ const double c = 134217729.; /* 0x41A00000, 0x02000000 */
195
+ double up, u1, u2, vp, v1, v2;
196
+
197
+ up = xh*c; vp = yh*c;
198
+ u1 = (xh-up)+up; v1 = (yh-vp)+vp;
199
+ u2 = xh-u1; v2 = yh-v1;
200
+
201
+ mh = xh*yh;
202
+ ml = (((u1*v1-mh)+(u1*v2))+(u2*v1))+(u2*v2);
203
+
204
+ ml += xh*yl + xl*yh;
205
+ *zh = mh+ml;
206
+ *zl = mh - (*zh) + ml;
207
+ }
208
+
209
+
210
+ /*
211
+ * computes double-double division: pzh+pzl = (xh+xl) / (yh+yl)
212
+ * relative error is smaller than 2^-104
213
+ */
214
+
215
+ void Div22(double* pzh, double* pzl, double xh, double xl, double yh, double yl){
216
+ double _ch,_cl,_uh,_ul;
217
+ _ch=(xh)/(yh); Mul12(&_uh,&_ul,_ch,(yh));
218
+ _cl=(((((xh)-_uh)-_ul)+(xl))-_ch*(yl))/(yh);
219
+ *pzh=_ch+_cl; *pzl=(_ch-(*pzh))+_cl;
220
+ }
221
+
222
+ #endif /* DEKKER_AS_FUNCTIONS && (!defined PROCESSOR_HAS_FMA) */
223
+
224
+
225
+
226
+
227
+
228
+ #if EVAL_PERF==1
229
+ /* counter of calls to the second step (accurate step) */
230
+ int crlibm_second_step_taken;
231
+ #endif
232
+
233
+ /* A debug functions */
234
+
235
+ void printHexa(char* s, double x) {
236
+ db_number xdb;
237
+
238
+ xdb.d = x;
239
+ printf("%s = %08x%08x (%1.8e) exponent = %d exponent of ulp = %d\n",
240
+ s,
241
+ xdb.i[HI],
242
+ xdb.i[LO],
243
+ x,
244
+ ((xdb.i[HI] & 0x7ff00000) >> 20) - 1023,
245
+ ((xdb.i[HI] & 0x7ff00000) >> 20) - 1023 - 52);
246
+ }
247
+
248
+
249
+
250
+
251
+ #ifdef SCS_TYPECPU_SPARC
252
+ const scs
253
+ /* 0 */
254
+ scs_zer ={{0x00000000, 0x00000000, 0x00000000, 0x00000000},
255
+ {{0, 0}}, 0, 1 },
256
+ /* 1/2 */
257
+ scs_half={{0x02000000, 0x00000000, 0x00000000, 0x00000000},
258
+ DB_ONE, -1, 1 },
259
+ /* 1 */
260
+ scs_one ={{0x00000001, 0x00000000, 0x00000000, 0x00000000},
261
+ DB_ONE, 0, 1 },
262
+ /* 2 */
263
+ scs_two ={{0x00000002, 0x00000000, 0x00000000, 0x00000000},
264
+ DB_ONE, 0, 1 },
265
+
266
+ /* ~1.666667e-01 */
267
+ scs_sixinv ={{0x0aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa},
268
+ DB_ONE, -1, 1 };
269
+
270
+ #else
271
+ const struct scs
272
+ /* 0 */
273
+ scs_zer ={{0x00000000, 0x00000000, 0x00000000, 0x00000000,
274
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000},
275
+ {{0, 0}}, 0, 1 },
276
+ /* 1/2 */
277
+ scs_half={{0x20000000, 0x00000000, 0x00000000, 0x00000000,
278
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000},
279
+ DB_ONE, -1, 1 },
280
+ /* 1 */
281
+ scs_one ={{0x00000001, 0x00000000, 0x00000000, 0x00000000,
282
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000},
283
+ DB_ONE, 0, 1 },
284
+ /* 2 */
285
+ scs_two ={{0x00000002, 0x00000000, 0x00000000, 0x00000000,
286
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000},
287
+ DB_ONE, 0, 1 },
288
+ /* 0.166666*/
289
+ scs_sixinv ={{0x0aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa,
290
+ 0x2aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa, 0x2aaaaaaa},
291
+ DB_ONE, -1, 1 };
292
+
293
+ #endif