[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:
From: |
Martin Jansche |
Subject: |
Re: |
Date: |
Tue, 30 Jun 2020 12:03:39 +0100 |
There is indeed no function named “gsl_cdf_gaussian_p”. However, there is a
function named "gsl_cdf_gaussian_P", as documented in the GSL manual here:
https://www.gnu.org/software/gsl/doc/html/randist.html.
The following rewritten version of your code compiles, though I cannot
comment on whether it does what you want:
#include <math.h>
#include <gsl/gsl_cdf.h>
#include <gsl/gsl_randist.h>
double truncnorm(double mu, double s, double a, double b, const gsl_rng *r)
{
double sqrt_s = sqrt(s);
double pa = gsl_cdf_gaussian_P(a - mu, sqrt_s);
double pb = gsl_cdf_gaussian_P(b - mu, sqrt_s);
double z = gsl_ran_flat(r, a, b);
return gsl_cdf_gaussian_Pinv(z, sqrt_s) + mu;
}
I'm assuming you are aware of the following paper:
Geweke, J. (1991). Efficient simulation from the multivariate normal and
student-t distributions subject to linear constraints. In Computing Science
and Statistics: Proceedings of the 23rd Symposium on the Interface, Ed. E.
Keramidas and S. Kaufman, pp. 571-8. Fairfax Station, VA: Interface
Foundation of North America.
Hope this helps!
On Tue, Jun 30, 2020 at 4:25 AM 李 思达 <s.li@knights.ucf.edu> wrote:
> Dear GSL
>
> I encounter problems in using GSL.
>
> GSL version: 2.4.0.8788, Visual Studio 2017 Release GSL as NuGet package.
> Operating system: Win10, X64
> Compiler: Visual Studio 2019, C++
> Behavior: #include<gsl/gsl_cdf.h>, could not find “gsl_cdf_gaussian_p”
> function when call it. Also, “gsl_cdf_gaussian_pinv” could not be found.
> Short program:
> double truncnorm(double mu, double s, double a, double b){
> #include <gsl/gsl_cdf.h>
> double z;
> a = gsl_cdf_gaussian_p(a-mu,sqrt(s));
> b = gsl_cdf_gaussian_p(b-mu,sqrt(s));
> z = gsl_ran_flat(r,a,b);
> return gsl_cdf_gaussian_pinv(z,sqrt(s)) + mu;
> }
>
> Could you help me solve that?
> Thanks in advance.
> Best,
> Sida Li
> PhD student
>
> National Center for Integrated Coastal Research, UCF, USA
> Cell: 407 879 3347
> E-mail: s.li@Knights.ucf.edu
>
>