diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index 045d672e..c2e0317a 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -178,6 +178,7 @@ object Cyc_num_fast_lte_op(void *data, object x, object y); object Cyc_num_cmp_va_list(void *data, int argc, int (fn_op(void *, object, object)), object n, va_list ns); +void Cyc_expt(void *data, object cont, object x, object y); object Cyc_eq(object x, object y); object Cyc_set_cell(void *, object l, object val); object Cyc_set_car(void *, object l, object val); diff --git a/scheme/base.sld b/scheme/base.sld index df8128a8..136c493f 100644 --- a/scheme/base.sld +++ b/scheme/base.sld @@ -1163,11 +1163,7 @@ (define (square z) (* z z)) (define-c expt "(void *data, int argc, closure _, object k, object z1, object z2)" - " make_double(d, 0.0); - Cyc_check_num(data, z1); - Cyc_check_num(data, z2); - d.value = pow( unbox_number(z1), unbox_number(z2) ); - return_closcall1(data, k, &d); ") + " Cyc_expt(data, k, z1, z2); ") (define-c eof-object "(void *data, int argc, closure _, object k)" " return_closcall1(data, k, Cyc_EOF); ")