68static const int size_of[6] = {4, 8, 8, 16, 4, 8};
71 int *ierr,
char* filename) {
76 const char sep[] =
"\t\n ,";
79 fd = fopen(filename,
"r");
87 buf = (
char *)malloc(buf_size *
sizeof(
char));
90 if ((*output_type) == TYPE_DOUBLE) {
93 while (fgets(buf, buf_size *
sizeof(
char),
fd) != NULL) {
97 d = strtod(c, (
char **)NULL);
98 memcpy(
f +
i, &d, size_of[(*output_type)]);
99 c = (
char *)strtok((
char *)NULL, sep);
100 i += size_of[(*output_type)];
113 int buf_size = 65536;
114 const char sep[] =
"\n\t ,";
116 int64_t curr_dims[3] = {0, 0, 0};
119 fd = fopen(filename,
"r");
127 buf = (
char *)malloc(buf_size *
sizeof(
char));
129 while (fgets(buf, buf_size *
sizeof(
char),
fd) != NULL) {
130 c = strtok(buf, sep);
132 prev_dims[0] = curr_dims[0];
139 c = (
char *)strtok((
char *)NULL, sep);
145 if (prev_dims[0] > 0 && curr_dims[0] > 0)
146 assert(curr_dims[0] == prev_dims[0]);
150 if (prev_dims[0] == 0 && curr_dims[0] != 0) {
151 prev_dims[1] = curr_dims[1];
157 if (prev_dims[1] > 0 && curr_dims[1] > 0)
158 assert(prev_dims[1] == curr_dims[1]);
163 if (curr_dims[0] > 0)
167 dims[0] = curr_dims[0];
168 dims[1] = curr_dims[1];
169 dims[2] = curr_dims[2];
171 if (dims[0]*dims[1]*dims[2] == 0) *ierr=1;
void * memcpy(void *__restrict __dest, const void *__restrict __src, size_t __n) __attribute__((__nothrow__
void read_csv(int64_t *np, void *f, int *output_type, int *ierr, char *filename)
int fclose(FILE *__stream)
void get_info_csv(int64_t *dims, int *ierr, char *filename)
static double f(double w, void *p)