add new sub functions def and rename old sub func to sub_minus in dimension and tensor reps

This commit is contained in:
2024-02-02 22:10:58 +01:00
parent 2313cd13d9
commit 70b1177e5f
6 changed files with 181 additions and 21 deletions
+18 -2
View File
@@ -19,7 +19,7 @@ create_dim(size_t sz){
return CREATE_PERMUTATION_TYPE_SIZE_T(sz);
}
dimension* sub_dim_head(dimension *root, size_t minusSubdim){
dimension* sub_minus_dim_head(dimension *root, size_t minusSubdim){
if(minusSubdim < (root->size)){
dimension *d = INIT_PERMUTATION_TYPE_SIZE_T(root->perm, (root->size)-minusSubdim);
updateRankDim(d);
@@ -27,7 +27,7 @@ dimension* sub_dim_head(dimension *root, size_t minusSubdim){
}
return NULL;
}
dimension* sub_dim_tail(dimension *root, size_t minusSubdim){
dimension* sub_minus_dim_tail(dimension *root, size_t minusSubdim){
if(minusSubdim < (root->size)){
dimension *d = INIT_PERMUTATION_TYPE_SIZE_T((root->perm)+minusSubdim, (root->size)-minusSubdim);
updateRankDim(d);
@@ -35,6 +35,22 @@ dimension* sub_dim_tail(dimension *root, size_t minusSubdim){
}
return NULL;
}
dimension* sub_dim_head(dimension *root, size_t subdim){
if(subdim < (root->size)){
dimension *d = INIT_PERMUTATION_TYPE_SIZE_T(root->perm, subdim);
updateRankDim(d);
return d;
}
return NULL;
}
dimension* sub_dim_tail(dimension *root, size_t subdim){
if(subdim < (root->size)){
dimension *d = INIT_PERMUTATION_TYPE_SIZE_T((root->perm)+(root->size - subdim), subdim);
updateRankDim(d);
return d;
}
return NULL;
}
void add_dimension(dimension **d, dimension *d0, dimension *d1) {
(*d) = create_dim(d0->size + d1->size);
//printf("d size : %ld\n",(*d)->size);
+4 -2
View File
@@ -10,8 +10,10 @@ typedef struct PERMUTATION_TYPE_SIZE_T dimension ;
dimension * create_dim(size_t size);
dimension* init_dim(size_t *t, size_t sz);
dimension* sub_dim_head(dimension *t, size_t minusSubdim);
dimension* sub_dim_tail(dimension *t, size_t minusSubdim);
dimension* sub_minus_dim_head(dimension *t, size_t minusSubdim);
dimension* sub_minus_dim_tail(dimension *t, size_t minusSubdim);
dimension* sub_dim_head(dimension *t, size_t subdim);
dimension* sub_dim_tail(dimension *t, size_t subdim);
void add_dimension(dimension **d, dimension *d0, dimension *d1);
void min_dimension(dimension **d, dimension *d0, dimension *d1);
+4 -4
View File
@@ -41,12 +41,12 @@ TEST(SubDim){
D->perm[2]=5;
D->perm[3]=6;
dimension *d_head2 = sub_dim_head(D,2);
dimension *d_head2 = sub_minus_dim_head(D,2);
EXPECT_EQ(d_head2->rank, 2*3);
dimension *d_tail2 = sub_dim_tail(D,2);
dimension *d_tail2 = sub_minus_dim_tail(D,2);
EXPECT_EQ(d_tail2->rank, 5*6);
}
@@ -59,12 +59,12 @@ TEST(SubDim){
D->perm[3]=6;
dimension *d_head2 = sub_dim_head(D,2);
dimension *d_head2 = sub_minus_dim_head(D,2);
EXPECT_EQ(d_head2->rank, 2*3);
dimension *d_tail2 = sub_dim_tail(D,2);
dimension *d_tail2 = sub_minus_dim_tail(D,2);
EXPECT_EQ(d_tail2->rank, 5*6);
}