Bug in reading reals.

This commit is contained in:
simon 2017-09-17 11:29:49 +01:00
parent 79f7492390
commit cf1b09c62a
2 changed files with 5 additions and 5 deletions

View file

@ -39,15 +39,15 @@ lisp_add( struct stack_frame *frame, struct cons_pointer env ) {
bool is_int = true;
for ( int i = 0; i < args_in_frame && !nilp( frame->arg[i] ); i++ ) {
struct cons_space_object arg = pointer2cell( frame->arg[i] );
struct cons_space_object current = pointer2cell( frame->arg[i] );
switch ( arg.tag.value ) {
switch ( current.tag.value ) {
case INTEGERTV:
i_accumulator += arg.payload.integer.value;
i_accumulator += current.payload.integer.value;
d_accumulator += numeric_value( frame->arg[i] );
break;
case REALTV:
d_accumulator += arg.payload.real.value;
d_accumulator += current.payload.real.value;
is_int = false;
default:
lisp_throw( c_string_to_lisp_string( "Cannot add: not a number" ),

View file

@ -24,7 +24,7 @@ extern "C" {
* @param value the value to wrap;
* @return a real number cell wrapping this value.
*/
struct cons_pointer make_real( double value );
struct cons_pointer make_real( long double value );
#ifdef __cplusplus
}