- Added complex numbers representation (exact complex only).
- Added make-rectangular. - Added the ability to display complex numbers.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user