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>