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)