def test_creation():
    x = Fxp(1.0, True, 256, 248)
    y = Fxp(-0.1, True, 128, 96)

    assert x() == 1.0
    assert y() == -0.1

    decimal.getcontext().prec = int(np.ceil(math.log10(2**248)))

    h_decimal = Decimal(1) / Decimal(3)
    h = Fxp(h_decimal, True, 256, 248)

    assert h.astype(float) == float(h_decimal)

    h = Fxp(h_decimal)
    assert h.astype(float) == float(h_decimal)

    w_vals = [0.1, 0.2, 0.3, 0.4, 0.5]
    w = Fxp(w_vals, True, 256, 248)
    assert (w() == np.array(w_vals)).all()
Beispiel #2
0
def test_temp():
    x = Fxp(0.5, True, 8, 7)
    assert x.astype(float) == 0.5
Beispiel #3
0
n = np.linspace(0, Nsim - 1, Nsim)
t = n / fs
A = 5.0

signal = A * np.sin(2 * np.pi * f * t)

# plt.figure()
# plt.plot(t, signal)
# plt.show()

# %%
signal_q = Fxp(signal, n_word=8, n_frac=1)

plt.figure(figsize=(12, 8))
plt.plot(t, signal, color='C0')
plt.plot(t, signal_q.astype(float), color='C1')
plt.show()
# %%
plt.figure(figsize=(12, 10))
plt.plot(t, signal, color='C0')

roungings = ['floor', 'ceil', 'around', 'fix', 'trunc']
signals = []
for r in roungings:
    signal_q = Fxp(n_word=8, n_frac=1)
    signal_q.props['rounding'] = r
    signal_q.set_val(signal)
    signals.append(signal_q)

    plt.plot(t, signal_q.astype(float), label=r)
plt.legend()
Beispiel #4
0
#%%
print('\n--- fxp_like ---')
x_ref = Fxp(signed=True, n_word=8, n_frac=4)

x1 = fxp_like(x_ref, val=[0.125, 0.25, 0.5, 0.625, 0.75])

y = x1 + x1
print('{} + {} = {}'.format(x1, x1, y))

#%%
print('\n--- COMPLEX NUMBERS ---')
x = Fxp(0.125 + 1j * 0.25, signed=True, n_word=16, n_frac=14)
print(x.info())
print(x)
print(x.astype(complex))
print(x.real)
print(x.imag)

x = Fxp([0.125 + 1j * 0.25, 1.0 - 1j * 1.0], signed=True, n_word=16, n_frac=14)
print(x.info())
print(x)
print(x.real)
print(x.imag)

x = Fxp([0.125 + 1j * 0.25, 1.0 - 1j * 1.0], signed=True)
print(x.info())

#%%
print('\n--- WRAP OVERFLOW ---')
x = Fxp(signed=True, n_word=6, n_frac=2)