⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c2_fib_determinant.c

📁 m files for SIAM book, Numerical Computing with MATLAB
💻 C
📖 第 1 页 / 共 3 页
字号:
/* Include files */
#include "Fib_determinant_sfun.h"
#include "c2_Fib_determinant.h"
#define CHARTINSTANCE_CHARTNUMBER       (chartInstance.chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER    (chartInstance.instanceNumber)
#include "Fib_determinant_sfun_debug_macros.h"

/* Type Definitions */

/* Named Constants */
#define c2_IN_NO_ACTIVE_CHILD           (0)

/* Variable Declarations */

/* Variable Definitions */
static SFc2_Fib_determinantInstanceStruct chartInstance;

/* Function Declarations */
static void initialize_c2_Fib_determinant(void);
static void initialize_params_c2_Fib_determinant(void);
static void enable_c2_Fib_determinant(void);
static void disable_c2_Fib_determinant(void);
static void finalize_c2_Fib_determinant(void);
static void sf_c2_Fib_determinant(void);
static void init_script_number_translation(uint32_T c2_machineNumber, uint32_T
 c2_chartNumber);
static const mxArray *c2_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_b_sf_marshall(void *c2_chartInstance, void *c2_u);
static void c2_info_helper(c2_ResolvedFunctionInfo c2_info[72]);
static void init_dsm_address_info(void);

/* Function Definitions */
static void initialize_c2_Fib_determinant(void)
{
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  chartInstance.c2_is_active_c2_Fib_determinant = 0U;
}

static void initialize_params_c2_Fib_determinant(void)
{
}

static void enable_c2_Fib_determinant(void)
{
}

static void disable_c2_Fib_determinant(void)
{
}

static void finalize_c2_Fib_determinant(void)
{
}

