/*
 * This file declares all valid instantiations of the ATC C++ interface functions declared in atc.hpp and defined in atc.cpp.
 * It is separated from atc.cpp simply to keep that file more clean.
 *
 * Disclaimer: This file was automatically generated using tools/code_generator.py.
 * If you want to change this file as a part of a library modification, the aforementioned script should be changed and re-run instead.
 */

template Results compress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);

template Results decompress<uint8_t>(const std::string& compressed_file, size_t decompressed_size, uint8_t* decompressed_data, const Options& options);
template Results decompress<uint16_t>(const std::string& compressed_file, size_t decompressed_size, uint16_t* decompressed_data, const Options& options);
template Results decompress<uint32_t>(const std::string& compressed_file, size_t decompressed_size, uint32_t* decompressed_data, const Options& options);
template Results decompress<uint64_t>(const std::string& compressed_file, size_t decompressed_size, uint64_t* decompressed_data, const Options& options);
template Results decompress<int8_t>(const std::string& compressed_file, size_t decompressed_size, int8_t* decompressed_data, const Options& options);
template Results decompress<int16_t>(const std::string& compressed_file, size_t decompressed_size, int16_t* decompressed_data, const Options& options);
template Results decompress<int32_t>(const std::string& compressed_file, size_t decompressed_size, int32_t* decompressed_data, const Options& options);
template Results decompress<int64_t>(const std::string& compressed_file, size_t decompressed_size, int64_t* decompressed_data, const Options& options);
template Results decompress<float>(const std::string& compressed_file, size_t decompressed_size, float* decompressed_data, const Options& options);
template Results decompress<double>(const std::string& compressed_file, size_t decompressed_size, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> decompress<uint8_t>(const std::string& compressed_file, const Options& options);
template TypedResults<uint16_t> decompress<uint16_t>(const std::string& compressed_file, const Options& options);
template TypedResults<uint32_t> decompress<uint32_t>(const std::string& compressed_file, const Options& options);
template TypedResults<uint64_t> decompress<uint64_t>(const std::string& compressed_file, const Options& options);
template TypedResults<int8_t> decompress<int8_t>(const std::string& compressed_file, const Options& options);
template TypedResults<int16_t> decompress<int16_t>(const std::string& compressed_file, const Options& options);
template TypedResults<int32_t> decompress<int32_t>(const std::string& compressed_file, const Options& options);
template TypedResults<int64_t> decompress<int64_t>(const std::string& compressed_file, const Options& options);
template TypedResults<float> decompress<float>(const std::string& compressed_file, const Options& options);
template TypedResults<double> decompress<double>(const std::string& compressed_file, const Options& options);
template Results decompress<uint8_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, uint8_t* decompressed_data, const Options& options);
template Results decompress<uint16_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, uint16_t* decompressed_data, const Options& options);
template Results decompress<uint32_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, uint32_t* decompressed_data, const Options& options);
template Results decompress<uint64_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, uint64_t* decompressed_data, const Options& options);
template Results decompress<int8_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, int8_t* decompressed_data, const Options& options);
template Results decompress<int16_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, int16_t* decompressed_data, const Options& options);
template Results decompress<int32_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, int32_t* decompressed_data, const Options& options);
template Results decompress<int64_t>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, int64_t* decompressed_data, const Options& options);
template Results decompress<float>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, float* decompressed_data, const Options& options);
template Results decompress<double>(size_t compressed_size, const char* compressed_data, size_t decompressed_size, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> decompress<uint8_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<uint16_t> decompress<uint16_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<uint32_t> decompress<uint32_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<uint64_t> decompress<uint64_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<int8_t> decompress<int8_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<int16_t> decompress<int16_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<int32_t> decompress<int32_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<int64_t> decompress<int64_t>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<float> decompress<float>(size_t compressed_size, const char* compressed_data, const Options& options);
template TypedResults<double> decompress<double>(size_t compressed_size, const char* compressed_data, const Options& options);
template Results decompress<uint8_t>(const std::vector<char>& compressed_data, size_t decompressed_size, uint8_t* decompressed_data, const Options& options);
template Results decompress<uint16_t>(const std::vector<char>& compressed_data, size_t decompressed_size, uint16_t* decompressed_data, const Options& options);
template Results decompress<uint32_t>(const std::vector<char>& compressed_data, size_t decompressed_size, uint32_t* decompressed_data, const Options& options);
template Results decompress<uint64_t>(const std::vector<char>& compressed_data, size_t decompressed_size, uint64_t* decompressed_data, const Options& options);
template Results decompress<int8_t>(const std::vector<char>& compressed_data, size_t decompressed_size, int8_t* decompressed_data, const Options& options);
template Results decompress<int16_t>(const std::vector<char>& compressed_data, size_t decompressed_size, int16_t* decompressed_data, const Options& options);
template Results decompress<int32_t>(const std::vector<char>& compressed_data, size_t decompressed_size, int32_t* decompressed_data, const Options& options);
template Results decompress<int64_t>(const std::vector<char>& compressed_data, size_t decompressed_size, int64_t* decompressed_data, const Options& options);
template Results decompress<float>(const std::vector<char>& compressed_data, size_t decompressed_size, float* decompressed_data, const Options& options);
template Results decompress<double>(const std::vector<char>& compressed_data, size_t decompressed_size, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> decompress<uint8_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<uint16_t> decompress<uint16_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<uint32_t> decompress<uint32_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<uint64_t> decompress<uint64_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<int8_t> decompress<int8_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<int16_t> decompress<int16_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<int32_t> decompress<int32_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<int64_t> decompress<int64_t>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<float> decompress<float>(const std::vector<char>& compressed_data, const Options& options);
template TypedResults<double> decompress<double>(const std::vector<char>& compressed_data, const Options& options);

template Results compress_decompress<uint8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress<uint8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint16_t> compress_decompress<uint16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint32_t> compress_decompress<uint32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint64_t> compress_decompress<uint64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int8_t> compress_decompress<int8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int16_t> compress_decompress<int16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int32_t> compress_decompress<int32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int64_t> compress_decompress<int64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<float> compress_decompress<float>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<double> compress_decompress<double>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress<uint8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint16_t> compress_decompress<uint16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint32_t> compress_decompress<uint32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint64_t> compress_decompress<uint64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int8_t> compress_decompress<int8_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int16_t> compress_decompress<int16_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int32_t> compress_decompress<int32_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int64_t> compress_decompress<int64_t>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<float> compress_decompress<float>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<double> compress_decompress<double>(const std::string& original_file, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress_decompress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const uint8_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const uint16_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const uint32_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const uint64_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const int8_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const int16_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const int32_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const int64_t* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const float* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const double* original_data,  const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress_to_memory<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint16_t> compress_decompress_to_memory<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint32_t> compress_decompress_to_memory<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint64_t> compress_decompress_to_memory<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int8_t> compress_decompress_to_memory<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int16_t> compress_decompress_to_memory<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int32_t> compress_decompress_to_memory<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int64_t> compress_decompress_to_memory<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<float> compress_decompress_to_memory<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<double> compress_decompress_to_memory<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress<uint8_t>(const uint8_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint16_t> compress_decompress<uint16_t>(const uint16_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint32_t> compress_decompress<uint32_t>(const uint32_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint64_t> compress_decompress<uint64_t>(const uint64_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int8_t> compress_decompress<int8_t>(const int8_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int16_t> compress_decompress<int16_t>(const int16_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int32_t> compress_decompress<int32_t>(const int32_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int64_t> compress_decompress<int64_t>(const int64_t* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<float> compress_decompress<float>(const float* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<double> compress_decompress<double>(const double* original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template Results compress_decompress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress_to_memory<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint16_t> compress_decompress_to_memory<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint32_t> compress_decompress_to_memory<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<uint64_t> compress_decompress_to_memory<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int8_t> compress_decompress_to_memory<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int16_t> compress_decompress_to_memory<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int32_t> compress_decompress_to_memory<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<int64_t> compress_decompress_to_memory<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<float> compress_decompress_to_memory<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template TypedResults<double> compress_decompress_to_memory<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& compressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const std::string& decompressed_file, const Options& options);
template Results compress_decompress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, uint8_t* decompressed_data, const Options& options);
template Results compress_decompress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, uint16_t* decompressed_data, const Options& options);
template Results compress_decompress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, uint32_t* decompressed_data, const Options& options);
template Results compress_decompress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, uint64_t* decompressed_data, const Options& options);
template Results compress_decompress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, int8_t* decompressed_data, const Options& options);
template Results compress_decompress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, int16_t* decompressed_data, const Options& options);
template Results compress_decompress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, int32_t* decompressed_data, const Options& options);
template Results compress_decompress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, int64_t* decompressed_data, const Options& options);
template Results compress_decompress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, float* decompressed_data, const Options& options);
template Results compress_decompress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, double* decompressed_data, const Options& options);
template TypedResults<uint8_t> compress_decompress<uint8_t>(const std::vector<uint8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint16_t> compress_decompress<uint16_t>(const std::vector<uint16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint32_t> compress_decompress<uint32_t>(const std::vector<uint32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<uint64_t> compress_decompress<uint64_t>(const std::vector<uint64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int8_t> compress_decompress<int8_t>(const std::vector<int8_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int16_t> compress_decompress<int16_t>(const std::vector<int16_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int32_t> compress_decompress<int32_t>(const std::vector<int32_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<int64_t> compress_decompress<int64_t>(const std::vector<int64_t>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<float> compress_decompress<float>(const std::vector<float>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
template TypedResults<double> compress_decompress<double>(const std::vector<double>& original_data, const std::vector<size_t>& sizes, double target_error, const Options& options);
