1 | /*<html><pre> -<a href="qh-stat.htm"
|
---|
2 | >-------------------------------</a><a name="TOP">-</a>
|
---|
3 |
|
---|
4 | stat.h
|
---|
5 | contains all statistics that are collected for qhull
|
---|
6 |
|
---|
7 | see qh-stat.htm and stat.c
|
---|
8 |
|
---|
9 | Copyright (c) 1993-2012 The Geometry Center.
|
---|
10 | $Id: //main/2011/qhull/src/libqhull/stat.h#5 $$Change: 1464 $
|
---|
11 | $DateTime: 2012/01/25 22:58:41 $$Author: bbarber $
|
---|
12 |
|
---|
13 | recompile qhull if you change this file
|
---|
14 |
|
---|
15 | Integer statistics are Z* while real statistics are W*.
|
---|
16 |
|
---|
17 | define maydebugx to call a routine at every statistic event
|
---|
18 |
|
---|
19 | */
|
---|
20 |
|
---|
21 | #ifndef qhDEFstat
|
---|
22 | #define qhDEFstat 1
|
---|
23 |
|
---|
24 | #include "libqhull.h"
|
---|
25 |
|
---|
26 | /*-<a href="qh-stat.htm#TOC"
|
---|
27 | >-------------------------------</a><a name="KEEPstatistics">-</a>
|
---|
28 |
|
---|
29 | qh_KEEPstatistics
|
---|
30 | 0 turns off statistic gathering (except zzdef/zzinc/zzadd/zzval/wwval)
|
---|
31 | */
|
---|
32 | #ifndef qh_KEEPstatistics
|
---|
33 | #define qh_KEEPstatistics 1
|
---|
34 | #endif
|
---|
35 |
|
---|
36 | /*-<a href="qh-stat.htm#TOC"
|
---|
37 | >-------------------------------</a><a name="statistics">-</a>
|
---|
38 |
|
---|
39 | Zxxx for integers, Wxxx for reals
|
---|
40 |
|
---|
41 | notes:
|
---|
42 | be sure that all statistics are defined in stat.c
|
---|
43 | otherwise initialization may core dump
|
---|
44 | can pick up all statistics by:
|
---|
45 | grep '[zw].*_[(][ZW]' *.c >z.x
|
---|
46 | remove trailers with query">-</a>
|
---|
47 | remove leaders with query-replace-regexp [ ^I]+ (
|
---|
48 | */
|
---|
49 | #if qh_KEEPstatistics
|
---|
50 | enum statistics { /* alphabetical after Z/W */
|
---|
51 | Zacoplanar,
|
---|
52 | Wacoplanarmax,
|
---|
53 | Wacoplanartot,
|
---|
54 | Zangle,
|
---|
55 | Wangle,
|
---|
56 | Wanglemax,
|
---|
57 | Wanglemin,
|
---|
58 | Zangletests,
|
---|
59 | Wareatot,
|
---|
60 | Wareamax,
|
---|
61 | Wareamin,
|
---|
62 | Zavoidold,
|
---|
63 | Wavoidoldmax,
|
---|
64 | Wavoidoldtot,
|
---|
65 | Zback0,
|
---|
66 | Zbestcentrum,
|
---|
67 | Zbestdist,
|
---|
68 | Zbestlower,
|
---|
69 | Zbestlowerv,
|
---|
70 | Zcentrumtests,
|
---|
71 | Zcheckpart,
|
---|
72 | Zcomputefurthest,
|
---|
73 | Zconcave,
|
---|
74 | Wconcavemax,
|
---|
75 | Wconcavetot,
|
---|
76 | Zconcaveridges,
|
---|
77 | Zconcaveridge,
|
---|
78 | Zcoplanar,
|
---|
79 | Wcoplanarmax,
|
---|
80 | Wcoplanartot,
|
---|
81 | Zcoplanarangle,
|
---|
82 | Zcoplanarcentrum,
|
---|
83 | Zcoplanarhorizon,
|
---|
84 | Zcoplanarinside,
|
---|
85 | Zcoplanarpart,
|
---|
86 | Zcoplanarridges,
|
---|
87 | Wcpu,
|
---|
88 | Zcyclefacetmax,
|
---|
89 | Zcyclefacettot,
|
---|
90 | Zcyclehorizon,
|
---|
91 | Zcyclevertex,
|
---|
92 | Zdegen,
|
---|
93 | Wdegenmax,
|
---|
94 | Wdegentot,
|
---|
95 | Zdegenvertex,
|
---|
96 | Zdelfacetdup,
|
---|
97 | Zdelridge,
|
---|
98 | Zdelvertextot,
|
---|
99 | Zdelvertexmax,
|
---|
100 | Zdetsimplex,
|
---|
101 | Zdistcheck,
|
---|
102 | Zdistconvex,
|
---|
103 | Zdistgood,
|
---|
104 | Zdistio,
|
---|
105 | Zdistplane,
|
---|
106 | Zdiststat,
|
---|
107 | Zdistvertex,
|
---|
108 | Zdistzero,
|
---|
109 | Zdoc1,
|
---|
110 | Zdoc2,
|
---|
111 | Zdoc3,
|
---|
112 | Zdoc4,
|
---|
113 | Zdoc5,
|
---|
114 | Zdoc6,
|
---|
115 | Zdoc7,
|
---|
116 | Zdoc8,
|
---|
117 | Zdoc9,
|
---|
118 | Zdoc10,
|
---|
119 | Zdoc11,
|
---|
120 | Zdoc12,
|
---|
121 | Zdropdegen,
|
---|
122 | Zdropneighbor,
|
---|
123 | Zdupflip,
|
---|
124 | Zduplicate,
|
---|
125 | Wduplicatemax,
|
---|
126 | Wduplicatetot,
|
---|
127 | Zdupridge,
|
---|
128 | Zdupsame,
|
---|
129 | Zflipped,
|
---|
130 | Wflippedmax,
|
---|
131 | Wflippedtot,
|
---|
132 | Zflippedfacets,
|
---|
133 | Zfindbest,
|
---|
134 | Zfindbestmax,
|
---|
135 | Zfindbesttot,
|
---|
136 | Zfindcoplanar,
|
---|
137 | Zfindfail,
|
---|
138 | Zfindhorizon,
|
---|
139 | Zfindhorizonmax,
|
---|
140 | Zfindhorizontot,
|
---|
141 | Zfindjump,
|
---|
142 | Zfindnew,
|
---|
143 | Zfindnewmax,
|
---|
144 | Zfindnewtot,
|
---|
145 | Zfindnewjump,
|
---|
146 | Zfindnewsharp,
|
---|
147 | Zgauss0,
|
---|
148 | Zgoodfacet,
|
---|
149 | Zhashlookup,
|
---|
150 | Zhashridge,
|
---|
151 | Zhashridgetest,
|
---|
152 | Zhashtests,
|
---|
153 | Zinsidevisible,
|
---|
154 | Zintersect,
|
---|
155 | Zintersectfail,
|
---|
156 | Zintersectmax,
|
---|
157 | Zintersectnum,
|
---|
158 | Zintersecttot,
|
---|
159 | Zmaxneighbors,
|
---|
160 | Wmaxout,
|
---|
161 | Wmaxoutside,
|
---|
162 | Zmaxridges,
|
---|
163 | Zmaxvertex,
|
---|
164 | Zmaxvertices,
|
---|
165 | Zmaxvneighbors,
|
---|
166 | Zmemfacets,
|
---|
167 | Zmempoints,
|
---|
168 | Zmemridges,
|
---|
169 | Zmemvertices,
|
---|
170 | Zmergeflipdup,
|
---|
171 | Zmergehorizon,
|
---|
172 | Zmergeinittot,
|
---|
173 | Zmergeinitmax,
|
---|
174 | Zmergeinittot2,
|
---|
175 | Zmergeintohorizon,
|
---|
176 | Zmergenew,
|
---|
177 | Zmergesettot,
|
---|
178 | Zmergesetmax,
|
---|
179 | Zmergesettot2,
|
---|
180 | Zmergesimplex,
|
---|
181 | Zmergevertex,
|
---|
182 | Wmindenom,
|
---|
183 | Wminvertex,
|
---|
184 | Zminnorm,
|
---|
185 | Zmultiridge,
|
---|
186 | Znearlysingular,
|
---|
187 | Zneighbor,
|
---|
188 | Wnewbalance,
|
---|
189 | Wnewbalance2,
|
---|
190 | Znewfacettot,
|
---|
191 | Znewfacetmax,
|
---|
192 | Znewvertex,
|
---|
193 | Wnewvertex,
|
---|
194 | Wnewvertexmax,
|
---|
195 | Znoarea,
|
---|
196 | Znonsimplicial,
|
---|
197 | Znowsimplicial,
|
---|
198 | Znotgood,
|
---|
199 | Znotgoodnew,
|
---|
200 | Znotmax,
|
---|
201 | Znumfacets,
|
---|
202 | Znummergemax,
|
---|
203 | Znummergetot,
|
---|
204 | Znumneighbors,
|
---|
205 | Znumridges,
|
---|
206 | Znumvertices,
|
---|
207 | Znumvisibility,
|
---|
208 | Znumvneighbors,
|
---|
209 | Zonehorizon,
|
---|
210 | Zpartangle,
|
---|
211 | Zpartcoplanar,
|
---|
212 | Zpartflip,
|
---|
213 | Zparthorizon,
|
---|
214 | Zpartinside,
|
---|
215 | Zpartition,
|
---|
216 | Zpartitionall,
|
---|
217 | Zpartnear,
|
---|
218 | Zpbalance,
|
---|
219 | Wpbalance,
|
---|
220 | Wpbalance2,
|
---|
221 | Zpostfacets,
|
---|
222 | Zpremergetot,
|
---|
223 | Zprocessed,
|
---|
224 | Zremvertex,
|
---|
225 | Zremvertexdel,
|
---|
226 | Zrenameall,
|
---|
227 | Zrenamepinch,
|
---|
228 | Zrenameshare,
|
---|
229 | Zretry,
|
---|
230 | Wretrymax,
|
---|
231 | Zridge,
|
---|
232 | Wridge,
|
---|
233 | Wridgemax,
|
---|
234 | Zridge0,
|
---|
235 | Wridge0,
|
---|
236 | Wridge0max,
|
---|
237 | Zridgemid,
|
---|
238 | Wridgemid,
|
---|
239 | Wridgemidmax,
|
---|
240 | Zridgeok,
|
---|
241 | Wridgeok,
|
---|
242 | Wridgeokmax,
|
---|
243 | Zsearchpoints,
|
---|
244 | Zsetplane,
|
---|
245 | Ztestvneighbor,
|
---|
246 | Ztotcheck,
|
---|
247 | Ztothorizon,
|
---|
248 | Ztotmerge,
|
---|
249 | Ztotpartcoplanar,
|
---|
250 | Ztotpartition,
|
---|
251 | Ztotridges,
|
---|
252 | Ztotvertices,
|
---|
253 | Ztotvisible,
|
---|
254 | Ztricoplanar,
|
---|
255 | Ztricoplanarmax,
|
---|
256 | Ztricoplanartot,
|
---|
257 | Ztridegen,
|
---|
258 | Ztrimirror,
|
---|
259 | Ztrinull,
|
---|
260 | Wvertexmax,
|
---|
261 | Wvertexmin,
|
---|
262 | Zvertexridge,
|
---|
263 | Zvertexridgetot,
|
---|
264 | Zvertexridgemax,
|
---|
265 | Zvertices,
|
---|
266 | Zvisfacettot,
|
---|
267 | Zvisfacetmax,
|
---|
268 | Zvisit,
|
---|
269 | Zvisit2max,
|
---|
270 | Zvisvertextot,
|
---|
271 | Zvisvertexmax,
|
---|
272 | Zvvisit,
|
---|
273 | Zvvisit2max,
|
---|
274 | Zwidefacet,
|
---|
275 | Zwidevertices,
|
---|
276 | ZEND};
|
---|
277 |
|
---|
278 | /*-<a href="qh-stat.htm#TOC"
|
---|
279 | >-------------------------------</a><a name="ZZstat">-</a>
|
---|
280 |
|
---|
281 | Zxxx/Wxxx statistics that remain defined if qh_KEEPstatistics=0
|
---|
282 |
|
---|
283 | notes:
|
---|
284 | be sure to use zzdef, zzinc, etc. with these statistics (no double checking!)
|
---|
285 | */
|
---|
286 | #else
|
---|
287 | enum statistics { /* for zzdef etc. macros */
|
---|
288 | Zback0,
|
---|
289 | Zbestdist,
|
---|
290 | Zcentrumtests,
|
---|
291 | Zcheckpart,
|
---|
292 | Zconcaveridges,
|
---|
293 | Zcoplanarhorizon,
|
---|
294 | Zcoplanarpart,
|
---|
295 | Zcoplanarridges,
|
---|
296 | Zcyclefacettot,
|
---|
297 | Zcyclehorizon,
|
---|
298 | Zdelvertextot,
|
---|
299 | Zdistcheck,
|
---|
300 | Zdistconvex,
|
---|
301 | Zdistzero,
|
---|
302 | Zdoc1,
|
---|
303 | Zdoc2,
|
---|
304 | Zdoc3,
|
---|
305 | Zdoc11,
|
---|
306 | Zflippedfacets,
|
---|
307 | Zgauss0,
|
---|
308 | Zminnorm,
|
---|
309 | Zmultiridge,
|
---|
310 | Znearlysingular,
|
---|
311 | Wnewvertexmax,
|
---|
312 | Znumvisibility,
|
---|
313 | Zpartcoplanar,
|
---|
314 | Zpartition,
|
---|
315 | Zpartitionall,
|
---|
316 | Zprocessed,
|
---|
317 | Zretry,
|
---|
318 | Zridge,
|
---|
319 | Wridge,
|
---|
320 | Wridgemax,
|
---|
321 | Zridge0,
|
---|
322 | Wridge0,
|
---|
323 | Wridge0max,
|
---|
324 | Zridgemid,
|
---|
325 | Wridgemid,
|
---|
326 | Wridgemidmax,
|
---|
327 | Zridgeok,
|
---|
328 | Wridgeok,
|
---|
329 | Wridgeokmax,
|
---|
330 | Zsetplane,
|
---|
331 | Ztotcheck,
|
---|
332 | Ztotmerge,
|
---|
333 | ZEND};
|
---|
334 | #endif
|
---|
335 |
|
---|
336 | /*-<a href="qh-stat.htm#TOC"
|
---|
337 | >-------------------------------</a><a name="ztype">-</a>
|
---|
338 |
|
---|
339 | ztype
|
---|
340 | the type of a statistic sets its initial value.
|
---|
341 |
|
---|
342 | notes:
|
---|
343 | The type should be the same as the macro for collecting the statistic
|
---|
344 | */
|
---|
345 | enum ztypes {zdoc,zinc,zadd,zmax,zmin,ZTYPEreal,wadd,wmax,wmin,ZTYPEend};
|
---|
346 |
|
---|
347 | /*========== macros and constants =============*/
|
---|
348 |
|
---|
349 | /*-<a href="qh-stat.htm#TOC"
|
---|
350 | >--------------------------------</a><a name="MAYdebugx">-</a>
|
---|
351 |
|
---|
352 | MAYdebugx
|
---|
353 | define as maydebug() to be called frequently for error trapping
|
---|
354 | */
|
---|
355 | #define MAYdebugx
|
---|
356 |
|
---|
357 | /*-<a href="qh-stat.htm#TOC"
|
---|
358 | >--------------------------------</a><a name="zdef_">-</a>
|
---|
359 |
|
---|
360 | zzdef_, zdef_( type, name, doc, -1)
|
---|
361 | define a statistic (assumes 'qhstat.next= 0;')
|
---|
362 |
|
---|
363 | zdef_( type, name, doc, count)
|
---|
364 | define an averaged statistic
|
---|
365 | printed as name/count
|
---|
366 | */
|
---|
367 | #define zzdef_(stype,name,string,cnt) qhstat id[qhstat next++]=name; \
|
---|
368 | qhstat doc[name]= string; qhstat count[name]= cnt; qhstat type[name]= stype
|
---|
369 | #if qh_KEEPstatistics
|
---|
370 | #define zdef_(stype,name,string,cnt) qhstat id[qhstat next++]=name; \
|
---|
371 | qhstat doc[name]= string; qhstat count[name]= cnt; qhstat type[name]= stype
|
---|
372 | #else
|
---|
373 | #define zdef_(type,name,doc,count)
|
---|
374 | #endif
|
---|
375 |
|
---|
376 | /*-<a href="qh-stat.htm#TOC"
|
---|
377 | >--------------------------------</a><a name="zinc_">-</a>
|
---|
378 |
|
---|
379 | zzinc_( name ), zinc_( name)
|
---|
380 | increment an integer statistic
|
---|
381 | */
|
---|
382 | #define zzinc_(id) {MAYdebugx; qhstat stats[id].i++;}
|
---|
383 | #if qh_KEEPstatistics
|
---|
384 | #define zinc_(id) {MAYdebugx; qhstat stats[id].i++;}
|
---|
385 | #else
|
---|
386 | #define zinc_(id) {}
|
---|
387 | #endif
|
---|
388 |
|
---|
389 | /*-<a href="qh-stat.htm#TOC"
|
---|
390 | >--------------------------------</a><a name="zadd_">-</a>
|
---|
391 |
|
---|
392 | zzadd_( name, value ), zadd_( name, value ), wadd_( name, value )
|
---|
393 | add value to an integer or real statistic
|
---|
394 | */
|
---|
395 | #define zzadd_(id, val) {MAYdebugx; qhstat stats[id].i += (val);}
|
---|
396 | #define wwadd_(id, val) {MAYdebugx; qhstat stats[id].r += (val);}
|
---|
397 | #if qh_KEEPstatistics
|
---|
398 | #define zadd_(id, val) {MAYdebugx; qhstat stats[id].i += (val);}
|
---|
399 | #define wadd_(id, val) {MAYdebugx; qhstat stats[id].r += (val);}
|
---|
400 | #else
|
---|
401 | #define zadd_(id, val) {}
|
---|
402 | #define wadd_(id, val) {}
|
---|
403 | #endif
|
---|
404 |
|
---|
405 | /*-<a href="qh-stat.htm#TOC"
|
---|
406 | >--------------------------------</a><a name="zval_">-</a>
|
---|
407 |
|
---|
408 | zzval_( name ), zval_( name ), wwval_( name )
|
---|
409 | set or return value of a statistic
|
---|
410 | */
|
---|
411 | #define zzval_(id) ((qhstat stats[id]).i)
|
---|
412 | #define wwval_(id) ((qhstat stats[id]).r)
|
---|
413 | #if qh_KEEPstatistics
|
---|
414 | #define zval_(id) ((qhstat stats[id]).i)
|
---|
415 | #define wval_(id) ((qhstat stats[id]).r)
|
---|
416 | #else
|
---|
417 | #define zval_(id) qhstat tempi
|
---|
418 | #define wval_(id) qhstat tempr
|
---|
419 | #endif
|
---|
420 |
|
---|
421 | /*-<a href="qh-stat.htm#TOC"
|
---|
422 | >--------------------------------</a><a name="zmax_">-</a>
|
---|
423 |
|
---|
424 | zmax_( id, val ), wmax_( id, value )
|
---|
425 | maximize id with val
|
---|
426 | */
|
---|
427 | #define wwmax_(id, val) {MAYdebugx; maximize_(qhstat stats[id].r,(val));}
|
---|
428 | #if qh_KEEPstatistics
|
---|
429 | #define zmax_(id, val) {MAYdebugx; maximize_(qhstat stats[id].i,(val));}
|
---|
430 | #define wmax_(id, val) {MAYdebugx; maximize_(qhstat stats[id].r,(val));}
|
---|
431 | #else
|
---|
432 | #define zmax_(id, val) {}
|
---|
433 | #define wmax_(id, val) {}
|
---|
434 | #endif
|
---|
435 |
|
---|
436 | /*-<a href="qh-stat.htm#TOC"
|
---|
437 | >--------------------------------</a><a name="zmin_">-</a>
|
---|
438 |
|
---|
439 | zmin_( id, val ), wmin_( id, value )
|
---|
440 | minimize id with val
|
---|
441 | */
|
---|
442 | #if qh_KEEPstatistics
|
---|
443 | #define zmin_(id, val) {MAYdebugx; minimize_(qhstat stats[id].i,(val));}
|
---|
444 | #define wmin_(id, val) {MAYdebugx; minimize_(qhstat stats[id].r,(val));}
|
---|
445 | #else
|
---|
446 | #define zmin_(id, val) {}
|
---|
447 | #define wmin_(id, val) {}
|
---|
448 | #endif
|
---|
449 |
|
---|
450 | /*================== stat.h types ==============*/
|
---|
451 |
|
---|
452 |
|
---|
453 | /*-<a href="qh-stat.htm#TOC"
|
---|
454 | >--------------------------------</a><a name="intrealT">-</a>
|
---|
455 |
|
---|
456 | intrealT
|
---|
457 | union of integer and real, used for statistics
|
---|
458 | */
|
---|
459 | typedef union intrealT intrealT; /* union of int and realT */
|
---|
460 | union intrealT {
|
---|
461 | int i;
|
---|
462 | realT r;
|
---|
463 | };
|
---|
464 |
|
---|
465 | /*-<a href="qh-stat.htm#TOC"
|
---|
466 | >--------------------------------</a><a name="qhstat">-</a>
|
---|
467 |
|
---|
468 | qhstat
|
---|
469 | global data structure for statistics, similar to qh and qhrbox
|
---|
470 |
|
---|
471 | notes:
|
---|
472 | access to qh_qhstat is via the "qhstat" macro. There are two choices
|
---|
473 | qh_QHpointer = 1 access globals via a pointer
|
---|
474 | enables qh_saveqhull() and qh_restoreqhull()
|
---|
475 | = 0 qh_qhstat is a static data structure
|
---|
476 | only one instance of qhull() can be active at a time
|
---|
477 | default value
|
---|
478 | qh_QHpointer is defined in libqhull.h
|
---|
479 | qh_QHpointer_dllimport and qh_dllimport define qh_qh as __declspec(dllimport) [libqhull.h]
|
---|
480 |
|
---|
481 | allocated in stat.c using qh_malloc()
|
---|
482 | */
|
---|
483 | #ifndef DEFqhstatT
|
---|
484 | #define DEFqhstatT 1
|
---|
485 | typedef struct qhstatT qhstatT;
|
---|
486 | #endif
|
---|
487 |
|
---|
488 | #if qh_QHpointer_dllimport
|
---|
489 | #define qhstat qh_qhstat->
|
---|
490 | __declspec(dllimport) extern qhstatT *qh_qhstat;
|
---|
491 | #elif qh_QHpointer
|
---|
492 | #define qhstat qh_qhstat->
|
---|
493 | extern qhstatT *qh_qhstat;
|
---|
494 | #elif qh_dllimport
|
---|
495 | #define qhstat qh_qhstat.
|
---|
496 | __declspec(dllimport) extern qhstatT qh_qhstat;
|
---|
497 | #else
|
---|
498 | #define qhstat qh_qhstat.
|
---|
499 | extern qhstatT qh_qhstat;
|
---|
500 | #endif
|
---|
501 | struct qhstatT {
|
---|
502 | intrealT stats[ZEND]; /* integer and real statistics */
|
---|
503 | unsigned char id[ZEND+10]; /* id's in print order */
|
---|
504 | const char *doc[ZEND]; /* array of documentation strings */
|
---|
505 | short int count[ZEND]; /* -1 if none, else index of count to use */
|
---|
506 | char type[ZEND]; /* type, see ztypes above */
|
---|
507 | char printed[ZEND]; /* true, if statistic has been printed */
|
---|
508 | intrealT init[ZTYPEend]; /* initial values by types, set initstatistics */
|
---|
509 |
|
---|
510 | int next; /* next index for zdef_ */
|
---|
511 | int precision; /* index for precision problems */
|
---|
512 | int vridges; /* index for Voronoi ridges */
|
---|
513 | int tempi;
|
---|
514 | realT tempr;
|
---|
515 | };
|
---|
516 |
|
---|
517 | /*========== function prototypes ===========*/
|
---|
518 |
|
---|
519 | void qh_allstatA(void);
|
---|
520 | void qh_allstatB(void);
|
---|
521 | void qh_allstatC(void);
|
---|
522 | void qh_allstatD(void);
|
---|
523 | void qh_allstatE(void);
|
---|
524 | void qh_allstatE2(void);
|
---|
525 | void qh_allstatF(void);
|
---|
526 | void qh_allstatG(void);
|
---|
527 | void qh_allstatH(void);
|
---|
528 | void qh_allstatI(void);
|
---|
529 | void qh_allstatistics(void);
|
---|
530 | void qh_collectstatistics(void);
|
---|
531 | void qh_freestatistics(void);
|
---|
532 | void qh_initstatistics(void);
|
---|
533 | boolT qh_newstats(int idx, int *nextindex);
|
---|
534 | boolT qh_nostatistic(int i);
|
---|
535 | void qh_printallstatistics(FILE *fp, const char *string);
|
---|
536 | void qh_printstatistics(FILE *fp, const char *string);
|
---|
537 | void qh_printstatlevel(FILE *fp, int id, int start);
|
---|
538 | void qh_printstats(FILE *fp, int idx, int *nextindex);
|
---|
539 | realT qh_stddev(int num, realT tot, realT tot2, realT *ave);
|
---|
540 |
|
---|
541 | #endif /* qhDEFstat */
|
---|