74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
//
|
|
// File: cwt_rtwutil.cpp
|
|
//
|
|
// MATLAB Coder version : 4.3
|
|
// C/C++ source code generated on : 30-Mar-2020 11:59:32
|
|
//
|
|
|
|
// Include Files
|
|
#include "cwt_rtwutil.h"
|
|
#include "cwt.h"
|
|
#include "rt_nonfinite.h"
|
|
#include <cmath>
|
|
#include <math.h>
|
|
#include <string.h>
|
|
|
|
// Function Definitions
|
|
|
|
//
|
|
// Arguments : double u0
|
|
// double u1
|
|
// Return Type : double
|
|
//
|
|
double rt_powd_snf(double u0, double u1)
|
|
{
|
|
double y;
|
|
double d;
|
|
double d1;
|
|
if (rtIsNaN(u0) || rtIsNaN(u1)) {
|
|
y = rtNaN;
|
|
} else {
|
|
d = std::abs(u0);
|
|
d1 = std::abs(u1);
|
|
if (rtIsInf(u1)) {
|
|
if (d == 1.0) {
|
|
y = 1.0;
|
|
} else if (d > 1.0) {
|
|
if (u1 > 0.0) {
|
|
y = rtInf;
|
|
} else {
|
|
y = 0.0;
|
|
}
|
|
} else if (u1 > 0.0) {
|
|
y = 0.0;
|
|
} else {
|
|
y = rtInf;
|
|
}
|
|
} else if (d1 == 0.0) {
|
|
y = 1.0;
|
|
} else if (d1 == 1.0) {
|
|
if (u1 > 0.0) {
|
|
y = u0;
|
|
} else {
|
|
y = 1.0 / u0;
|
|
}
|
|
} else if (u1 == 2.0) {
|
|
y = u0 * u0;
|
|
} else if ((u1 == 0.5) && (u0 >= 0.0)) {
|
|
y = std::sqrt(u0);
|
|
} else if ((u0 < 0.0) && (u1 > std::floor(u1))) {
|
|
y = rtNaN;
|
|
} else {
|
|
y = pow(u0, u1);
|
|
}
|
|
}
|
|
|
|
return y;
|
|
}
|
|
|
|
//
|
|
// File trailer for cwt_rtwutil.cpp
|
|
//
|
|
// [EOF]
|
|
//
|