casacore
Loading...
Searching...
No Matches
casacore::sisco Namespace Reference

Classes

class  ConditionalQueue
 A queue with a limited size and the ability to query only specific values. More...
struct  CompressorState
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()

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

Definition at line 369 of file Sisco.h.

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

◆ 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()

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(), 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]

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]

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

Definition at line 340 of file Sisco.h.

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

◆ Predict() [3/4]

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(), Predict(), and PredictThreshold().

◆ Predict() [4/4]

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(), Predict(), and PredictThreshold().

◆ PredictThreshold()

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::NewDelAllocator< T >::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()

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(), Predict(), and PredictThreshold().

◆ Residual() [1/2]

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

Definition at line 332 of file Sisco.h.

References casacore::NewDelAllocator< T >::value, and Predict().

◆ Residual() [2/2]

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

Definition at line 360 of file Sisco.h.

References casacore::NewDelAllocator< T >::value, and Predict().

Variable Documentation

◆ kCompressedExponentSize

size_t casacore::sisco::kCompressedExponentSize
constexpr

Definition at line 21 of file Sisco.h.

◆ kCompressedMantissaSize

size_t casacore::sisco::kCompressedMantissaSize
constexpr

Definition at line 20 of file Sisco.h.