changeset 28:d8b4d38fceb6

Merged in the worker registration code for the math functions added for ICFP 08
author Mike Pavone <pavone@retrodev.com>
date Fri, 26 Jun 2009 19:57:46 -0400
parents 0c9272a96b58
children 3cc5e4a42344
files interp.c interp.h
diffstat 2 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/interp.c	Fri Jun 26 17:24:31 2009 -0400
+++ b/interp.c	Fri Jun 26 19:57:46 2009 -0400
@@ -1528,6 +1528,39 @@
 	aworker->implement_func=(custom_worker *)vis_real_div;
 	aworker->input_types[0] = BUILTIN_TYPE_REAL;
 	aworker->input_types[1] = BUILTIN_TYPE_REAL;
+	
+	aworker = create_worker(prog, "Cosine@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_cos;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Sine@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_sin;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Tangent@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_tan;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Arc Cosine@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_arccos;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Arc Sine@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_arcsin;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Arc Tangent@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_arctan;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "^@Real Number", 2, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_exp;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
+	aworker->input_types[1] = BUILTIN_TYPE_REAL;
+
+	aworker = create_worker(prog, "Square Root@Real Number", 1, 1, WORKER_TYPE);
+	aworker->implement_func=(custom_worker *)vis_real_sqrt;
+	aworker->input_types[0] = BUILTIN_TYPE_REAL;
 
 	//add_method(this_comp, aworker);
 	
--- a/interp.h	Fri Jun 26 17:24:31 2009 -0400
+++ b/interp.h	Fri Jun 26 19:57:46 2009 -0400
@@ -231,6 +231,14 @@
 int init_global_store(datum ** params, queue_entry * worker_entry);
 int vis_type_of(datum ** params, queue_entry * worker_entry);
 int vis_real_div(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_cos(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_sin(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_tan(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_arccos(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_arcsin(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_arctan(datum ** inputlist, queue_entry * worker_entry);
+int vis_real_exp(datum ** inputlist, queue_entry * workere_entry);
+int vis_real_sqrt(datum ** inputlist, queue_entry * worker_entry);
 int vis_clear_handler(datum ** params, queue_entry * entry);
 int vis_register_handler(datum  ** params, queue_entry * entry);
 int vis_held_keys(datum ** params, queue_entry * worker_entry);