r45: added sqr and sqrt functions
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 9 May 2000 14:52:27 +0000 (14:52 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 9 May 2000 14:52:27 +0000 (14:52 +0000)
src/sdf-1.c

index d21052d66a032ce6e0d68e1665f6a33b0647a225..b95deb811e32013cc269179cf4c28d911edc1109 100644 (file)
@@ -2,8 +2,11 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: sdf-1.c,v 1.3 2000/05/08 20:02:32 kevin Exp $
+**  $Id: sdf-1.c,v 1.4 2000/05/09 14:52:27 kevin Exp $
 **  $Log: sdf-1.c,v $
+**  Revision 1.4  2000/05/09 14:52:27  kevin
+**  added sqr and sqrt functions
+**
 **  Revision 1.3  2000/05/08 20:02:32  kevin
 **  ANSI C changes
 **
@@ -34,7 +37,7 @@
 
 #include "ct.h"
 
-enum {O_LOG, O_EXP, O_INVERT, O_VERBOSE, O_HELP, O_VERSION};
+enum {O_LOG, O_EXP, O_SQRT, O_SQR, O_INVERT, O_VERBOSE, O_HELP, O_VERSION};
 
 static struct option my_options[] =
 {
@@ -42,6 +45,8 @@ static struct option my_options[] =
   {"verbose", 0, 0, O_VERBOSE},
   {"log", 0, 0, O_LOG},
   {"exp", 0, 0, O_EXP},
+  {"sqr", 0, 0, O_SQR},
+  {"sqrt", 0, 0, O_SQRT},
   {"help", 0, 0, O_HELP},
   {"version", 0, 0, O_VERSION},
   {0, 0, 0, 0}
@@ -56,6 +61,8 @@ usage (const char *program)
   fprintf(stdout, "     --invert   Invert image\n");
   fprintf(stdout, "     --log      Natural logrithm of image\n");
   fprintf(stdout, "     --exp      Natural exponential of image\n");
+  fprintf(stdout, "     --sqr      Square of image\n");
+  fprintf(stdout, "     --sqrt     Square root of image\n");
   fprintf(stdout, "     --verbose  Verbose modem\n");
   fprintf(stdout, "     --version  Print version\n");
   fprintf(stdout, "     --help     Print this help message\n");
@@ -73,6 +80,8 @@ main (int argc, char *const argv[])
   int opt_invert = 0;
   int opt_log = 0;
   int opt_exp = 0;
+  int opt_sqr = 0;
+  int opt_sqrt = 0;
 
   while (1)
     {
@@ -89,6 +98,12 @@ main (int argc, char *const argv[])
        case O_LOG:
          opt_log = 1;
          break;
+       case O_SQR:
+         opt_sqr = 1;
+         break;
+       case O_SQRT:
+         opt_sqrt = 1;
+         break;
        case O_EXP:
          opt_exp = 1;
          break;
@@ -130,18 +145,28 @@ main (int argc, char *const argv[])
 
     if (opt_invert) {
       for (ix = 0; ix < im_in->nx; ix++)
-       for (iy = 0; iy < im_in->ny; iy++)
-         im_out->v[ix][iy] = - im_in->v[ix][iy];
+        for (iy = 0; iy < im_in->ny; iy++)
+          im_out->v[ix][iy] = - im_in->v[ix][iy];
     }
     if (opt_log) {
       for (ix = 0; ix < im_in->nx; ix++)
-       for (iy = 0; iy < im_in->ny; iy++)
-         im_out->v[ix][iy] = log (im_in->v[ix][iy]);
+        for (iy = 0; iy < im_in->ny; iy++)
+          im_out->v[ix][iy] = log (im_in->v[ix][iy]);
     }
     if (opt_exp) {
       for (ix = 0; ix < im_in->nx; ix++)
-       for (iy = 0; iy < im_in->ny; iy++)
-         im_out->v[ix][iy] = exp (im_in->v[ix][iy]);
+        for (iy = 0; iy < im_in->ny; iy++)
+          im_out->v[ix][iy] = exp (im_in->v[ix][iy]);
+    }
+    if (opt_sqr) {
+      for (ix = 0; ix < im_in->nx; ix++)
+        for (iy = 0; iy < im_in->ny; iy++)
+          im_out->v[ix][iy] = im_in->v[ix][iy] * im_in->v[ix][iy];
+    }
+    if (opt_sqrt) {
+      for (ix = 0; ix < im_in->nx; ix++)
+        for (iy = 0; iy < im_in->ny; iy++)
+          im_out->v[ix][iy] = sqrt (im_in->v[ix][iy]);
     }
 
     image_save(im_out);