asbytes(value)
Binary cast the specified value to a bytebuffer.
value
: An input value.A binary bytebuffer representing the value in binary form. The size of the buffer equals the binary size in memory of the input value.
>>> asbytes(float4(1..4))
# asbytes(float4(1..4))
out = bytebuffer([0, 0, 128, 63, 0, 0, 0, 64, 0, 0, 64, 64, 0, 0, 128, 64])
>>> asbytes(int(0x01020304))
# asbytes(int(16909060))
out = bytebuffer([4, 3, 2, 1])
>>> asbytes(1.5)
# asbytes(1.5)
out = bytebuffer([0, 0, 0, 0, 0, 0, 248, 63])
>>> asbytes(2.5f)
# asbytes(2.5f)
out = bytebuffer([0, 0, 32, 64])
asdouble(x)
Reinterprets a 64-bit value into a double.
x
: The input value.The input recast as a double.
>>> asdouble(1.5)
# asdouble(1.5)
out = 1.5
>>> aslong(1.5)
# aslong(1.5)
out = 4_609_434_218_613_702_656
>>> asdouble(out)
# asdouble(out)
out = 1.5
asfloat(x)
Reinterprets a 32-bit value into a float.
x
: The input value.The input recast as a float.
>>> asfloat(1.5f)
# asfloat(1.5f)
out = 1.5
>>> asint(1.5f)
# asint(1.5f)
out = 1_069_547_520
>>> asfloat(out)
# asfloat(out)
out = 1.5
asint(x)
Reinterprets an input value into a 32-bit int.
x
: The input value.The input recast as a 32-bit int.
>>> asint(1.5f)
# asint(1.5f)
out = 1_069_547_520
>>> asfloat(out)
# asfloat(out)
out = 1.5
aslong(x)
Reinterprets an input value to a 64-bit long.
x
: The input value.The input recast as a 64-bit long.
>>> aslong(1.5)
# aslong(1.5)
out = 4_609_434_218_613_702_656
>>> asdouble(out)
# asdouble(out)
out = 1.5
asuint(x)
Reinterprets an input value into a 32-bit uint.
x
: The input value.The input recast as a 32-bit uint.
>>> asuint(-1.5f)
# asuint(-1.5f)
out = 3_217_031_168
>>> asfloat(out)
# asfloat(out)
out = -1.5
asulong(x)
Reinterprets an input value to a 64-bit ulong.
x
: The input value.The input recast as a 64-bit ulong.
>>> asulong(-1.5)
# asulong(-1.5)
out = 13_832_806_255_468_478_464
>>> asdouble(out)
# asdouble(out)
out = -1.5
bitcast(type,value)
Binary cast of a value to a target type.
type
: The type to cast to.value
: The value to cast.The binary cast of the input value.
The supported types are byte
, sbyte
, short
, ushort
, int
, uint
, long
, ulong
, float
, double
, rgb
, rgba
and all vector and matrix types.
>>> bitcast(int, 1.5f)
# bitcast(int, 1.5f)
out = 1_069_547_520
>>> bitcast(float, out)
# bitcast(float, out)
out = 1.5
>>> bitcast(long, 2.5)
# bitcast(long, 2.5)
out = 4_612_811_918_334_230_528
>>> bitcast(double, out)
# bitcast(double, out)
out = 2.5
>>> asbytes(float4(1..4))
# asbytes(float4(1..4))
out = bytebuffer([0, 0, 128, 63, 0, 0, 0, 64, 0, 0, 64, 64, 0, 0, 128, 64])
>>> bitcast(float4, out)
# bitcast(float4, out)
out = float4(1, 2, 3, 4)
bytebuffer(values)
Creates a bytebuffer from the specified input.
values
: The input values.A bytebuffer from the specified input.
>>> bytebuffer
# bytebuffer
out = bytebuffer([])
>>> bytebuffer(0,1,2,3,4)
# bytebuffer(0, 1, 2, 3, 4)
out = bytebuffer([0, 1, 2, 3, 4])
>>> bytebuffer(float4(1))
# bytebuffer(float4(1))
out = bytebuffer([0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63])
>>> bytebuffer([1,2,3,4])
# bytebuffer([1,2,3,4])
out = bytebuffer([1, 2, 3, 4])
countbits(value)
Counts the number of bits (per component) of the input value.
value
: The input value.The number of bits (per component if the input is an int vector).
>>> for val in 0..7; countbits(val); end;
# for val in 0..7; countbits(val); end;
out = 0
out = 1
out = 1
out = 2
out = 1
out = 2
out = 2
out = 3
>>> countbits(int4(1,2,3,4))
# countbits(int4(1, 2, 3, 4))
out = int4(1, 1, 2, 1)
>>> countbits(bytebuffer(1..16))
# countbits(bytebuffer(1..16))
out = 33
firstbithigh(value)
Gets the location of the first set bit starting from the highest order bit and working downward, per component.
value
: The input value.The location of the first set bit.
If no bits are sets, this function will return -1.
>>> firstbithigh 128
# firstbithigh(128)
out = 24
>>> firstbithigh byte(128)
# firstbithigh(byte(128))
out = 0
>>> firstbithigh 0
# firstbithigh(0)
out = -1
>>> firstbithigh(int4(1, -1, 65536, 1 << 20))
# firstbithigh(int4(1, -1, 65536, 1 << 20))
out = int4(31, 0, 15, 11)
firstbitlow(value)
Returns the location of the first set bit starting from the lowest order bit and working upward, per component.
value
: The input value.The location of the first set bit.
If no bits are sets, this function will return -1.
>>> firstbitlow 128
# firstbitlow(128)
out = 7
>>> firstbitlow byte(128)
# firstbitlow(byte(128))
out = 7
>>> firstbitlow 0
# firstbitlow(0)
out = -1
>>> firstbitlow(int4(1, -1, 65536, 1 << 20))
# firstbitlow(int4(1, -1, 65536, 1 << 20))
out = int4(0, 0, 16, 20)
malloc(size)
Allocates a bytebuffer
of the specified size.
size
: Size of the bytebuffer.A bytebuffer of the specified size.
>>> buffer = malloc(16)
# buffer = malloc(16)
buffer = bytebuffer([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> buffer[0] = 5
>>> buffer
# buffer
out = bytebuffer([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
reversebits(value)
Reverses the order of the bits, per component
value
: The input value.The input value, with the bit order reversed
>>> reversebits 128
# reversebits(128)
out = 16_777_216
>>> reversebits out
# reversebits(out)
out = 128
>>> reversebits byte(128)
# reversebits(byte(128))
out = 1
>>> reversebits(out)
# reversebits(out)
out = 128
>>> reversebits(int4(1,2,3,4))
# reversebits(int4(1, 2, 3, 4))
out = int4(-2_147_483_648, 1_073_741_824, -1_073_741_824, 536_870_912)
>>> reversebits out
# reversebits(out)
out = int4(1, 2, 3, 4)