1818 * I/O functions for fvecs, ivecs and xVecs
1919 *****************************************************/
2020
21+ #include < cstdint>
2122#include < random>
2223#include < sys/stat.h>
2324#include < sys/types.h>
2425#include < unistd.h>
2526
26- int fvec_fwrite (FILE * fo, const float * v, int d) {
27+ int fvec_fwrite (FILE * fo, const float * v, uint32_t d) {
2728 int ret;
28- ret = fwrite (&d, sizeof (int ), 1 , fo);
29+ ret = fwrite (&d, sizeof (uint32_t ), 1 , fo);
2930 if (ret != 1 ) {
3031 perror (" fvec_fwrite: write error 1" );
3132 return -1 ;
@@ -38,7 +39,7 @@ int fvec_fwrite(FILE* fo, const float* v, int d) {
3839 return 0 ;
3940}
4041
41- int fvecs_write (const char * fname, int d, int n, const float * vf) {
42+ int fvecs_write (const char * fname, uint32_t d, int n, const float * vf) {
4243 FILE * fo = fopen (fname, " w" );
4344 if (!fo) {
4445 perror (" fvecs_write: cannot open file" );
@@ -55,22 +56,22 @@ int fvecs_write(const char* fname, int d, int n, const float* vf) {
5556 return n;
5657}
5758
58- int ivec_iwrite (FILE * fo, const int * v, int d) {
59+ int ivec_iwrite (FILE * fo, const uint32_t * v, uint32_t d) {
5960 int ret;
60- ret = fwrite (&d, sizeof (int ), 1 , fo);
61+ ret = fwrite (&d, sizeof (uint32_t ), 1 , fo);
6162 if (ret != 1 ) {
62- perror (" fvec_fwrite : write error 1" );
63+ perror (" ivec_iwrite : write error 1" );
6364 return -1 ;
6465 }
65- ret = fwrite (v, sizeof (float ), d, fo);
66+ ret = fwrite (v, sizeof (uint32_t ), d, fo);
6667 if (ret != d) {
67- perror (" fvec_fwrite : write error 2" );
68+ perror (" ivec_iwrite : write error 2" );
6869 return -1 ;
6970 }
7071 return 0 ;
7172}
7273
73- int ivecs_write (const char * fname, int d, int n, const int * vf) {
74+ int ivecs_write (const char * fname, uint32_t d, int n, const uint32_t * vf) {
7475 FILE * fo = fopen (fname, " w" );
7576 if (!fo) {
7677 perror (" fvecs_write: cannot open file" );
@@ -93,7 +94,7 @@ void generate_random_data(size_t data_dim, size_t dataset_size, size_t query_siz
9394 std::default_random_engine generator;
9495 std::normal_distribution<float > dataset_dist (0 .0f , dataset_std);
9596 std::normal_distribution<float > query_dist (0 .0f , query_std);
96- std::uniform_int_distribution<> uni_dist (0 , dataset_size - 1 );
97+ std::uniform_int_distribution<uint32_t > uni_dist (0 , dataset_size - 1 );
9798
9899 generator.seed (100 );
99100 std::vector<float > dataset (dataset_size * data_dim);
@@ -102,9 +103,9 @@ void generate_random_data(size_t data_dim, size_t dataset_size, size_t query_siz
102103 }
103104
104105 std::vector<float > queries (query_size * data_dim);
105- std::vector<int > gt (query_size);
106+ std::vector<uint32_t > gt (query_size);
106107 for (size_t i = 0 ; i < query_size; ++i) {
107- int e = uni_dist (generator);
108+ uint32_t e = uni_dist (generator);
108109 for (size_t j = 0 ; j < data_dim; ++j) {
109110 queries[i * data_dim + j] = dataset[e * data_dim + j] + query_dist (generator);
110111 }
0 commit comments