diff --git a/src/ikarus.boot b/src/ikarus.boot index ae08c7c..b6f735f 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.numerics.ss b/src/ikarus.numerics.ss index 1024f15..206fd23 100644 --- a/src/ikarus.numerics.ss +++ b/src/ikarus.numerics.ss @@ -8,12 +8,13 @@ (library (ikarus flonums) (export $flonum->exact $flonum-signed-biased-exponent flonum-parts inexact->exact exact $flonum-rational? $flonum-integer? $flzero? - $flnegative? flpositive? flabs) + $flnegative? flpositive? flabs fixnum->flonum) (import (ikarus system $bytevectors) (except (ikarus system $flonums) $flonum-signed-biased-exponent $flonum-rational? $flonum-integer?) - (except (ikarus) inexact->exact exact flpositive? flabs)) + (except (ikarus) inexact->exact exact flpositive? flabs + fixnum->flonum)) (define (flonum-bytes f) (unless (flonum? f) @@ -130,6 +131,12 @@ ($fl* x -1.0) x) (error 'flabs "~s is not a flonum" x))) + + (define (fixnum->flonum x) + (if (fixnum? x) + ($fixnum->flonum x) + (error 'fixnum->flonum "~s is not a fixnum"))) + ) diff --git a/src/makefile.ss b/src/makefile.ss index c9d5607..2bcb01c 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -492,6 +492,7 @@ [exact-integer-sqrt i r] [exact->inexact i r] [inexact->exact i r] + [fixnum->flonum i r] [exact i r] [inexact i r] [random i] diff --git a/src/todo-r6rs.ss b/src/todo-r6rs.ss index 76e8398..50a3d5f 100755 --- a/src/todo-r6rs.ss +++ b/src/todo-r6rs.ss @@ -298,7 +298,7 @@ [fxxor D fx] [fxzero? D fx] ;;; - [fixnum->flonum S fl] + [fixnum->flonum C fl] [fl* C fl] [fl+ C fl] [fl- C fl]