github.com/vc42/parquet-go@v0.0.0-20240320194221-1a9adb5f23f5/sparse/sparse.go (about)

     1  // Package sparse contains abstractions to help work on arrays of values in
     2  // sparse memory locations.
     3  //
     4  // Conversion between array types is supported when converting integers to a
     5  // lower size (e.g. int32 to int16, or uint64 to uint8), or converting from
     6  // signed integers to unsigned. Float types can also be converted to unsigned
     7  // integers of the same size, in which case the conversion is similar to using
     8  // the standard library's math.Float32bits and math.Float64bits functions.
     9  //
    10  // All array types can be converted to a generic Array type that can be used to erase
    11  // type information and bypass type conversion rules. This conversion is similar
    12  // to using Go's unsafe package to bypass Go's type system and should usually be
    13  // avoided and a sign that the application is attempting to break type safety
    14  // boundaries.
    15  //
    16  // The package provides Gather* functions which retrieve values from sparse
    17  // arrays into contiguous memory buffers. On platforms that support it, these
    18  // operations are implemented using SIMD gather instructions (e.g. VPGATHER on
    19  // Intel CPUs).
    20  package sparse