-> mapping to an 1/x like behaviour
[my-code/atmel.git] / beginners / oneoverx.c
diff --git a/beginners/oneoverx.c b/beginners/oneoverx.c
new file mode 100644 (file)
index 0000000..8962bec
--- /dev/null
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+int main(int argc,char **argv) {
+
+       int i;
+
+       double c,a,o,f;
+
+       a=atof(argv[1]);
+       c=(1.0-sqrt(1+4*a))/2.0; // -!
+       o=a/(1-c);
+
+       printf("; f(x) = a / (x+o)  +  c  (a:%f o:%f c:%f)\n",a,o,c);
+
+       for(i=255;i>=0;i--) {
+               f=a/(1.0*i/255+o)+c;
+               printf("; %d - %d\n",255-i,255-i+1);
+               printf(".db 0x%0x, ",(int)(f*255));
+               i-=1;
+               f=a/(1.0*i/255+o)+c;
+               printf("0x%0x\n",(int)(f*255));
+       }
+
+       return 0;
+}
+