forked from markapost/ubayes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
testlogic.c
94 lines (78 loc) · 2.64 KB
/
testlogic.c
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
93
94
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "node.h"
#include "graph.h"
#include "logic.h"
#define BSIZE 2
int main(int argc, char **argv)
{
char bdot[32768];
unsigned int nn[MAX_NODES];
fix bnull[BSIZE] = {FIX_ZERO, FIX_ZERO};
fix btrue[BSIZE] = {FIX_ZERO, FIX_ONE};
fix bfalse[BSIZE] = {FIX_ONE, FIX_ZERO};
fix *inputA = btrue;
fix *inputB = bfalse;
fix *inputC = btrue;
printf("Byte Sizes: short=%ld int=%ld long=%ld fix=%ld fixrad=%ld BERR=%d\n",
sizeof(short), sizeof(int), sizeof(long), sizeof(fix), sizeof(fixrad), BERR);
//ID
nn[1] = addBNode("ID", bnull, BSIZE);
nn[0] = addBNodeParent("ID_input", inputA, BSIZE, nn[1]);
makeLogic(ID, nn[1]);
inferBNode(nn[1]);
//NOT
nn[3] = addBNode("NOT", bnull, BSIZE);
nn[2] = addBNodeParent("NOT_input", inputA, BSIZE, nn[3]);
makeLogic(NOT, nn[3]);
inferBNode(nn[3]);
//AND
nn[6] = addBNode("AND", bnull, BSIZE);
nn[4] = addBNodeParent("AND_inputA", inputA, BSIZE, nn[6]);
nn[5] = addBNodeParent("AND_inputB", inputB, BSIZE, nn[6]);
nn[22] = addBNodeParent("AND_inputC", inputC, BSIZE, nn[6]);
makeLogic(AND, nn[6]);
inferBNode(nn[6]);
//NAND
nn[9] = addBNode("NAND", bnull, BSIZE);
nn[7] = addBNodeParent("NAND_inputA", inputA, BSIZE, nn[9]);
nn[8] = addBNodeParent("NAND_inputB", inputB, BSIZE, nn[9]);
nn[23] = addBNodeParent("NAND_inputC", inputC, BSIZE, nn[9]);
makeLogic(NAND, nn[9]);
inferBNode(nn[9]);
//OR
nn[12] = addBNode("OR", bnull, BSIZE);
nn[10] = addBNodeParent("OR_inputA", inputA, BSIZE, nn[12]);
nn[11] = addBNodeParent("OR_inputB", inputB, BSIZE, nn[12]);
nn[24] = addBNodeParent("OR_inputC", inputC, BSIZE, nn[12]);
makeLogic(OR, nn[12]);
inferBNode(nn[12]);
//NOR
nn[15] = addBNode("NOR", bnull, BSIZE);
nn[13] = addBNodeParent("NOR_inputA", inputA, BSIZE, nn[15]);
nn[14] = addBNodeParent("NOR_inputB", inputB, BSIZE, nn[15]);
nn[25] = addBNodeParent("NOR_inputC", inputC, BSIZE, nn[15]);
makeLogic(NOR, nn[15]);
inferBNode(nn[15]);
//XOR
nn[18] = addBNode("XOR", bnull, BSIZE);
nn[16] = addBNodeParent("XOR_inputA", inputA, BSIZE, nn[18]);
nn[17] = addBNodeParent("XOR_inputB", inputB, BSIZE, nn[18]);
nn[26] = addBNodeParent("XOR_inputC", inputC, BSIZE, nn[18]);
makeLogic(XOR, nn[18]);
inferBNode(nn[18]);
//XNOR
nn[21] = addBNode("XNOR", bnull, BSIZE);
nn[19] = addBNodeParent("XNOR_inputA", inputA, BSIZE, nn[21]);
nn[20] = addBNodeParent("XNOR_inputB", inputB, BSIZE, nn[21]);
nn[27] = addBNodeParent("XNOR_inputC", inputC, BSIZE, nn[21]);
makeLogic(XNOR, nn[21]);
inferBNode(nn[21]);
printBNetwork();
generateDotGraph(bdot, BSIZE);
ExportDotGraph(bdot, "graph.dot");
DisplayDotGraph(bdot);
freeBNetwork();
return 0;
}