ieee745gamma

    1.0.1 • Public • Published

    IEEE-754 compliant LogGamma function

    The log(gamma) function in JavaScript as defined in IEEE-745.

    browser support

    Version

    1.0.0

    Introduction

    This is a port of the implementation of lngamma by Sun Microsystems who published the original under the following license:

    Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
    
    Developed at SunPro, a Sun Microsystems, Inc. business.
    Permission to use, copy, modify, and distribute this
    software is freely granted, provided that this notice
    is preserved.
    

    That license is compatible with the MIT license.

    A normal gamma function is implemented, too, but only with Math.exp() which induces a large error, especially for larger numbers. See the examples for details.

    To implement a better exponential function is planned for a later version.

    Example

    The correct results to 38 decimal digits in the comments

    > var g = require('ieee745gamma')
    > g.gamma(11)
    3628800.0000000084      // 3628800.0000000000000000000000000000000
    > g.gamma(171)
    7.257415615308056e+306  // 7.2574156153079989673967282111292631147 E306
    // errors of gamma due to Math.exp():
    > g.lngamma(171)
    706.5730622457874       // 706.57306224578734711072226272129831468
    > g.lngamma(11)
    15.104412573075518      // 15.104412573075515295225709329251070372
    > g.lngamma(1000000)
    12815504.569147611      // 12815504.569147611659976971785017113154
    > g.lngamma(.0001)
    9.210282658633961       // 9.2102826586339622584486579752729991548
    > g.lngamma(3)
    0.6931471805599453      // 0.69314718055994530941723212145817656808
    > g.lngamma(3) - Math.log(2)
    0                       // 0
    

    Methods

    gamma(x)

    Returns exp(log(gamma(x))) for real x, x not a negative integer, over the range of ca. -177.6 <= x <= 171.7, Infinity otherwise.

    lngamma(x)

    Returns log(gamma(x)) for real x, x not a negative integer, over the range of ca. -10^14 <= x <= 10^305, Infinity otherwise.

    Install

    With npm do:

    npm install ieee745gamma
    

    License

    MIT

    Install

    npm i ieee745gamma

    DownloadsWeekly Downloads

    3

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • avatar