casacore
Loading...
Searching...
No Matches
Classes | Functions | Variables
casacore::sisco Namespace Reference

Classes

struct  CompressorState
 
class  ConditionalQueue
 A queue with a limited size and the ability to query only specific values. More...
 
class  SiscoReader
 File interface for data stored in the generated model compression (Sisco) format. More...
 
class  SiscoWriter
 File interface for data stored in the generated model compression (Sisco) format. More...
 

Functions

void DifferenceCompress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Average2Compress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void LinearCompress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Linear3Compress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void QuadraticCompress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Quadratic4Compress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void CubicCompress1D (std::span< const BitFloat > input, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void DifferenceDecompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void Average2Decompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void LinearDecompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void Linear3Decompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void QuadraticDecompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void Quadratic4Decompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void CubicDecompress1D (std::span< const std::byte > mantissa_data, std::span< const std::byte > exponent_data, std::span< BitFloat > output)
 
void DirectCompress2D (std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void DifferenceCompress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Average2Compress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void LinearCompress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void LinearQuadraticCompress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Linear3Compress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void QuadraticCompress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Quadratic4Compress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void CubicCompress2D (CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void DirectDecompress2D (std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void DifferenceDecompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void Average2Decompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void LinearDecompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void LinearQuadraticDecompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void Linear3Decompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void QuadraticDecompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void Quadratic4Decompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
void CubicDecompress2D (CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
size_t DefaultThreadCount ()
 
void Compress1D (int level, std::span< const BitFloat > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Decompress1D (int level, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< BitFloat > row)
 
void Compress2D (int level, CompressorState &state, std::span< const float > row, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data)
 
void Decompress2D (int level, CompressorState &state, std::span< std::byte > mantissa_data, std::span< std::byte > exponent_data, std::span< float > row)
 
constexpr BitFloat PredictThreshold (const BitFloat &value)
 If the predicted value is approximately twice as large as the target value (based on its exponent only), predict zero instead as we're too far off.
 
constexpr BitFloat Predict (const BitFloat &previous, int8_t value_exponent)
 
constexpr BitFloat Residual (const BitFloat &previous, const BitFloat &value)
 
constexpr BitFloat Predict (const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 
constexpr BitFloat Residual (const BitFloat &previous2, const BitFloat &previous1, const BitFloat &value)
 
constexpr BitFloat AveragePredict (const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 
constexpr BitFloat Predict (const BitFloat &previous3, const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 
constexpr BitFloat LinearPredict (const BitFloat &previous3, const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 
constexpr BitFloat Predict (const BitFloat &previous4, const BitFloat &previous3, const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 
constexpr BitFloat QuadraticPredict (const BitFloat &previous4, const BitFloat &previous3, const BitFloat &previous2, const BitFloat &previous1, int8_t value_exponent)
 

Variables

constexpr size_t kCompressedMantissaSize
 
constexpr size_t kCompressedExponentSize
 

Function Documentation

◆ Average2Compress1D()

void casacore::sisco::Average2Compress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ Average2Compress2D()

void casacore::sisco::Average2Compress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ Average2Decompress1D()

void casacore::sisco::Average2Decompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ Average2Decompress2D()

void casacore::sisco::Average2Decompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ AveragePredict()

constexpr BitFloat casacore::sisco::AveragePredict ( const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

◆ Compress1D()

void casacore::sisco::Compress1D ( int  level,
std::span< const BitFloat row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)
inline

◆ Compress2D()

void casacore::sisco::Compress2D ( int  level,
CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)
inline

◆ CubicCompress1D()

void casacore::sisco::CubicCompress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ CubicCompress2D()

void casacore::sisco::CubicCompress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ CubicDecompress1D()

void casacore::sisco::CubicDecompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ CubicDecompress2D()

void casacore::sisco::CubicDecompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ Decompress1D()

void casacore::sisco::Decompress1D ( int  level,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< BitFloat row 
)
inline

◆ Decompress2D()

void casacore::sisco::Decompress2D ( int  level,
CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)
inline

◆ DefaultThreadCount()

size_t casacore::sisco::DefaultThreadCount ( )

◆ DifferenceCompress1D()

void casacore::sisco::DifferenceCompress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ DifferenceCompress2D()

void casacore::sisco::DifferenceCompress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ DifferenceDecompress1D()

void casacore::sisco::DifferenceDecompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ DifferenceDecompress2D()

void casacore::sisco::DifferenceDecompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ DirectCompress2D()

void casacore::sisco::DirectCompress2D ( std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ DirectDecompress2D()

void casacore::sisco::DirectDecompress2D ( std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ Linear3Compress1D()

void casacore::sisco::Linear3Compress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ Linear3Compress2D()

void casacore::sisco::Linear3Compress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ Linear3Decompress1D()

void casacore::sisco::Linear3Decompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ Linear3Decompress2D()

void casacore::sisco::Linear3Decompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ LinearCompress1D()

void casacore::sisco::LinearCompress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ LinearCompress2D()

void casacore::sisco::LinearCompress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ LinearDecompress1D()

void casacore::sisco::LinearDecompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ LinearDecompress2D()

void casacore::sisco::LinearDecompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ LinearPredict()

constexpr BitFloat casacore::sisco::LinearPredict ( const BitFloat previous3,
const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

We have to calculate: (-2 p3 + p2 + 4 p1) / 3 Note that sign of p3 was already flipped

Definition at line 420 of file Sisco.h.

References casacore::BitFloat::AllowsMath(), casacore::BitFloat::AllowsMath(), Predict(), and PredictThreshold().

◆ LinearQuadraticCompress2D()

void casacore::sisco::LinearQuadraticCompress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ LinearQuadraticDecompress2D()

void casacore::sisco::LinearQuadraticDecompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ Predict() [1/4]

constexpr BitFloat casacore::sisco::Predict ( const BitFloat previous,
int8_t  value_exponent 
)
inlineconstexpr

Shift predicted mantissa left to have same exponent

Shift predicted mantissa right to have same exponent

Definition at line 305 of file Sisco.h.

References casacore::BitFloat::AllowsMath(), casacore::BitFloat::Exponent(), casacore::BitFloat::Mantissa(), PredictThreshold(), and casacore::BitFloat::Sign().

Referenced by AveragePredict(), LinearPredict(), Predict(), Predict(), Predict(), QuadraticPredict(), Residual(), and Residual().

◆ Predict() [2/4]

constexpr BitFloat casacore::sisco::Predict ( const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

◆ Predict() [3/4]

constexpr BitFloat casacore::sisco::Predict ( const BitFloat previous3,
const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

We have to calculate: p1 + dp12 + (dp12 - dp23) = p1 + (p1 - p2) + (p1 - p2) - (p2 - p3) = 3p1 - 3p2 + p3

Definition at line 389 of file Sisco.h.

References casacore::BitFloat::AllowsMath(), casacore::BitFloat::AllowsMath(), Predict(), and PredictThreshold().

◆ Predict() [4/4]

constexpr BitFloat casacore::sisco::Predict ( const BitFloat previous4,
const BitFloat previous3,
const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

We have to calculate: p_next = -p4 + 4p3 - 6p2 + 4p1

Definition at line 451 of file Sisco.h.

References casacore::BitFloat::AllowsMath(), casacore::BitFloat::AllowsMath(), Predict(), and PredictThreshold().

◆ PredictThreshold()

constexpr BitFloat casacore::sisco::PredictThreshold ( const BitFloat value)
inlineconstexpr

If the predicted value is approximately twice as large as the target value (based on its exponent only), predict zero instead as we're too far off.

This function is tailored for the Predict functions, and expects value to be matched.

Definition at line 298 of file Sisco.h.

References casacore::value().

Referenced by AveragePredict(), LinearPredict(), Predict(), Predict(), Predict(), Predict(), and QuadraticPredict().

◆ Quadratic4Compress1D()

void casacore::sisco::Quadratic4Compress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ Quadratic4Compress2D()

void casacore::sisco::Quadratic4Compress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ Quadratic4Decompress1D()

void casacore::sisco::Quadratic4Decompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ Quadratic4Decompress2D()

void casacore::sisco::Quadratic4Decompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ QuadraticCompress1D()

void casacore::sisco::QuadraticCompress1D ( std::span< const BitFloat input,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress1D().

◆ QuadraticCompress2D()

void casacore::sisco::QuadraticCompress2D ( CompressorState state,
std::span< const float >  row,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data 
)

Referenced by Compress2D().

◆ QuadraticDecompress1D()

void casacore::sisco::QuadraticDecompress1D ( std::span< const std::byte >  mantissa_data,
std::span< const std::byte >  exponent_data,
std::span< BitFloat output 
)

Referenced by Decompress1D().

◆ QuadraticDecompress2D()

void casacore::sisco::QuadraticDecompress2D ( CompressorState state,
std::span< std::byte >  mantissa_data,
std::span< std::byte >  exponent_data,
std::span< float >  row 
)

Referenced by Decompress2D().

◆ QuadraticPredict()

constexpr BitFloat casacore::sisco::QuadraticPredict ( const BitFloat previous4,
const BitFloat previous3,
const BitFloat previous2,
const BitFloat previous1,
int8_t  value_exponent 
)
inlineconstexpr

We have to calculate: p_next = (3p4 - 5p3 - 3p2 + 9p1) / 4

Definition at line 488 of file Sisco.h.

References casacore::BitFloat::AllowsMath(), casacore::BitFloat::AllowsMath(), Predict(), and PredictThreshold().

◆ Residual() [1/2]

constexpr BitFloat casacore::sisco::Residual ( const BitFloat previous,
const BitFloat value 
)
inlineconstexpr

Definition at line 332 of file Sisco.h.

References Predict(), and casacore::value().

◆ Residual() [2/2]

constexpr BitFloat casacore::sisco::Residual ( const BitFloat previous2,
const BitFloat previous1,
const BitFloat value 
)
inlineconstexpr

Definition at line 360 of file Sisco.h.

References Predict(), and casacore::value().

Variable Documentation

◆ kCompressedExponentSize

constexpr size_t casacore::sisco::kCompressedExponentSize
constexpr

Definition at line 21 of file Sisco.h.

◆ kCompressedMantissaSize

constexpr size_t casacore::sisco::kCompressedMantissaSize
constexpr

Definition at line 20 of file Sisco.h.