Blob


1 scale = 50
2 define e(x) {
3 auto a, b, c, d, e, g, w, y, t, r
5 r = ibase
6 ibase = A
8 t = scale
9 scale = t + .434*x + 1
11 w = 0
12 if(x<0) {
13 x = -x
14 w = 1
15 }
16 y = 0
17 while(x>2) {
18 x /= 2
19 y++
20 }
22 a = 1
23 b = 1
24 c = b
25 d = 1
26 e = 1
27 for(a=1; 1; a++) {
28 b *= x
29 c = c*a+b
30 d *= a
31 g = c/d
32 if(g == e) {
33 g = g/1
34 while(y--) {
35 g *= g
36 }
37 scale = t
38 if(w==1) {
39 ibase = r
40 return 1/g
41 }
42 ibase = r
43 return g/1
44 }
45 e = g
46 }
47 }
49 define l(x) {
50 auto a, b, c, d, e, f, g, u, s, t, r, z
52 r = ibase
53 ibase = A
54 if(x <= 0) {
55 z = 1-10^scale
56 ibase = r
57 return z
58 }
59 t = scale
61 f = 1
62 scale += scale(x) - length(x) + 1
63 s = scale
64 while(x > 2) {
65 s += (length(x)-scale(x))/2 + 1
66 if(s>0) {
67 scale = s
68 }
69 x = sqrt(x)
70 f *= 2
71 }
72 while(x < .5) {
73 s += (length(x)-scale(x))/2 + 1
74 if(s>0) {
75 scale = s
76 }
77 x = sqrt(x)
78 f *= 2
79 }
81 scale = t + length(f) - scale(f) + 1
82 u = (x-1)/(x+1)
84 scale += 1.1*length(t) - 1.1*scale(t)
85 s = u*u
86 b = 2*f
87 c = b
88 d = 1
89 e = 1
90 for(a=3; 1; a=a+2){
91 b *= s
92 c = c*a + d*b
93 d *= a
94 g = c/d
95 if(g==e) {
96 scale = t
97 ibase = r
98 return u*c/d
99 }
100 e = g
104 define s(x) {
105 auto a, b, c, s, t, y, p, n, i, r
107 r = ibase
108 ibase = A
109 t = scale
110 y = x/.7853
111 s = t + length(y) - scale(y)
112 if(s<t) {
113 s = t
115 scale = s
116 p = a(1)
118 scale = 0
119 if(x>=0) {
120 n = (x/(2*p)+1)/2
122 if(x<0) {
123 n = (x/(2*p)-1)/2
125 x -= 4*n*p
126 if(n%2 != 0) {
127 x = -x
130 scale = t + length(1.2*t) - scale(1.2*t)
131 y = -x*x
132 a = x
133 b = 1
134 s = x
135 for(i=3; 1; i+=2) {
136 a *= y
137 b *= i*(i-1)
138 c = a/b
139 if(c==0){
140 scale = t
141 ibase = r
142 return s/1
144 s += c
148 define c(x) {
149 auto t, r
151 r = ibase
152 ibase = A
153 t = scale
154 scale = scale+1
155 x = s(x + 2*a(1))
156 scale = t
157 ibase = r
158 return x/1
161 define a(x) {
162 auto a, b, c, d, e, f, g, s, t, r, z
164 r = ibase
165 ibase = A
166 if(x==0) {
167 return 0
169 if(x==1) {
170 z = .7853981633974483096156608458198757210492923498437764/1
171 ibase = r
172 if(scale<52) {
173 return z
176 t = scale
177 f = 1
178 while(x > .5) {
179 scale++
180 x = -(1 - sqrt(1.+x*x))/x
181 f *= 2
183 while(x < -.5) {
184 scale++
185 x = -(1 - sqrt(1.+x*x))/x
186 f *= 2
188 s = -x*x
189 b = f
190 c = f
191 d = 1
192 e = 1
193 for(a=3; 1; a+=2) {
194 b *= s
195 c = c*a + d*b
196 d *= a
197 g = c/d
198 if(g==e) {
199 scale = t
200 ibase = r
201 return x*c/d
203 e = g
207 define j(n,x) {
208 auto a,b,c,d,e,g,i,s,k,t,r
210 r = ibase
211 ibase = A
213 t = scale
214 k = 1.36*x + 1.16*t - n
215 k = length(k) - scale(k)
216 if(k>0) {
217 scale += k
220 s = -x*x/4
221 if(n<0) {
222 n = -n
223 x = -x
225 a = 1
226 c = 1
227 for(i=1; i<=n; i++) {
228 a *= x
229 c *= 2*i
231 b = a
232 d = 1
233 e = 1
234 for(i=1; 1; i++) {
235 a *= s
236 b = b*i*(n+i) + a
237 c *= i*(n+i)
238 g = b/c
239 if(g==e) {
240 scale = t
241 ibase = r
242 return g/1
244 e = g