Computational routine
eng
signum
#include "scicos_block.h"
#include <math.h>
void signum(scicos_block *block,int flag)
{
int i,j;
if (flag==1){
for(i=0;i<block->insz[0];++i){
if (get_phase_simulation()==1||block->ng==0) {
if (block->inptr[0][i]<0){
j=2;
} else if (block->inptr[0][i]>0){
j=1;
}else{
j=0;
}
}else {
j=block->mode[i];
}
if (j==1){
block->outptr[0][i]=1.0;
} else if(j==2){
block->outptr[0][i]=-1.0;
}else{
block->outptr[0][i]=0.0;
}
}
}else if (flag==9){
for(i=0;i<block->insz[0];++i){
block->g[i]=block->inptr[0][i];
if (get_phase_simulation()==1) {
if(block->g[i]<0){
block->mode[i]=2;
}else{
block->mode[i]=1;
}
}
}
}
}