Calculate the sum over a container

From CodeCodex

Revision as of 03:29, 30 May 2007 by (Talk)

Related content:

This code demonstrates how to calculate the sum of a container (most often an array or similar structure).

See also


Algol 68

The following function computes the sum of the elements of the array passed to it. The type of the array elements is called NUM, which can be defined as any suitable integer or real type.

MODE NUM = INT; # type of array element #

PROC sum = ([] NUM a) NUM :
        NUM result := 0;
        FOR i FROM LWB a TO UPB a DO
            result +:= a[i]

For instance, the call

sum((3, 4, 5, 6))

returns 18.


Total of a series function. Terminate by using INT_MAX

//stdarg.h must be included for this type of function to be declared
#include <stdarg.h>

int total( int first, ... ) {
   int count = 0, sum = 0, i = first;
   va_list marker;

   va_start( marker, first );     /* Initialize variable arguments. */
   while( i != INT_MAX )
      sum += i;                   //increases the sum
      i = va_arg( marker, int);   //Gets the next argument
   va_end( marker );              // Resets the list
   return sum;



sum = accumulate(coll.begin(),coll.end(),0);

Common Lisp

(reduce #'+ list)

Another way:

(apply #'+ list)


INT_MAX = 2147483647.

sum proc
	mov ecx,DWORD PTR [esp]
	add esp,4
	xor eax,eax
	add eax,DWORD PTR [esp]
	add esp,4
	cmp DWORD PTR [esp],2147483647
	jne sum_loop1
	mov DWORD PTR [esp],ecx
sum endp


sum container


import java.util.*;

public class Total {

    public static int total(int... values) {
        int total = 0;
        for (int i : values) total += i;       
        return total;

    public static void main(String[] args) {

        System.out.println("Total: %d: ", total(1,2,4,40));


Summing is a special case of folding the addition operator starting with zero:

# let sum = List.fold_left ( + ) 0;;
val sum : int list -> int = <fun>

For example:

# sum [1; 2; 4; 40];;
- : int = 47


A function that sums the values in a sequence is built into python, its name is 'sum'.

if __name__ == '__main__':
  assert sum([1,2,3]) == 6

A parallel to the ANSI C example given above is as follows:

import itertools
def total(*values):
  return sum(itertools.takewhile(sys.maxint.__cmp__, values))

if __name__ == '__main__':
  assert total(1,2,3,sys.maxint) == 6


class Array
  def sum;     inject(0) { |s, v| s += v }; end