# HG changeset patch # User Mike Pavone # Date 1246060666 14400 # Node ID d8b4d38fceb60d20bdd5cad413a05c6c7358c1d6 # Parent 0c9272a96b58151e4cd6b808f94e5b9caf70f560 Merged in the worker registration code for the math functions added for ICFP 08 diff -r 0c9272a96b58 -r d8b4d38fceb6 interp.c --- 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); diff -r 0c9272a96b58 -r d8b4d38fceb6 interp.h --- 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);