Go to the documentation of this file.
39 qh->qhstat.precision=
qh->qhstat.next;
40 zzdef_(
zdoc,
Zdoc3,
"precision problems (corrected unless 'Q0' or an error)", -1);
46 zzdef_(
zinc,
Zminnorm,
"degenerate hyperplanes recomputed with gaussian elimination", -1);
104 zdef_(
zinc,
Znoarea,
"determinants not computed because vertex too low", -1);
120 zdef_(
zdoc,
Zdoc4,
"partitioning statistics(see previous for outer planes)", -1);
190 zdef_(
wmax,
Wmaxoutside,
"max distance of vertex or coplanar point above facet(w/roundoff)", -1);
263 qh->qhstat.vridges=
qh->qhstat.next;
300 #if qh_KEEPstatistics
309 facetT *facet, *neighbor, **neighborp;
311 realT dotproduct, dist;
312 int sizneighbors, sizridges, sizvertices, i;
314 qh->old_randomdist=
qh->RANDOMdist;
330 if (
qh->MERGING ||
qh->APPROXhull ||
qh->JOGGLEmax <
REALmax/2)
357 if (sizvertices ==
qh->hull_dim) {
411 qh->RANDOMdist=
qh->old_randomdist;
442 if (
qh->qhstat.next > (
int)
sizeof(
qh->qhstat.id)) {
443 qh_fprintf(
qh,
qh->qhmem.ferr, 6184,
"qhull error (qh_initstatistics): increase size of qhstat.id[].\n\
444 qhstat.next %d should be <= sizeof(qh->qhstat.id) %d\n",
qh->qhstat.next, (
int)
sizeof(
qh->qhstat.id));
446 for(i=0; i <
ZEND; i++) {
448 for(j=i+1; j <
ZEND; j++) {
449 if (
qh->qhstat.id[i] ==
qh->qhstat.id[j]) {
450 qh_fprintf(
qh,
qh->qhmem.ferr, 6185,
"qhull error (qh_initstatistics): duplicated statistic %d at indices %d and %d\n",
451 qh->qhstat.id[i], i, j);
458 qh->qhstat.init[
zinc].i= 0;
459 qh->qhstat.init[
zadd].i= 0;
460 qh->qhstat.init[
zmin].i= INT_MAX;
461 qh->qhstat.init[
zmax].i= INT_MIN;
462 qh->qhstat.init[
wadd].r= 0;
465 for(i=0; i <
ZEND; i++) {
467 realx=
qh->qhstat.init[(
unsigned char)(
qh->qhstat.type[i])].r;
468 qh->qhstat.stats[i].r= realx;
469 }
else if (
qh->qhstat.type[i] !=
zdoc) {
470 intx=
qh->qhstat.init[(
unsigned char)(
qh->qhstat.type[i])].i;
471 qh->qhstat.stats[i].i= intx;
489 if (
qh->qhstat.type[
qh->qhstat.id[idx]] ==
zdoc)
493 for(i= start; i <
qh->qhstat.next &&
qh->qhstat.type[
qh->qhstat.id[i]] !=
zdoc; i++) {
510 &&
qh->qhstat.stats[i].r ==
qh->qhstat.init[(
unsigned char)(
qh->qhstat.type[i])].r)
512 &&
qh->qhstat.stats[i].i ==
qh->qhstat.init[(
unsigned char)(
qh->qhstat.type[i])].i))
517 #if qh_KEEPstatistics
547 if (
qh->num_points !=
qh->num_vertices) {
557 qhull invoked by: %s | %s\n%s with options:\n%s\n",
string,
qh->rbox_command,
560 %6.2g max. abs. coordinate in the (transformed) input('Qbd:n')\n\
561 %6.2g max. roundoff error for distance computation('En')\n\
562 %6.2g max. roundoff error for angle computations\n\
563 %6.2g min. distance for outside points ('Wn')\n\
564 %6.2g min. distance for visible facets ('Vn')\n\
565 %6.2g max. distance for coplanar facets ('Un')\n\
566 %6.2g max. facet width for recomputing centrum and area\n\
568 qh->MAXabs_coord,
qh->DISTround,
qh->ANGLEround,
qh->MINoutside,
569 qh->MINvisible,
qh->MAXcoplanar,
qh->WIDEfacet);
570 if (
qh->KEEPnearinside)
572 %6.2g max. distance for near-inside points\n",
qh->NEARinside);
574 %6.2g max. cosine for pre-merge angle\n",
qh->premerge_cos);
576 %6.2g radius of pre-merge centrum\n",
qh->premerge_centrum);
578 %6.2g max. cosine for post-merge angle\n",
qh->postmerge_cos);
580 %6.2g radius of post-merge centrum\n",
qh->postmerge_centrum);
582 %6.2g max. distance for merging two simplicial facets\n\
583 %6.2g max. roundoff error for arithmetic operations\n\
584 %6.2g min. denominator for divisions\n\
586 for(k=0; k <
qh->hull_dim; k++)
589 for(i=0 ; i <
qh->qhstat.next; )
604 #define NULLfield " "
606 if (
id >=
ZEND ||
qh->qhstat.printed[
id])
608 if (
qh->qhstat.type[
id] ==
zdoc) {
614 qh->qhstat.printed[id]=
True;
615 if (
qh->qhstat.count[
id] != -1
616 &&
qh->qhstat.stats[(
unsigned char)(
qh->qhstat.count[
id])].i == 0)
618 else if (
qh->qhstat.type[
id] >=
ZTYPEreal &&
qh->qhstat.count[
id] == -1)
620 else if (
qh->qhstat.type[
id] >=
ZTYPEreal &&
qh->qhstat.count[
id] != -1)
621 qh_fprintf(
qh, fp, 9363,
"%7.2g",
qh->qhstat.stats[
id].r/
qh->qhstat.stats[(
unsigned char)(
qh->qhstat.count[
id])].i);
622 else if (
qh->qhstat.type[
id] <
ZTYPEreal &&
qh->qhstat.count[
id] == -1)
624 else if (
qh->qhstat.type[
id] <
ZTYPEreal &&
qh->qhstat.count[
id] != -1)
625 qh_fprintf(
qh, fp, 9365,
"%7.3g", (
realT)
qh->qhstat.stats[
id].i /
qh->qhstat.stats[(
unsigned char)(
qh->qhstat.count[
id])].i);
644 for (j=idx; j<nexti; j++)
651 #if qh_KEEPstatistics
671 stddev= sqrt(tot2/num - *ave * *ave);
677 #if !qh_KEEPstatistics
void qh_printstatistics(qhT *qh, FILE *fp, const char *string)
void qh_allstatH(qhT *qh)
realT qh_getangle(pointT *vect1, pointT *vect2)
#define qh_DUPLICATEridge
void qh_allstatB(qhT *qh)
realT qh_stddev(int num, realT tot, realT tot2, realT *ave)
void qh_collectstatistics(qhT *qh)
void qh_printstats(qhT *qh, FILE *fp, int idx, int *nextindex)
void qh_allstatE(qhT *qh)
#define FOREACHneighbor_(facet)
void qh_allstatF(qhT *qh)
#define zzdef_(stype, name, string, cnt)
void qh_initstatistics(qhT *qh)
boolT qh_newstats(qhT *qh, int idx, int *nextindex)
void qh_allstatC(qhT *qh)
int qh_setsize(setT *set)
#define zdef_(stype, name, string, cnt)
void qh_printallstatistics(qhT *qh, FILE *fp, const char *string)
void qh_allstatG(qhT *qh)
void qh_allstatD(qhT *qh)
void qh_exit(int exitcode)
void qh_distplane(pointT *point, facetT *facet, realT *dist)
void qh_allstatA(qhT *qh)
#define FOREACHvertex_(vertices)
void qh_allstatistics(qhT *qh)
void qh_allstatE2(qhT *qh)
void qh_printstatlevel(qhT *qh, FILE *fp, int id)
void qh_fprintf(FILE *fp, int msgcode, const char *fmt,...)
boolT qh_nostatistic(qhT *qh, int i)
void qh_memstatistics(FILE *fp)
void qh_allstatI(qhT *qh)
hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:44:59