1 /* TA-LIB Copyright (c) 1999-2007, Mario Fortier
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
6 * conditions are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * - Neither name of author nor the names of its contributors
17 * may be used to endorse or promote products derived from this
18 * software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
30 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
31 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34 /* List of contributors:
35 *
36 * Initial Name/description
37 * -------------------------------------------------------------------
38 * MF Mario Fortier
39 * JV Jesus Viver <324122@cienz.unizar.es>
40 *
41 * Change history:
42 *
43 * MMDDYY BY Description
44 * -------------------------------------------------------------------
45 * 112400 MF Template creation.
46 * 100502 JV Speed optimization of the algorithm
47 * 052603 MF Adapt code to compile with .NET Managed C++
48 * 090404 MF Fix #978056. Trap sqrt with negative zero values.
49 */
50
51 /**** START GENCODE SECTION 1 - DO NOT DELETE THIS LINE ****/
52 /* All code within this section is automatically
53 * generated by gen_code. Any modification will be lost
54 * next time gen_code is run.
55 */
56 /* Generated */
57 /* Generated */ #if defined( _MANAGED )
58 /* Generated */ #include "TA-Lib-Core.h"
59 /* Generated */ #define TA_INTERNAL_ERROR(Id) (RetCode::InternalError)
60 /* Generated */ namespace TicTacTec { namespace TA { namespace Library {
61 /* Generated */ #elif defined( _JAVA )
62 /* Generated */ #include "ta_defs.h"
63 /* Generated */ #include "ta_java_defs.h"
64 /* Generated */ #define TA_INTERNAL_ERROR(Id) (RetCode.InternalError)
65 /* Generated */ #else
66 /* Generated */ #include <string.h>
67 /* Generated */ #include <math.h>
68 /* Generated */ #include "ta_func.h"
69 /* Generated */ #endif
70 /* Generated */
71 /* Generated */ #ifndef TA_UTILITY_H
72 /* Generated */ #include "ta_utility.h"
73 /* Generated */ #endif
74 /* Generated */
75 /* Generated */ #ifndef TA_MEMORY_H
76 /* Generated */ #include "ta_memory.h"
77 /* Generated */ #endif
78 /* Generated */
79 /* Generated */ #define TA_PREFIX(x) TA_##x
80 /* Generated */ #define INPUT_TYPE double
81 /* Generated */
82 /* Generated */ #if defined( _MANAGED )
StdDevLookback(int optInTimePeriod,double optInNbDev)83 /* Generated */ int Core::StdDevLookback( int optInTimePeriod, /* From 2 to 100000 */
84 /* Generated */ double optInNbDev ) /* From TA_REAL_MIN to TA_REAL_MAX */
85 /* Generated */
86 /* Generated */ #elif defined( _JAVA )
87 /* Generated */ public int stdDevLookback( int optInTimePeriod, /* From 2 to 100000 */
88 /* Generated */ double optInNbDev ) /* From TA_REAL_MIN to TA_REAL_MAX */
89 /* Generated */
90 /* Generated */ #else
91 /* Generated */ int TA_STDDEV_Lookback( int optInTimePeriod, /* From 2 to 100000 */
92 /* Generated */ double optInNbDev ) /* From TA_REAL_MIN to TA_REAL_MAX */
93 /* Generated */
94 /* Generated */ #endif
95 /**** END GENCODE SECTION 1 - DO NOT DELETE THIS LINE ****/
96 {
97 /* insert local variable here */
98
99 /**** START GENCODE SECTION 2 - DO NOT DELETE THIS LINE ****/
100 /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK
101 /* Generated */ /* min/max are checked for optInTimePeriod. */
102 /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT )
103 /* Generated */ optInTimePeriod = 5;
104 /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) )
105 /* Generated */ return -1;
106 /* Generated */
107 /* Generated */ if( optInNbDev == TA_REAL_DEFAULT )
108 /* Generated */ optInNbDev = 1.000000e+0;
109 /* Generated */ else if( (optInNbDev < -3.000000e+37) ||/* Generated */ (optInNbDev > 3.000000e+37) )
110 /* Generated */ return -1;
111 /* Generated */
112 /* Generated */ #endif /* TA_FUNC_NO_RANGE_CHECK */
113 /**** END GENCODE SECTION 2 - DO NOT DELETE THIS LINE ****/
114
115 /* insert lookback code here. */
116
117 /* Lookback is driven by the variance. */
118 return LOOKBACK_CALL(VAR)( optInTimePeriod, optInNbDev );
119 }
120
121 /**** START GENCODE SECTION 3 - DO NOT DELETE THIS LINE ****/
122 /*
123 * TA_STDDEV - Standard Deviation
124 *
125 * Input = double
126 * Output = double
127 *
128 * Optional Parameters
129 * -------------------
130 * optInTimePeriod:(From 2 to 100000)
131 * Number of period
132 *
133 * optInNbDev:(From TA_REAL_MIN to TA_REAL_MAX)
134 * Nb of deviations
135 *
136 *
137 */
138 /* Generated */
139 /* Generated */ #if defined( _MANAGED ) && defined( USE_SUBARRAY )
140 /* Generated */ enum class Core::RetCode Core::StdDev( int startIdx,
141 /* Generated */ int endIdx,
142 /* Generated */ SubArray^ inReal,
143 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
144 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
145 /* Generated */ [Out]int% outBegIdx,
146 /* Generated */ [Out]int% outNBElement,
147 /* Generated */ cli::array<double>^ outReal )
148 /* Generated */ #elif defined( _MANAGED )
149 /* Generated */ enum class Core::RetCode Core::StdDev( int startIdx,
150 /* Generated */ int endIdx,
151 /* Generated */ cli::array<double>^ inReal,
152 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
153 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
154 /* Generated */ [Out]int% outBegIdx,
155 /* Generated */ [Out]int% outNBElement,
156 /* Generated */ cli::array<double>^ outReal )
157 /* Generated */ #elif defined( _JAVA )
158 /* Generated */ public RetCode stdDev( int startIdx,
159 /* Generated */ int endIdx,
160 /* Generated */ double inReal[],
161 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
162 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
163 /* Generated */ MInteger outBegIdx,
164 /* Generated */ MInteger outNBElement,
165 /* Generated */ double outReal[] )
166 /* Generated */ #else
167 /* Generated */ TA_RetCode TA_STDDEV( int startIdx,
168 /* Generated */ int endIdx,
169 /* Generated */ const double inReal[],
170 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
171 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
172 /* Generated */ int *outBegIdx,
173 /* Generated */ int *outNBElement,
174 /* Generated */ double outReal[] )
175 /* Generated */ #endif
176 /**** END GENCODE SECTION 3 - DO NOT DELETE THIS LINE ****/
177 {
178 /* Insert local variables here. */
179 int i;
180 ENUM_DECLARATION(RetCode) retCode;
181 double tempReal;
182
183 /**** START GENCODE SECTION 4 - DO NOT DELETE THIS LINE ****/
184 /* Generated */
185 /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK
186 /* Generated */
187 /* Generated */ /* Validate the requested output range. */
188 /* Generated */ if( startIdx < 0 )
189 /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex);
190 /* Generated */ if( (endIdx < 0) || (endIdx < startIdx))
191 /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex);
192 /* Generated */
193 /* Generated */ #if !defined(_JAVA)
194 /* Generated */ if( !inReal ) return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
195 /* Generated */ #endif /* !defined(_JAVA)*/
196 /* Generated */ /* min/max are checked for optInTimePeriod. */
197 /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT )
198 /* Generated */ optInTimePeriod = 5;
199 /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) )
200 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
201 /* Generated */
202 /* Generated */ if( optInNbDev == TA_REAL_DEFAULT )
203 /* Generated */ optInNbDev = 1.000000e+0;
204 /* Generated */ else if( (optInNbDev < -3.000000e+37) ||/* Generated */ (optInNbDev > 3.000000e+37) )
205 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
206 /* Generated */
207 /* Generated */ #if !defined(_JAVA)
208 /* Generated */ if( !outReal )
209 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
210 /* Generated */
211 /* Generated */ #endif /* !defined(_JAVA) */
212 /* Generated */ #endif /* TA_FUNC_NO_RANGE_CHECK */
213 /* Generated */
214 /**** END GENCODE SECTION 4 - DO NOT DELETE THIS LINE ****/
215
216 /* Insert TA function code here. */
217
218 /* Calculate the variance. */
219 retCode = FUNCTION_CALL(INT_VAR)( startIdx, endIdx,
220 inReal, optInTimePeriod,
221 outBegIdx, outNBElement, outReal );
222
223 if( retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) )
224 return retCode;
225
226 /* Calculate the square root of each variance, this
227 * is the standard deviation.
228 *
229 * Multiply also by the ratio specified.
230 */
231 if( optInNbDev != 1.0 )
232 {
233 for( i=0; i < (int)VALUE_HANDLE_DEREF(outNBElement); i++ )
234 {
235 tempReal = outReal[i];
236 if( !TA_IS_ZERO_OR_NEG(tempReal) )
237 outReal[i] = std_sqrt(tempReal) * optInNbDev;
238 else
239 outReal[i] = (double)0.0;
240 }
241 }
242 else
243 {
244 for( i=0; i < (int)VALUE_HANDLE_DEREF(outNBElement); i++ )
245 {
246 tempReal = outReal[i];
247 if( !TA_IS_ZERO_OR_NEG(tempReal) )
248 outReal[i] = std_sqrt(tempReal);
249 else
250 outReal[i] = (double)0.0;
251 }
252 }
253
254 return ENUM_VALUE(RetCode,TA_SUCCESS,Success);
255 }
256
257 /* The inMovAvg is the moving average of the inReal.
258 *
259 * inMovAvgBegIdx is relative to inReal, in other word
260 * this is the 'outBegIdx' who was returned when doing the
261 * MA on the inReal.
262 *
263 * inMovAvgNbElement is the number of element who was returned
264 * when doing the MA on the inReal.
265 *
266 * Note: This function is not used by TA_STDDEV, since TA_STDDEV
267 * is optimized considering it uses always a simple moving
268 * average. Still the function is put here because it is
269 * closely related.
270 */
271 #if defined( _MANAGED ) && defined( USE_SUBARRAY ) && !defined(USE_SINGLE_PRECISION_INPUT)
272 void Core::TA_INT_stddev_using_precalc_ma( SubArray^ inReal,
273 cli::array<double>^ inMovAvg,
274 int inMovAvgBegIdx,
275 int inMovAvgNbElement,
276 int timePeriod,
277 cli::array<double>^ output)
278 #elif defined( _MANAGED )
279 void Core::TA_INT_stddev_using_precalc_ma( cli::array<INPUT_TYPE>^ inReal,
280 cli::array<double>^ inMovAvg,
281 int inMovAvgBegIdx,
282 int inMovAvgNbElement,
283 int timePeriod,
284 cli::array<double>^ output)
285 #elif defined( _JAVA )
286 void TA_INT_stddev_using_precalc_ma( INPUT_TYPE inReal[],
287 double inMovAvg[],
288 int inMovAvgBegIdx,
289 int inMovAvgNbElement,
290 int timePeriod,
291 double output[] )
292 #else
293 void TA_PREFIX(INT_stddev_using_precalc_ma)( const INPUT_TYPE *inReal,
294 const double *inMovAvg,
295 int inMovAvgBegIdx,
296 int inMovAvgNbElement,
297 int timePeriod,
298 double *output )
299 #endif
300 {
301 double tempReal, periodTotal2, meanValue2;
302 int outIdx;
303
304 /* Start/end index for sumation. */
305 int startSum, endSum;
306
307 startSum = 1+inMovAvgBegIdx-timePeriod;
308 endSum = inMovAvgBegIdx;
309
310 periodTotal2 = 0;
311
312 for( outIdx = startSum; outIdx < endSum; outIdx++)
313 {
314 tempReal = inReal[outIdx];
315 tempReal *= tempReal;
316 periodTotal2 += tempReal;
317 }
318
319 for( outIdx=0; outIdx < inMovAvgNbElement; outIdx++, startSum++, endSum++ )
320 {
321 tempReal = inReal[endSum];
322 tempReal *= tempReal;
323 periodTotal2 += tempReal;
324 meanValue2 = periodTotal2/timePeriod;
325
326 tempReal = inReal[startSum];
327 tempReal *= tempReal;
328 periodTotal2 -= tempReal;
329
330 tempReal = inMovAvg[outIdx];
331 tempReal *= tempReal;
332 meanValue2 -= tempReal;
333
334 if( !TA_IS_ZERO_OR_NEG(meanValue2) )
335 output[outIdx] = std_sqrt(meanValue2);
336 else
337 output[outIdx] = (double)0.0;
338 }
339 }
340
341 /**** START GENCODE SECTION 5 - DO NOT DELETE THIS LINE ****/
342 /* Generated */
343 /* Generated */ #define USE_SINGLE_PRECISION_INPUT
344 /* Generated */ #if !defined( _MANAGED ) && !defined( _JAVA )
345 /* Generated */ #undef TA_PREFIX
346 /* Generated */ #define TA_PREFIX(x) TA_S_##x
347 /* Generated */ #endif
348 /* Generated */ #undef INPUT_TYPE
349 /* Generated */ #define INPUT_TYPE float
350 /* Generated */ #if defined( _MANAGED )
351 /* Generated */ enum class Core::RetCode Core::StdDev( int startIdx,
352 /* Generated */ int endIdx,
353 /* Generated */ cli::array<float>^ inReal,
354 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
355 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
356 /* Generated */ [Out]int% outBegIdx,
357 /* Generated */ [Out]int% outNBElement,
358 /* Generated */ cli::array<double>^ outReal )
359 /* Generated */ #elif defined( _JAVA )
360 /* Generated */ public RetCode stdDev( int startIdx,
361 /* Generated */ int endIdx,
362 /* Generated */ float inReal[],
363 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
364 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
365 /* Generated */ MInteger outBegIdx,
366 /* Generated */ MInteger outNBElement,
367 /* Generated */ double outReal[] )
368 /* Generated */ #else
369 /* Generated */ TA_RetCode TA_S_STDDEV( int startIdx,
370 /* Generated */ int endIdx,
371 /* Generated */ const float inReal[],
372 /* Generated */ int optInTimePeriod, /* From 2 to 100000 */
373 /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */
374 /* Generated */ int *outBegIdx,
375 /* Generated */ int *outNBElement,
376 /* Generated */ double outReal[] )
377 /* Generated */ #endif
378 /* Generated */ {
379 /* Generated */ int i;
380 /* Generated */ ENUM_DECLARATION(RetCode) retCode;
381 /* Generated */ double tempReal;
382 /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK
383 /* Generated */ if( startIdx < 0 )
384 /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex);
385 /* Generated */ if( (endIdx < 0) || (endIdx < startIdx))
386 /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex);
387 /* Generated */ #if !defined(_JAVA)
388 /* Generated */ if( !inReal ) return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
389 /* Generated */ #endif
390 /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT )
391 /* Generated */ optInTimePeriod = 5;
392 /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) )
393 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
394 /* Generated */ if( optInNbDev == TA_REAL_DEFAULT )
395 /* Generated */ optInNbDev = 1.000000e+0;
396 /* Generated */ else if( (optInNbDev < -3.000000e+37) || (optInNbDev > 3.000000e+37) )
397 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
398 /* Generated */ #if !defined(_JAVA)
399 /* Generated */ if( !outReal )
400 /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);
401 /* Generated */ #endif
402 /* Generated */ #endif
403 /* Generated */ retCode = FUNCTION_CALL(INT_VAR)( startIdx, endIdx,
404 /* Generated */ inReal, optInTimePeriod,
405 /* Generated */ outBegIdx, outNBElement, outReal );
406 /* Generated */ if( retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) )
407 /* Generated */ return retCode;
408 /* Generated */ if( optInNbDev != 1.0 )
409 /* Generated */ {
410 /* Generated */ for( i=0; i < (int)VALUE_HANDLE_DEREF(outNBElement); i++ )
411 /* Generated */ {
412 /* Generated */ tempReal = outReal[i];
413 /* Generated */ if( !TA_IS_ZERO_OR_NEG(tempReal) )
414 /* Generated */ outReal[i] = std_sqrt(tempReal) * optInNbDev;
415 /* Generated */ else
416 /* Generated */ outReal[i] = (double)0.0;
417 /* Generated */ }
418 /* Generated */ }
419 /* Generated */ else
420 /* Generated */ {
421 /* Generated */ for( i=0; i < (int)VALUE_HANDLE_DEREF(outNBElement); i++ )
422 /* Generated */ {
423 /* Generated */ tempReal = outReal[i];
424 /* Generated */ if( !TA_IS_ZERO_OR_NEG(tempReal) )
425 /* Generated */ outReal[i] = std_sqrt(tempReal);
426 /* Generated */ else
427 /* Generated */ outReal[i] = (double)0.0;
428 /* Generated */ }
429 /* Generated */ }
430 /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success);
431 /* Generated */ }
432 /* Generated */ #if defined( _MANAGED ) && defined( USE_SUBARRAY ) && !defined(USE_SINGLE_PRECISION_INPUT)
433 /* Generated */ void Core::TA_INT_stddev_using_precalc_ma( SubArray^ inReal,
434 /* Generated */ cli::array<double>^ inMovAvg,
435 /* Generated */ int inMovAvgBegIdx,
436 /* Generated */ int inMovAvgNbElement,
437 /* Generated */ int timePeriod,
438 /* Generated */ cli::array<double>^ output)
439 /* Generated */ #elif defined( _MANAGED )
440 /* Generated */ void Core::TA_INT_stddev_using_precalc_ma( cli::array<INPUT_TYPE>^ inReal,
441 /* Generated */ cli::array<double>^ inMovAvg,
442 /* Generated */ int inMovAvgBegIdx,
443 /* Generated */ int inMovAvgNbElement,
444 /* Generated */ int timePeriod,
445 /* Generated */ cli::array<double>^ output)
446 /* Generated */ #elif defined( _JAVA )
447 /* Generated */ void TA_INT_stddev_using_precalc_ma( INPUT_TYPE inReal[],
448 /* Generated */ double inMovAvg[],
449 /* Generated */ int inMovAvgBegIdx,
450 /* Generated */ int inMovAvgNbElement,
451 /* Generated */ int timePeriod,
452 /* Generated */ double output[] )
453 /* Generated */ #else
454 /* Generated */ void TA_PREFIX(INT_stddev_using_precalc_ma)( const INPUT_TYPE *inReal,
455 /* Generated */ const double *inMovAvg,
456 /* Generated */ int inMovAvgBegIdx,
457 /* Generated */ int inMovAvgNbElement,
458 /* Generated */ int timePeriod,
459 /* Generated */ double *output )
460 /* Generated */ #endif
461 /* Generated */ {
462 /* Generated */ double tempReal, periodTotal2, meanValue2;
463 /* Generated */ int outIdx;
464 /* Generated */ int startSum, endSum;
465 /* Generated */ startSum = 1+inMovAvgBegIdx-timePeriod;
466 /* Generated */ endSum = inMovAvgBegIdx;
467 /* Generated */ periodTotal2 = 0;
468 /* Generated */ for( outIdx = startSum; outIdx < endSum; outIdx++)
469 /* Generated */ {
470 /* Generated */ tempReal = inReal[outIdx];
471 /* Generated */ tempReal *= tempReal;
472 /* Generated */ periodTotal2 += tempReal;
473 /* Generated */ }
474 /* Generated */ for( outIdx=0; outIdx < inMovAvgNbElement; outIdx++, startSum++, endSum++ )
475 /* Generated */ {
476 /* Generated */ tempReal = inReal[endSum];
477 /* Generated */ tempReal *= tempReal;
478 /* Generated */ periodTotal2 += tempReal;
479 /* Generated */ meanValue2 = periodTotal2/timePeriod;
480 /* Generated */ tempReal = inReal[startSum];
481 /* Generated */ tempReal *= tempReal;
482 /* Generated */ periodTotal2 -= tempReal;
483 /* Generated */ tempReal = inMovAvg[outIdx];
484 /* Generated */ tempReal *= tempReal;
485 /* Generated */ meanValue2 -= tempReal;
486 /* Generated */ if( !TA_IS_ZERO_OR_NEG(meanValue2) )
487 /* Generated */ output[outIdx] = std_sqrt(meanValue2);
488 /* Generated */ else
489 /* Generated */ output[outIdx] = (double)0.0;
490 /* Generated */ }
491 /* Generated */ }
492 /* Generated */
493 /* Generated */ #if defined( _MANAGED )
494 /* Generated */ }}} // Close namespace TicTacTec.TA.Lib
495 /* Generated */ #endif
496 /**** END GENCODE SECTION 5 - DO NOT DELETE THIS LINE ****/
497
498