samer@0: /* samer@0: * Prolog-C utilities samer@0: * Samer Abdallah (2009) samer@0: */ samer@0: samer@0: //#define _USE_MATH_DEFINES 1 samer@0: //#include "plutils.h" samer@0: samer@0: //#include samer@0: //#include samer@0: samer@0: // throws a Prolog exception to signal type error samer@0: int type_error(term_t actual, const char *expected) samer@0: { samer@0: term_t ex = PL_new_term_ref(); samer@0: int rc = PL_unify_term(ex, PL_FUNCTOR_CHARS, "error", 2, samer@0: PL_FUNCTOR_CHARS, "type_error", 2, samer@0: PL_CHARS, expected, samer@0: PL_TERM, actual, samer@0: PL_VARIABLE); samer@0: samer@0: return rc && PL_raise_exception(ex); samer@0: } samer@0: samer@0: double sum_array(double *p, int n) { samer@0: double tot=0; samer@0: int i; samer@0: for (i=0; i