Files
Happy-Reconstruction/Classes/wavCFandSD.cpp
2020-05-05 23:30:52 +08:00

143 lines
3.7 KiB
C++

//
// File: wavCFandSD.cpp
//
// MATLAB Coder version : 4.3
// C/C++ source code generated on : 30-Mar-2020 11:59:32
//
// Include Files
#include "wavCFandSD.h"
#include "cwt.h"
#include "cwt_data.h"
#include "gammaln.h"
#include "rt_nonfinite.h"
#include <cmath>
#include <string.h>
// Function Definitions
//
// Arguments : const char wname[5]
// double varargin_1
// double varargin_2
// double *FourierFactor
// double *sigmaT
// double *cf
// Return Type : void
//
void wavCFandSD(const char wname[5], double varargin_1, double varargin_2,
double *FourierFactor, double *sigmaT, double *cf)
{
char switch_expression;
boolean_T b_bool;
int b_index;
double cf_tmp;
double b_cf_tmp;
double d;
double d1;
double be_tmp;
double be;
double b_be_tmp;
double c_be_tmp;
double b_be;
double d_be_tmp;
double e_be_tmp;
double c_be;
double d2;
double d3;
double d4;
double d5;
double sigmaT_tmp;
double b_sigmaT_tmp;
*cf = 0.0;
*sigmaT = 0.0;
switch_expression = cv1[static_cast<unsigned char>(wname[0]) & 127];
b_bool = !(switch_expression != 'm');
if (b_bool) {
b_index = 0;
} else {
b_bool = !(switch_expression != 'a');
if (b_bool) {
b_index = 1;
} else {
b_bool = !(switch_expression != 'b');
if (b_bool) {
b_index = 2;
} else {
b_index = -1;
}
}
}
switch (b_index) {
case 0:
cf_tmp = std::log(varargin_1);
b_cf_tmp = std::log(varargin_2);
*cf = std::exp(1.0 / varargin_1 * (b_cf_tmp - cf_tmp));
d = 2.0 * varargin_2 + 1.0;
d1 = (d + 2.0) / varargin_1;
gammaln(&d1);
d /= varargin_1;
d1 = d;
gammaln(&d1);
d1 = (2.0 * varargin_2 + 2.0) / varargin_1;
gammaln(&d1);
d1 = d;
gammaln(&d1);
be_tmp = 2.0 * (varargin_2 - 1.0);
be = 2.0 * varargin_2;
b_be_tmp = (varargin_2 - 1.0) + varargin_1;
c_be_tmp = 2.0 * b_be_tmp;
b_be = 2.0 * varargin_2;
d_be_tmp = (varargin_2 - 1.0) + varargin_1 / 2.0;
e_be_tmp = 2.0 * d_be_tmp;
c_be = 2.0 * varargin_2;
d1 = (be_tmp + 1.0) / varargin_1;
gammaln(&d1);
d2 = d;
gammaln(&d2);
d3 = (c_be_tmp + 1.0) / varargin_1;
gammaln(&d3);
d4 = d;
gammaln(&d4);
d5 = (e_be_tmp + 1.0) / varargin_1;
gammaln(&d5);
gammaln(&d);
sigmaT_tmp = varargin_2 / varargin_1;
b_sigmaT_tmp = 2.0 * (sigmaT_tmp * ((cf_tmp + 1.0) - b_cf_tmp));
sigmaT_tmp = 2.0 / varargin_1 * std::log(sigmaT_tmp);
*sigmaT = std::sqrt((std::exp(((((((b_sigmaT_tmp - 2.0 * ((varargin_2 - 1.0)
/ varargin_1 * ((cf_tmp + 1.0) - std::log(varargin_2 - 1.0)))) + be_tmp /
varargin_1 * ((cf_tmp + 1.0) - std::log(be_tmp))) - be / varargin_1 *
((cf_tmp + 1.0) - std::log(be))) + sigmaT_tmp) + 2.0 * b_cf_tmp) + d1) -
d2) + std::exp(((((((b_sigmaT_tmp - 2.0 * (b_be_tmp / varargin_1 *
((cf_tmp + 1.0) - std::log(b_be_tmp)))) + c_be_tmp / varargin_1 * ((cf_tmp
+ 1.0) - std::log(c_be_tmp))) - b_be / varargin_1 * ((cf_tmp + 1.0) - std::
log(b_be))) + sigmaT_tmp) + 2.0 * cf_tmp) + d3) - d4)) - std::exp
(((((((((b_sigmaT_tmp - 2.0 * (d_be_tmp / varargin_1 *
((cf_tmp + 1.0) - std::log(d_be_tmp)))) + e_be_tmp / varargin_1 * ((cf_tmp
+ 1.0) - std::log(e_be_tmp))) - c_be / varargin_1 * ((cf_tmp + 1.0) - std::
log(c_be))) + sigmaT_tmp) + 0.69314718055994529) + b_cf_tmp) + cf_tmp) +
d5) - d));
break;
case 1:
*cf = 6.0;
*sigmaT = 1.4142135623730951;
break;
case 2:
*cf = 5.0;
*sigmaT = 5.847705;
break;
}
*FourierFactor = 6.2831853071795862 / *cf;
}
//
// File trailer for wavCFandSD.cpp
//
// [EOF]
//