1scale = 50
2define e(x) {
3	auto a, b, c, d, e, g, w, y, t, r
4
5	r = ibase
6	ibase = A
7
8	t = scale
9	scale = t + .434*x + 1
10
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	}
21
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}
48
49define l(x) {
50	auto a, b, c, d, e, f, g, u, s, t, r, z
51
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
60
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	}
80
81	scale = t + length(f) - scale(f) + 1
82	u = (x-1)/(x+1)
83
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
101	}
102}
103
104define s(x) {
105	auto a, b, c, s, t, y, p, n, i, r
106
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
114	}
115	scale = s
116	p = a(1)
117
118	scale = 0
119	if(x>=0) {
120		n = (x/(2*p)+1)/2
121	}
122	if(x<0) {
123		n = (x/(2*p)-1)/2
124	}
125	x -= 4*n*p
126	if(n%2 != 0) {
127		x = -x
128	}
129
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
143		}
144		s += c
145	}
146}
147
148define c(x) {
149	auto t, r
150
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
159}
160
161define a(x) {
162	auto a, b, c, d, e, f, g, s, t, r, z
163
164	r = ibase
165	ibase = A
166	if(x==0) {
167		return 0
168	}
169	if(x==1) {
170		z = .7853981633974483096156608458198757210492923498437764/1
171		ibase = r
172		if(scale<52) {
173			return z
174		}
175	}
176	t = scale
177	f = 1
178	while(x > .5) {
179		scale++
180		x = -(1 - sqrt(1.+x*x))/x
181		f *= 2
182	}
183	while(x < -.5) {
184		scale++
185		x = -(1 - sqrt(1.+x*x))/x
186		f *= 2
187	}
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
202		}
203		e = g
204	}
205}
206
207define j(n,x) {
208	auto a,b,c,d,e,g,i,s,k,t,r
209
210	r = ibase
211	ibase = A
212
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
218	}
219
220	s = -x*x/4
221	if(n<0) {
222		n = -n
223		x = -x
224	}
225	a = 1
226	c = 1
227	for(i=1; i<=n; i++) {
228		a *= x
229		c *= 2*i
230	}
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
243		}
244		e = g
245	}
246}
247