--- /dev/null
+extern long fib(long);
+RET(fib(-1)==-1 && fib(0)==0 && fib(1)==1 && fib(2)==1 && fib(3)==2 && fib(7)+fib(8)==fib(9));
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib()
+ if this < 2 then return this; end;
+ var a := 0;
+ var b := 1;
+ var c := this;
+ var x := this;
+ while not (x < 2)
+ do
+ c := a-(0-b);
+ a := b;
+ b := c;
+ x := x-1;
+ end;
+ return c;
+end;
--- /dev/null
+georg_fib_000.call
\ No newline at end of file
--- /dev/null
+extern long fib(long,long);
+RET(fib(0,-1)==-1 && fib(0,0)==0 && fib(0,1)==1 && fib(0,2)==1 && fib(0,3)==2 && fib(0,7)+fib(0,8)==fib(0,9));
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ if x < 2 then return x; end;
+ var a := 0;
+ var b := 1;
+ var c := x;
+ while not (x < 2)
+ do
+ c := a-(0-b);
+ a := b;
+ b := c;
+ x := x-1;
+ end;
+ return c;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ var c := x;
+ while not (x < 2)
+ do
+ c := a-(0-b);
+ a := b;
+ b := c;
+ x := x-1;
+ end;
+ return c;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ var c := x;
+ while not (x < 2)
+ do
+ var A := a;
+ var B := b;
+ a := B;
+ b := A-(0-B);
+ c := b;
+ x := x-1;
+ end;
+ return c;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ if x < 2 then return x; end;
+ while not (x < 2)
+ do
+ var A := a;
+ var B := b;
+ a := B;
+ b := A-(0-B);
+ x := x-1;
+ end;
+ return b;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ if x < 2 then return x; end;
+ while not (x < 2)
+ do
+ var A := a;
+ a := b;
+ b := A-(0-b);
+ x := x-1;
+ end;
+ return b;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ if x < 2 then return x; end;
+ while not (x < 2)
+ do
+ var A := a;
+ a := b;
+ b := b-(0-A);
+ x := x-1;
+ end;
+ return b;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ if x < 2 then return x; end;
+ while not (x < 2)
+ do
+ var A := a;
+ a := b;
+ b := 0-b;
+ b := A-b;
+ x := x-1;
+ end;
+ return b;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+method fib(x)
+ var a := 0;
+ var b := 1;
+ if x < 2
+ then
+ return x;
+ end;
+ while not (x < 2)
+ do
+ var A := a;
+ a := b;
+ b := 0-b;
+ b := A-b;
+ x := x-1;
+ end;
+ return b;
+end;
--- /dev/null
+georg_fib_020.call
\ No newline at end of file
--- /dev/null
+long s[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+extern long fib(long *,long);
+RET(fib(s,-1)==-1 && fib(s,0)==0 && fib(s,1)==1 && fib(s,2)==1 && fib(s,3)==2 && fib(s,7)+fib(s,8)==fib(s,9));
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+struct f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 end;
+
+method fib(x)
+ if x < 0 then return -1; end; f0 := 0;
+ if x < 1 then return f0; end; f1 := 1;
+ if x < 2 then return f1; end; f2 := 1;
+ if x < 3 then return f2; end; f3 := 2;
+ if x < 4 then return f3; end; f4 := 3;
+ if x < 5 then return f4; end; f5 := 5;
+ if x < 6 then return f5; end; f6 := 8;
+ if x < 7 then return f6; end; f7 := 13;
+ if x < 8 then return f7; end; f8 := 21;
+ if x < 9 then return f8; end; f9 := 34;
+ return f9;
+end;
--- /dev/null
+georg_fib_040.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+struct f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 end;
+
+method fib(x)
+ if x < 0 then return -1; end; f0 := 0;
+ if x < 1 then return f0; end; f1 := 1;
+ if x < 2 then return f1; end; f2 := f0-(0-f1);
+ if x < 3 then return f2; end; f3 := f1-(0-f2);
+ if x < 4 then return f3; end; f4 := f2-(0-f3);
+ if x < 5 then return f4; end; f5 := f3-(0-f4);
+ if x < 6 then return f5; end; f6 := f4-(0-f5);
+ if x < 7 then return f6; end; f7 := f5-(0-f6);
+ if x < 8 then return f7; end; f8 := f6-(0-f7);
+ if x < 9 then return f8; end; f9 := f7-(0-f8);
+ return f9;
+end;
--- /dev/null
+georg_fib_040.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+struct f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 end;
+
+method fib(x)
+ var t := this;
+ if x < 0 then return -1; end; t.f0 := 0;
+ if x < 1 then return f0; end; t.f1 := 1;
+ if x < 2 then return f1; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 3 then return f2; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 4 then return f3; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 5 then return f4; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 6 then return f5; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 7 then return f6; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 8 then return f7; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ if x < 9 then return f8; end; t.f2 := t.f0-(0-t.f1); t := t--8;
+ return f9;
+end;
--- /dev/null
+georg_fib_040.call
\ No newline at end of file
--- /dev/null
+/* fibonacci */
+
+/* F_0 = 0 */
+/* F_1 = 1 */
+/* F_n = F_{n-1} + F_{n-2} */
+
+struct a b c end;
+
+method fib(x)
+ if x < 0 then return x; end;
+ a := 0;
+ if x < 1 then return x; end;
+ b := 1;
+ if x < 2 then return x; end;
+ var t := this;
+
+ while not (x < 2)
+ do
+ t.c := t.a-(0-t.b);
+ t := t--8;
+ x := x-1;
+ end;
+ return (t-8).c;
+end;
--- /dev/null
+georg_fib_040.call
\ No newline at end of file