// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file tools.license for terms. #ifndef tools_randf #define tools_randf #include "randT" #include "rtausmef" namespace tools { class rgaussf : public rgauss { typedef rgauss parent; public: rgaussf(float a_mean = 0,float a_std_dev = 1):parent(m_flat,a_mean,a_std_dev),m_flat(){} virtual ~rgaussf(){} public: rgaussf(const rgaussf& a_from):parent(m_flat),m_flat(a_from.m_flat){} rgaussf& operator=(const rgaussf& a_from) { parent::operator=(a_from); m_flat = a_from.m_flat; return *this; } public: float shoot() const {return parent::shoot(::sqrtf,::logf);} protected: rtausmef m_flat; }; class rexpf : public rexp { typedef rexp parent; public: rexpf(float a_rate = 1):parent(m_flat,a_rate),m_flat(){} virtual ~rexpf(){} public: rexpf(const rexpf& a_from):parent(m_flat),m_flat(a_from.m_flat){} rexpf& operator=(const rexpf& a_from) { parent::operator=(a_from); m_flat = a_from.m_flat; return *this; } public: float shoot() const {return parent::shoot(::logf);} protected: rtausmef m_flat; }; } #include "mathf" namespace tools { class rbwf : public rbw { typedef rbw parent; public: rbwf(float a_mean = 0,float a_gamma = 1):parent(m_flat,a_mean,a_gamma),m_flat(){} virtual ~rbwf(){} public: rbwf(const rbwf& a_from):parent(m_flat),m_flat(a_from.m_flat){} rbwf& operator=(const rbwf& a_from) { parent::operator=(a_from); m_flat = a_from.m_flat; return *this; } public: float shoot() const {return parent::shoot(fhalf_pi(),::tanf);} protected: rtausmef m_flat; }; } #endif