1 ltfat_int L[] = { 9 , 10, 100, 101 }; 2 ltfat_int depth[] = { 1, 2, 3, 4, 5 }; 3 ltfat_int rLen[] = { 1, 2, 3, 4, 7, 8, 10, 19, 21}; 4 5 for (unsigned int lId = 0; lId < ARRAYLEN(L); lId++) 6 { 7 LTFAT_REAL* fin = LTFAT_NAME_REAL(malloc)(L[lId]); 8 TEST_NAME(fillRand)(fin, L[lId]); 9 10 for (unsigned int dId = 0; dId < ARRAYLEN(depth); dId++) 11 { 12 ltfat_int maxPos; 13 LTFAT_REAL max; 14 ltfat_int maxPos2; 15 LTFAT_REAL max2; 16 /* fin[L[lId]-1] = 100; */ 17 LTFAT_NAME(findmaxinarray)(fin, L[lId], &max, &maxPos); 18 printf("max=%.2f, maxPos=%td\n", max, maxPos); 19 20 LTFAT_NAME(maxtree)* p = NULL; 21 LTFAT_NAME(maxtree_initwitharray)(L[lId], depth[dId], fin, &p); 22 LTFAT_NAME(maxtree_findmax)(p, &max2, &maxPos2); 23 printf("max=%.2f, maxPos=%td\n", max2, maxPos2); 24 25 for (unsigned int idx = 0; idx < L[lId]; idx++) 26 { 27 for (unsigned int rIdx = 0; rIdx < ARRAYLEN(rLen); rIdx++) 28 { 29 30 max = -100; max2 = -101; maxPos = -1; maxPos2 = -1; 31 TEST_NAME(fillRand)(fin, L[lId]); 32 LTFAT_NAME(maxtree_reset)(p, fin); 33 34 for (unsigned int ii = 0; ii < rLen[rIdx]; ii++) 35 { 36 ltfat_int pos = idx + ii; 37 if (pos >= L[lId]) 38 pos = pos%L[lId]; 39 40 fin[pos] = 100 + ii; 41 } 42 43 LTFAT_NAME(findmaxinarray)(fin, L[lId], &max, &maxPos); 44 /* printf("max=%.2f, maxPos=%td\n",max,maxPos); */ 45 46 LTFAT_NAME(maxtree_setdirty)(p, idx, idx + rLen[rIdx]); 47 LTFAT_NAME(maxtree_findmax)(p, &max2, &maxPos2); 48 49 /* printf("max=%.2f, maxPos=%td\n",max2,maxPos2); */ 50 mu_assert( max == max2 && maxPos == maxPos2 , 51 "TREEMAX L=%td, d=%td, idx=%d, r=%td", 52 L[lId], depth[dId], idx, rLen[rIdx] ); 53 } 54 } 55 56 57 LTFAT_NAME(maxtree_done)(&p); 58 } 59 60 ltfat_free(fin); 61 } 62