changeset 12:774d70d1ea62 draft

add fibonacci
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 04 Jun 2012 02:45:53 +0900
parents bdf156058529
children f29ec9081099
files fibonacci/Makefile fibonacci/fibonacci2.c fibonacci/fibonacci2.cbc fibonacci/fibonacci2_.cbc
diffstat 4 files changed, 147 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fibonacci/Makefile	Mon Jun 04 02:45:53 2012 +0900
@@ -0,0 +1,15 @@
+CC=gcc
+CbCC=cbc-gcc-4.6
+
+CFLAGS=-O3
+
+PROGRAM= cbc_fibonacci2 c_fibonacci2
+
+all: $(PROGRAM)
+
+cbc_fibonnacci2: fibonacci2.cbc
+		$(CbCC) $(CFLAGS) -o $@ $^
+c_fibonacci2: fibonacci2.c
+	      $(CC) $(CFLAGS) -o $@ $^
+clean:
+	rm -rf *.{o,s} $(PROGRAM)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fibonacci/fibonacci2.c	Mon Jun 04 02:45:53 2012 +0900
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+long unsigned int fibonacci(long unsigned int num, long unsigned int count, long unsigned int result, long unsigned int prev) {
+	if (count == 0) {
+		result += 0;
+		count++;
+	} else if (count == 1) {
+		result += 1;
+		count++;
+	} else if (count > 1) {
+		long unsigned int tmp = prev;
+		prev = result;
+		result = result + tmp;
+		count++;
+	} else {
+		printf("please enter nutural number\n");
+		exit(0);
+	}
+	if (num < count) 
+		return result;
+	return fibonacci(num, count, result, prev);
+	
+}
+
+
+int main(int argc, char* argv[]) {
+	long unsigned int num = (long unsigned int)atoi(argv[1]);
+//		long unsigned int result = fibonacci(num, 0, 0, 0);
+	long unsigned int i;
+	for (i=0; i <= num; i++) {
+		long unsigned int result = fibonacci(i, 0, 0, 0);
+		printf("fibonacci(%ld) = %ld\n",i,result);
+	}
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fibonacci/fibonacci2.cbc	Mon Jun 04 02:45:53 2012 +0900
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+__code print(__rectype *p, int num, int count, int result, int prev) {
+	printf("fibonacci(%d) = %d\n",num,result);	
+
+	goto cs_while(print, num, count, result, prev);
+
+//	exit(0);
+}
+
+__code fibonacci(__rectype *p, int num,  int count, int result, int prev) {
+	if (count == 0) {
+		result += 0;
+		count++;
+	} else if (count == 1) {
+		result += 1;
+		count++;
+	} else if (count > 1){
+		int tmp = prev;
+		prev = result;
+		result = result + tmp;
+		count++;
+	} else {
+		printf("please enter nutural number\n");
+		exit(0);
+	}
+	if (num < count)
+		goto p(fibonacci, num,  count, result, prev);
+	goto fibonacci(p, num, count, result, prev);
+
+}
+
+__code cs_while(__rectype *p, int num, int count, int result, int prev) {
+	if (num > 0) {
+		num--;
+		goto fibonacci(print, num, 0, 0, 0);
+	}
+	exit(0);
+}
+
+
+int main(int argc, char* argv[]) {
+	if (argc < 2) {
+		printf("usage: ./fibonacci number \n");
+		exit(0);
+	}
+	int num = atoi(argv[1]);
+	goto fibonacci(print, num, 0, 0, 0);
+	
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fibonacci/fibonacci2_.cbc	Mon Jun 04 02:45:53 2012 +0900
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+__code print(__rectype *p, int num, int count, int result, int prev) {
+	printf("fibonacci(%d) = %d\n",num,result);	
+	exit(0);
+}
+
+__code fibonacci(__rectype *p, int num,  int count, int result, int prev) {
+	if (count == 0) {
+		result += 0;
+		count++;
+	} else if (count == 1) {
+		result += 1;
+		count++;
+	} else if (count > 1){
+		int tmp = prev;
+		prev = result;
+		result = result + tmp;
+		count++;
+	} else {
+		printf("please enter nutural number\n");
+		exit(0);
+	}
+	if (num < count)
+		goto p(fibonacci, num,  count, result, prev);
+	goto fibonacci(p, num, count, result, prev);
+
+}
+
+
+
+
+int main(int argc, char* argv[]) {
+	if (argc < 2) {
+		printf("usage: ./fibonacci number \n");
+		exit(0);
+	}
+	int num = atoi(argv[1]);
+	goto fibonacci(print, num, 0, 0, 0);
+	
+	return 0;
+}