diff --git a/scheme/time.sld b/scheme/time.sld index c7d11c43..bf28fc1e 100644 --- a/scheme/time.sld +++ b/scheme/time.sld @@ -3,6 +3,7 @@ current-second current-jiffy jiffies-per-second + sin ;; just temporary, will be relocated ) (import (scheme base) ) @@ -24,4 +25,14 @@ "(void *data, int argc, closure _, object k)" " make_int(box, CLOCKS_PER_SEC); return_closcall1(data, k, &box); ") + (define-c sin + "(void *data, int argc, closure _, object k, object z)" + " make_double(d, 0.0); + Cyc_check_num(data, z); + if (type_of(z) == integer_tag) { + d.value = sin(((integer_type *)z)->value); + } else { + d.value = sin(((double_type *)z)->value); + } + return_closcall1(data, k, &d); ") ))