Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. #include <string.h>
  5. #include <math.h>
  6.  
  7. #include "hash.h"
  8. #include "bloom.h"
  9.  
  10. #define ELEM_LENGTH 4
  11. #define HASH_NUMBER 10
  12. #define CELL_NUMBER 1048576
  13.  
  14.  
  15. void insertElem(const uint8_t* elem)
  16. {
  17.     int i =1;
  18.  
  19.     k = HASH_NUMBER;
  20.  
  21.     while (i<=k)
  22.     {
  23.         filter[hashFunction(elem,i)] = 1;
  24.         i++;
  25.     }
  26. };
  27.  
  28. bool checkElem(const uint8_t* elem)
  29. {
  30.     int i=1;
  31.  
  32.     k = HASH_NUMBER;
  33.  
  34.     while (i<=k)
  35.     {
  36.         if (filter[hashFunction(elem,i)] == 0)
  37.         {
  38.             return false;
  39.         }
  40.         i++;
  41.     }
  42.  
  43.     return true;
  44. };
  45.  
  46. void buildFilter(const uint8_t** dataset)
  47. {
  48.  
  49.     int j=0;
  50.     m = CELL_NUMBER;
  51.  
  52.     filter = malloc(m * sizeof(bool));
  53.     for(;j<n;j++) {filter[j] = 0;}
  54.  
  55.     j = 0;
  56.  
  57.     for(; j< n; j++)
  58.     {
  59.        insertElem(dataset[j]);
  60.     }
  61. };
  62.  
  63. void selfCheck(const uint8_t** dataset, FILE* fout)
  64. {
  65.     int i = 0; // true positives
  66.  
  67.     for(int j=0; j < n; j++)
  68.     {
  69.  
  70.         if (checkElem(dataset[j]) == false)
  71.         {
  72.             exit(1);
  73.         }
  74.         else
  75.         {
  76.             i++;
  77.         }
  78.     }
  79.  
  80.     fprintf(fout,"True positives (self-check): %d\n", i);
  81. };
  82.  
  83. void nonElementsCheck(const uint8_t** dataset, FILE* fout)
  84. {
  85.     int i = 0; // False positives
  86.     int k = 0; // True negatives
  87.     int j;
  88.  
  89.     for(j=0; j < non_elements; j++)
  90.     {
  91.  
  92.         if (checkElem(dataset[j]) == false)
  93.         {
  94.             k++;
  95.         }
  96.         else
  97.         {
  98.             i++;
  99.         }
  100.     }
  101.  
  102.     double l = 0;   // tasso falsi positivi
  103.  
  104.     l = (double) i/non_elements;
  105.  
  106.     fprintf(fout,"True negatives: %d\n", k);
  107.  
  108.     fprintf(fout,"False positives: %d\n", i);
  109.  
  110.     fprintf(fout,"FPR: %.6f", l);
  111.  
  112. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement