66 Real output = 0.0, e = 0.0;
67 if ( std::abs(
param_) > ROL_EPSILON<Real>() ) { e = 0.5/
param_; }
70 if ( input < -e ) { region = -1; }
71 else if ( input > e ) { region = 1; }
73 if ( deriv == 0 ) { output = std::abs(input); }
74 else if ( deriv == 1 ) { output = (input < 0.0 ? -1.0 : 1.0); }
75 else if ( deriv == 2 ) {
76 if ( region == -1 ) { output = 0.0; }
77 else if ( region == 0 ) { output = e*std::exp( -1.0/(1.0 - std::pow(std::abs(input/e),2.0)) ); }
78 else if ( region == 1 ) { output = 0.0; }
93 if ( deriv == 0 ) { output = input*input/std::sqrt(input*input + 1.0/
param_); }
94 else if ( deriv == 1 ) { output = (2.0/
param_*input+std::pow(input,3.0)) /
95 std::pow(input*input+1.0/
param_,1.5); }
96 else if ( deriv == 2 ) { output = ((2.0/
param_-input*input)/
param_) /
97 std::pow(input*input+1.0/
param_,2.5); }
102 Real output = 0.0, e = 1.0;
103 if ( std::abs(
param_) > ROL_EPSILON<Real>() ) { e = 0.5/
param_; }
106 if ( input < -e ) { region = -1; }
107 else if ( input > e ) { region = 1; }
110 if ( std::abs(region) == 1 ) { output = std::abs(input); }
111 else if ( region == 0 ) { output = 1.875*std::pow(input*e,2.0) -
112 1.25 *std::pow(input*e,4.0) +
113 0.375*std::pow(input*e,6.0); }
115 else if ( deriv == 1 ) {
116 if ( std::abs(region) == 1 ) { output = (input < 0.0 ? -1.0 : 1.0); }
117 else if ( region == 0 ) { output = e*2.0*1.875*input*e -
118 e*4.0*1.25 *std::pow(input*e,3.0) +
119 e*6.0*0.375*std::pow(input*e,5.0); }
121 else if ( deriv == 2 ) {
122 if ( std::abs(region) == 1 ) { output = 0.0; }
123 else if ( region == 0 ) { output = e* 2.0*1.875 -
124 e*e*12.0*1.25 *std::pow(input*e,2.0) +
125 e*e*30.0*0.375*std::pow(input*e,4.0); }