diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-08-09 15:22:32 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-08-09 15:22:32 +0200 |
commit | 6db56797ae56332504477ef4185ea3a53cc59c80 (patch) | |
tree | ba7ef8c2a4c607805db75487b73a0aa6685a08d7 /src | |
parent | 7e7ddf0fef3fc28f44b558bdaf73b992133c8635 (diff) | |
download | gnunet-6db56797ae56332504477ef4185ea3a53cc59c80.tar.gz gnunet-6db56797ae56332504477ef4185ea3a53cc59c80.zip |
-fix floating point logic
Diffstat (limited to 'src')
-rw-r--r-- | src/setu/gnunet-service-setu.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/setu/gnunet-service-setu.c b/src/setu/gnunet-service-setu.c index a65db418a..339d347f8 100644 --- a/src/setu/gnunet-service-setu.c +++ b/src/setu/gnunet-service-setu.c | |||
@@ -1119,15 +1119,16 @@ estimate_best_mode_of_operation (uint64_t avg_element_size, | |||
1119 | ibf_bucket_count = IBF_MIN_SIZE; | 1119 | ibf_bucket_count = IBF_MIN_SIZE; |
1120 | } | 1120 | } |
1121 | uint64_t ibf_message_count = ceil ( ((float) ibf_bucket_count) | 1121 | uint64_t ibf_message_count = ceil ( ((float) ibf_bucket_count) |
1122 | / MAX_BUCKETS_PER_MESSAGE); | 1122 | / ((float) MAX_BUCKETS_PER_MESSAGE)); |
1123 | 1123 | ||
1124 | uint64_t estimated_counter_size = ceil ( | 1124 | uint64_t estimated_counter_size = ceil ( |
1125 | MIN (2 * log2l ((float) local_set_size / ibf_bucket_count), log2l ( | 1125 | MIN (2 * log2l (((float) local_set_size) |
1126 | local_set_size))); | 1126 | / ((float) ibf_bucket_count)), |
1127 | log2l (local_set_size))); | ||
1127 | 1128 | ||
1128 | long double counter_bytes = (float) estimated_counter_size / 8; | 1129 | long double counter_bytes = (float) estimated_counter_size / 8; |
1129 | 1130 | ||
1130 | uint64_t ibf_bytes = ceil ((sizeof(struct IBFMessage) * ibf_message_count) | 1131 | uint64_t ibf_bytes = ceil ((sizeof (struct IBFMessage) * ibf_message_count) |
1131 | * 1.2 \ | 1132 | * 1.2 \ |
1132 | + (ibf_bucket_count * sizeof(struct IBF_Key)) * 1.2 \ | 1133 | + (ibf_bucket_count * sizeof(struct IBF_Key)) * 1.2 \ |
1133 | + (ibf_bucket_count * sizeof(struct IBF_KeyHash)) | 1134 | + (ibf_bucket_count * sizeof(struct IBF_KeyHash)) |
@@ -1135,18 +1136,18 @@ estimate_best_mode_of_operation (uint64_t avg_element_size, | |||
1135 | + (ibf_bucket_count * counter_bytes) * 1.2); | 1136 | + (ibf_bucket_count * counter_bytes) * 1.2); |
1136 | 1137 | ||
1137 | /* Estimate full byte count for differential sync */ | 1138 | /* Estimate full byte count for differential sync */ |
1138 | uint64_t element_size = (avg_element_size + sizeof(struct | 1139 | uint64_t element_size = (avg_element_size |
1139 | GNUNET_SETU_ElementMessage)) \ | 1140 | + sizeof (struct GNUNET_SETU_ElementMessage)) \ |
1140 | * estimated_total_diff; | 1141 | * estimated_total_diff; |
1141 | uint64_t done_size = sizeof_done_header; | 1142 | uint64_t done_size = sizeof_done_header; |
1142 | uint64_t inquery_size = (sizeof(struct IBF_Key) + sizeof(struct | 1143 | uint64_t inquery_size = (sizeof (struct IBF_Key) |
1143 | InquiryMessage)) | 1144 | + sizeof (struct InquiryMessage)) |
1144 | * estimated_total_diff; | 1145 | * estimated_total_diff; |
1145 | uint64_t demand_size = | 1146 | uint64_t demand_size = |
1146 | (sizeof(struct GNUNET_HashCode) + sizeof(struct GNUNET_MessageHeader)) | 1147 | (sizeof(struct GNUNET_HashCode) + sizeof(struct GNUNET_MessageHeader)) |
1147 | * estimated_total_diff; | 1148 | * estimated_total_diff; |
1148 | uint64_t offer_size = (sizeof(struct GNUNET_HashCode) + sizeof(struct | 1149 | uint64_t offer_size = (sizeof (struct GNUNET_HashCode) |
1149 | GNUNET_MessageHeader)) | 1150 | + sizeof (struct GNUNET_MessageHeader)) |
1150 | * estimated_total_diff; | 1151 | * estimated_total_diff; |
1151 | 1152 | ||
1152 | uint64_t total_bytes_diff = (element_size + done_size + inquery_size | 1153 | uint64_t total_bytes_diff = (element_size + done_size + inquery_size |
@@ -1183,12 +1184,13 @@ estimate_best_mode_of_operation (uint64_t avg_element_size, | |||
1183 | * @param allowed_phases | 1184 | * @param allowed_phases |
1184 | * @param size_phases | 1185 | * @param size_phases |
1185 | * @param op | 1186 | * @param op |
1186 | * @return GNUNET_YES if message permitted in phase and GNUNET_NO if not permitted in given | 1187 | * @return #GNUNET_YES if message permitted in phase and #GNUNET_NO if not permitted in given |
1187 | * phase | 1188 | * phase |
1188 | */ | 1189 | */ |
1189 | static int | 1190 | static enum GNUNET_GenericReturnValue |
1190 | check_valid_phase (const uint8_t allowed_phases[], size_t size_phases, struct | 1191 | check_valid_phase (const uint8_t allowed_phases[], |
1191 | Operation *op) | 1192 | size_t size_phases, |
1193 | struct Operation *op) | ||
1192 | { | 1194 | { |
1193 | /** | 1195 | /** |
1194 | * Iterate over allowed phases | 1196 | * Iterate over allowed phases |