logicalop.c File Reference

#include "scicos_block.h"
#include <math.h>

Include dependency graph for logicalop.c:

Go to the source code of this file.

Functions

void logicalop (scicos_block *block, int flag)


Function Documentation

void logicalop ( scicos_block block,
int  flag 
)

Definition at line 4 of file logicalop.c.

References i, scicos_block::inptr, scicos_block::insz, scicos_block::ipar, j, l, scicos_block::nin, and scicos_block::outptr.

00005 {
00006   int i,j,k,l;
00007   i=block->ipar[0];
00008   switch (i)
00009     {
00010     case 0:
00011       if (block->nin==1)
00012         {
00013           block->outptr[0][0]=1.0;
00014           for (j=0;j<block->insz[0];j++) {
00015             if(block->inptr[0][j]<=0)
00016               {
00017                 block->outptr[0][0]=0.0;
00018                 break;
00019               }
00020           }
00021         }
00022       else {
00023         for (j=0;j<block->insz[0];j++) {
00024           block->outptr[0][j]=1.0;
00025           for (k=0;k<block->nin;k++) {
00026             if(block->inptr[k][j]<=0) {
00027               block->outptr[0][j]=0.0;
00028               break;
00029             }
00030           }
00031         }
00032       }
00033       break;
00034       
00035     case 1:
00036       if (block->nin==1)
00037         {
00038           block->outptr[0][0]=0.0;
00039           for (j=0;j<block->insz[0];j++) {
00040             if(block->inptr[0][j]>0) {
00041               block->outptr[0][0]=1.0;
00042               break;
00043             }
00044           }
00045         }
00046       else {
00047         for (j=0;j<block->insz[0];j++) {
00048           block->outptr[0][j]=0.0;
00049           for (k=0;k<block->nin;k++) {
00050             if(block->inptr[k][j]>0) {
00051               block->outptr[0][j]=1.0;
00052               break;
00053             }
00054           }
00055         }
00056       }
00057       break;
00058 
00059     case 2:
00060       if (block->nin==1)
00061         {
00062           block->outptr[0][0]=0.0;
00063           for (j=0;j<block->insz[0];j++) {
00064             if(block->inptr[0][j]<=0)
00065               {
00066                 block->outptr[0][0]=1.0;
00067                 break;
00068               }
00069           }
00070         }
00071       else {
00072         for (j=0;j<block->insz[0];j++) {
00073           block->outptr[0][j]=0.0;
00074           for (k=0;k<block->nin;k++) {
00075             if(block->inptr[k][j]<=0) {
00076               block->outptr[0][j]=1.0;
00077               break;
00078             }
00079           }
00080         }
00081       }
00082       break;
00083 
00084     case 3:
00085       if (block->nin==1)
00086         {
00087           block->outptr[0][0]=1.0;
00088           for (j=0;j<block->insz[0];j++) {
00089             if(block->inptr[0][j]>0) {
00090               block->outptr[0][0]=0.0;
00091               break;
00092             }
00093           }
00094         }
00095       else {
00096         for (j=0;j<block->insz[0];j++) {
00097           block->outptr[0][j]=1.0;
00098           for (k=0;k<block->nin;k++) {
00099             if(block->inptr[k][j]>0) {
00100               block->outptr[0][j]=0.0;
00101               break;
00102             }
00103           }
00104         }
00105       }
00106       break;
00107 
00108     case 4:
00109       if (block->nin==1)
00110         {
00111           l=0;
00112           for (j=0;j<block->insz[0];j++) {
00113             if(block->inptr[0][j]>0) {
00114               l=(l+1)%2;
00115             }
00116           }
00117           block->outptr[0][0]=(double) l;
00118         }
00119       else {
00120         for (j=0;j<block->insz[0];j++) {
00121           l=0;
00122           for (k=0;k<block->nin;k++) {
00123             if(block->inptr[k][j]>0) {
00124               l=(l+1)%2;
00125             }
00126           }
00127           block->outptr[0][j]=(double) l;
00128         }
00129       }
00130       break;
00131 
00132     case 5:
00133       for (j=0;j<block->insz[0];j++) {
00134         if(block->inptr[0][j]>0) {
00135           block->outptr[0][j]=0.0;
00136         }
00137         else{
00138           block->outptr[0][j]=1.0;
00139         }
00140       }
00141     }
00142 }


Generated on Sun Mar 4 16:12:05 2007 for Scilab [trunk] by  doxygen 1.5.1