Skip to content
Snippets Groups Projects
Commit 86ed91b8 authored by Daniel Waggoner's avatar Daniel Waggoner
Browse files

added PrintEllipticalInfo_Full() routine

(cherry picked from commit aeb734eeeb670e284bb8f0a0bd277530a41bfd4d)
parent 21e0aed4
Branches
No related tags found
No related merge requests found
...@@ -86,6 +86,16 @@ PRECISION RadiusElliptical(PRECISION *draw, TElliptical *elliptical) ...@@ -86,6 +86,16 @@ PRECISION RadiusElliptical(PRECISION *draw, TElliptical *elliptical)
return sqrt(InnerProduct(elliptical->draw,elliptical->draw,elliptical->quadratic_form)); return sqrt(InnerProduct(elliptical->draw,elliptical->draw,elliptical->quadratic_form));
} }
void PrintEllipticalInfo_full(FILE *f_out, TElliptical *elliptical)
{
PrintEllipticalInfo(f_out,elliptical);
fprintf(f_out,"Variance scale: %lg\n",elliptical->variance_scale);
fprintf(f_out,"Center:\n");
dw_PrintVector(f_out,elliptical->center,"%lg ");
fprintf(f_out,"Scale:\n");
dw_PrintMatrix(f_out,elliptical->scale,"%lg ");
}
static PRECISION logdensity_draw(PRECISION *draw, TElliptical *elliptical) static PRECISION logdensity_draw(PRECISION *draw, TElliptical *elliptical)
{ {
return elliptical->logdensity_radius(RadiusElliptical(draw,elliptical),elliptical); return elliptical->logdensity_radius(RadiusElliptical(draw,elliptical),elliptical);
...@@ -155,7 +165,7 @@ static PRECISION draw_truncated_gaussian(PRECISION *draw, TElliptical *elliptica ...@@ -155,7 +165,7 @@ static PRECISION draw_truncated_gaussian(PRECISION *draw, TElliptical *elliptica
static void print_info_truncated_gaussian(FILE *f_out, TElliptical *elliptical) static void print_info_truncated_gaussian(FILE *f_out, TElliptical *elliptical)
{ {
TElliptical_gaussian *d=(TElliptical_gaussian*)elliptical->data; TElliptical_gaussian *d=(TElliptical_gaussian*)elliptical->data;
if (f_out) fprintf(f_out,"%s\n dim=%d \n lower bound=%lg\n upper bound=%lg\n s^2=%lg\n", if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n s^2=%lg\n",
elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound,d->s_square); elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound,d->s_square);
} }
...@@ -328,7 +338,7 @@ static PRECISION draw_truncated_power(PRECISION *draw, TElliptical *elliptical) ...@@ -328,7 +338,7 @@ static PRECISION draw_truncated_power(PRECISION *draw, TElliptical *elliptical)
static void print_info_truncated_power(FILE *f_out, TElliptical *elliptical) static void print_info_truncated_power(FILE *f_out, TElliptical *elliptical)
{ {
TElliptical_power *d=(TElliptical_power*)elliptical->data; TElliptical_power *d=(TElliptical_power*)elliptical->data;
if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n power=%lg\n", if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n power=%lg\n",
elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound,d->power); elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound,d->power);
} }
...@@ -414,7 +424,7 @@ TElliptical* CreateElliptical_TruncatedPower(int dim, TVector center, TMatrix sc ...@@ -414,7 +424,7 @@ TElliptical* CreateElliptical_TruncatedPower(int dim, TVector center, TMatrix sc
static void print_info_power(FILE *f_out, TElliptical *elliptical) static void print_info_power(FILE *f_out, TElliptical *elliptical)
{ {
TElliptical_power *d=(TElliptical_power*)elliptical->data; TElliptical_power *d=(TElliptical_power*)elliptical->data;
if (f_out) fprintf(f_out,"%s\n dim=%d\n upper bound=%lg\n power=%lg\n", if (f_out) fprintf(f_out,"%s\n dim=%d\n upper bound=%lg\n power=%lg\n",
elliptical->type,elliptical->dim,d->upper_bound,d->power); elliptical->type,elliptical->dim,d->upper_bound,d->power);
} }
...@@ -439,7 +449,7 @@ TElliptical* CreateElliptical_Power(int dim, TVector center, TMatrix scale, PREC ...@@ -439,7 +449,7 @@ TElliptical* CreateElliptical_Power(int dim, TVector center, TMatrix scale, PREC
static void print_info_uniform(FILE *f_out, TElliptical *elliptical) static void print_info_uniform(FILE *f_out, TElliptical *elliptical)
{ {
TElliptical_power *d=(TElliptical_power*)elliptical->data; TElliptical_power *d=(TElliptical_power*)elliptical->data;
if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n", if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n",
elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound); elliptical->type,elliptical->dim,d->lower_bound,d->upper_bound);
} }
...@@ -533,7 +543,7 @@ static PRECISION draw_step(PRECISION *draw, TElliptical *elliptical) ...@@ -533,7 +543,7 @@ static PRECISION draw_step(PRECISION *draw, TElliptical *elliptical)
static void print_info_step(FILE *f_out, TElliptical *elliptical) static void print_info_step(FILE *f_out, TElliptical *elliptical)
{ {
TElliptical_step *d=(TElliptical_step*)(elliptical->data); TElliptical_step *d=(TElliptical_step*)(elliptical->data);
if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n", if (f_out) fprintf(f_out,"%s\n dim=%d\n lower bound=%lg\n upper bound=%lg\n",
elliptical->type,elliptical->dim,d->t[0],d->t[d->m]); elliptical->type,elliptical->dim,d->t[0],d->t[d->m]);
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
typedef struct TElliptical_tag typedef struct TElliptical_tag
{ {
PRECISION logabsdet; // = ln(abs(det(scale)))) PRECISION logabsdet; // = -ln(abs(det(scale))))
int dim; // = dimension of elliptical random vector int dim; // = dimension of elliptical random vector
PRECISION variance_scale; // variance = variance_scale * (scale * scale') PRECISION variance_scale; // variance = variance_scale * (scale * scale')
TVector center; // mean = center TVector center; // mean = center
...@@ -80,6 +80,7 @@ PRECISION RadiusElliptical(PRECISION *draw, TElliptical *elliptical); ...@@ -80,6 +80,7 @@ PRECISION RadiusElliptical(PRECISION *draw, TElliptical *elliptical);
#define CummulativeDensityElliptical_Radius(radius,elliptical) ((elliptical)->cummulative_radius(radius,elliptical)) #define CummulativeDensityElliptical_Radius(radius,elliptical) ((elliptical)->cummulative_radius(radius,elliptical))
#define PrintEllipticalInfo(f_out,elliptical) ((elliptical)->print_info(f_out,elliptical)) #define PrintEllipticalInfo(f_out,elliptical) ((elliptical)->print_info(f_out,elliptical))
#define EllipticalType(elliptical) ((elliptical)->type) #define EllipticalType(elliptical) ((elliptical)->type)
void PrintEllipticalInfo_full(FILE *f_out, TElliptical *elliptical);
PRECISION VarianceScale_TruncatedPower(int dim, PRECISION lower_bound, PRECISION upper_bound, PRECISION power); PRECISION VarianceScale_TruncatedPower(int dim, PRECISION lower_bound, PRECISION upper_bound, PRECISION power);
PRECISION VarianceScale_TruncatedGaussian(int dim, PRECISION lower_bound, PRECISION upper_bound, PRECISION s); PRECISION VarianceScale_TruncatedGaussian(int dim, PRECISION lower_bound, PRECISION upper_bound, PRECISION s);
...@@ -152,7 +153,7 @@ The mapping to the data structure is: ...@@ -152,7 +153,7 @@ The mapping to the data structure is:
center = c center = c
scale = S scale = S
quadratic_form = Inverse(S*S') quadratic_form = Inverse(S*S')
logconstant = -log(abs(det(S))) logabsdet = -log(abs(det(S)))
dim = n dim = n
--------------------------------------------------------------------------------- ---------------------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment