Math
Module
Defines math utilities.
abs
abs(x: Int) -> Int
Absolute value of an integer.
Args:
- x (
Int
): Value to take the absolute value of.
Returns:
The absolute value of x.
abs[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise absolute value on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform absolute value on.
Returns:
The elementwise absolute value of x.
acos
acos[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the acos
of the inputs.
Constraints:
The input must be a floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The acos
of the input.
acosh
acosh[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the acosh
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The acosh
of the input.
add
add[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise addition of two SIMD vectors.
Parameters:
- simd_width (
Int
): Width of the input SIMD vectors. - type (
DType
): DType of the input SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to add. - y (
SIMD[type, simd_width]
): Second SIMD vector to add.
Returns:
Elementwise addition of x and y.
align_down
align_down(value: Int, alignment: Int) -> Int
Return the closest multiple of alignment that is less than or equal to value.
Constraints:
Will raise an exception if the alignment is zero.
Args:
- value (
Int
): The value to align. - alignment (
Int
): Value to align to.
Returns:
Closest multiple of the alignment that is less than or equal to the input value. In other words, floor(value / alignment) * alignment.
align_up
align_up(value: Int, alignment: Int) -> Int
Return the closest multiple of alignment that is greater than or equal to value.
Constraints:
Will raise an exception if the alignment is zero.
Args:
- value (
Int
): The value to align. - alignment (
Int
): Value to align to.
Returns:
Closest multiple of the alignment that is greater than or equal to the input value. In other words, ceiling(value / alignment) * alignment.
all_true
all_true[simd_width: Int](val: SIMD[bool, simd_width]) -> Bool
Returns True if all elements in the SIMD vector are True and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector.
Args:
- val (
SIMD[bool, simd_width]
): The SIMD vector to reduce.
Returns:
True if all values in the SIMD vector are True and False otherwise.
any_true
any_true[simd_width: Int](val: SIMD[bool, simd_width]) -> Bool
Returns True if any elements in the SIMD vector is True and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector.
Args:
- val (
SIMD[bool, simd_width]
): The SIMD vector to reduce.
Returns:
True if any values in the SIMD vector is True and False otherwise.
asin
asin[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the asin
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The asin
of the input.
asinh
asinh[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the asinh
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The asinh
of the input.
atan
atan[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the atan
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The atan
of the input.
atan2
atan2[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the atan2
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The atan2
of the inputs.
atanh
atanh[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the atanh
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The atanh
of the input.
cbrt
cbrt[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the cbrt
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The cbrt
of the input.
ceil
ceil[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise ceiling on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform ceiling on.
Returns:
The elementwise ceiling of x.
clamp
clamp[simd_width: Int, type: DType](x: SIMD[type, simd_width], lower_bound: SIMD[type, simd_width], upper_bound: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Clamp the values in a SIMD vector to be in a certain range.
Clamp cuts values in the input SIMD vector off at the upper bound and lower bound values. For example, SIMD vector [0, 1, 2, 3]
clamped to a lower bound of 1 and an upper bound of 2 would return [1, 1, 2, 2]
.
Parameters:
- simd_width (
Int
): Width of the input SIMD vectors. - type (
DType
): DType of the input SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform the clamp operation on. - lower_bound (
SIMD[type, simd_width]
): Minimum of the range to clamp to. - upper_bound (
SIMD[type, simd_width]
): Maximum of the range to clamp to.
Returns:
A new SIMD vector containing x clamped to be within lower_bound and upper_bound.
copysign
copysign[simd_width: Int, type: DType](magnitude: SIMD[type, simd_width], sign: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Returns a value with the magnitude of the first operand and the sign of the second operand.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- magnitude (
SIMD[type, simd_width]
): The magnitude to use. - sign (
SIMD[type, simd_width]
): The sign to copy.
Returns:
Copies the sign from sign to magnitude.
cos
cos[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the cos
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The cos
of the input.
cosh
cosh[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the cosh
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The cosh
of the input.
div
div[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise division of two SIMD vectors.
Parameters:
- simd_width (
Int
): Width of the input SIMD vectors. - type (
DType
): DType of the input SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector containing the dividends. - y (
SIMD[type, simd_width]
): SIMD vector containing the quotients.
Returns:
Elementwise division of SIMD vector x by SIMD vector y (this is x / y).
div_ceil
div_ceil(numerator: Int, denominator: Int) -> Int
Divide an integer by another integer, and round up to the nearest integer.
Constraints:
Will raise an exception if denominator is zero.
Args:
- numerator (
Int
): The numerator. - denominator (
Int
): The denominator.
Returns:
The ceiling of numerator divided by denominator.
equal
equal[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are equal to values in y.
An element of the result SIMD vector will be True if the corresponding element in x is equal to the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is equal to the corresponding element in y, otherwise False.
erf
erf[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Perform the elementwise Erf on a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform elementwise Erf on.
Returns:
The result of the elementwise Erf operation.
erfc
erfc[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the erfc
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The erfc
of the input.
exp
exp[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Calculate elementwise e^{X_i}
, where X_i
is an element in the input SIMD vector at position i
.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): The input SIMD vector.
Returns:
A SIMD vector containing e
raised to the power Xi
where Xi
is an element in the input SIMD vector.
exp2
exp2[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes elementwise 2 raised to the power of n, where n is an element of the input SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform exp2 on.
Returns:
Vector containing \(2^n\) computed elementwise, where n is an element in the input SIMD vector.
expm1
expm1[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the expm1
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The expm1
of the input.
factorial
factorial(n: Int) -> Int
Compute the factorial of the integer.
Args:
- n (
Int
): The input value.
Returns:
The factorial of the input.
floor
floor[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise floor on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform floor on.
Returns:
The elementwise floor of x.
fma
fma(a: Int, b: Int, c: Int) -> Int
Perform fma
(fused multiply-add) on the inputs.
The result is (a * b) + c
.
Args:
- a (
Int
): The first input. - b (
Int
): The second input. - c (
Int
): The third input.
Returns:
(a * b) + c
.
fma[simd_width: Int, type: DType](a: SIMD[type, simd_width], b: SIMD[type, simd_width], c: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Perform elementwise fma
(fused multiply-add) on the inputs.
Each element in the result SIMD vector is \((A_i * B_i) + C_i\), where \(A_i\), \(B_i\) and \(C_i\) are elements at index \(i\) in a, b, and c respectively.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- a (
SIMD[type, simd_width]
): The first vector of inputs. - b (
SIMD[type, simd_width]
): The second vector of inputs. - c (
SIMD[type, simd_width]
): The third vector of inputs.
Returns:
Elementwise fma
of a, b and c.
frexp
frexp[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> StaticTuple[2, SIMD[type, simd_width]]
Break floating point values into a fractional part and an exponent part.
Constraints:
type
must be a floating point value.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): The input values.
Returns:
A tuple of two SIMD vectors containing the fractional and exponent parts of the input floating point values.
gcd
gcd(a: Int, b: Int) -> Int
Compute the greatest common divisor of two integers.
Constraints:
The inputs must be non-negative integers.
Args:
- a (
Int
): The first input argument. - b (
Int
): The second input argument.
Returns:
The gcd
of the inputs.
greater
greater[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are greater than values in y.
An element of the result SIMD vector will be True if the corresponding element in x is greater than the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is greater than the corresponding element in y, otherwise False.
greater_equal
greater_equal[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are greater than or equal to values in y.
An element of the result SIMD vector will be True if the corresponding element in x is greater than or equal to the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is greater than or equal to the corresponding element in y, otherwise False.
hypot
hypot[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the hypot
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The hypot
of the inputs.
identity
identity[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Identity of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): The SIMD vector to take identity of.
Returns:
Identity of x, which is x.
iota
iota[simd_width: Int, type: DType]() -> SIMD[type, simd_width]
Create a SIMD vector containing an increasing sequence, starting from 0.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Returns:
An increasing sequence of values, starting from 0.
iota[simd_width: Int, type: DType](offset: SIMD[type, 1]) -> SIMD[type, simd_width]
Create a SIMD vector containing an increasing sequence, starting from offset.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- offset (
SIMD[type, 1]
): The value to start the sequence at. Default is zero.
Returns:
An increasing sequence of values, starting from offset.
is_even
is_even(val: Int) -> Bool
Elementwise check of whether an integer value is even.
Args:
- val (
Int
): The int value to check.
Returns:
True if the input is even and False otherwise.
is_even[simd_width: Int, type: DType](val: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether SIMD vector contains even values.
An element of the result SIMD vector will be True if the value is even, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- val (
SIMD[type, simd_width]
): The SIMD vector to check.
Returns:
A SIMD vector containing True if the corresponding element in val is even, otherwise False.
is_odd
is_odd(val: Int) -> Bool
Elementwise check of whether an integer value is odd.
Args:
- val (
Int
): The int value to check.
Returns:
True if the input is odd and False otherwise.
is_odd[simd_width: Int, type: DType](val: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether SIMD vector contains odd values.
An element of the result SIMD vector will be True if the value is odd, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- val (
SIMD[type, simd_width]
): The SIMD vector to check.
Returns:
A SIMD vector containing True if the corresponding element in val is odd, otherwise False.
is_power_of_2
is_power_of_2[simd_width: Int, type: DType](val: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether SIMD vector contains integer powers of two.
An element of the result SIMD vector will be True if the value is an integer power of two, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- val (
SIMD[type, simd_width]
): The SIMD vector to perform is_power_of_2 on.
Returns:
A SIMD vector containing True if the corresponding element in val is a power of two, otherwise False.
is_power_of_2(val: Int) -> Bool
Check whether an integer is a power of two.
Args:
- val (
Int
): The integer to check.
Returns:
True if val is a power of two, otherwise False.
isclose
isclose[simd_width: Int, type: DType](a: SIMD[type, simd_width], b: SIMD[type, simd_width], absolute_tolerance: SIMD[type, 1], relative_tolerance: SIMD[type, 1]) -> SIMD[bool, simd_width]
Checks if the two input values are numerically within a tolerance.
When the type is integral, then equality is checked. When the type is floating point, then this checks if the two input values are numerically the close using the \(abs(a - b) <= max(rtol * max(abs(a), abs(b)), atol)\) formula.
Unlike Pythons’s math.isclose
, this implementation is symmetric. I.e. isclose(a,b) == isclose(b,a)
.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- a (
SIMD[type, simd_width]
): The first value to compare. - b (
SIMD[type, simd_width]
): The second value to compare. - absolute_tolerance (
SIMD[type, 1]
): The absolute tolerance. - relative_tolerance (
SIMD[type, 1]
): The relative tolerance.
Returns:
A boolean vector where a and b are equal within the specified tolerance.
isclose[simd_width: Int, type: DType](a: SIMD[type, simd_width], b: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Checks if the two input values are numerically within tolerance, with atol=1e-08 and rtol=1e-05.
When the type is integral, then equality is checked. When the type is floating point, then this checks if the two input values are numerically the close using the abs(a - b) <= max(rtol * max(abs(a), abs(b)), atol) formula. The default absolute and relative tolerances are picked from the numpy default values.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- a (
SIMD[type, simd_width]
): The first value to compare. - b (
SIMD[type, simd_width]
): The second value to compare.
Returns:
A boolean vector where a and b are equal within tolerance, with atol=1e-08 and rtol=1e-05.
j0
j0[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the j0
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The j0
of the input.
j1
j1[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the j1
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The j1
of the input.
lcm
lcm(a: Int, b: Int) -> Int
Compute the least common divisor of two integers.
Constraints:
The inputs must be non-negative integers.
Args:
- a (
Int
): The first input argument. - b (
Int
): The second input argument.
Returns:
The lcm
of the inputs.
ldexp
ldexp[simd_width: Int, type: DType](x: SIMD[type, simd_width], exp: SIMD[si32, simd_width]) -> SIMD[type, simd_width]
Compute elementwise ldexp function.
The ldexp function multiplies a floating point value x by the number 2 raised to the exp power. I.e. \(ldexp(x,exp)\) calculate the value of \(x * 2^{exp}\) and is used within the \(erf\) function.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector of floating point values. - exp (
SIMD[si32, simd_width]
): SIMD vector containing the exponents.
Returns:
Vector containing elementwise result of ldexp on x and exp.
less
less[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are less than values in y.
An element of the result SIMD vector will be True if the corresponding element in x is less than the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is less than the corresponding element in y, otherwise False.
less_equal
less_equal[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are less than or equal to values in y.
An element of the result SIMD vector will be True if the corresponding element in x is less than or equal to the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is less than or equal to the corresponding element in y, otherwise False.
lgamma
lgamma[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the lgamma
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The lgamma
of the input.
log
log[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise log (base 10) of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): Vector to perform logarithm operation on.
Returns:
Vector containing result of performing log base 10 on x.
log10
log10[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the log10
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The log10
of the input.
log1p
log1p[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the log1p
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The log1p
of the input.
log2
log2[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise log (base 2) of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): Vector to perform logarithm operation on.
Returns:
Vector containing result of performing log base 2 on x.
logb
logb[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the logb
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The logb
of the input.
max
max(x: Int, y: Int) -> Int
Maximum of two integers.
Args:
- x (
Int
): Integer input to max. - y (
Int
): Integer input to max.
Returns:
Maximum of x and y.
max[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise maximum of x and y.
An element of the result SIMD vector will be the maximum of the corresponding elements in x and y.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector. - y (
SIMD[type, simd_width]
): Second SIMD vector.
Returns:
A SIMD vector containing the elementwise maximum of x and y.
min
min(x: Int, y: Int) -> Int
Minimum of two integers.
Args:
- x (
Int
): Integer input to max. - y (
Int
): Integer input to max.
Returns:
Minimum of x and y.
min[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise minimum of x and y.
An element of the result SIMD vector will be the minimum of the corresponding elements in x and y.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector. - y (
SIMD[type, simd_width]
): Second SIMD vector.
Returns:
A SIMD vector containing the elementwise minimum of x and y.
mul
mul[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise multiplication of two SIMD vectors.
Parameters:
- simd_width (
Int
): Width of the input SIMD vectors. - type (
DType
): DType of the input SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to multiply. - y (
SIMD[type, simd_width]
): Second SIMD vector to multiply.
Returns:
Elementwise multiplication of x and y.
nearbyint
nearbyint[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the nearbyint
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The nearbyint
of the input.
nextafter
nextafter[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the nextafter
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The nextafter
of the inputs.
none_true
none_true[simd_width: Int](val: SIMD[bool, simd_width]) -> Bool
Returns True if all element in the SIMD vector are False and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector.
Args:
- val (
SIMD[bool, simd_width]
): The SIMD vector to reduce.
Returns:
True if all values in the SIMD vector are False and False otherwise.
not_equal
not_equal[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[bool, simd_width]
Elementwise check of whether values in x are not equal to values in y.
An element of the result SIMD vector will be True if the corresponding element in x is not equal to the corresponding element in y, and False otherwise.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): First SIMD vector to compare. - y (
SIMD[type, simd_width]
): Second SIMD vector to compare.
Returns:
A SIMD vector containing True if the corresponding element in x is not equal to the corresponding element in y, otherwise False.
pow
pow[simd_width: Int, lhs_type: DType, rhs_type: DType](lhs: SIMD[lhs_type, simd_width], rhs: SIMD[rhs_type, simd_width]) -> SIMD[lhs_type, simd_width]
Computes elementwise power of a floating point type raised to another floating point type.
An element of the result SIMD vector will be the result of raising the corresponding element of lhs to the corresponding element of rhs.
Constraints:
rhs_type
and lhs_type
must be the same, and must be floating point types.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vectors. - lhs_type (
DType
): The dtype of the lhs SIMD vector. - rhs_type (
DType
): The dtype of the rhs SIMD vector.
Args:
- lhs (
SIMD[lhs_type, simd_width]
): Base of the power operation. - rhs (
SIMD[rhs_type, simd_width]
): Exponent of the power operation.
Returns:
A SIMD vector containing elementwise lhs raised to the power of rhs.
pow[simd_width: Int, lhs_type: DType, rhs_type: DType](lhs: SIMD[lhs_type, simd_width], rhs: SIMD[rhs_type, simd_width]) -> SIMD[lhs_type, simd_width]
Computes the elementwise power where the exponent is an integer.
Constraints:
rhs_type
must be an integral type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vectors. - lhs_type (
DType
): The dtype of the lhs SIMD vector. - rhs_type (
DType
): The dtype of the rhs SIMD vector.
Args:
- lhs (
SIMD[lhs_type, simd_width]
): Base of the power operation. - rhs (
SIMD[rhs_type, simd_width]
): Exponent of the power operation.
Returns:
A SIMD vector containing elementwise lhs raised to the power of rhs.
pow[simd_width: Int, lhs_type: DType, rhs_type: DType](lhs: SIMD[lhs_type, simd_width], rhs: SIMD[rhs_type, simd_width]) -> SIMD[lhs_type, simd_width]
Elementwise power of an integer raised to a floating point type. This implementation of pow is unsupported.
Constraints:
rhs_type
must be a floating point type, while lhs_type
must be an integral type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vectors. - lhs_type (
DType
): The dtype of the lhs SIMD vector. - rhs_type (
DType
): The dtype of the rhs SIMD vector.
Args:
- lhs (
SIMD[lhs_type, simd_width]
): Base of the power operation. - rhs (
SIMD[rhs_type, simd_width]
): Exponent of the power operation.
Returns:
A SIMD vector containing elementwise lhs raised to the power of rhs.
pow[n: Int, type: DType, simd_width: Int](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the elementwise power where the exponent is an integer known at compile time.
Constraints:
n
must be a signed si32
type.
Parameters:
- n (
Int
): Exponent of the power operation. - type (
DType
): The dtype of the x SIMD vector. - simd_width (
Int
): The width of the input and output SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): Base of the power operation.
Returns:
A SIMD vector containing elementwise x raised to the power of n.
pow[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the pow
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The pow
of the inputs.
pow[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: Int) -> SIMD[type, simd_width]
Computes the pow
of the inputs.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
Int
): The second input argument.
Returns:
The pow
of the inputs.
reciprocal
reciprocal[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Take the elementwise reciprocal of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): The SIMD vector to perform elementwise reciprocal on.
Returns:
A SIMD vector the elementwise reciprocal of x.
reduce_bit_count
reduce_bit_count[simd_width: Int, type: DType](val: SIMD[type, simd_width]) -> Int
Return scalar containing total number of bits set in given vector.
Constraints:
The input must be either integral or boolean type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input SIMD vector.
Args:
- val (
SIMD[type, simd_width]
): The SIMD vector to reduce.
Returns:
Count of set bits across all elements of the vector.
remainder
remainder[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the remainder
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The remainder
of the inputs.
rint
rint[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the rint
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The rint
of the input.
round
round[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the round
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The round
of the input.
rsqrt
rsqrt[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise reciprocal square root on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform reciprocal square root on.
Returns:
The elementwise reciprocal square root of x.
scalb
scalb[simd_width: Int, type: DType](arg0: SIMD[type, simd_width], arg1: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the scalb
of the inputs.
Constraints:
The inputs must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg0 (
SIMD[type, simd_width]
): The first input argument. - arg1 (
SIMD[type, simd_width]
): The second input argument.
Returns:
The scalb
of the inputs.
sin
sin[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the sin
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The sin
of the input.
sinh
sinh[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the sinh
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The sinh
of the input.
sqrt
sqrt[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise square root on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform square root on.
Returns:
The elementwise square root of x.
sub
sub[simd_width: Int, type: DType](x: SIMD[type, simd_width], y: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise subtraction of two SIMD vectors.
Parameters:
- simd_width (
Int
): Width of the input SIMD vectors. - type (
DType
): DType of the input SIMD vectors.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector which y will be subtracted from. - y (
SIMD[type, simd_width]
): SIMD vector to subract from x.
Returns:
Elementwise subtraction of SIMD vector y from SIMD vector x (this is x - y).
tan
tan[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the tan
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The tan
of the input.
tanh
tanh[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Elementwise evaluation of the tanh function.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): The vector to perform the elementwise tanh on.
Returns:
The result of the elementwise tanh operation.
tgamma
tgamma[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the tgamma
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The tgamma
of the input.
trunc
trunc[simd_width: Int, type: DType](x: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Performs elementwise truncation on the elements of a SIMD vector.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- x (
SIMD[type, simd_width]
): SIMD vector to perform trunc on.
Returns:
The elementwise truncation of x.
y0
y0[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the y0
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The y0
of the input.
y1
y1[simd_width: Int, type: DType](arg: SIMD[type, simd_width]) -> SIMD[type, simd_width]
Computes the y1
of the inputs.
Constraints:
The input must be of floating point type.
Parameters:
- simd_width (
Int
): The width of the input and output SIMD vector. - type (
DType
): The dtype of the input and output SIMD vector.
Args:
- arg (
SIMD[type, simd_width]
): The input argument.
Returns:
The y1
of the input.