#include "misc.hh"
-#include "std-string.hh"
/*
Return the 2-log, rounded down
return log (x) / log (2.0);
}
-vector<string>
-split_string (string str, char c)
-{
- vector<string> a;
- ssize i = str.find (c);
- while (i != NPOS)
- {
- string s = str.substr (0, i);
- a.push_back (s);
- while (str[++i] == c)
- ;
- str = str.substr (i);
- i = str.find (c);
- }
- if (str.length ())
- a.push_back (str);
- return a;
-}
-
-#if 0
-vector<string>
-split_string (string s, char c)
-{
- vector<string> rv;
- while (s.length ())
- {
- ssize i = s.find (c);
-
- if (i == 0)
- {
- s = s.substr (1, s.length () -1);
- continue;
- }
-
- if (i == NPOS)
- i = s.length ();
-
- rv.push_back (s.substr (0, i));
- s = s.substr (i, s.length () - i);
- }
-
- return rv;
-}
-#endif
-
-
Real
directed_round (Real f, Direction d)
{
return ceil (f);
}
+
+
+/*
+ 0 at threshold, 1 at 0, with 1/x falloff.
+ */
+Real
+peak_around (Real epsilon, Real threshold, Real x)
+{
+ if (x < 0)
+ return 1.0;
+ return max (- epsilon * (x - threshold) / ((x + epsilon) * threshold), 0.0);
+}