diff options
-rw-r--r-- | lib/THC/generic/THCTensorRandom.cu | 22 | ||||
-rw-r--r-- | lib/THC/generic/THCTensorRandom.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/THC/generic/THCTensorRandom.cu b/lib/THC/generic/THCTensorRandom.cu index b85c5d2..0da1e06 100644 --- a/lib/THC/generic/THCTensorRandom.cu +++ b/lib/THC/generic/THCTensorRandom.cu @@ -34,6 +34,28 @@ THC_API void THCTensor_(normal)(THCState* state, THCTensor *self_, double mean, THCTensor_(freeCopyTo)(state, self, self_); }; +THC_API void THCTensor_(normal_means)(THCState *state, THCTensor *self, THCTensor *means, double stddev) { + THCTensor_(resizeAs)(state, self, means); + THCTensor_(normal)(state, self, 0, stddev); + THCTensor_(cadd)(state, self, self, ScalarConvert<int, real>::to(1), means); +} + +THC_API void THCTensor_(normal_stddevs)(THCState *state, THCTensor *self, double mean, THCTensor *stddevs) +{ + THCTensor_(resizeAs)(state, self, stddevs); + THCTensor_(normal)(state, self, 0, 1); + THCTensor_(cmul)(state, self, self, stddevs); + THCTensor_(add)(state, self, self, ScalarConvert<double, real>::to(mean)); +} + +THC_API void THCTensor_(normal_means_stddevs)(THCState *state, THCTensor *self, THCTensor *means, THCTensor *stddevs) +{ + THCTensor_(resizeAs)(state, self, means); + THCTensor_(normal)(state, self, 0, 1); + THCTensor_(cmul)(state, self, self, stddevs); + THCTensor_(cadd)(state, self, self, ScalarConvert<int, real>::to(1), means); +} + THC_API void THCTensor_(logNormal)(THCState* state, THCTensor *self_, double mean, double stdv) { diff --git a/lib/THC/generic/THCTensorRandom.h b/lib/THC/generic/THCTensorRandom.h index ad23e78..22f5a92 100644 --- a/lib/THC/generic/THCTensorRandom.h +++ b/lib/THC/generic/THCTensorRandom.h @@ -8,6 +8,9 @@ THC_API void THCTensor_(uniform)(struct THCState *state, THCTensor *self, double THC_API void THCTensor_(rand)(THCState *state, THCTensor *r_, THLongStorage *size); THC_API void THCTensor_(randn)(THCState *state, THCTensor *r_, THLongStorage *size); THC_API void THCTensor_(normal)(struct THCState *state, THCTensor *self, double mean, double stdv); +THC_API void THCTensor_(normal_means)(struct THCState *state, THCTensor *self, THCTensor *means, double stddev); +THC_API void THCTensor_(normal_stddevs)(struct THCState *state, THCTensor *self, double mean, THCTensor *stddevs); +THC_API void THCTensor_(normal_means_stddevs)(struct THCState *state, THCTensor *self, THCTensor *means, THCTensor *stddevs); THC_API void THCTensor_(logNormal)(struct THCState *state, THCTensor *self, double mean, double stdv); THC_API void THCTensor_(exponential)(struct THCState *state, THCTensor *self, double lambda); THC_API void THCTensor_(cauchy)(struct THCState *state, THCTensor *self, double median, double sigma); |