double DistanceSet::get_average_time_per_coord() const { double sum = 0; int size = get_num_points(); int count = 0; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (i == j) { continue; } double di = get_point(i).get_euclidean_distance(get_point(j)); double time = durations[i][j]; if (di == 0) { continue; } sum += time / di; count++; } } return sum / count; }
double DistanceSet::get_average_time_per_meter() const { double sum = 0; int size = get_num_points(); int count = 0; for (int i = 0; i < size; i++) { for (int j = 0; j < i; j++) { if (i == j) { continue; } double di = distances[i][j]; double time = durations[i][j]; if (di == 0) { continue; } sum += time / di; count++; } } return sum / count; }
my_bool CRT_GAMAL_SUM_160_add(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) { // For each row, the current value is added to the sum EC_POINT **curR, **curS; int numCiphers; sum_state *state = (sum_state *) initid->ptr; size_t encodedLength = (size_t) args->lengths[0]; char *encoded = (char *) args->args[0]; if(check_encoding_size(encodedLength)) { strcpy(error, "Wrong Cipher Size"); return 1; } numCiphers = get_num_points(encodedLength); if(state->isFirst) { init_sum_state(state, numCiphers); } else { if(numCiphers!=state->numCiphers) { strcpy(error, "Number of ciphers missmatch"); return 1; } } if(decode_points(state->group, encoded, encodedLength, numCiphers, &curR, &curS)) { strcpy(error, "Error while decoding"); return 1; } add_points_up(state->group,state->curSumR, state->curSumS, state->curSumR, state->curSumS, curR, curS, state->numCiphers); free_points(curR, curS, numCiphers); return 0; }