
On 04/11/2013 06:37 AM, Brandon Allbery wrote:
On Thu, Apr 11, 2013 at 1:38 AM, Christopher Howard
mailto:christopher.howard@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@gmail.com mailto:allbery.b@gmail.com ballbery@sinenomine.net mailto:ballbery@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