Browse Source

Various enhancement

Yann Weber 2 years ago
parent
commit
2f97b2f3db
5 changed files with 67 additions and 9 deletions
  1. 9
    0
      .distfile
  2. 16
    4
      Makefile
  3. 24
    0
      README
  4. 6
    0
      runplot3d.sh
  5. 12
    5
      sadrand.c

+ 9
- 0
.distfile View File

@@ -0,0 +1,9 @@
1
+.distfile
2
+LICENSE
3
+Makefile
4
+plot.gp
5
+plot3d.gp
6
+sadrand.c
7
+README
8
+runplot.sh
9
+runplot3d.sh

+ 16
- 4
Makefile View File

@@ -1,6 +1,9 @@
1 1
 CC=gcc
2
-CFLAGS=-Wall
2
+CFLAGS=-Wall -O3
3
+CLFAGS-DBG=$(CFLAGS) -g
3 4
 LDFLAGS=-lm
5
+LDFLAGS-DBG=$(LDFLAGS) -g
6
+LDFLAGS+= -s
4 7
 
5 8
 all: sadrand
6 9
 
@@ -11,13 +14,22 @@ sadrand.o: sadrand.c
11 14
 	$(CC) $(CFLAGS) -c -o $@ $<
12 15
 
13 16
 sadrand-dbg: sadrand-dbg.o
14
-	$(CC) -g -o $@ $< $(LDFLAGS)
17
+	$(CC) -o $@ $< $(LDFLAGS-DBG)
15 18
 
16 19
 sadrand-dbg.o: sadrand.c
17
-	$(CC) -g $(CFLAGS) -c -o $@ $<
20
+	$(CC) $(CFLAGS-DBG) -c -o $@ $<
18 21
 
22
+pkg: sadrand.tar.gz
23
+sadrand.tar.gz: TMP=$(shell mktemp)
24
+sadrand.tar.gz: dist .distfile sadrand.c Makefile
25
+	tar -C .. \
26
+		-acvf '$(TMP)' $(shell cat .distfile | sed "s#^#$(shell basename `pwd`)/#" )
27
+	mv -v '$(TMP)' '$@'
19 28
 
20
-.PHONY: clean
29
+.PHONY: clean dist
21 30
 
22 31
 clean:
23 32
 	-rm *.o
33
+
34
+dist: clean
35
+	-rm sadrand sadrand-dbg sadrand.tar.gz

+ 24
- 0
README View File

@@ -0,0 +1,24 @@
1
+sadrand
2
+=======
3
+
4
+Compare distribution of three random integer algorithm from random bytes.
5
+
6
+Building
7
+	make
8
+Running
9
+	./sadrand
10
+
11
+Getting help
12
+	./sadrand -h
13
+
14
+Plots
15
+-----
16
+
17
+Get a 2d plot
18
+	./runplot.sh
19
+
20
+Get a 3d plot
21
+	./runplot3d.sh
22
+
23
+Getting help
24
+	./runplot3d.sh

+ 6
- 0
runplot3d.sh View File

@@ -10,6 +10,12 @@ then
10 10
     exit 1
11 11
 fi
12 12
 
13
+if [ "$1" =  "-h" -o "$1" = "--help" ]
14
+then
15
+	usage
16
+	exit 0
17
+fi
18
+
13 19
 maxres=${1:-100}
14 20
 minres=${2:-2}
15 21
 iter=${3:-10000}

+ 12
- 5
sadrand.c View File

@@ -22,15 +22,17 @@ static struct option long_opts[] = {
22 22
 	{"iter", required_argument, 0, 'i'},
23 23
 	{"resolution", required_argument, 0, 'r'},
24 24
 	{"relative", no_argument, 0, 'R'},
25
+	{"help", no_argument, 0, 'h'},
25 26
 	{0, 0, 0, 0}
26 27
 };
27 28
 
28 29
 void usage(const char name[])
29 30
 {
30
-	dprintf(2, "Usage %s [-i ITER] [-r RESOLUTION] [-R]\n", name);
31
-	dprintf(2, "\t-i, --iter       Iteration count\n");
32
-	dprintf(2, "\t-r, --resolution Number of dice faces\n");
33
-	dprintf(2, "\t-R, --relative   Output relative count instead of absolute\n");
31
+	dprintf(2, "Usage %s [-i ITER] [-r RESOLUTION] [-R]\n\
32
+\t-i, --iter       Iteration count\n\
33
+\t-r, --resolution Number of dice faces\n\
34
+\t-R, --relative   Output relative count instead of absolute\n\
35
+\t-h, --help       Display this help and exit\n", name);
34 36
 }
35 37
 
36 38
 void rand_ctx_init(struct rand_ctx *ctx)
@@ -200,6 +202,8 @@ int main(int argc, char *argv[]) {
200 202
 	unsigned int *results[NTEST];
201 203
 
202 204
 	relative = 0;
205
+	iterations = 0x1000;
206
+	resolution = 100;
203 207
 
204 208
 	while (1)
205 209
 	{
@@ -207,7 +211,7 @@ int main(int argc, char *argv[]) {
207 211
 		int option_index = 0;
208 212
 		char *arg_endp;
209 213
 
210
-		c = getopt_long(argc, argv, "i:r:R",
214
+		c = getopt_long(argc, argv, "i:r:Rh",
211 215
 			long_opts, &option_index);
212 216
 		if(c == -1) { break; }
213 217
 		switch(c) 
@@ -256,6 +260,9 @@ int main(int argc, char *argv[]) {
256 260
 		case 'R':
257 261
 			relative = 1;
258 262
 			break;
263
+		case 'h':
264
+			usage(argv[0]);
265
+			exit(0);
259 266
 		case '?':
260 267
 			break;
261 268
 		}

Loading…
Cancel
Save