LibRan  0.1
Pseudo-random number distribution generator
LRunif.c
Go to the documentation of this file.
1 
39 /*
40  * Copyright 2019 R.K. Owen, Ph.D.
41  * License see lgpl.md (Gnu Lesser General Public License)
42  */
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 #include "libran.h"
48 
55 double LRd_unif_RAN(LR_obj *o) {
56  double x, diff = (o->b.d - o->a.d);
57  x = o->ud(o);
58 
59  return o->a.d + x * diff;
60 }
61 
69 double LRd_unif_PDF(LR_obj *o, double x) {
70  double diff = (o->b.d - o->a.d);
71 
72  if (x < o->a.d || x >= o->b.d) {
73  return 0.0;
74  } else {
75  return 1.0 / diff;
76  }
77 }
78 
86 double LRd_unif_CDF(LR_obj *o, double x) {
87  double diff = (o->b.d - o->a.d);
88 
89  if (x < o->a.d) {
90  return 0.0;
91  } else if (x >= o->b.d) {
92  return 1.0;
93  } else {
94  return (x - o->a.d) / diff;
95  }
96 }
97 
104 float LRf_unif_RAN(LR_obj *o) {
105  float x, diff = (o->b.f - o->a.f);
106  x = o->uf(o);
107 
108  return o->a.f + x * diff;
109 }
110 
118 float LRf_unif_PDF(LR_obj *o, float x) {
119  float diff = (o->b.f - o->a.f);
120 
121  if (x < o->a.f || x >= o->b.f) {
122  return 0.0;
123  } else {
124  return 1.0 / diff;
125  }
126 }
127 
135 float LRf_unif_CDF(LR_obj *o, float x) {
136  float diff = (o->b.f - o->a.f);
137 
138  if (x < o->a.f) {
139  return 0.0;
140  } else if (x >= o->b.f) {
141  return 1.0;
142  } else {
143  return (x - o->a.f) / diff;
144  }
145 }
146 
147 #ifdef __cplusplus
148 }
149 #endif
LR_val b
Definition: libran.h:139
float LRf_unif_CDF(LR_obj *o, float x)
LRf_unif_CDF(LR_obj *o, float x) - float uniform cumulative distribution function.
Definition: LRunif.c:135
double LRd_unif_CDF(LR_obj *o, double x)
LRd_unif_CDF(LR_obj *o, double x) - double uniform cumulative distribution function.
Definition: LRunif.c:86
double(* ud)(LR_obj *)
Definition: libran.h:154
double LRd_unif_RAN(LR_obj *o)
LRd_unif_RAN(LR_obj *o) - double random uniform distribution.
Definition: LRunif.c:55
float LRf_unif_PDF(LR_obj *o, float x)
LRf_unif_PDF(LR_obj *o, float x) - float uniform probablity distribution function.
Definition: LRunif.c:118
float LRf_unif_RAN(LR_obj *o)
LRf_unif_RAN(LR_obj *o) - float random uniform distribution.
Definition: LRunif.c:104
LR_val a
Definition: libran.h:138
double d
Definition: libran.h:87
float f
Definition: libran.h:86
float(* uf)(LR_obj *)
Definition: libran.h:153
The LibRan common header file.
the fundamental LibRan random variate distribution object
Definition: libran.h:134
double LRd_unif_PDF(LR_obj *o, double x)
LRd_unif_PDF(LR_obj *o, double x) - double uniform probablity distribution function.
Definition: LRunif.c:69