diff --git a/docs/visualisation_scripts/code_examples/transformations/growth_rates.c b/docs/visualisation_scripts/code_examples/transformations/growth_rates.c new file mode 100644 index 0000000..9a62211 --- /dev/null +++ b/docs/visualisation_scripts/code_examples/transformations/growth_rates.c @@ -0,0 +1,166 @@ + + +/* + * \fn: sum_array + * \brief: Sum from start to end in reverse order, sum_array(&x, start, enc) = sum[t-start,...,t-end] + * \brief: QoQ sum: sum_array(&X,1,3)=sum[t-1,...,t-3] + * \brief: YoY sum: sum_array(&X,1,12)=sum[t-1,...,t-12] + */ +void sum_array(double_array * x, int start, int end, double * sum_out) +{ + int i,n; + double sum=0.0; + + n = (*x).size; + +/* + printf("\n\nSize in function: %d;", n); + for (i=0; i<(*x).size; i++) + printf(" %2.2f", (*x).array[i]); +*/ + if(0<=start && start<=end && end<=n-1) + { + //printf("\n\nCondition true: start %d end %d [0<=start (%d) && start<=end (%d) && end<=n-1 (%d)]", start, end, (0<=start), (start<=end), (end<=n-1)); + for(i=start; i<=end; i++) + { + sum += (*x).array[i]; + //printf("\nFor-loop sum %2.2f", sum); + } + + }else + { + fprintf(stderr, "\n\n WARNING: sum_array fails. Condition is false (1=true, 0=false): start %d end %d [0<=start (%d) && start<=end (%d) && end<=n-1 (%d)]\nExiting sum_array\n", start, end, (0<=start), (start<=end), (end<=n-1)); + } + + (*sum_out) = sum; +} + +/* + * \fn: sum_array_backwards + * \brief: Sum from start to end in reverse order, sum_array(&x, start, enc) = sum[t-start,...,t-end] + * \brief: QoQ sum: sum_array(&X,1,3)=sum[t-1,...,t-3] + * \brief: YoY sum: sum_array(&X,1,12)=sum[t-1,...,t-12] + */ +void sum_array_backwards(double_array * x, int start, int end, double * sum_out) +{ + int i,n; + double sum=0.0; + + n = (*x).size; + +/* + printf("\n\nSize in function: %d;", n); + for (i=0; i<(*x).size; i++) + printf(" %2.2f", (*x).array[i]); +*/ + if(0=n-end; i--) + { + sum += (*x).array[i]; + //printf("\nFor-loop sum %2.2f", sum); + } + }else + { + fprintf(stderr, "\n\nIT %d WARNING: sum_array_backwards fails. Condition is false (1=true, 0=false): start %d end %d [0<=start (%d) && start<=end (%d) && end<=n (%d)]\nExiting sum_array_backwards\n", DAY, start, end, (0