The beginning of bignums is in place, tests still pass.

This commit is contained in:
Simon Brooke 2018-12-29 22:30:07 +00:00
parent c21a762413
commit 342f0308d3
11 changed files with 134 additions and 96 deletions

View file

@ -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:
{

View file

@ -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 );