13 #include "msdevstudio/MSconfig.h"
25 #ifdef ITERATOR_MEMBER_DEFECT
30 using std::upper_bound;
34 using namespace hippodraw;
67 vector<double>::const_iterator it
68 = upper_bound (
bins.begin(),
bins.end(), x );
69 int i = it -
bins.begin();
83 double high =
bins[i+1];
85 return sqrt(low*high);
91 bins_number = std::min ( bins_number,
m_num_bins -1 );
92 bins_number = std::max ( bins_number, 0 );
94 double width =
bins[bins_number+1] -
bins[bins_number];
95 assert ( width >= 0.0 );
123 double width_parm = 0;
126 width_parm = log10 ( high / low ) / num_bins;
135 assert ( low > 0.0 );
137 vector<double>::iterator it =
bins.begin();
140 for (
int i = 1; it !=
bins.end(); ++it, i++ ) {
141 *it = low * pow ( 10.0, i *
m_width );
169 throw std::runtime_error(
"BinnerAxisLog::Range: attempt to set range "
170 "to negative values.");
182 assert ( wid > 0.0 );
188 double high = low * pow ( 10.0,
m_num_bins * wid );
201 return ( parm - 50 ) / 50.0;
219 if( offset == 0.0 )
return;
221 double width = low * pow ( 10.0,
m_width );
222 double woffset = width * change;
223 double new_low = low * pow ( 10.0, woffset *
m_width );
224 double new_high = new_low * pow ( 10.0, (
bins.size() -1 ) * m_width );
226 Range r( new_low, new_high );
238 double low = range.
low ();
239 double high = range.
high ();
240 int tmp =
static_cast< int > ( ceil ( log10 ( high/low ) /
243 return tmp ? tmp : 1;
250 int tmp = static_cast <
int > ( ceil ( log10 ( high/low ) /
252 return tmp ? tmp : 1;