csci5451/assignments/01/common.c

70 lines
1.4 KiB
C
Raw Normal View History

2023-09-23 05:04:06 +00:00
#define _POSIX_C_SOURCE 199309L
2023-10-08 00:49:58 +00:00
2023-09-23 05:04:06 +00:00
#include <stdio.h>
2023-10-06 06:21:15 +00:00
#include <stdlib.h>
2023-09-23 05:04:06 +00:00
#include "common.h"
/**
* @brief Output the seconds elapsed while execution.
*
* @param seconds Seconds spent on execution, excluding IO.
*/
void print_time(double const seconds) {
printf("Execution time: %0.04fs\n", seconds);
2023-10-06 06:21:15 +00:00
}
struct data *read_data(char *path) {
struct data *result = malloc(sizeof(struct data));
// Open file
FILE *file;
{
file = fopen(path, "r");
if (!file)
perror("failed to open file");
fscanf(file, "%u", &result->rows);
fscanf(file, "%u", &result->dimensions);
// Allocate
2023-10-08 00:49:58 +00:00
result->buf = malloc(result->dimensions * result->rows * sizeof(FLOAT));
2023-10-06 06:21:15 +00:00
// Read into buffer
2023-10-08 00:49:58 +00:00
for (uint32_t j = 0; j < result->rows; j++) {
for (uint32_t i = 0; i < result->dimensions; i++) {
fscanf(file, FLOAT_FORMAT, &result->buf[result->rows * i + j]);
}
2023-10-06 06:21:15 +00:00
}
fclose(file);
}
return result;
}
struct labels *read_labels(char *path) {
struct labels *result = malloc(sizeof(struct labels));
// Open file
FILE *file;
{
file = fopen(path, "r");
if (!file)
perror("failed to open file");
fscanf(file, "%u", &result->rows);
// Allocate
2023-10-08 00:49:58 +00:00
result->buf = malloc(result->rows * sizeof(FLOAT));
2023-10-06 06:21:15 +00:00
// Read into buffer
for (uint32_t i = 0; i < result->rows; i++) {
2023-10-08 00:49:58 +00:00
fscanf(file, FLOAT_FORMAT, &result->buf[i]);
2023-10-06 06:21:15 +00:00
}
fclose(file);
}
return result;
2023-09-23 05:04:06 +00:00
}