1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
|
24 Nov 11:
- Significantly rearranged Divonne, e.g. unrolled the recursion
on regions, for better parallelizability.
- Improved parallelization through DoSample.
- Automatic detection and usage of the free cores on a machine,
or else set CUBACORES to the number of cores one wishes to
utilize, with negative numbers meaning "up to" depending on
availability (e.g. -2 means "use up to two free cores").
12 Aug 11:
- Version 3.0: Added parallelization, currently 'only' through
the DoSample routine. Uses fork/wait so integrands do not have
to be reentrant.
Specify number of cores in environment variable CUBACORES.
C/C++/Fortran only, Mathematica users need to replace MapSample
by ParallelMap or similar (as before).
18 Jun 11:
- Fixed problem with inner integration bounds depending on outer
ones in the MathLink executables.
15 Feb 11:
- Moved partview to Qt 4.
- Rectified error reporting via longjmp, in particular avoiding
sending $Failed twice in MathLink which would upset the
following communications.
13 Sep 10:
- Added iteration number to integrand's optional parameters
(Vegas and Suave).
- Fixed initialization problem when using state file in Vegas.
- Added tests for MathLink to configure.
20 Jul 10:
- Fixed severe bug in divonne/Split.c (wrong sign in SignedDelta
macro).
14 Jul 10:
- Disabled optimization for gcc 4.2.x and 4.4.3, which would lead
to an Internal Compiler Error when compiling Cuba, see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40237
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42956
21 Jun 10:
- Fixed problem with bashy syntax in tools/mcc.
8 Jun 10:
- All Cuba functions now reentrant, except for gridptr_ and griddim_
in Vegas, which are intentionally preserved across calls.
19 May 10:
- Version 2.0: Changed invocations.
- Added void *userdata to be passed to integrator.
- Promoted integrand to int function, has to return 0 if successful,
otherwise integrator terminates immediately.
- Moved all global variables (common blocks) to argument list.
12 Feb 10:
- Added Ranlux pseudo-random number generator.
Luxury level 0 (mis)used for Mersenne Twister branch
(but observe that Luxury level 24 = Luxury level 0).
- Changed external variable mersenneseed to
struct { unsigned int level, seed; } cubarandom;
22 Jul 09:
- Fixed potential segfault in Split.c of Divonne, thanks to
Andreas v. Manteuffel.
29 May 09:
- Added flushing of grids in Vegas through a negative grid number.
25 May 09:
- Removed explicit pointer reference from reallocatable
"region_" array.
8 May 09:
- Improved memory handling in Divonne.
8 Apr 09:
- Version 1.6: Improved memory handling in Cuhre.
Thanks to Valery Yundin for pointing out the problem.
6 Mar 09:
- Fixed segfault in Divonne if all samples from a region returned NaN.
- Reinstated fcc to fix static linkage problem with mcc 7.
10 Feb 09:
- Removed dependence on fcc script.
19 Jan 09:
- Added missing #include <stdlib.h> to partview.cpp.
15 Jan 09:
- Fixed problem with MathLink compilation for Mathematica 7.
5 Dec 08
- Version 1.5: Added possibility to set Mersenne Twister
random seed.
- Introduced function MapSample to map the integrand over
the points, whose default value Map can be replaced e.g.
by ParallelMap.
15 Feb 08
- Added further check to Suave for sharp-edged functions.
15 Jan 08
- Fixed bug in makefile.in w.r.t. DESTDIR.
2 Jan 08
- Fixed minor bug in invocation of IniRandom in Suave.
19 Dec 07
- Version 1.4: Added new flag (bit 4), to turn off smoothing of
the importance function for sharp-edged functions.
- Improved configure for Cygwin. Now compiles MathLink
executables `out of the box'.
30 Nov 07
- Fixed detection of variable-size arrays in configure.ac.
- Minor fixes for autoconf 2.60.
30 Aug 07
- Added passing of weight information to the integrand routine
in Vegas and Suave. Mathematica versions use $Weight.
7 Mar 07
- Documented the ll versions in the manual.
1 Mar 06
- Version 1.3: added long long int versions, i.e. all
number-of-points-like quantities are now long long int
instead of int. The corresponding names are prefixed with
"ll", e.g. llVegas.
5 Jan 06
- Corrected a number of declarations so that changing the "number"
typedef in stddecl.h to a longer integer should work now.
Note that this bugfix has NO EFFECT if the "number" typedef
was not changed by hand!
31 Aug 05
- A small patch considerably reduces the "mysterious" problem
in Vegas and Suave that further iterations on a more or less
optimal grid would often degrade the grid.
2 Jun 05
- Added some #ifdefs to make the compile completely silent.
- Changed HUGE_VAL to DBL_MAX to avoid problems with icc.
7 Mar 05
- Extended Divonne's Korobov tables.
- partview now sorts the list of rectangles so that the smallest
ones come on top.
2 Mar 05
- Fixed "mysterious" problem where Divonne would report a
larger-than-requested error even though enough samples were
available.
17 Feb 05
- Rewrote partview.cpp with tabbed window.
- Moved sources to src/{vegas,suave,divonne,cuhre}.
The original names would get into the way of the Mathematica
executables on OSX's case-insensitive file system.
15 Feb 05
- configure now disables compilation of demo-fortran if no
Fortran compiler is found.
9 Feb 05
- Added some explicit typecasts and other tidbits such that
Cuba compiles successfully also with a C++ compiler now.
7 Feb 05
- Added erf implementation in case some "C99 compliant" compiler
like M$ Visual C++ in fact has no erf.
4 Feb 05
- Added partview.m for Mathematica.
3 Feb 05
- Added proper autoconf configure.
- Added cuba.F, a Fortran chooser which makes the invocation
of the Cuba routines still simpler from Fortran.
- Straightened out the contexts of the MathLink executables.
2 Feb 05
- Substituted preprocessor variable NBATCH by run-time configurable
global variable vegasbatch_.
- Added checks on ncomp.
1 Feb 05
- Added a partition viewer which displays the tesselation of the
integration region on screen. Needs Qt.
27 Jan 05
- Added a preprocessor flag NO_LONG_DOUBLE to disable the use
of long doubles on systems that don't have it.
25 Jan 05
- Rearranged Vegas to sample in batches of NBATCH points to
reduce memory consumption.
21 Jan 05
- Fixed bug in Divonne: Final result was wrong if not enough
samples left for Phase 3.
19 Jan 05
- Updated manual re pseudo-random sampling.
17 Jan 05
- Introduced "number" typedef, might be useful when using wide ints.
Not well tested, though.
- Substituted [sd]rand48 by Mersenne Twister generator.
14 Jan 05
- Added pseudo-rng (bit 3 in flags).
- Collected common declarations in stddecl.h.
- Better checking of dimension (e.g. in Divonne, all cases).
12 Jan 05
- Updated manual re vegas{grid,state}.
23 Dec 04
- Fixed a memory leak in Cuhre.
18 Nov 04
- Added vegasstate load/restore of internal state.
16 Jul 04
- Added vegasgrid.
|