diff options
author | imushir | 2016-02-09 16:38:27 +0530 |
---|---|---|
committer | imushir | 2016-02-09 16:38:27 +0530 |
commit | ee5bf4d90f78673d1e4d5a9dd304ee53c503c085 (patch) | |
tree | 696221a8f8a3dffeb50d12ea287dfbdfab919fc6 /src/c/auxiliaryFunctions | |
parent | 8ee41aca4183a0239b9cb220de3f159b1f0910fb (diff) | |
download | scilab2c-ee5bf4d90f78673d1e4d5a9dd304ee53c503c085.tar.gz scilab2c-ee5bf4d90f78673d1e4d5a9dd304ee53c503c085.tar.bz2 scilab2c-ee5bf4d90f78673d1e4d5a9dd304ee53c503c085.zip |
Support for Servo motor for Arduino. Support for'diag' in c
Diffstat (limited to 'src/c/auxiliaryFunctions')
-rw-r--r-- | src/c/auxiliaryFunctions/rand/dranda.c | 2 | ||||
-rw-r--r-- | src/c/auxiliaryFunctions/rand/drands.c | 43 |
2 files changed, 34 insertions, 11 deletions
diff --git a/src/c/auxiliaryFunctions/rand/dranda.c b/src/c/auxiliaryFunctions/rand/dranda.c index f4678279..3defc264 100644 --- a/src/c/auxiliaryFunctions/rand/dranda.c +++ b/src/c/auxiliaryFunctions/rand/dranda.c @@ -16,5 +16,5 @@ void dranda(double *out, int size) { int i = 0; for (i = 0 ; i < size ; ++i) { out[i] = drands(); - } + } } diff --git a/src/c/auxiliaryFunctions/rand/drands.c b/src/c/auxiliaryFunctions/rand/drands.c index 9b7c4cf4..658cd0b0 100644 --- a/src/c/auxiliaryFunctions/rand/drands.c +++ b/src/c/auxiliaryFunctions/rand/drands.c @@ -34,37 +34,60 @@ double drands(void) { if (m2==0){ /* if first entry, compute machine integer word length */ - while (m>m2){ + while (m>m2){ m2=m; m=itwo*m2; + } + halfm = m2; - - /* compute multiplier and increment for linear congruential method */ + + /* compute multiplier and increment for linear congruential method */ ia = 8*(int)(halfm*atan(1.0)/8.0) + 5; - ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) + 1; - mic = (m2 - ic) + m2; - - /* s is the scale factor for converting to floating point */ + + ic = 2*(int)(halfm*(0.5-sqrt(3.0)/6.0)) + 1; + + mic = (m2 - ic) + m2; + + /* s is the scale factor for converting to floating point */ s = 0.5/halfm; + + } /* compute next random number */ iy = iy*ia; + + /* the following statement is for computers which do not allow integer overflow on addition */ - if (iy > mic) iy = (iy - m2) - m2; + if (iy > mic) + { + iy = (iy - m2) - m2; + + } iy = iy + ic; /* the following statement is for computers where the word length for addition is greater than for multiplication */ - if (iy/2 > m2) iy = (iy - m2) - m2; + if (iy/2 > m2) + { + iy = (iy - m2) - m2; + + } /* the following statement is for computers where integer overflow affects the sign bit */ - if (iy < 0) iy = (iy + m2) + m2; + if (iy < 0) + { + iy = (iy + m2) + m2; + + + } + + return (double)iy*s; } |