Numeric¶
This module provides simple numeric routines in Lua.
-
halmd.numeric.
sum
(t)¶ Compute the sum of the indexed elements of a table.
Parameters: t (table) – input table Returns: sum over all indexed elements in t
-
halmd.numeric.
prod
(t)¶ Compute the product of the indexed elements of a table.
Parameters: t (table) – input table Returns: product over all indexed elements in t
-
halmd.numeric.
find_comp
(t, comp)¶ Find the last value of a table that satisfies comp(a,b)
Parameters: - t (table) – input table
- comp – callable that takes two elements of
t
and returnstrue
orfalse
Returns: last element in
t
that satisfiedcomp(a,b)
-
halmd.numeric.
max
(t)¶ Find the maximum value in a table
Parameters: t (table) – input table Returns: maximum value in t
-
halmd.numeric.
min
(t)¶ Find the minimum value in a table
Parameters: t (table) – input table Returns: minmum value in t
-
halmd.numeric.
scalar_vector
(size, value)¶ Create vector of given size with scalar value
Parameters: - size (number) – number of elements
- value – value for each element of the vector
Returns: vector of length
with each element set to
value
-
halmd.numeric.
scalar_matrix
(rows, columns, value)¶ Create matrix of given size with scalar value
Parameters: - rows (number) – number of rows
- columns (number) – number of columns
- value – value for each element of the matrix
Returns: matrix of dimension
with each element set to
value
-
halmd.numeric.
trans
(m)¶ Calculate transpose of matrix
Parameters: m (matrix) – input matrix Returns: transpose of m
-
halmd.numeric.
diag
(m)¶ Return diagonal elements of n×n matrix
Parameters: m (matrix) – input square matrix Returns: table of diagonal elements of m
-
halmd.numeric.
add
(t1, t2)¶ Add two vectors elementwisely
Parameters: - t1 (table) – n-dimensional vector
- t2 (table) – n-dimensional vector
Returns: elementwise sum of two vectors
-
halmd.numeric.
subtract
(t1, t2)¶ Subtract two vectors elementwisely
Parameters: - t1 (table) – n-dimensional vector
- t2 (table) – n-dimensional vector
Returns: elementwise difference of two vectors
-
halmd.numeric.
add_scalar
(t, a)¶ Add a scalar value to all elements of a vector
Parameters: - t (table) – n-dimensional vector
- a (number) – the scalar to add
Returns: table with values bigger by a.
-
halmd.numeric.
subtract_scalar
(t, a)¶ Subtract a scalar value from all elements of a vector
Parameters: - t (table) – n-dimensional vector
- a (number) – the scalar to subtract
Returns: table with values less by a.
-
halmd.numeric.
multiply
(t1, t2)¶ Multiply two vectors elementwisely
Parameters: - t1 (table) – n-dimensional vector
- t2 (table) – n-dimensional vector
Returns: elementwise product of two vectors
-
halmd.numeric.
multiply_scalar
(a, t)¶ Multiply all elements of a vector with the same scalar
Parameters: - a (number) – the scalar factor
- t (table) – n-dimensional vector
Returns: table with values multiplied by a
-
halmd.numeric.
divide
(t1, t2)¶ Divide two vectors elementwisely
Parameters: - t1 (table) – n-dimensional vector
- t2 (table) – n-dimensional vector
Returns: elementwise division of two vectors
-
halmd.numeric.
divide_scalar
(t, a)¶ Divide all elements of a vector by the same scalar value
Parameters: - t (table) – n-dimensional vector
- a (number) – the scalar divisor
Returns: table with values divided by a
-
halmd.numeric.
norm_1
(t)¶ Get 1-norm of a vector
Parameters: t (table) – n-dimensional vector Returns: 1-norm of the vector
-
halmd.numeric.
norm_2
(t)¶ Get 2-norm of a vector
Parameters: t (table) – n-dimensional vector Returns: 2-norm of the vector
-
halmd.numeric.
offset_to_multi_index
(offset, dims)¶ Convert one-dimensional offset to multi-dimensional index
Assumes contiguous storage of the array data in row-major order.
Parameters: - offset (number) – 1-based one-dimensional offset
- dims (table) – dimensions (shape) of multi-dimensional array
Returns: 1-based multi-dimensional index of array element at
offset
-
halmd.numeric.
multi_index_to_offset
(index, dims)¶ Convert multi-dimensional index to one-dimensional offset
Assumes contiguous storage of the array data in row-major order.
Parameters: - index (table) – 1-based multi-dimensional index
- dims (table) – dimensions (shape) of multi-dimensional array
Returns: 1-based offset of array element at
index
-
halmd.numeric.
assert_close
(value1, value2, tolerance, level)¶ Assert that two floating-point numbers are very close.
Given two floating point numbers
and
and a tolerance
, the routine asserts that
Parameters: - value1 (number) – value of
- value2 (number) – value of
- tolerance (number) – value of
(default: `numeric.limits.double.epsilon`)
- level (number) – call stack level for error message (default: 2)
Returns: value1
- value1 (number) – value of
Provide floating-point limits, along the lines of std::numeric_limits in C++:
limits.double.epsilon = 2.2204460492503131e-16