APyCFloat

class apytypes.APyCFloat(*args, **kwargs)

Class for configurable complex-valued scalar floating-point formats.

Added in version 0.4.

Note

For real-valued floating-point formats, see APyFloat and APyFloatArray.

Attributes:
bias

Exponent bias.

bits

Total number of bits.

exp_bits

Number of exponent bits.

imag

Imaginary part.

is_zero

True if, and only if, both the real and imaginary parts are zero.

man_bits

Number of mantissa bits.

real

Real part.

Methods

cast

Change format of the complex-valued floating-point number.

from_complex

from_float

is_identical

Test if two APyCFloat objects are identical.

Constructor

Creation from other types

from_complex(value: object, exp_bits: int, man_bits: int, bias: int | None = None) APyCFloat

Create an APyCFloat object from an int, float, or complex.

The initialize floating-point value is the one closest to value. Ties are rounded using QuantizationMode.TIES_EVEN.

Parameters:
valuecomplex, float, int

Value to initialize from.

exp_bitsint

Number of exponent bits.

man_bitsint

Number of mantissa bits.

biasint, optional

Exponent bias. If not provided, bias is 2**exp_bits - 1.

Returns:
APyCFloat

See also

from_complex

Examples

>>> import apytypes as apy
>>> a = apy.APyCFloat.from_complex(1.375, exp_bits=10, man_bits=15)
>>> a
APyCFloat(sign=(0, 0), exp=(511, 0), man=(12288, 0), exp_bits=10, man_bits=15)
>>> str(a)
'(1.375+0j)'
from_float(value: object, exp_bits: int, man_bits: int, bias: int | None = None) APyCFloat

Create an APyCFloat object from an int, float, or complex.

The initialize floating-point value is the one closest to value. Ties are rounded using QuantizationMode.TIES_EVEN.

Parameters:
valueint, float, complex

Value to initialize from.

exp_bitsint

Number of exponent bits.

man_bitsint

Number of mantissa bits.

biasint, optional

Exponent bias. If not provided, bias is 2**exp_bits - 1.

Returns:
APyCFloat

See also

from_complex

Examples

>>> import apytypes as apy
>>> a = apy.APyCFloat.from_float(1.25, exp_bits=10, man_bits=15)
>>> a
APyCFloat(sign=(0, 0), exp=(511, 0), man=(8192, 0), exp_bits=10, man_bits=15)
>>> str(a)
'(1.25+0j)'

Change word length

cast(self, exp_bits: int | None = None, man_bits: int | None = None, bias: int | None = None, quantization: QuantizationMode | None = None) APyCFloat

Change format of the complex-valued floating-point number.

This is the primary method for performing quantization when dealing with APyTypes floating-point numbers.

Parameters:
exp_bitsint, optional

Number of exponent bits in the result.

man_bitsint, optional

Number of mantissa bits in the result.

biasint, optional

Exponent bias. If not provided, bias is 2**exp_bits - 1.

quantizationQuantizationMode, optional.

Quantization mode to use in this cast. If None, use the global quantization mode.

Returns:
APyCFloat

Comparison

is_identical(self, other: APyCFloat, ignore_zero_sign: bool = False) bool

Test if two APyCFloat objects are identical.

Two APyCFloat objects are considered identical if, and only if, they have the same sign, exponent, mantissa, and format.

Parameters:
otherAPyCFloat

The floating-point object to test identicality against.

ignore_zero_signbool, default: False

If True, plus and minus zero are considered identical. If False, plus and minus zero are considered different.

Returns:
bool

Properties

property real

Real part.

Returns:
APyFixed
property imag

Imaginary part.

Returns:
APyFixed
property is_zero

True if, and only if, both the real and imaginary parts are zero.

Returns:
bool

Word length

property bits

Total number of bits.

Returns:
int
property exp_bits

Number of exponent bits.

Returns:
int
property man_bits

Number of mantissa bits.

Returns:
int
property bias

Exponent bias.

Returns:
int