~dinko-metalac/calculus-app2/trunk

« back to all changes in this revision

Viewing changes to lib/py/sympy/mpmath/libmp/libelefun.py

  • Committer: dinko.metalac at gmail
  • Date: 2015-04-14 13:28:14 UTC
  • Revision ID: dinko.metalac@gmail.com-20150414132814-j25k3qd7sq3warup
new sympy

Show diffs side-by-side

added added

removed removed

Lines of Context:
783
783
 
784
784
def atan_newton(x, prec):
785
785
    if prec >= 100:
786
 
        r = math.atan((x>>(prec-53))/2.0**53)
 
786
        r = math.atan(int((x>>(prec-53)))/2.0**53)
787
787
    else:
788
 
        r = math.atan(x/2.0**prec)
 
788
        r = math.atan(int(x)/2.0**prec)
789
789
    prevp = 50
790
790
    r = MPZ(int(r * 2.0**53) >> (53-prevp))
791
791
    extra_p = 50
1035
1035
        s0 = s1 = MPZ_ZERO
1036
1036
        k = 2
1037
1037
        while a:
1038
 
            a //= (k-1)*k
1039
 
            s0 += a
1040
 
            k += 2
1041
 
            a //= (k-1)*k
1042
 
            s1 += a
1043
 
            k += 2
 
1038
            a //= (k-1)*k; s0 += a; k += 2
 
1039
            a //= (k-1)*k; s1 += a; k += 2
1044
1040
            a = (a*x4) >> wp
1045
1041
        s1 = (x2*s1) >> wp
1046
1042
        if alt:
1101
1097
    k = 2
1102
1098
    a = x2 = (x*x) >> prec
1103
1099
    while a:
1104
 
        a //= k
1105
 
        s0 += a
1106
 
        k += 1
1107
 
        a //= k
1108
 
        s1 += a
1109
 
        k += 1
 
1100
        a //= k; s0 += a; k += 1
 
1101
        a //= k; s1 += a; k += 1
1110
1102
        a = (a*x2) >> prec
1111
1103
    s1 = (s1*x) >> prec
1112
1104
    s = s0 + s1
1152
1144
    k = 2
1153
1145
    a = -((x*x) >> prec)
1154
1146
    while a:
1155
 
        a //= k
1156
 
        cos += a
1157
 
        k += 1
1158
 
        a = (a*x) >> prec
1159
 
        a //= k
1160
 
        sin += a
1161
 
        k += 1
1162
 
        a = -((a*x) >> prec)
 
1147
        a //= k; cos += a; k += 1; a = (a*x) >> prec
 
1148
        a //= k; sin += a; k += 1; a = -((a*x) >> prec)
1163
1149
    return ((cos*cos_t-sin*sin_t) >> prec), ((sin*cos_t+cos*sin_t) >> prec)
1164
1150
 
1165
1151
def mpf_exp(x, prec, rnd=round_fast):