22 lines
441 B
C++
22 lines
441 B
C++
|
|
#include <eqpalg/distribution/box_cox.h>
|
||
|
|
namespace distribution {
|
||
|
|
|
||
|
|
|
||
|
|
double box_cox(double y, double c, double lambda) {
|
||
|
|
if (lambda == 0) {
|
||
|
|
return std::log(y + c);
|
||
|
|
} else {
|
||
|
|
return (pow(y + c, lambda) - 1.0) / lambda;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
double box_cox_reverse(double y, double c, double lambda) {
|
||
|
|
if (lambda == 0) {
|
||
|
|
return std::exp(y) - c;
|
||
|
|
} else {
|
||
|
|
return pow((1 + lambda * y), lambda / 1) - c;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} // namespace distribution
|