-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCT.m
More file actions
92 lines (83 loc) · 5.43 KB
/
CT.m
File metadata and controls
92 lines (83 loc) · 5.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
% ## ## ## ## ### ######## ### ## ## ######## ######## ######## ########
% ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
% ## ## ## ## ## ## ## ## ## #### ## ## ## ##
% ## ## ## ## ## ## ###### ## ## ## ###### ## ## ######
% ## ## ## ## ######### ## ######### ## ## ## ## ##
% ## ## ## ## ## ## ## ## ## ## ## ## ## ##
% ####### ######## ######## ## ## ## ## ## ## ######## ## ## ########
% _
% |_ ._ _ _ ._ _ o ._ _
% |_ | | | (/_ | (_| | | | (_|
% _ _| _|
% / _ ._ _ ._ _|_ o ._ _
% \_ (_) | | | |_) |_| |_ | | | (_|
% ___ | _| _ _ ___
% | _ _ |_ ._ _ | _ _ o _ _ |_ / |
% | (/_ (_ | | | | (_) | (_) (_| | (/_ _> - |_ . \_. |
% _/
% | _. |_
% |_ (_| |_) o
% IEEE TCAD
% UNDER REVIEW: "Agile Simulation of Stochastic Computing Image Processing with Contingency Tables"
% PostDoc. Sercan AYGUN, Asst. Prof. M. Hassan NAJAFI, Asst. Prof. Mohsen IMANI, Prof. Ece Olcay GUNES
% for further info: sercan.aygun@louisiana.edu
% _ _ _ _|_. _ _ _ _ _ _|_ _ |_ | _
% (_(_)| | | || |(_|(/_| |(_\/ | (_||_)|(/_
% _| /
function [dummy1, dummy2, abest, amin, amax] = CT(X1, X2, N)
dummy1 = 0;
dummy2 = 0;
amin = (max(0,X1+X2-N));
amax = (min(X1, X2));
% This is the previous efforts, you can read: https://ieeexplore.ieee.org/document/9691458
% %--------------------------------------------------------------------------
% % AMID CT APPROACH
% %--------------------------------------------------------------------------
% a = floor((amax + amin)/2);
% amid = a;
%
% %--------------------------------------------------------------------------
% % POLYNOMIAL CT APPROACH
% %--------------------------------------------------------------------------
%
% %Approximated 3D polynomial model of each N
% %Each equation returns the z-axis value from equation(X1, X2)
% if N == 8
% elliptic_paraboloids_model_z = (-0.0034318.*X1.^4 + 0.00025253.*X1.^3.*X2 + 0.053898.*X1.^3 - 0.0002366.*X1.^2.*X2.^2 - 0.0011375.*X1.^2.*X2 - 0.27013.*X1.^2 + 0.00025253.*X1.*X2.^3 - 0.0011375.*X1.*X2.^2 + 0.0025851.*X1.*X2 + 0.46237.*X1 - 0.0034318.*X2.^4 + 0.053898.*X2.^3 - 0.27013.*X2.^2 + 0.46237.*X2 - 0.11764);
% end
%
% if N == 16
% elliptic_paraboloids_model_z = (-5.1366e-05.*X1.^4 + 0.00023376.*X1.^3.*X2 - 0.00022635.*X1.^3 - 5.781e-05.*X1.^2.*X2.^2 - 0.0046852.*X1.^2.*X2 + 0.02701.*X1.^2 + 0.00023376.*X1.*X2.^3 - 0.0046852.*X1.*X2.^2 + 0.051965.*X1.*X2 - 0.2192.*X1 - 5.1366e-05.*X2.^4 - 0.00022635.*X2.^3 + 0.02701.*X2.^2 - 0.2192.*X2 + 0.48663);
% end
%
% if N == 32
% elliptic_paraboloids_model_z = (3.5996e-06.*X1.^4 + 4.7332e-05.*X1.^3.*X2 - 0.00098769.*X1.^3 - 1.7751e-06.*X1.^2.*X2.^2 - 0.0022151.*X1.^2.*X2 + 0.041104.*X1.^2 + 4.7332e-05.*X1.*X2.^3 - 0.0022151.*X1.*X2.^2 + 0.052302.*X1.*X2 - 0.51229.*X1 + 3.5996e-06.*X2.^4 - 0.00098769.*X2.^3 + 0.041104.*X2.^2 - 0.51229.*X2 + 1.6792);
% end
%
% if N == 64
% elliptic_paraboloids_model_z = (2.8935e-07.*X1.^4 + 7.0253e-06.*X1.^3.*X2 - 0.00026185.*X1.^3 - 4.399e-08.*X1.^2.*X2.^2 - 0.00067161.*X1.^2.*X2 + 0.023134.*X1.^2 + 7.0253e-06.*X1.*X2.^3 - 0.00067161.*X1.*X2.^2 + 0.031806.*X1.*X2 - 0.58666.*X1 + 2.8935e-07.*X2.^4 - 0.00026185.*X2.^3 + 0.023134.*X2.^2 - 0.58666.*X2 + 3.5257);
% end
%
% if N == 128
% elliptic_paraboloids_model_z = (1.2944e-08.*X1.^4 + 9.1991e-07.*X1.^3.*X2 - 6.2188e-05.*X1.^3 - 7.7586e-10.*X1.^2.*X2.^2 - 0.00017652.*X1.^2.*X2 + 0.011584.*X1.^2 + 9.1991e-07.*X1.*X2.^3 - 0.00017652.*X1.*X2.^2 + 0.016661.*X1.*X2 - 0.5935.*X1 + 1.2944e-08.*X2.^4 - 6.2188e-05.*X2.^3 + 0.011584.*X2.^2 - 0.5935.*X2 + 6.7297);
% end
%
% if N == 256
% elliptic_paraboloids_model_z = (4.7962e-10.*X1.^4 + 1.1723e-07.*X1.^3.*X2 - 1.5251e-05.*X1.^3 - 1.7104e-11.*X1.^2.*X2.^2 - 4.5012e-05.*X1.^2.*X2 + 0.0058037.*X1.^2 + 1.1723e-07.*X1.*X2.^3 - 4.5012e-05.*X1.*X2.^2 + 0.0084745.*X1.*X2 - 0.59577.*X1 + 4.7962e-10.*X2.^4 - 1.5251e-05.*X2.^3 + 0.0058037.*X2.^2 - 0.59577.*X2 + 13.0875);
% end
%
% if N == 512
% elliptic_paraboloids_model_z = (1.628e-11.*X1.^4 + 1.4771e-08.*X1.^3.*X2 - 3.7982e-06.*X1.^3 - 2.6822e-13.*X1.^2.*X2.^2 - 1.1344e-05.*X1.^2.*X2 + 0.0029098.*X1.^2 + 1.4771e-08.*X1.*X2.^3 - 1.1344e-05.*X1.*X2.^2 + 0.0042654.*X1.*X2 - 0.59701.*X1 + 1.628e-11.*X2.^4 - 3.7982e-06.*X2.^3 + 0.0029098.*X2.^2 - 0.59701.*X2 + 25.8208);
% end
%
% if N == 1024
% elliptic_paraboloids_model_z = (5.3036e-13.*X1.^4 + 1.8543e-09.*X1.^3.*X2 - 9.5047e-07.*X1.^3 - 6.5401e-15.*X1.^2.*X2.^2 - 2.8481e-06.*X1.^2.*X2 + 0.001459.*X1.^2 + 1.8543e-09.*X1.*X2.^3 - 2.8481e-06.*X1.*X2.^2 + 0.0021402.*X1.*X2 - 0.59822.*X1 + 5.3036e-13.*X2.^4 - 9.5047e-07.*X2.^3 + 0.001459.*X2.^2 - 0.59822.*X2 + 51.3754);
% end
%
% %update 'a' that has mid point (amid is fine-tuned)
% apoly = round(a + elliptic_paraboloids_model_z);
%--------------------------------------------------------------------------
% THE BEST (Near-Zero) CT APPROACH
%--------------------------------------------------------------------------
abest = round((X1 * X2)/N);
end