예제 #1
0
import tft_ir_api as IR

const_r = IR.FConst(4.0)
const_k = IR.FConst(1.11)

var_x = IR.RealVE("x", 0, (0.1 - 1e-06), (0.3 + 1e-06))

temp0 = IR.BE("*", 1, const_r, var_x)

temp1 = IR.BE("/", 2, var_x, const_k)

temp2 = IR.BE("+", 3, IR.FConst(1.0), temp1)

rel = IR.BE("/", 4, temp0, temp2)

IR.TuneExpr(rel)
예제 #2
0
b = list()
for i in range(n):
    b.append(IR.RealVE("b{}".format(i), 1, low, high))

x = list()
for i in range(n):
    x.append(IR.FConst(1.0))

g = 2

#j k = 0
#j while convergence not reached: # while loop
for k in range(unrolls):  # replacement for while loop
    for i in range(n):  # i loop
        sigma = IR.FConst(0.0)
        for j in range(n):  # j loop
            if j != i:
                sigma = IR.BE("+", g, sigma, IR.BE("*", g, A[i][j], x[j]))
                g += 1
        # end j loop
        x[i] = IR.BE("/", g, IR.BE("-", g, b[i], sigma), A[i][j])
        g += 1
    # end i loop
#j check convergence
#j k = k+1
# end while loop

print(x[0])
rs = x[0]
IR.TuneExpr(rs)
예제 #3
0
import tft_ir_api as IR

var_u = IR.RealVE("u", 0, (-100.0 - 0.0000001), (100.0 + 0.0000001))
var_v = IR.RealVE("v", 1, (20.0 - 0.000000001), (20000.0 + 0.000000001))
var_T = IR.RealVE("T", 2, (-30.0 - 0.000001), (50.0 + 0.000001))

t1 = IR.BE("+", 4, IR.FConst(331.4), IR.BE("*", 3, IR.FConst(0.6), var_T))

temp = IR.BE("+", 5, t1, var_u)
temp = IR.BE("*", 8, temp, temp)

r = IR.BE("/", 9, IR.BE("*", 7, IR.UE("-", 6, t1), var_v), temp)

IR.TuneExpr(r)
예제 #4
0
gid += 1

y = IR.RealVE("y", gid, 0.01, 100.0)
gid += 1

x2 = IR.BE("*", gid, x, x)
gid += 1

y2 = IR.BE("*", gid, y, y)
gid += 1

x2y2 = IR.BE("+", gid, x2, y2)
gid += 1

sqrt_x2y2 = IR.UE("sqrt", gid, x2y2)
gid += 1

sqrt_x = IR.BE("+", gid, sqrt_x2y2, x)
gid += 1

two_sqrt_x = IR.BE("*", gid, IR.FConst(2.0), sqrt_x)
gid += 1

sqrt_all = IR.UE("sqrt", gid, two_sqrt_x)
gid += 1

half_sqrt_all = IR.BE("*", gid, IR.FConst(0.5), sqrt_all)

IR.TuneExpr(half_sqrt_all)

예제 #5
0
alen = 16
vlb = -1.0
vub = 1.0

gid_data = 0

assert (alen > 0)
assert (vlb < vub)
assert (math.log(alen, 2) == int(math.log(alen, 2)))

n_stages = int(math.log(alen, 2))

arr = [IR.RealVE("v" + str(i), gid_data, vlb, vub) for i in range(0, alen)]

for i_stage in range(1, (n_stages + 1)):
    l_arr = len(arr)
    assert (l_arr % 2 == 0)
    l_arr = int(l_arr / 2)

    for i in range(0, l_arr):
        arr[i] = IR.BE("+", i_stage, arr[i], arr[i + l_arr])

    arr = arr[0:l_arr]

assert (len(arr) == 1)

IR.SetGroupWeight(gid_data, 16.0)

IR.TuneExpr(arr[0])