Ejemplo n.º 1
0
void b_mldivide(const real32_T A[16], const emxArray_real32_T *B,
                emxArray_real32_T *Y)
{
  int32_T i4;
  if (B->size[1] == 0) {
    i4 = Y->size[0] * Y->size[1];
    Y->size[0] = 4;
    Y->size[1] = 0;
    emxEnsureCapacity((emxArray__common *)Y, i4, (int32_T)sizeof(real32_T));
  } else {
    b_eml_lusolve(A, B, Y);
  }
}
Ejemplo n.º 2
0
void mldivide(const emlrtStack *sp, const emxArray_real_T *A, const
              emxArray_real_T *B, emxArray_real_T *Y)
{
  const mxArray *y;
  static const int32_T iv77[2] = { 1, 21 };

  const mxArray *m13;
  char_T cv74[21];
  int32_T i;
  static const char_T cv75[21] = { 'C', 'o', 'd', 'e', 'r', ':', 'M', 'A', 'T',
    'L', 'A', 'B', ':', 'd', 'i', 'm', 'a', 'g', 'r', 'e', 'e' };

  emxArray_real_T *b_B;
  emxArray_real_T *r17;
  uint32_T unnamed_idx_0;
  int32_T loop_ub;
  emlrtStack st;
  st.prev = sp;
  st.tls = sp->tls;
  emlrtHeapReferenceStackEnterFcnR2012b(sp);
  if (B->size[0] == A->size[0]) {
  } else {
    y = NULL;
    m13 = emlrtCreateCharArray(2, iv77);
    for (i = 0; i < 21; i++) {
      cv74[i] = cv75[i];
    }

    emlrtInitCharArrayR2013a(sp, 21, m13, cv74);
    emlrtAssign(&y, m13);
    st.site = &xf_emlrtRSI;
    error(&st, message(&st, y, &bb_emlrtMCI), &bb_emlrtMCI);
  }

  b_emxInit_real_T(sp, &b_B, 1, &tb_emlrtRTEI, true);
  b_emxInit_real_T(sp, &r17, 1, &tb_emlrtRTEI, true);
  if ((A->size[0] == 0) || (A->size[1] == 0) || (B->size[0] == 0)) {
    unnamed_idx_0 = (uint32_T)A->size[1];
    i = Y->size[0];
    Y->size[0] = (int32_T)unnamed_idx_0;
    emxEnsureCapacity(sp, (emxArray__common *)Y, i, (int32_T)sizeof(real_T),
                      &tb_emlrtRTEI);
    loop_ub = (int32_T)unnamed_idx_0;
    for (i = 0; i < loop_ub; i++) {
      Y->data[i] = 0.0;
    }
  } else if (A->size[0] == A->size[1]) {
    i = Y->size[0];
    Y->size[0] = B->size[0];
    emxEnsureCapacity(sp, (emxArray__common *)Y, i, (int32_T)sizeof(real_T),
                      &tb_emlrtRTEI);
    loop_ub = B->size[0];
    for (i = 0; i < loop_ub; i++) {
      Y->data[i] = B->data[i];
    }

    st.site = &xf_emlrtRSI;
    b_eml_lusolve(&st, A, Y);
  } else {
    i = b_B->size[0];
    b_B->size[0] = B->size[0];
    emxEnsureCapacity(sp, (emxArray__common *)b_B, i, (int32_T)sizeof(real_T),
                      &tb_emlrtRTEI);
    loop_ub = B->size[0];
    for (i = 0; i < loop_ub; i++) {
      b_B->data[i] = B->data[i];
    }

    st.site = &xf_emlrtRSI;
    c_eml_qrsolve(&st, A, b_B, r17);
    i = Y->size[0];
    Y->size[0] = r17->size[0];
    emxEnsureCapacity(sp, (emxArray__common *)Y, i, (int32_T)sizeof(real_T),
                      &tb_emlrtRTEI);
    loop_ub = r17->size[0];
    for (i = 0; i < loop_ub; i++) {
      Y->data[i] = r17->data[i];
    }
  }

  emxFree_real_T(&r17);
  emxFree_real_T(&b_B);
  emlrtHeapReferenceStackLeaveFcnR2012b(sp);
}