Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
97 lines (85 loc) · 2.94 KB

File metadata and controls

97 lines (85 loc) · 2.94 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdio.h>
#include <stdlib.h>
#include "zfp/array.h"
void print1(cfp_ptr1d p, size_t n)
{
size_t i;
const cfp_array1d_api _ = cfp.array1d;
for (i = 0; i < n; i++)
printf("%g\n", _.reference.get(_.pointer.ref_at(p, i)));
}
void print2(cfp_ptr2d p, size_t n)
{
const cfp_array2d_api _ = cfp.array2d;
while (n--) {
printf("%g\n", _.reference.get(_.pointer.ref(p)));
p = _.pointer.inc(p);
}
}
void print3(cfp_iter1d begin, cfp_iter1d end)
{
const cfp_array1d_api _ = cfp.array1d;
cfp_iter1d p;
for (p = begin; !_.iterator.eq(p, end); p = _.iterator.inc(p))
printf("%g\n", _.reference.get(_.iterator.ref(p)));
}
int main(void)
{
const cfp_array1d_api _1d = cfp.array1d;
const cfp_array2d_api _2d = cfp.array2d;
const cfp_array3d_api _3d = cfp.array3d;
cfp_array1d v;
cfp_iter1d it1;
cfp_array2d a;
cfp_iter2d it2;
cfp_ptr2d pb2;
cfp_ptr2d pe2;
cfp_array3d b;
cfp_iter3d it3;
cfp_ptr3d pb3;
cfp_ptr3d pe3;
size_t i, j, k;
/* some fun with 1D arrays */
v = _1d.ctor(10, 64.0, 0, 0);
/* initialize and print array of random values */
for (it1 = _1d.begin(v); !_1d.iterator.eq(it1, _1d.end(v)); it1 = _1d.iterator.inc(it1))
_1d.reference.set(_1d.iterator.ref(it1), rand());
printf("random array\n");
print1(_1d.ptr(v, 0), _1d.size(v));
printf("\n");
/* some fun with 2D arrays */
a = _2d.ctor(5, 7, 64.0, 0, 0);
/* print array indices visited in block-order traversal*/
printf("block order (x, y) indices\n");
for (it2 = _2d.begin(a); !_2d.iterator.eq(it2, _2d.end(a)); it2 = _2d.iterator.inc(it2)) {
i = _2d.iterator.i(it2);
j = _2d.iterator.j(it2);
printf("(%lu, %lu)\n", (unsigned long)i, (unsigned long)j);
_2d.reference.set(_2d.iterator.ref(it2), i + 10 * j);
}
printf("\n");
/* print array contents in row-major order */
printf("row-major order yx indices\n");
print2(_2d.ptr_flat(a, 0), _2d.size(a));
printf("\n");
/* pointer arithmetic */
pb2 = _2d.reference.ptr(_2d.iterator.ref(_2d.begin(a)));
pe2 = _2d.reference.ptr(_2d.iterator.ref(_2d.end(a)));
printf("%lu * %lu = %ld\n", (unsigned long)_2d.size_x(a), (unsigned long)_2d.size_y(a), (long)_2d.pointer.distance(pb2, pe2));
/* some fun with 3D arrays */
b = _3d.ctor(7, 2, 5, 64.0, 0, 0);
/* print array indices visited in block-order traversal */
printf("block order (x, y, z) indices\n");
for (it3 = _3d.begin(b); !_3d.iterator.eq(it3, _3d.end(b)); it3 = _3d.iterator.inc(it3)) {
i = _3d.iterator.i(it3);
j = _3d.iterator.j(it3);
k = _3d.iterator.k(it3);
printf("(%lu, %lu, %lu)\n", (unsigned long)i, (unsigned long)j, (unsigned long)k);
}
printf("\n");
/* pointer arithmetic */
pb3 = _3d.reference.ptr(_3d.iterator.ref(_3d.begin(b)));
pe3 = _3d.reference.ptr(_3d.iterator.ref(_3d.end(b)));
printf("%lu * %lu * %lu = %ld\n", (unsigned long)_3d.size_x(b), (unsigned long)_3d.size_y(b), (unsigned long)_3d.size_z(b), (long)_3d.pointer.distance(pb3, pe3));
return 0;
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.