00001 #include "scicos_block.h"
00002 #include <math.h>
00003
00004
00005 void relationalop(scicos_block *block,int flag)
00006 {
00007 int i;
00008 i=block->ipar[0];
00009 if(flag==1){
00010 if ((block->ng!=0)&(get_phase_simulation()==2))
00011 {
00012 block->outptr[0][0]=block->mode[0]-1.0;
00013 }
00014 else {
00015 switch (i)
00016 {
00017 case 0:
00018 if(block->inptr[0][0]==block->inptr[1][0]) {
00019 block->outptr[0][0]=1.0;
00020 }else{
00021 block->outptr[0][0]=0.0;
00022 }
00023 break;
00024
00025 case 1:
00026 if(block->inptr[0][0]!=block->inptr[1][0]) {
00027 block->outptr[0][0]=1.0;
00028 }else{
00029 block->outptr[0][0]=0.0;
00030 }
00031 break;
00032 case 2:
00033 if(block->inptr[0][0]<block->inptr[1][0]) {
00034 block->outptr[0][0]=1.0;
00035 }else{
00036 block->outptr[0][0]=0.0;
00037 }
00038 break;
00039 case 3:
00040 if(block->inptr[0][0]<=block->inptr[1][0]) {
00041 block->outptr[0][0]=1.0;
00042 }else{
00043 block->outptr[0][0]=0.0;
00044 }
00045 break;
00046 case 4:
00047 if(block->inptr[0][0]>=block->inptr[1][0]) {
00048 block->outptr[0][0]=1.0;
00049 }else{
00050 block->outptr[0][0]=0.0;
00051 }
00052 break;
00053 case 5:
00054 if(block->inptr[0][0]>block->inptr[1][0]) {
00055 block->outptr[0][0]=1.0;
00056 }else{
00057 block->outptr[0][0]=0.0;
00058 }
00059 break;
00060 }
00061 }
00062
00063 }else if(flag==9){
00064 block->g[0]=block->inptr[0][0]-block->inptr[1][0];
00065 if (get_phase_simulation()==1) {
00066 switch (i)
00067 {
00068 case 0:
00069 if(block->inptr[0][0]==block->inptr[1][0]) {
00070 block->mode[0]=(int)2.0;
00071 }else{
00072 block->mode[0]=(int)1.0;
00073 }
00074 break;
00075
00076 case 1:
00077 if(block->inptr[0][0]!=block->inptr[1][0]) {
00078 block->mode[0]=(int)2.0;
00079 }else{
00080 block->mode[0]=(int)1.0;
00081 }
00082 break;
00083 case 2:
00084 if(block->inptr[0][0]<block->inptr[1][0]) {
00085 block->mode[0]=(int)2.0;
00086 }else{
00087 block->mode[0]=(int)1.0;
00088 }
00089 break;
00090 case 3:
00091 if(block->inptr[0][0]<=block->inptr[1][0]) {
00092 block->mode[0]=(int)2.0;
00093 }else{
00094 block->mode[0]=(int)1.0;
00095 }
00096 break;
00097 case 4:
00098 if(block->inptr[0][0]>=block->inptr[1][0]) {
00099 block->mode[0]=(int)2.0;
00100 }else{
00101 block->mode[0]=(int)1.0;
00102 }
00103 break;
00104 case 5:
00105 if(block->inptr[0][0]>block->inptr[1][0]) {
00106 block->mode[0]=(int)2.0;
00107 }else{
00108 block->mode[0]=(int)1.0;
00109 }
00110 break;
00111 }
00112 }
00113 }
00114 }