Пример #1
0
void outer_product_alloc_real_array(real_array_t* v1, real_array_t* v2, real_array_t* dest)
{
  size_t dim1,dim2;
  omc_assert_macro(base_array_ok(v1));
  dim1 = base_array_nr_of_elements(*v1);
  dim2 = base_array_nr_of_elements(*v2);
  alloc_real_array(dest,dim1,dim2);
  outer_product_real_array(v1,v2,dest);
}
Пример #2
0
void array_alloc_real_array(real_array_t* dest, int n, real_array_t* first,...)
{
    int i,j,c,m;
    va_list ap;

    real_array_t **elts = (real_array_t**)malloc(sizeof(real_array_t *) * n);
    assert(elts);
    /* collect all array ptrs to simplify traversal.*/
    va_start(ap,first);
    elts[0] = first;
    for (i = 1; i < n; ++i) {
        elts[i] = va_arg(ap, real_array_t*);
    }
    va_end(ap);

    check_base_array_dim_sizes((const base_array_t **)elts,n);

    if (first->ndims == 1) {
        alloc_real_array(dest,2,n,first->dim_size[0]);
    } else if (first->ndims == 2) {
        alloc_real_array(dest,3,n,first->dim_size[0],first->dim_size[1]);
    } else if (first->ndims == 3) {
        alloc_real_array(dest,4,n,first->dim_size[0],first->dim_size[1],
                         first->dim_size[2]);
    } else if (first->ndims == 4) {
        alloc_real_array(dest,5,n,first->dim_size[0],first->dim_size[1],
                         first->dim_size[2],first->dim_size[3]);
    } else {
        assert(0 && "Dimension size > 4 not impl. yet");
    }

    for (i = 0, c = 0; i < n; ++i) {
        m = base_array_nr_of_elements(elts[i]);
        for (j = 0; j < m; ++j) {
            real_set(dest, c, real_get(elts[i], j));
            c++;
        }
    }
    free(elts);
}
Пример #3
0
void diagonal_alloc_real_array(real_array_t* dest, int ndims, ...)
{
    size_t i;
    size_t j;
    va_list ap;

    alloc_real_array(dest,2,ndims,ndims);

    for(i = 0; i < (ndims * ndims); ++i) {
        real_set(dest, i, 0);
    }

    va_start(ap,ndims);
    j = 0;
    for(i = 0; i < ndims; ++i) {
        real_set(dest, j, va_arg(ap, modelica_real));
        j += ndims+1;
    }
    va_end(ap);
}
Пример #4
0
void identity_alloc_real_array(int n,real_array_t* dest)
{
    alloc_real_array(dest,2,n,n);
    identity_real_array(n,dest);
}
Пример #5
0
void cross_alloc_real_array(const real_array_t * x,const real_array_t * y, real_array_t* dest)
{
    alloc_real_array(dest,1,3);
    cross_real_array(x,y,dest);
}