コード例 #1
0
ファイル: matdiv.c プロジェクト: mohammadul/matrixlab
INT_VECTOR int_vec_div(INT_VECTOR A, INT_VECTOR B, INT_VECTOR result)
{
    int i, m;
    m = Int_VecLen(A);
    if(result==NULL) if((result = int_vec_creat(m, UNDEFINED))==NULL)
            int_vec_error(INT_VEC_MALLOC);
    if(m!=Int_VecLen(B)) gen_error(GEN_SIZEMISMATCH);
    #pragma omp parallel for
    for(i=0; i<m; ++i) result[i] = A[i]/B[i];
    return result;
}
コード例 #2
0
ファイル: matcreat.c プロジェクト: caomw/matrixlab
INT_VECTOR int_vec_fill(INT_VECTOR A, int val)
{
    int i, n;
    n = Int_VecLen(A);
    for(i=0; i<n; ++i) A[i] = val;
    return A;
}
コード例 #3
0
ファイル: matcreat.c プロジェクト: caomw/matrixlab
INT_VECTOR int_vec_copy(INT_VECTOR a, INT_VECTOR result)
{
    int i, m;
    m = Int_VecLen(a);
    if(result==NULL) if((result = int_vec_creat(m, UNDEFINED))==NULL) int_vec_error(INT_VEC_MALLOC);
    for(i=0; i<m; ++i) result[i] = a[i];
    return result;
}
コード例 #4
0
ファイル: matcreat.c プロジェクト: caomw/matrixlab
int int_vec_free(INT_VECTOR A)
{
    if(A==NULL) return 0;
    Int_VecLen(A) = 0;
    free(A-1);
    A = NULL;
    return 1;
}
コード例 #5
0
ファイル: matmisc.c プロジェクト: mohammadul/matrixlab
INT_VECTOR mat_get_sub_vector(INT_VECTOR a, INT_VECTOR indices)
{
    int i, n;
    INT_VECTOR subvec;
    n = Int_VecLen(indices);
    subvec = int_vec_creat(n, UNDEFINED);
    for(i=0; i<n; ++i)subvec[i] = a[indices[i]];
    return subvec;
}
コード例 #6
0
ファイル: matconcat.c プロジェクト: mohammadul/matrixlab
INT_VECTOR int_vec_concat(INT_VECTOR a, INT_VECTOR b, INT_VECTOR result)
{
    int i, m, n;
    m = Int_VecLen(a);
    n = Int_VecLen(b);
    if(result==NULL)
    {
        if((result = int_vec_creat(m+n, UNDEFINED))==NULL) return NULL;
    }
    else
    {
        if(Int_VecLen(result)!=(m+n)) return int_vec_error(INT_VEC_SIZEMISMATCH);
    }
    #pragma omp parallel for
    for(i=0; i<m; ++i) result[i] = a[i];
    #pragma omp parallel for
    for(i=0; i<n; ++i) result[i+m] = b[i];
    return result;
}
コード例 #7
0
ファイル: matdiv.c プロジェクト: mohammadul/matrixlab
INT_VECTOR int_vec_divs_inv(INT_VECTOR A, int s, INT_VECTOR result)
{
    int i, m;
    m = Int_VecLen(A);
    if(result==NULL) if((result = int_vec_creat(m, UNDEFINED))==NULL)
            int_vec_error(INT_VEC_MALLOC);
    #pragma omp parallel for
    for(i=0; i<m; ++i) result[i] = s/A[i];
    return result;
}
コード例 #8
0
ファイル: matcreat.c プロジェクト: caomw/matrixlab
INT_VECTOR int_vec_append(INT_VECTOR a, int i)
{
    int l;
    l = Int_VecLen(a);
    a--;
    if((a = (int *)realloc(a, sizeof(int)*(l+2)))==NULL) return int_vec_error(INT_VEC_MALLOC);
    a[0]= l+1;
    ++a;
    a[l] = i;
    return a;
}
コード例 #9
0
ファイル: matmisc.c プロジェクト: mohammadul/matrixlab
MATRIX mat_get_sub_matrix_from_cols(MATRIX A, INT_VECTOR indices, MATRIX result)
{
    int i, j, k, n;
    k = MatRow(A);
    n = Int_VecLen(indices);
    if(result==NULL) if((result = mat_creat(k, n, UNDEFINED))==NULL)
            return mat_error(MAT_MALLOC);
    for(i=0; i<n; ++i)
    {
        for(j=0; j<k; ++j) result[j][i] = A[j][indices[i]];
    }
    return result;
}
コード例 #10
0
ファイル: matcreat.c プロジェクト: caomw/matrixlab
INT_VECTOR int_vec_fill_type(INT_VECTOR A, int type)
{
    int i, n;
    n = Int_VecLen(A);
    switch(type)
    {
    case UNDEFINED:
        break;
    case ZERO_INT_VECTOR:
        for(i=0; i<n; ++i) A[i] = 0;
        break;
    case ONES_INT_VECTOR:
        for(i=0; i<n; ++i) A[i] = 1;
        break;
    case  SERIES_INT_VECTOR:
        for(i=0; i<n; ++i) A[i] = i;
        break;
    }
    return A;
}
コード例 #11
0
ファイル: matmisc.c プロジェクト: mohammadul/matrixlab
INT_VECTOR int_vec_unique(INT_VECTOR a)
{
    int i, l, uni_l = 0;
    mtype *ordered = NULL, **p_ordered;
    INT_VECTOR int_ordered = NULL;
    MAT_TREE s;
    p_ordered = &ordered;
    l = Int_VecLen(a);
    s = mat_bs_make_null();
    for (i = 0; i<l; ++i)
    {
        s = mat_bs_insert((mtype)a[i],s);
    }
    uni_l = mat_bs_inorder(s, uni_l, p_ordered);
    int_ordered = int_vec_creat(uni_l, UNDEFINED);
    for(i = 0; i< uni_l; ++i) int_ordered[i] = (int)ordered[i];
    free(ordered);
    s = mat_bs_free(s);
    return int_ordered;
}