static void sf_c2_Fib_determinant(void)
{
  int32_T c2_i0;
  int32_T c2_i1;
  uint8_T c2_previousEvent;
  int32_T c2_i2;
  int32_T c2_i3;
  real_T c2_u[4];
  real_T c2_d;
  int32_T c2_i4;
  int32_T c2_i5;
  real_T c2_x[4];
  int32_T c2_i6;
  int32_T c2_i7;
  real_T c2_A[4];
  int32_T c2_i8;
  int32_T c2_i9;
  real_T c2_b_x[4];
  int32_T c2_i10;
  real_T c2_pivot[2];
  boolean_T c2_isodd;
  real_T c2_k;
  real_T c2_p;
  real_T c2_c_x;
  real_T c2_y;
  real_T c2_d_x;
  real_T c2_b_y;
  real_T c2_maxval;
  real_T c2_i;
  real_T c2_e_x;
  real_T c2_c_y;
  real_T c2_f_x;
  real_T c2_d_y;
  real_T c2_rtemp;
  real_T c2_d0;
  real_T c2_a;
  real_T c2_b_a;
  real_T c2_temp;
  real_T c2_ptemp;
  real_T c2_b_A;
  real_T c2_B;
  real_T c2_g_x;
  real_T c2_e_y;
  real_T c2_f_y;
  int32_T c2_i11;
  int32_T c2_i12;
  boolean_T c2_b_isodd;
  real_T *c2_b_d;
  real_T (*c2_b_u)[4];
  c2_b_u = (real_T (*)[4])ssGetInputPortSignal(chartInstance.S, 0);
  c2_b_d = (real_T *)ssGetOutputPortSignal(chartInstance.S, 1);
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  for(c2_i0 = 0; c2_i0 < 2; c2_i0 = c2_i0 + 1) {
    for(c2_i1 = 0; c2_i1 < 2; c2_i1 = c2_i1 + 1) {
      _SFD_DATA_RANGE_CHECK((*c2_b_u)[c2_i1 + 2 * c2_i0], 0U);
    }
  }
  _SFD_DATA_RANGE_CHECK(*c2_b_d, 1U);
  c2_previousEvent = _sfEvent_;
  _sfEvent_ = CALL_EVENT;
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
  for(c2_i2 = 0; c2_i2 < 2; c2_i2 = c2_i2 + 1) {
    for(c2_i3 = 0; c2_i3 < 2; c2_i3 = c2_i3 + 1) {
      c2_u[c2_i3 + 2 * c2_i2] = (*c2_b_u)[c2_i3 + 2 * c2_i2];
    }
  }
  sf_debug_symbol_scope_push(2U, 0U);
  sf_debug_symbol_scope_add("d", &c2_d, c2_b_sf_marshall);
  sf_debug_symbol_scope_add("u", &c2_u, c2_sf_marshall);
  CV_EML_FCN(0, 0);
  /*  This block supports an embeddable subset of the MATLAB language. */
  /*  See the help menu for details.  */
  /*  For releases before R2006b use the following: */
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,6);
  c2_d = c2_u[0] * c2_u[3] - c2_u[2] * c2_u[1];
  /*  Release 2006b and later support the determinant */
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,9);
  for(c2_i4 = 0; c2_i4 < 2; c2_i4 = c2_i4 + 1) {
    for(c2_i5 = 0; c2_i5 < 2; c2_i5 = c2_i5 + 1) {
      c2_x[c2_i5 + 2 * c2_i4] = c2_u[c2_i5 + 2 * c2_i4];
    }
  }
  for(c2_i6 = 0; c2_i6 < 2; c2_i6 = c2_i6 + 1) {
    for(c2_i7 = 0; c2_i7 < 2; c2_i7 = c2_i7 + 1) {
      c2_A[c2_i7 + 2 * c2_i6] = c2_x[c2_i7 + 2 * c2_i6];
    }
  }
  for(c2_i8 = 0; c2_i8 < 2; c2_i8 = c2_i8 + 1) {
    for(c2_i9 = 0; c2_i9 < 2; c2_i9 = c2_i9 + 1) {
      c2_b_x[c2_i9 + 2 * c2_i8] = c2_A[c2_i9 + 2 * c2_i8];
    }
  }
  for(c2_i10 = 0; c2_i10 < 2; c2_i10 = c2_i10 + 1) {
    c2_pivot[c2_i10] = 1.0 + (real_T)c2_i10;
  }
  c2_isodd = 0U;
  c2_k = 1.0;
  c2_p = c2_k;
  c2_c_x = 0.0;
  c2_y = fabs(c2_c_x);
  c2_d_x = c2_b_x[0];
  c2_b_y = fabs(c2_d_x);
  c2_maxval = c2_b_y + c2_y;
  c2_i = 2.0;
  c2_e_x = 0.0;
  c2_c_y = fabs(c2_e_x);
  c2_f_x = c2_b_x[1];
  c2_d_y = fabs(c2_f_x);
  c2_rtemp = c2_d_y + c2_c_y;
  if(c2_rtemp > c2_maxval) {
    c2_p = c2_i;
  }
  if(c2_p != c2_k) {
    c2_d0 = 1.0;
    for(c2_a = c2_d0; c2_a <= 2.0; c2_a = c2_a + 1.0) {
      c2_b_a = c2_a;
      c2_temp = c2_b_x[((int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("A",
        (int32_T)_SFD_INTEGER_CHECK("p", c2_p), 1, 2, 1, 0) - 1) + 2 * ((int32_T
        )_SFD_EML_ARRAY_BOUNDS_CHECK("A", (int32_T)_SFD_INTEGER_CHECK("a",
         c2_b_a), 1, 2, 2, 0) - 1)];
      c2_b_x[((int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("A",
        (int32_T)_SFD_INTEGER_CHECK("p", c2_p), 1, 2, 1, 0) - 1) + 2 * ((int32_T)
       _SFD_EML_ARRAY_BOUNDS_CHECK("A", (int32_T)_SFD_INTEGER_CHECK("a",
         c2_b_a), 1, 2, 2, 0) - 1)] = c2_b_x[2 * ((int32_T)
        _SFD_EML_ARRAY_BOUNDS_CHECK("A", (int32_T)_SFD_INTEGER_CHECK("a",
         c2_b_a), 1, 2, 2, 0) - 1)];
      c2_b_x[2 * ((int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("A",
        (int32_T)_SFD_INTEGER_CHECK("a", c2_b_a), 1, 2, 2, 0) - 1)] = c2_temp;
    }
    c2_ptemp = c2_pivot[0];
    c2_pivot[0] = c2_pivot[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("pivot",
     (int32_T)_SFD_INTEGER_CHECK("p", c2_p), 1, 2, 1, 0) - 1];
    c2_pivot[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("pivot",
     (int32_T)_SFD_INTEGER_CHECK("p", c2_p), 1, 2, 1, 0) - 1] = c2_ptemp;
    c2_isodd = !c2_isodd;
  }
  if(c2_b_x[0] != 0.0) {
    c2_b_A = c2_b_x[1];
    c2_B = c2_b_x[0];
    c2_g_x = c2_b_A;
    c2_e_y = c2_B;
    c2_f_y = c2_g_x / c2_e_y;
    c2_b_x[1] = c2_f_y;
  }
  c2_b_x[3] = c2_b_x[3] - c2_b_x[1] * c2_b_x[2];
  for(c2_i11 = 0; c2_i11 < 2; c2_i11 = c2_i11 + 1) {
    for(c2_i12 = 0; c2_i12 < 2; c2_i12 = c2_i12 + 1) {
      c2_x[c2_i12 + 2 * c2_i11] = c2_b_x[c2_i12 + 2 * c2_i11];
    }
  }
  c2_b_isodd = c2_isodd;
  c2_d = c2_x[0];
  c2_d = c2_d * c2_x[3];
  if(c2_b_isodd) {
    c2_d = -c2_d;
  }
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,-9);
  sf_debug_symbol_scope_pop();
  *c2_b_d = c2_d;
  _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
  _sfEvent_ = c2_previousEvent;
  sf_debug_check_for_state_inconsistency(_Fib_determinantMachineNumber_,
   chartInstance.chartNumber, chartInstance.instanceNumber);
}

static void init_script_number_translation(uint32_T c2_machineNumber, uint32_T
 c2_chartNumber)
{
}

static const mxArray *c2_sf_marshall(void *c2_chartInstance, void *c2_u)
{
  const mxArray *c2_y = NULL;
  int32_T c2_i13;
  int32_T c2_i14;
  real_T c2_b_u[4];
  const mxArray *c2_b_y = NULL;
  c2_y = NULL;
  for(c2_i13 = 0; c2_i13 < 2; c2_i13 = c2_i13 + 1) {
    for(c2_i14 = 0; c2_i14 < 2; c2_i14 = c2_i14 + 1) {
      c2_b_u[c2_i14 + 2 * c2_i13] = (*((real_T (*)[4])c2_u))[c2_i14 + 2 *
        c2_i13];
    }
  }
  c2_b_y = NULL;
  sf_mex_assign(&c2_b_y, sf_mex_create(&c2_b_u, "y", 0, 0U, 1U, 2, 2, 2));
  sf_mex_assign(&c2_y, c2_b_y);
  return c2_y;
}

static const mxArray *c2_b_sf_marshall(void *c2_chartInstance, void *c2_u)
{
  const mxArray *c2_y = NULL;
  real_T c2_b_u;
  const mxArray *c2_b_y = NULL;
  c2_y = NULL;
  c2_b_u = *((real_T *)c2_u);
  c2_b_y = NULL;
  sf_mex_assign(&c2_b_y, sf_mex_create(&c2_b_u, "y", 0, 0U, 0U, 0));
  sf_mex_assign(&c2_y, c2_b_y);
  return c2_y;
}

const mxArray *sf_c2_Fib_determinant_get_eml_resolved_functions_info(void)
{
  const mxArray *c2_nameCaptureInfo = NULL;
  c2_ResolvedFunctionInfo c2_info[72];
  c2_ResolvedFunctionInfo (*c2_b_info)[72];
  const mxArray *c2_m0 = NULL;
  int32_T c2_i15;
  c2_ResolvedFunctionInfo *c2_r0;
  c2_nameCaptureInfo = NULL;
  c2_info_helper(c2_info);
  c2_b_info = &c2_info;
  (*c2_b_info)[64].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_alloc.m";
  (*c2_b_info)[64].name = "eml_assert_valid_size_arg";
  (*c2_b_info)[64].dominantType = "double";
  (*c2_b_info)[64].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_assert_valid_size_arg.m";
  (*c2_b_info)[64].fileLength = 1097U;
  (*c2_b_info)[64].fileTime1 = 1163970788U;
  (*c2_b_info)[64].fileTime2 = 0U;
  (*c2_b_info)[65].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/ops/colon.m";
  (*c2_b_info)[65].name = "lt";
  (*c2_b_info)[65].dominantType = "double";
  (*c2_b_info)[65].resolved = "[B]lt";
  (*c2_b_info)[65].fileLength = 0U;
  (*c2_b_info)[65].fileTime1 = 0U;
  (*c2_b_info)[65].fileTime2 = 0U;
  (*c2_b_info)[66].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/ops/colon.m/is_flint_colon";
  (*c2_b_info)[66].name = "max";
  (*c2_b_info)[66].dominantType = "double";
  (*c2_b_info)[66].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/datafun/max.m";
  (*c2_b_info)[66].fileLength = 672U;
  (*c2_b_info)[66].fileTime1 = 1160446606U;
  (*c2_b_info)[66].fileTime2 = 0U;
  (*c2_b_info)[67].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/elmat/ndims.m";
  (*c2_b_info)[67].name = "eml_numel";
  (*c2_b_info)[67].dominantType = "double";
  (*c2_b_info)[67].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_numel.m";
  (*c2_b_info)[67].fileLength = 278U;
  (*c2_b_info)[67].fileTime1 = 1163970802U;
  (*c2_b_info)[67].fileTime2 = 0U;
  (*c2_b_info)[68].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/datafun/max.m";
  (*c2_b_info)[68].name = "nargout";
  (*c2_b_info)[68].dominantType = "";
  (*c2_b_info)[68].resolved = "[B]nargout";
  (*c2_b_info)[68].fileLength = 0U;
  (*c2_b_info)[68].fileTime1 = 0U;
  (*c2_b_info)[68].fileTime2 = 0U;
  (*c2_b_info)[69].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/elmat/eps.m";
  (*c2_b_info)[69].name = "eml_guarded_nan";
  (*c2_b_info)[69].dominantType = "";
  (*c2_b_info)[69].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_guarded_nan.m";
  (*c2_b_info)[69].fileLength = 549U;
  (*c2_b_info)[69].fileTime1 = 1160446740U;
  (*c2_b_info)[69].fileTime2 = 0U;
  (*c2_b_info)[70].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/matfun/det.m";
  (*c2_b_info)[70].name = "eml_lu";
  (*c2_b_info)[70].dominantType = "double";
  (*c2_b_info)[70].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_lu.m";
  (*c2_b_info)[70].fileLength = 2218U;
  (*c2_b_info)[70].fileTime1 = 1177099722U;
  (*c2_b_info)[70].fileTime2 = 0U;
  (*c2_b_info)[71].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/datatypes/isa.m";
  (*c2_b_info)[71].name = "eml_is_integer_class";
  (*c2_b_info)[71].dominantType = "char";
  (*c2_b_info)[71].resolved =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_is_integer_class.m";
  (*c2_b_info)[71].fileLength = 462U;
  (*c2_b_info)[71].fileTime1 = 1160446744U;
  (*c2_b_info)[71].fileTime2 = 0U;
  sf_mex_assign(&c2_m0, sf_mex_createstruct("nameCaptureInfo", 1, 72));
  for(c2_i15 = 0; c2_i15 < 72; c2_i15 = c2_i15 + 1) {
    c2_r0 = &c2_info[c2_i15];
    sf_mex_addfield(c2_m0, sf_mex_create(c2_r0->context, "nameCaptureInfo", 13,
      0U, 0U, 2, 1, strlen(c2_r0->context)), "context",
     "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(c2_r0->name, "nameCaptureInfo", 13, 0U,
      0U, 2, 1, strlen(c2_r0->name)), "name",
     "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(c2_r0->dominantType, "nameCaptureInfo",
      13, 0U, 0U, 2, 1, strlen(c2_r0->dominantType)),
     "dominantType", "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(c2_r0->resolved, "nameCaptureInfo", 13,
      0U, 0U, 2, 1, strlen(c2_r0->resolved)), "resolved",
     "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(&c2_r0->fileLength, "nameCaptureInfo",
      7, 0U, 0U, 0), "fileLength", "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(&c2_r0->fileTime1, "nameCaptureInfo",
      7, 0U, 0U, 0), "fileTime1", "nameCaptureInfo", c2_i15);
    sf_mex_addfield(c2_m0, sf_mex_create(&c2_r0->fileTime2, "nameCaptureInfo",
      7, 0U, 0U, 0), "fileTime2", "nameCaptureInfo", c2_i15);
  }
  sf_mex_assign(&c2_nameCaptureInfo, c2_m0);
  return c2_nameCaptureInfo;
}

static void c2_info_helper(c2_ResolvedFunctionInfo c2_info[72])
{
  c2_info[0].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_assert_valid_size_arg.m/check_arg";
  c2_info[0].name = "true";
  c2_info[0].dominantType = "";
  c2_info[0].resolved = "[I]$matlabroot$/toolbox/eml/lib/matlab/elmat/true.m";
  c2_info[0].fileLength = 625U;
  c2_info[0].fileTime1 = 1163970786U;
  c2_info[0].fileTime2 = 0U;
  c2_info[1].context = "[I]$matlabroot$/toolbox/eml/lib/matlab/ops/colon.m";
  c2_info[1].name = "isreal";
  c2_info[1].dominantType = "double";
  c2_info[1].resolved = "[B]isreal";
  c2_info[1].fileLength = 0U;
  c2_info[1].fileTime1 = 0U;
  c2_info[1].fileTime2 = 0U;
  c2_info[2].context =
    "[I]$matlabroot$/toolbox/eml/lib/matlab/eml/eml_min_or_max.m";
  c2_info[2].name = "eml_scalexp_compatible";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -