// // test program for fixed-point // #include #include #include #include "types.h" #include "fix.h" #include "graph.h" #define f1_0 0x10000 #define f0_5 0x8000 #define f7_0 0x70000 show_sincos(fixang a) { fix s,c; fix fs,fc; fix_fastsincos(a,&fs,&fc); fix_sincos(a,&s,&c); printf("%x: sin = %x(%x), cos = %x(%x)\n",a,s,fs,c,fc); } mul_test() { printf("%x * %x = %x\n",f1_0,f1_0,fixmul(f1_0,f1_0)); printf("%x * %x = %x\n",f1_0,f0_5,fixmul(f1_0,f0_5)); printf("%x * %x = %x\n",f0_5,f0_5,fixmul(f0_5,f0_5)); printf("%x * %x = %x\n",f7_0,f1_0,fixmul(f7_0,f1_0)); printf("%x * %x = %x\n",f7_0,f0_5,fixmul(f7_0,f0_5)); printf("%x * %x = %x\n",f7_0,f7_0,fixmul(f7_0,f7_0)); } sincos_test() { show_sincos(f1_0); show_sincos(f0_5); show_sincos(f0_5/2); } #define N_POINTS 1024 #define RAD 75 circle_test() { int i; fixang f; fix s,c; short x,y; _setvideomode(_MRES256COLOR); // 320x200x256 (mode 13h) //printf("fast:\n"); for (i=0,f=0;i