- Added complex numbers representation (exact complex only).

- Added make-rectangular.
- Added the ability to display complex numbers.
This commit is contained in:
Abdulaziz Ghuloum
2008-05-18 20:39:41 -07:00
parent da7cedfe64
commit 82140f87ba
10 changed files with 144 additions and 23 deletions
+12
View File
@@ -1224,6 +1224,18 @@ add_object_proc(gc_t* gc, ikptr x)
ref(y, disp_ratnum_den-vector_tag) = add_object(gc, den, "den");
return y;
}
else if(fst == compnum_tag){
ikptr y = gc_alloc_new_data(compnum_size, gc) + vector_tag;
ikptr rl = ref(x, disp_compnum_real-vector_tag);
ikptr im = ref(x, disp_compnum_imag-vector_tag);
ref(x, -vector_tag) = forward_ptr;
ref(x, wordsize-vector_tag) = y;
ref(y, -vector_tag) = fst;
ref(y, disp_compnum_real-vector_tag) = add_object(gc, rl, "real");
ref(y, disp_compnum_imag-vector_tag) = add_object(gc, im, "imag");
return y;
}
else {
fprintf(stderr, "unhandled vector with fst=0x%016lx\n",
(long int)fst);
+6
View File
@@ -391,6 +391,12 @@ ikptr ik_safe_alloc(ikpcb* pcb, int size);
#define disp_ratnum_unused (3 * wordsize)
#define ratnum_size (4 * wordsize)
#define compnum_tag ((ikptr) 0x37)
#define disp_compnum_real (1 * wordsize)
#define disp_compnum_imag (2 * wordsize)
#define disp_compnum_unused (3 * wordsize)
#define compnum_size (4 * wordsize)
#define ik_eof_p(x) ((x) == ik_eof_object)
#define page_index(x) (((unsigned long int)(x)) >> pageshift)