Ok so this means for every flonum op there's a *new* object allocation on the heap right?<div><br></div><div>And, does Gambit do any fast reclaims? (I.e. effectively GC:ing some objects that are provenly not in use anymore right on the spot instead of at the next ___GC(); )</div>

<div><br></div><div>Mikael<br><br><div class="gmail_quote">2012/11/13 Bradley Lucier <span dir="ltr"><<a href="mailto:lucier@math.purdue.edu" target="_blank">lucier@math.purdue.edu</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On 11/13/2012 11:01 AM, Mikael wrote:<br>
> Dear Marc,<br>
><br>
> Something I was curious about for long:<br>
><br>
> So fixnums are passed around in Gambit by value and all objects like<br>
> closures, pairs, vectors and bignums are passed around by reference.<br>
<br>
</div>The objects that are boxed are listed in gambit.h:<br>
<br>
  * ___sVECTOR       = tag for vectors<br>
  * ___sPAIR         = tag for pairs<br>
  * ___sRATNUM       = tag for ratnums<br>
  * ___sCPXNUM       = tag for cpxnums<br>
  * ___sSTRUCTURE    = tag for structures<br>
  * ___sBOXVALUES    = tag for box and multiple-values objects<br>
  * ___sMEROON       = tag for Meroon objects<br>
  * ___sJAZZ         = tag for Jazz objects<br>
  * ___sSYMBOL       = tag for symbols<br>
  * ___sKEYWORD      = tag for keywords<br>
  * ___sFRAME        = tag for continuation frames<br>
  * ___sCONTINUATION = tag for continuations<br>
  * ___sPROMISE      = tag for promises<br>
  * ___sWEAK         = tag for weak objects (wills and GC hash tables)<br>
  * ___sPROCEDURE    = tag for procedures<br>
  * ___sRETURN       = tag for returns<br>
  * ___sFOREIGN      = tag for foreign data<br>
  * ___sSTRING       = tag for strings<br>
  * ___sS8VECTOR     = tag for 8-bit signed integer vectors<br>
  * ___sU8VECTOR     = tag for 8-bit unsigned integer vectors<br>
  * ___sS16VECTOR    = tag for 16-bit signed integer vectors<br>
  * ___sU16VECTOR    = tag for 16-bit unsigned integer vectors<br>
  * ___sS32VECTOR    = tag for 32-bit signed integer vectors<br>
  * ___sU32VECTOR    = tag for 32-bit unsigned integer vectors<br>
  * ___sF32VECTOR    = tag for 32-bit floating point number vectors<br>
  * ___sS64VECTOR    = tag for 64-bit signed integer vectors<br>
  * ___sU64VECTOR    = tag for 64-bit unsigned integer vectors<br>
  * ___sF64VECTOR    = tag for 64-bit floating point number vectors<br>
  * ___sFLONUM       = tag for flonums<br>
  * ___sBIGNUM       = tag for bignums<br>
<div class="im"><br>
<br>
><br>
> What about flonums?<br>
><br>
><br>
> Also, what's the flonum bit width (exponent & fraction respectively)<br>
> on 32 and 64bit architecture<br>
<br>
</div>32-bit and 64-bit architectures both use 64-bit IEEE arithmetic. (At<br>
least, on an architecture where this doesn't happen, some things will be<br>
computed incorrectly.) That's binary64 in the following table:<br>
<br>
<a href="https://en.wikipedia.org/wiki/IEEE_floating_point#Basic_formats" target="_blank">https://en.wikipedia.org/wiki/IEEE_floating_point#Basic_formats</a><br>
<br>
><br>
> Thanks,<br>
> Mikael<br>
><br>
><br>
><br>
> _______________________________________________<br>
> Gambit-list mailing list<br>
> <a href="mailto:Gambit-list@iro.umontreal.ca">Gambit-list@iro.umontreal.ca</a><br>
> <a href="https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list" target="_blank">https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list</a><br>
<br>
_______________________________________________<br>
Gambit-list mailing list<br>
<a href="mailto:Gambit-list@iro.umontreal.ca">Gambit-list@iro.umontreal.ca</a><br>
<a href="https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list" target="_blank">https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list</a><br>
</blockquote></div><br></div>