#include "aliases.h" #include "argparser.h" #include "generator.h" #include "haversine.h" #include "point_types.h" #include #include #include #define EARTH_RADIUS_KM 6371.0 i32 main(i32 argc, char *argv[]) { ParseResult result = parse_args(argc, argv); if (result.status == PARSE_STATUS_FAILED) { return -1; } else if (result.status == PARSE_STATUS_HELP) { return 0; } srand(result.args.seed); PairArray arr = {result.args.count, NULL}; arr.pairs = (PointPair *)malloc(arr.count * sizeof(PointPair)); fill_pairs_array(&arr, result.args.clustered); write_pairs_to_json(arr, "pairs.json"); FILE *fp = fopen("count_and_distances", "w"); if (fp) { fwrite(&(arr.count), sizeof(arr.count), 1, fp); i64 sum = 0; for (u64 i = 0; i < arr.count; ++i) { f64 distance = haversine_of_degrees(arr.pairs[i], EARTH_RADIUS_KM); fwrite(&distance, sizeof(f64), 1, fp); sum += distance; } printf("%ld\n", sum / arr.count); fclose(fp); } free(arr.pairs); return 0; }