# 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 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 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 returns true or false last element in t that satisfied comp(a,b)
halmd.numeric.max(t)

Find the maximum value in a table

Parameters: t (table) – input table maximum value in t
halmd.numeric.min(t)

Find the minimum value in a table

Parameters: t (table) – input table 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 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 matrix of dimension with each element set to value
halmd.numeric.trans(m)

Calculate transpose of matrix

Parameters: m (matrix) – input matrix transpose of m
halmd.numeric.diag(m)

Return diagonal elements of n×n matrix

Parameters: m (matrix) – input square matrix table of diagonal elements of m

Parameters: t1 (table) – n-dimensional vector t2 (table) – n-dimensional vector 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 elementwise difference of two vectors

Add a scalar value to all elements of a vector

Parameters: t (table) – n-dimensional vector a (number) – the scalar to add 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 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 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 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 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 table with values divided by a
halmd.numeric.norm_1(t)

Get 1-norm of a vector

Parameters: t (table) – n-dimensional vector 1-norm of the vector
halmd.numeric.norm_2(t)

Get 2-norm of a vector

Parameters: t (table) – n-dimensional vector 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 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 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) value1

Provide floating-point limits, along the lines of std::numeric_limits in C++:

limits.double.epsilon = 2.2204460492503131e-16