The beginning of bignums is in place, tests still pass.
This commit is contained in:
parent
c21a762413
commit
342f0308d3
11 changed files with 134 additions and 96 deletions
|
|
@ -85,8 +85,9 @@ bool equal( struct cons_pointer a, struct cons_pointer b ) {
|
|||
break;
|
||||
case INTEGERTV:
|
||||
result =
|
||||
cell_a->payload.integer.value ==
|
||||
cell_b->payload.integer.value;
|
||||
(cell_a->payload.integer.value ==
|
||||
cell_b->payload.integer.value) &&
|
||||
equal(cell_a->payload.integer.more, cell_b->payload.integer.more);
|
||||
break;
|
||||
case REALTV:
|
||||
{
|
||||
|
|
|
|||
|
|
@ -220,13 +220,13 @@ struct cons_pointer read_number( struct stack_frame *frame,
|
|||
result = make_real( rv );
|
||||
} else if ( dividend != 0 ) {
|
||||
result =
|
||||
make_ratio( frame_pointer, make_integer( dividend ),
|
||||
make_integer( accumulator ) );
|
||||
make_ratio( frame_pointer, make_integer( dividend, NIL ),
|
||||
make_integer( accumulator, NIL ) );
|
||||
} else {
|
||||
if ( negative ) {
|
||||
accumulator = 0 - accumulator;
|
||||
}
|
||||
result = make_integer( accumulator );
|
||||
result = make_integer( accumulator, NIL );
|
||||
}
|
||||
|
||||
debug_print( L"read_number returning\n", DEBUG_IO );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue