#include "scicos_block.h"#include <math.h>Include dependency graph for minmax.c:

Go to the source code of this file.
Functions | |
| void | minmax (scicos_block *block, int flag) |
| void minmax | ( | scicos_block * | block, | |
| int | flag | |||
| ) |
Definition at line 4 of file minmax.c.
References get_phase_simulation(), i, scicos_block::inptr, scicos_block::insz, scicos_block::ipar, max, min, scicos_block::mode, scicos_block::ng, scicos_block::nin, scicos_block::outptr, and phase.
00005 { /*ipar[0]=1 -> min, ipar[0]=2 -> max */ 00006 00007 int i,phase; 00008 double maxmin; 00009 phase=get_phase_simulation(); 00010 if (flag == 1) { 00011 if(block->nin==1){ 00012 if((block->ng==0)||(phase==1)){ 00013 maxmin=block->inptr[0][0]; 00014 for (i=1;i<block->insz[0];++i){ 00015 if(block->ipar[0]==1){ 00016 if(block->inptr[0][i]<maxmin) maxmin=block->inptr[0][i]; 00017 } else { 00018 if(block->inptr[0][i]>maxmin) maxmin=block->inptr[0][i]; 00019 } 00020 } 00021 }else{ 00022 maxmin=block->inptr[0][block->mode[0]-1]; 00023 } 00024 block->outptr[0][0]=maxmin; 00025 00026 }else if (block->nin==2){ 00027 for (i=0;i<block->insz[0];++i){ 00028 if((block->ng==0)||(phase==1)){ 00029 if(block->ipar[0]==1){ 00030 block->outptr[0][i]=min(block->inptr[0][i],block->inptr[1][i]); 00031 } else { 00032 block->outptr[0][i]=max(block->inptr[0][i],block->inptr[1][i]); 00033 } 00034 }else{ 00035 block->outptr[0][i]=block->inptr[block->mode[0]-1][i]; 00036 } 00037 } 00038 } 00039 } else if(flag == 9){ 00040 if(block->nin==1){ 00041 if(block->nin==1){ 00042 if (phase==2){ 00043 for (i=0;i<block->insz[0];++i){ 00044 if(i!=block->mode[0]-1){ 00045 block->g[i]=block->inptr[0][i]-block->inptr[0][block->mode[0]-1]; 00046 }else{ 00047 block->g[i]=1.0; 00048 } 00049 } 00050 } else if (phase==1){ 00051 maxmin=block->inptr[0][0]; 00052 for (i=1;i<block->insz[0];++i){ 00053 block->mode[0]=1; 00054 if(block->ipar[0]==1){ 00055 if(block->inptr[0][i]<maxmin) { 00056 maxmin=block->inptr[0][i]; 00057 block->mode[0]=i+1; 00058 } 00059 } else { 00060 if(block->inptr[0][i]>maxmin) { 00061 maxmin=block->inptr[0][i]; 00062 block->mode[0]=i+1; 00063 } 00064 } 00065 } 00066 } 00067 } 00068 }else if(block->nin==2){ 00069 for (i=0;i<block->insz[0];++i){ 00070 block->g[i]=block->inptr[0][i]-block->inptr[1][i]; 00071 if(phase==1){ 00072 if(block->ipar[0]==1){ 00073 if(block->g[i]>0) { 00074 block->mode[i]=2; 00075 }else{ 00076 block->mode[i]=1; 00077 } 00078 }else{ 00079 if(block->g[i]<0) { 00080 block->mode[i]=2; 00081 }else{ 00082 block->mode[i]=1; 00083 } 00084 } 00085 } 00086 } 00087 } 00088 } 00089 }
Here is the call graph for this function:

1.5.1