[Haskell-cafe] exp implementation

Christopher Howard christopher.howard at frigidcode.com
Thu Apr 11 17:12:29 CEST 2013


On 04/11/2013 06:37 AM, Brandon Allbery wrote:
> On Thu, Apr 11, 2013 at 1:38 AM, Christopher Howard
> <christopher.howard at frigidcode.com
> <mailto:christopher.howard at frigidcode.com>> wrote:
> 
>     Hi. For my own learning, I wanted to see how the exp function is
>     implemented in GHC. I have GHC 7.4.1 source code open, but I'm having
>     trouble figuring out which file the actual function definition is
>     in. I see
> 
>      expFloat    (F# x) = F# (expFloat# x)
> 
> 
> expFloat# is likely a primop; good luck.... Primops aka primitive
> operations are generally implemented in the compiler backend as assembly
> language or Cmm code. Untangling that part of ghc makes my head swim. >.>
> 
> -- 
> brandon s allbery kf8nh                               sine nomine associates
> allbery.b at gmail.com <mailto:allbery.b at gmail.com>                        
>          ballbery at sinenomine.net <mailto:ballbery at sinenomine.net>
> unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

I traced it down some more: I think it eventually goes into the
compiler/nativeGen section where it is translated into the platform's
native version of the function. On my platform, I think this is the expf
function from math.h. (See EXP(3)).

I find that to be interesting, because it means you could change the
output of your programs by altering your standard library. But I guess
there are a lot of things you could change by altering your standard
library!

-- 
frigidcode.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 555 bytes
Desc: OpenPGP digital signature
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130411/57717884/attachment.pgp>


More information about the Haskell-Cafe mailing list