cicada.arithmetic module

Functionality for working with field arithmetic.

class cicada.arithmetic.Field(order=None)[source]

Bases: object

Performs arithmetic in an integer field.

Field values are numpy.ndarray instances containing Python integers.

Parameters:

order (int, optional) – Field size. Defaults to the largest prime less than \(2^{64}\).

add(lhs, rhs)[source]

Element-wise addition of two field arrays.

Parameters:
Returns:

sum – The sum of the two operands.

Return type:

numpy.ndarray

property bits

Return the number of bits required to store field values.

property bytes

Return the number of bytes required to store field values.

property dtype

Return the numpy.dtype used for field arrays.

full_like(other, fill_value)[source]

Return a field array of values with the same shape as another field array.

Parameters:
  • other (numpy.ndarray, required) – The result will have the same shape as this array.

  • fill_value (int, required) – Field value that will be assigned to every element in the result array.

Returns:

array – Encoded array of zeros with the same shape as other.

Return type:

numpy.ndarray

inplace_add(lhs, rhs)[source]

Add field arrays in-place.

Parameters:
  • lhs (numpy.ndarray, required) – First operand.

  • rhs (numpy.ndarray, required) – Second operand. This value will be added in-place to lhs.

inplace_subtract(lhs, rhs)[source]

Subtract field arrays in-place.

Parameters:
  • lhs (numpy.ndarray, required) – First operand.

  • rhs (numpy.ndarray, required) – Second operand. This value will be subtracted in-place from lhs.

multiply(lhs, rhs)[source]

Element-wise multiplication of two field arrays.

Parameters:
Returns:

product – Element-wise product of lhs and rhs.

Return type:

numpy.ndarray

negative(array)[source]

Element-wise negation of a field array.

Parameters:

array (numpy.ndarray, required) – The array to negate.

Returns:

negated – Array with the same shape as array, containing the negated elements.

Return type:

numpy.ndarray

ones(shape)[source]

Return a field array containing ones.

Parameters:

shape (tuple, required) – The shape of the output array.

Returns:

array – Encoded array of ones with shape shape.

Return type:

numpy.ndarray

ones_like(other)[source]

Return a field array of ones with the same shape as another field array.

Parameters:

other (numpy.ndarray, required) – The result will have the same shape as this array.

Returns:

array – Encoded array of zeros with the same shape as other.

Return type:

numpy.ndarray

property order

Return the field order.

property posbound

Return the boundary between positive and negative values.

subtract(lhs, rhs)[source]

Return the element-wise difference between two field arrays.

Parameters:
Returns:

dif – The difference between the two operands.

Return type:

numpy.ndarray

sum(operand)[source]

Sum the elements of a field array.

Parameters:

operand (numpy.ndarray, required) – Operand.

Returns:

sum – The sum of the input array elements.

Return type:

numpy.ndarray

uniform(*, size, generator)[source]

Return a random encoded array, uniformly distributed over the field.

Parameters:
  • size (tuple, required) – A tuple defining the shape of the output array.

  • generator (numpy.random.Generator, required) – A psuedorandom number generator for sampling.

Returns:

random – Encoded array containing uniform random values with shape size.

Return type:

numpy.ndarray

zeros(shape)[source]

Return a field array containing zeros.

Parameters:

shape (tuple, required) – The shape of the output array.

Returns:

array – Encoded array of zeros with shape shape.

Return type:

numpy.ndarray

zeros_like(other)[source]

Return a field array of zeros with the same shape as another field array.

Parameters:

other (numpy.ndarray, required) – The result will have the same shape as this array.

Returns:

array – Encoded array of zeros with the same shape as other.

Return type:

numpy.ndarray