This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ahojnnes
Recipients ahojnnes, georg.brandl, mark.dickinson, rhettinger
Date 2010-01-24.13:56:30
SpamBayes Score 0.009051878
Marked as misclassified No
Message-id <1264341392.14.0.839776655565.issue7770@psf.upfronthosting.co.za>
In-reply-to
Content
stupid, it is much better to just use the modulo operator. The same works with cos...

def sin(x):
    """Return the sine of x as measured in radians.

    >>> print sin(Decimal('0.5'))
    0.4794255386042030002732879352
    >>> print sin(0.5)
    0.479425538604
    >>> print sin(0.5+0j)
    (0.479425538604+0j)

    """
    x %= pi()
    getcontext().prec += 2
    i, lasts, s, fact, num, sign = 1, 0, x, 1, x, 1
    while s != lasts:
        lasts = s
        i += 2
        fact *= i * (i-1)
        num *= x * x
        sign *= -1
        s += num / fact * sign
    getcontext().prec -= 2
    return +s

def cos(x):
    """Return the cosine of x as measured in radians.

    >>> print cos(Decimal('0.5'))
    0.8775825618903727161162815826
    >>> print cos(0.5)
    0.87758256189
    >>> print cos(0.5+0j)
    (0.87758256189+0j)

    """
    x %= pi()
    getcontext().prec += 2
    i, lasts, s, fact, num, sign = 0, 0, 1, 1, 1, 1
    while s != lasts:
        lasts = s
        i += 2
        fact *= i * (i-1)
        num *= x * x
        sign *= -1
        s += num / fact * sign
    getcontext().prec -= 2
    return +s
History
Date User Action Args
2010-01-24 13:56:32ahojnnessetrecipients: + ahojnnes, georg.brandl, rhettinger, mark.dickinson
2010-01-24 13:56:32ahojnnessetmessageid: <1264341392.14.0.839776655565.issue7770@psf.upfronthosting.co.za>
2010-01-24 13:56:30ahojnneslinkissue7770 messages
2010-01-24 13:56:30ahojnnescreate