// // Academic License - for use in teaching, academic research, and meeting // course requirements at degree granting institutions only. Not for // government, commercial, or other organizational use. // File: AbstractLinearFMWaveform.cpp // // MATLAB Coder version : 5.3 // C/C++ source code generated on : 27-Apr-2023 00:24:12 // // Include Files #include "AbstractLinearFMWaveform301.h" #include "../rt_nonfinite.h" #include "../coder_array.h" #include #include // Function Definitions // // Arguments : ::coder::array &wav // Return Type : void // namespace coder { namespace phased { void AbstractLinearFMWaveform301::getMatchingWaveform( ::coder::array &wav) { array b_x; array x; array b; double r; int exponent; frexp(20000.0, &exponent); b.set_size(20000); for (exponent = 0; exponent < 20000; exponent++) { r = static_cast(exponent) / 2.0E+10; b[exponent] = r * r; } x.set_size(20000); for (exponent = 0; exponent < 20000; exponent++) { x[exponent].re = 0.0; x[exponent].im = b[exponent] * 3.141592653589793E+15; } b_x.set_size(20000); for (exponent = 0; exponent < 20000; exponent++) { if (x[exponent].im == 0.0) { x[exponent].re = std::exp(x[exponent].re); x[exponent].im = 0.0; } else if (std::isinf(x[exponent].im) && std::isinf(x[exponent].re) && (x[exponent].re < 0.0)) { x[exponent].re = 0.0; x[exponent].im = 0.0; } else { r = std::exp(x[exponent].re / 2.0); x[exponent].re = r * (r * std::cos(x[exponent].im)); x[exponent].im = r * (r * std::sin(x[exponent].im)); } b_x[exponent].re = 0.0; b_x[exponent].im = 0.0; } for (exponent = 0; exponent < 20000; exponent++) { if (b_x[exponent].im == 0.0) { b_x[exponent].re = std::exp(b_x[exponent].re); b_x[exponent].im = 0.0; } else if (std::isinf(b_x[exponent].im) && std::isinf(b_x[exponent].re) && (b_x[exponent].re < 0.0)) { b_x[exponent].re = 0.0; b_x[exponent].im = 0.0; } else { r = std::exp(b_x[exponent].re / 2.0); b_x[exponent].re = r * (r * std::cos(b_x[exponent].im)); b_x[exponent].im = r * (r * std::sin(b_x[exponent].im)); } } wav.set_size(20000); for (exponent = 0; exponent < 20000; exponent++) { double d; double d1; double d2; r = x[exponent].re; d = b_x[exponent].im; d1 = x[exponent].im; d2 = b_x[exponent].re; wav[exponent].re = r * d2 - d1 * d; wav[exponent].im = r * d + d1 * d2; } } } // namespace phased } // namespace coder // // File trailer for AbstractLinearFMWaveform.cpp // // [EOF] //