#include "array_of_doubles_jaccard_shim.h"
#include "array_of_doubles_jaccard.rs.h"
namespace apache_datasketches_rs {
namespace {
using aod_jaccard = datasketches::jaccard_similarity_base<
datasketches::array_of_doubles_union,
aod_intersection,
datasketches::pair_extract_key<uint64_t, datasketches::array<double>>>;
TupleJaccardBoundsFfi to_ffi(const std::array<double, 3>& result) {
return TupleJaccardBoundsFfi{result[0], result[1], result[2]};
}
}
TupleJaccardBoundsFfi tuple_jaccard_sketch_sketch(const ArrayOfDoublesSketchShim& a, const ArrayOfDoublesSketchShim& b) {
return to_ffi(aod_jaccard::jaccard(a.inner(), b.inner()));
}
TupleJaccardBoundsFfi tuple_jaccard_sketch_compact(const ArrayOfDoublesSketchShim& a, const CompactArrayOfDoublesSketchShim& b) {
return to_ffi(aod_jaccard::jaccard(a.inner(), b.inner()));
}
TupleJaccardBoundsFfi tuple_jaccard_compact_sketch(const CompactArrayOfDoublesSketchShim& a, const ArrayOfDoublesSketchShim& b) {
return to_ffi(aod_jaccard::jaccard(a.inner(), b.inner()));
}
TupleJaccardBoundsFfi tuple_jaccard_compact_compact(const CompactArrayOfDoublesSketchShim& a, const CompactArrayOfDoublesSketchShim& b) {
return to_ffi(aod_jaccard::jaccard(a.inner(), b.inner()));
}
}