[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


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:

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 李 思达 <> wrote:

> Dear GSL
> I encounter problems in using GSL.
> GSL version:, 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:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]