mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Added inexact module
This commit is contained in:
parent
30c5eaf34d
commit
a1ae377352
5 changed files with 14 additions and 19 deletions
2
Makefile
2
Makefile
|
@ -15,6 +15,7 @@ SMODULES = \
|
|||
scheme/eval \
|
||||
scheme/file \
|
||||
scheme/load \
|
||||
scheme/inexact \
|
||||
scheme/process-context \
|
||||
scheme/read \
|
||||
scheme/time \
|
||||
|
@ -82,6 +83,7 @@ bootstrap: icyc
|
|||
cp scheme/char.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/eval.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/file.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/inexact.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/load.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/process-context.c $(BOOTSTRAP_DIR)/scheme
|
||||
cp scheme/time.c $(BOOTSTRAP_DIR)/scheme
|
||||
|
|
1
icyc.scm
1
icyc.scm
|
@ -10,6 +10,7 @@
|
|||
(scheme load)
|
||||
(scheme read)
|
||||
(scheme write)
|
||||
(scheme inexact)
|
||||
(scheme process-context)
|
||||
(scheme time)
|
||||
(scheme eval))
|
||||
|
|
|
@ -83,6 +83,16 @@ object Cyc_global_set(void *thd, object *glo, object value);
|
|||
} \
|
||||
}
|
||||
|
||||
#define return_inexact_double_op(data, cont, OP, z) \
|
||||
make_double(d, 0.0); \
|
||||
Cyc_check_num(data, z); \
|
||||
if (type_of(z) == integer_tag) { \
|
||||
d.value = OP(((integer_type *)z)->value); \
|
||||
} else { \
|
||||
d.value = OP(((double_type *)z)->value); \
|
||||
} \
|
||||
return_closcall1(data, cont, &d)
|
||||
|
||||
/* Prototypes for primitive functions. */
|
||||
|
||||
extern object Cyc_global_variables;
|
||||
|
|
|
@ -5,12 +5,5 @@
|
|||
(begin
|
||||
(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); ")
|
||||
" return_inexact_double_op(data, k, sin, z);")
|
||||
))
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
current-second
|
||||
current-jiffy
|
||||
jiffies-per-second
|
||||
sin ;; just temporary, will be relocated
|
||||
)
|
||||
(import (scheme base)
|
||||
)
|
||||
|
@ -25,14 +24,4 @@
|
|||
"(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); ")
|
||||
))
|
||||
|
|
Loading…
Add table
Reference in a new issue