All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Types | Public Member Functions
DinverCore::ParameterGrid Class Reference

Brief description of class still missing. More...

#include <ParameterGrid.h>

List of all members.

Public Types

enum  Scale { Linear, Log }

Public Member Functions

int count () const
void getLimits (int &min, int &max, double dmin, double dmax) const
void getLimits (double &min, double &max, double dmin, double dmax) const
int gridValue (double val) const
bool init ()
double maximum () const
double minimum () const
 ParameterGrid ()
double realValue (int index) const
double realValue (double index) const
void setMaximum (double m)
void setMinimum (double m)
void setPrecision (double p)
void setScale (Scale s)
 ~ParameterGrid ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Member Enumeration Documentation

Enumerator:
Linear 
Log 
{Linear, Log};

Constructor & Destructor Documentation

Description of constructor still missing

References Linear.

{
  _realValues=0;
  _minimum=0.0;
  _maximum=1.0;
  _a=100.0;
  _b=0.01;
  _c=0.0;
  _n=100;
  _scale=Linear;
}

Description of destructor still missing

{
  delete [] _realValues;
}

Member Function Documentation

int DinverCore::ParameterGrid::count ( ) const [inline]

Referenced by DinverCore::Parameter::humanInfo().

{return _n;}
void DinverCore::ParameterGrid::getLimits ( int &  min,
int &  max,
double  dmin,
double  dmax 
) const [inline]

References Linear, Log, and QGpCoreTools::log().

Referenced by DinverCore::Parameter::getGridLimits().

{
  switch (_scale) {
  case Linear:
    min=(int) ceil (( dmin - _minimum) * _a + 1e-10);
    max=(int) floor (( dmax - _minimum) * _a - 1e-10);
    break;
  case Log:
    min=(int) ceil(log( dmin * _a) * _b + 1e-10);
    max=(int) floor(log( dmax * _a) * _b - 1e-10);
    break;
  }
}
void DinverCore::ParameterGrid::getLimits ( double &  min,
double &  max,
double  dmin,
double  dmax 
) const [inline]

References Linear, Log, and QGpCoreTools::log().

{
  switch (_scale) {
  case Linear:
    min=(dmin - _minimum) * _a;
    max=(dmax - _minimum) * _a;
    break;
  case Log:
    min=log(dmin * _a) * _b;
    max=log(dmax * _a) * _b;
    break;
  }
}
int DinverCore::ParameterGrid::gridValue ( double  val) const [inline]

References Linear, Log, and QGpCoreTools::log().

{
  switch(_scale) {
  case Linear:
    break;
  case Log:
    return (int) round(log( val * _a) * _b);
  }
  return (int) round(( val - _minimum) * _a);
}

References QGpCoreTools::endl(), QGpCoreTools::exp(), Linear, Log, QGpCoreTools::log(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(_minimum>_maximum) {
    _n=0;
    App::stream() << tr("Minimum is greater than maximum.") << endl;
    return false;
  } else if(_minimum==_maximum) {
    _n=0;
    return true;
  }
  if(_minimum<=0.0 && _scale==Log) {
    _scale=Linear;
  }
  if(_precision==0.0) {
    switch(_scale) {
    case Linear:
      _a=500.0/(_maximum-_minimum);
      _b=1.0/_a;
      break;
    case Log:
      _a=1.0/_minimum;
      _b=500.0/log(_maximum/_minimum);
      _c=exp(1.0/_b);
      break;
    }
  } else {
    switch(_scale) {
    case Linear:
      _a=1.0/_precision;
      _b=_precision;
      break;
    case Log:
      _a=1.0/_minimum;
      _c=1.0+_precision;
      _b=1.0/log(_c);
      break;
    }
  }
  switch(_scale) {
  case Linear:
    cacheRealLinearValues();
    break;
  case Log:
    cacheRealLogValues();
    break;
  }
  return _realValues;
}
double DinverCore::ParameterGrid::maximum ( ) const [inline]
{return _maximum;}
double DinverCore::ParameterGrid::minimum ( ) const [inline]
{return _minimum;}
double DinverCore::ParameterGrid::realValue ( int  index) const [inline]
{
  return _realValues[ index ];
}
double DinverCore::ParameterGrid::realValue ( double  index) const [inline]

References Linear, and Log.

{
  switch(_scale) {
  case Linear:
    break;
  case Log:
    return _minimum*pow(_c, index);
  }
  return _minimum + index * _b;
}
void DinverCore::ParameterGrid::setMaximum ( double  m) [inline]
{_maximum=m;}
void DinverCore::ParameterGrid::setMinimum ( double  m) [inline]
{_minimum=m;}
void DinverCore::ParameterGrid::setPrecision ( double  p) [inline]
{ASSERT(p >= 0.0); _precision=p;}
{_scale=s;}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines