/*
 * Copyright 2016, NICTA
 *
 * This software may be distributed and modified according to the terms of
 * the GNU General Public License version 2. Note that NO WARRANTY is provided.
 * See "LICENSE_GPLv2.txt" for details.
 *
 * @TAG(NICTA_GPL)
 */

$esc:(#include "../../cogent/lib/cogent.h")
$esc:(#include <stdio.h>)

static inline $ty:acc $id:seq32($ty:(Seq32Param acc) args){
  unsigned i;
  $ty:(Seq32_bodyParam acc) fargs;

  fargs.acc = args.acc;
  for (i = args.frm; i < args.to; i++) {
    fargs.idx = i;
    fargs.acc = (($spec:(Seq32_body acc))args.f)(fargs);
	}
	return fargs.acc;
}

int main(void) {
  unsigned i;
  for (i = 0; i < 10; i++) {
    printf("triangular(%u) = %u\n", i, triangular(i));
  }
  return 0;
}
