Skip to content

Commit

Permalink
See later for geom
Browse files Browse the repository at this point in the history
  • Loading branch information
alkino committed Nov 13, 2024
1 parent 9503ccc commit 2bb8a05
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 14 deletions.
1 change: 1 addition & 0 deletions src/gnu/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
add_library(
nrngnu STATIC
Geom.cpp
HypGeom.cpp
MCellRan4RNG.cpp
mcran4.cpp
Expand Down
29 changes: 29 additions & 0 deletions src/gnu/Geom.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
Copyright (C) 1988 Free Software Foundation
written by Dirk Grunwald ([email protected])
This file is part of the GNU C++ Library. This library is free
software; you can redistribute it and/or modify it under the terms of
the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. This library is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef __GNUG__
#pragma implementation
#endif
#include "Random.h"
#include "Geom.h"

double Geometric::operator()()
{
int samples;
for (samples = 1; pGenerator -> asDouble() < pMean; samples++);
return((double) samples);
}

44 changes: 44 additions & 0 deletions src/gnu/Geom.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// This may look like C code, but it is really -*- C++ -*-
/*
Copyright (C) 1988 Free Software Foundation
written by Dirk Grunwald ([email protected])
This file is part of the GNU C++ Library. This library is free
software; you can redistribute it and/or modify it under the terms of
the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. This library is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#pragma once
#include "Random.h"

class Geometric: public Random {
protected:
double pMean;
public:
Geometric(double mean, RNG *gen);

double mean();
double mean(double x);

virtual double operator()();

};


inline Geometric::Geometric(double mean, RNG *gen) : Random(gen)
{
pMean = mean;
}


inline double Geometric::mean() { return pMean; }
inline double Geometric::mean(double x) {
double tmp = pMean; pMean = x; return tmp;
}
14 changes: 0 additions & 14 deletions src/gnu/distributions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,6 @@ class Erlang: public Random {
std::gamma_distribution<> d;
};

class Geometric: public Random {
public:
Geometric(double mean, RNG *gen)
: Random(gen)
, d(1 / (mean + 1))
{}

double operator()() override {
return 1. + d(*generator());
}
private:
std::geometric_distribution<> d;
};

class LogNormal: public Random {
public:
LogNormal(double mean, double variance, RNG *gen)
Expand Down
1 change: 1 addition & 0 deletions src/ivoc/ivocrand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include <Random.h>
#include <distributions.hpp>
#include <Geom.h>
#include <HypGeom.h>
#include <NrnRandom123RNG.hpp>
#include <MCellRan4RNG.hpp>
Expand Down

0 comments on commit 2bb8a05

Please sign in to comment.