Scicos Block
eng - fr


Float modulob function block

\epsfig{file=FMODULOB_f.eps,width=90.00pt}

Contents

Palette

Description

This block realizes a non linear function modulo where the input and output are treated with real values. In accord to the parameters 'Amplitude', the input are tronqued at the minimun 0 and the maximun is the value of 'Amplitude'. This block computes the formula

$\displaystyle y=F\left(u\right)=u-m floor\left(\dfrac{u}{m}\right)
$

where 'm' is the value of 'Amplitude', 'u' the input and 'y' the output. This function is similar to the scilab 'modulo' function. The value of the output are positive or zero.
\begin{figure}\centering
\scalebox{0.4}{%
\input{fmodulob_function.pstex_t}}
\end{figure}
Figure : Positive float modulo function

Dialog box

\begin{figure}\begin{center}
\epsfig{file=FMODULOB_f_gui.eps,width=300pt}
\end{center}\end{figure}

Default properties

Interfacing function

FMODULOB_f.sci

Computational function (type 2)


/* fmodulob Scicos float modulob function
 * Type 2 simulation function ver 1.0 - scilab-2.6&2.7&3.0
 * 19 octobre 2003 - IRCOM GROUP - Author : A.Layec
 */

/* REVISION HISTORY :
 * $Log$
 */
 
#include "machine.h"
#include<math.h>

/* Cette fonction de simulation réalise la fonction non-lineaire
 * modulo sur des nombres définis en virgule flottante.
 * y=u-m*floor(u/m)
 * entrées régulières : vecteur des entrées u[0..nu-1]
 * sorties régulières : vecteur des sorties y[nu..2nu-1]
 * paramètres : rpar[0..nu-1] : m : vecteur des amplitudes
 * entrées d'évenement : néant
 * sorties d'évenement : néant
 *
 * rmq : la sortie est tjs positive
 */

/*prototype*/
void fmodulob(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,rpar,nrpar,
              ipar,nipar,inptr,insz,nin,outptr,outsz,nout)
integer *flag,*nevprt,*nx,*nz,*ntvec,*nrpar,ipar[],*nipar,insz[],*nin,outsz[],*nout;
double x[],xd[],z[],tvec[],rpar[];
double *inptr[],*outptr[],*t;
{
 /*déclaration des variables*/
 int i,nu;
 double *y;
 double *u;

 /*Récupération des adresses des ports réguliers*/
 y=(double *)outptr[0];
 u=(double *)inptr[0];

 /*Récupération de la taille du port d'entrée*/
 nu=insz[0];

 /*Calcul de la valeur modulo et place dans le registre de sortie*/
 for(i=0;i<nu;i++) y[i] = u[i]-rpar[i]*floor(u[i]/rpar[i]);
}

See also

Authors

IRCOM Group Alan Layec