18 double SinVariableTransformation::Int2ext(
double value,
double lower,
double upper)
const {
20 return lower + 0.5*(upper - lower)*(std::sin(value) + 1.);
23 double SinVariableTransformation::Ext2int(
double value,
double lower,
double upper)
const {
26 double piby2 = 2.*std::atan(1.);
27 static const double eps = std::numeric_limits<double>::epsilon();
28 double distnn = 8.*std::sqrt(eps);
29 double vlimhi = piby2 - distnn;
30 double vlimlo = -piby2 + distnn;
32 double yy = 2.*(value - lower)/(upper - lower) - 1.;
34 if(yy2 > (1. - 8 * eps) ) {
50 double SinVariableTransformation::DInt2Ext(
double value,
double lower,
double upper)
const {
52 return 0.5*((upper - lower)*std::cos(value));
59 double SqrtLowVariableTransformation::Int2ext(
double value,
double lower,
double)
const {
61 double val = lower - 1. + std::sqrt( value*value + 1.);
66 double SqrtLowVariableTransformation::Ext2int(
double value,
double lower,
double )
const {
68 double yy = value - lower + 1.;
73 return std::sqrt( yy2 -1);
76 double SqrtLowVariableTransformation::DInt2Ext(
double value,
double,
double)
const {
78 double val = value/( std::sqrt( value*value + 1.) );
85 double SqrtUpVariableTransformation::Int2ext(
double value,
double upper,
double)
const {
87 double val = upper + 1. - std::sqrt( value*value + 1.);
92 double SqrtUpVariableTransformation::Ext2int(
double value,
double upper,
double )
const {
94 double yy = upper - value + 1.;
95 double arg = yy*yy - 1;
96 return ( arg < 0 ) ? 0 : std::sqrt(arg);
100 double SqrtUpVariableTransformation::DInt2Ext(
double value,
double,
double)
const {
102 double val = - value/( std::sqrt( value*value + 1.) );