mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-25 13:05: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/eval \
|
||||||
scheme/file \
|
scheme/file \
|
||||||
scheme/load \
|
scheme/load \
|
||||||
|
scheme/inexact \
|
||||||
scheme/process-context \
|
scheme/process-context \
|
||||||
scheme/read \
|
scheme/read \
|
||||||
scheme/time \
|
scheme/time \
|
||||||
|
@ -82,6 +83,7 @@ bootstrap: icyc
|
||||||
cp scheme/char.c $(BOOTSTRAP_DIR)/scheme
|
cp scheme/char.c $(BOOTSTRAP_DIR)/scheme
|
||||||
cp scheme/eval.c $(BOOTSTRAP_DIR)/scheme
|
cp scheme/eval.c $(BOOTSTRAP_DIR)/scheme
|
||||||
cp scheme/file.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/load.c $(BOOTSTRAP_DIR)/scheme
|
||||||
cp scheme/process-context.c $(BOOTSTRAP_DIR)/scheme
|
cp scheme/process-context.c $(BOOTSTRAP_DIR)/scheme
|
||||||
cp scheme/time.c $(BOOTSTRAP_DIR)/scheme
|
cp scheme/time.c $(BOOTSTRAP_DIR)/scheme
|
||||||
|
|
1
icyc.scm
1
icyc.scm
|
@ -10,6 +10,7 @@
|
||||||
(scheme load)
|
(scheme load)
|
||||||
(scheme read)
|
(scheme read)
|
||||||
(scheme write)
|
(scheme write)
|
||||||
|
(scheme inexact)
|
||||||
(scheme process-context)
|
(scheme process-context)
|
||||||
(scheme time)
|
(scheme time)
|
||||||
(scheme eval))
|
(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. */
|
/* Prototypes for primitive functions. */
|
||||||
|
|
||||||
extern object Cyc_global_variables;
|
extern object Cyc_global_variables;
|
||||||
|
|
|
@ -5,12 +5,5 @@
|
||||||
(begin
|
(begin
|
||||||
(define-c sin
|
(define-c sin
|
||||||
"(void *data, int argc, closure _, object k, object z)"
|
"(void *data, int argc, closure _, object k, object z)"
|
||||||
" make_double(d, 0.0);
|
" return_inexact_double_op(data, k, sin, z);")
|
||||||
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); ")
|
|
||||||
))
|
))
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
current-second
|
current-second
|
||||||
current-jiffy
|
current-jiffy
|
||||||
jiffies-per-second
|
jiffies-per-second
|
||||||
sin ;; just temporary, will be relocated
|
|
||||||
)
|
)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
)
|
)
|
||||||
|
@ -25,14 +24,4 @@
|
||||||
"(void *data, int argc, closure _, object k)"
|
"(void *data, int argc, closure _, object k)"
|
||||||
" make_int(box, CLOCKS_PER_SEC);
|
" make_int(box, CLOCKS_PER_SEC);
|
||||||
return_closcall1(data, k, &box); ")
|
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