#define DEBUG_LOG_WRITE_STRING_LIST_TO_FILE 0 #define DEBUG_LOG_WRITE_ARRAY_BINARY 0 function void write_array_binary_F64(String8 path_to_file, F64 *values, U32 array_size) { OS_Handle file_handle = OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, path_to_file); { ArenaTemp scratch = scratch_get(0, 0); String8List list = {0}; String8 temp = {0}; temp.str = (U8 *)values; temp.size = sizeof(F64) * array_size; str8_list_push(scratch.arena, &list, temp); OS_file_write(scratch.arena, file_handle, 0, list, 0); #if DEBUG_LOG_WRITE_ARRAY_BINARY String8List log_list = {0}; str8_list_push(scratch.arena, &log_list, str8_lit("Wrote binary array data to")); str8_list_push(scratch.arena, &log_list, path_to_file); StringJoin join = {0}; join.sep = str8_lit(" "); join.post = str8_lit("\n"); String8 log_msg = str8_list_join(scratch.arena, log_list, &join); LOG(log_msg.str); #endif scratch_release(scratch); } OS_file_close(file_handle); } function void write_string_list_to_file(Arena *arena, String8 path, String8List *list) { OS_Handle file_handle = OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, path); OS_file_write(arena, file_handle, 0, *list, 0); #if DEBUG_WRITE_STRING_LIST_TO_FILE String8List log_list = {0}; str8_list_push(arena, &log_list, str8_lit("Wrote array to")); str8_list_push(arena, &log_list, path); StringJoin join = {0}; join.sep = str8_lit(" "); join.post = str8_lit("\n"); String8 log_msg = str8_list_join(arena, log_list, &join); LOG(log_msg.str); #endif OS_file_close(file_handle); } function void write_array_F64(String8 path_to_file, F64 *values, U32 array_size, char *fmt) { ArenaTemp scratch = scratch_get(0, 0); String8List list = {0}; for (U32 i = 0; i < array_size; i++) { str8_list_pushf(scratch.arena, &list, fmt, values[i]); } write_string_list_to_file(scratch.arena, path_to_file, &list); scratch_release(scratch); } function String8 get_eigenvector_filename(Arena *arena, U32 energy_idx, U32 angular_momentum_idx) { String8 out = str8_pushf(arena, "E:\\dev\\hf_again\\out\\eigvec_n%i_l%i.dat", energy_idx, angular_momentum_idx); return out; }