1;--------------------------------------------------------
2; File Created by SDCC : free open source ANSI-C Compiler
3; Version 4.0.7 #12017 (Linux)
4;--------------------------------------------------------
5; Processed by Z88DK
6;--------------------------------------------------------
7
8	EXTERN __divschar
9	EXTERN __divschar_callee
10	EXTERN __divsint
11	EXTERN __divsint_callee
12	EXTERN __divslong
13	EXTERN __divslong_callee
14	EXTERN __divslonglong
15	EXTERN __divslonglong_callee
16	EXTERN __divsuchar
17	EXTERN __divsuchar_callee
18	EXTERN __divuchar
19	EXTERN __divuchar_callee
20	EXTERN __divuint
21	EXTERN __divuint_callee
22	EXTERN __divulong
23	EXTERN __divulong_callee
24	EXTERN __divulonglong
25	EXTERN __divulonglong_callee
26	EXTERN __divuschar
27	EXTERN __divuschar_callee
28	EXTERN __modschar
29	EXTERN __modschar_callee
30	EXTERN __modsint
31	EXTERN __modsint_callee
32	EXTERN __modslong
33	EXTERN __modslong_callee
34	EXTERN __modslonglong
35	EXTERN __modslonglong_callee
36	EXTERN __modsuchar
37	EXTERN __modsuchar_callee
38	EXTERN __moduchar
39	EXTERN __moduchar_callee
40	EXTERN __moduint
41	EXTERN __moduint_callee
42	EXTERN __modulong
43	EXTERN __modulong_callee
44	EXTERN __modulonglong
45	EXTERN __modulonglong_callee
46	EXTERN __moduschar
47	EXTERN __moduschar_callee
48	EXTERN __mulint
49	EXTERN __mulint_callee
50	EXTERN __mullong
51	EXTERN __mullong_callee
52	EXTERN __mullonglong
53	EXTERN __mullonglong_callee
54	EXTERN __mulschar
55	EXTERN __mulschar_callee
56	EXTERN __mulsuchar
57	EXTERN __mulsuchar_callee
58	EXTERN __muluchar
59	EXTERN __muluchar_callee
60	EXTERN __muluschar
61	EXTERN __muluschar_callee
62	EXTERN __rlslonglong
63	EXTERN __rlslonglong_callee
64	EXTERN __rlulonglong
65	EXTERN __rlulonglong_callee
66	EXTERN __rrslonglong
67	EXTERN __rrslonglong_callee
68	EXTERN __rrulonglong
69	EXTERN __rrulonglong_callee
70	EXTERN ___sdcc_call_hl
71	EXTERN ___sdcc_call_iy
72	EXTERN ___sdcc_enter_ix
73	EXTERN banked_call
74	EXTERN _banked_ret
75	EXTERN ___fs2schar
76	EXTERN ___fs2schar_callee
77	EXTERN ___fs2sint
78	EXTERN ___fs2sint_callee
79	EXTERN ___fs2slong
80	EXTERN ___fs2slong_callee
81	EXTERN ___fs2slonglong
82	EXTERN ___fs2slonglong_callee
83	EXTERN ___fs2uchar
84	EXTERN ___fs2uchar_callee
85	EXTERN ___fs2uint
86	EXTERN ___fs2uint_callee
87	EXTERN ___fs2ulong
88	EXTERN ___fs2ulong_callee
89	EXTERN ___fs2ulonglong
90	EXTERN ___fs2ulonglong_callee
91	EXTERN ___fsadd
92	EXTERN ___fsadd_callee
93	EXTERN ___fsdiv
94	EXTERN ___fsdiv_callee
95	EXTERN ___fseq
96	EXTERN ___fseq_callee
97	EXTERN ___fsgt
98	EXTERN ___fsgt_callee
99	EXTERN ___fslt
100	EXTERN ___fslt_callee
101	EXTERN ___fsmul
102	EXTERN ___fsmul_callee
103	EXTERN ___fsneq
104	EXTERN ___fsneq_callee
105	EXTERN ___fssub
106	EXTERN ___fssub_callee
107	EXTERN ___schar2fs
108	EXTERN ___schar2fs_callee
109	EXTERN ___sint2fs
110	EXTERN ___sint2fs_callee
111	EXTERN ___slong2fs
112	EXTERN ___slong2fs_callee
113	EXTERN ___slonglong2fs
114	EXTERN ___slonglong2fs_callee
115	EXTERN ___uchar2fs
116	EXTERN ___uchar2fs_callee
117	EXTERN ___uint2fs
118	EXTERN ___uint2fs_callee
119	EXTERN ___ulong2fs
120	EXTERN ___ulong2fs_callee
121	EXTERN ___ulonglong2fs
122	EXTERN ___ulonglong2fs_callee
123	EXTERN ____sdcc_2_copy_src_mhl_dst_deix
124	EXTERN ____sdcc_2_copy_src_mhl_dst_bcix
125	EXTERN ____sdcc_4_copy_src_mhl_dst_deix
126	EXTERN ____sdcc_4_copy_src_mhl_dst_bcix
127	EXTERN ____sdcc_4_copy_src_mhl_dst_mbc
128	EXTERN ____sdcc_4_ldi_nosave_bc
129	EXTERN ____sdcc_4_ldi_save_bc
130	EXTERN ____sdcc_4_push_hlix
131	EXTERN ____sdcc_4_push_mhl
132	EXTERN ____sdcc_lib_setmem_hl
133	EXTERN ____sdcc_ll_add_de_bc_hl
134	EXTERN ____sdcc_ll_add_de_bc_hlix
135	EXTERN ____sdcc_ll_add_de_hlix_bc
136	EXTERN ____sdcc_ll_add_de_hlix_bcix
137	EXTERN ____sdcc_ll_add_deix_bc_hl
138	EXTERN ____sdcc_ll_add_deix_hlix
139	EXTERN ____sdcc_ll_add_hlix_bc_deix
140	EXTERN ____sdcc_ll_add_hlix_deix_bc
141	EXTERN ____sdcc_ll_add_hlix_deix_bcix
142	EXTERN ____sdcc_ll_asr_hlix_a
143	EXTERN ____sdcc_ll_asr_mbc_a
144	EXTERN ____sdcc_ll_copy_src_de_dst_hlix
145	EXTERN ____sdcc_ll_copy_src_de_dst_hlsp
146	EXTERN ____sdcc_ll_copy_src_deix_dst_hl
147	EXTERN ____sdcc_ll_copy_src_deix_dst_hlix
148	EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp
149	EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp
150	EXTERN ____sdcc_ll_copy_src_hl_dst_de
151	EXTERN ____sdcc_ll_copy_src_hlsp_dst_de
152	EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm
153	EXTERN ____sdcc_ll_lsl_hlix_a
154	EXTERN ____sdcc_ll_lsl_mbc_a
155	EXTERN ____sdcc_ll_lsr_hlix_a
156	EXTERN ____sdcc_ll_lsr_mbc_a
157	EXTERN ____sdcc_ll_push_hlix
158	EXTERN ____sdcc_ll_push_mhl
159	EXTERN ____sdcc_ll_sub_de_bc_hl
160	EXTERN ____sdcc_ll_sub_de_bc_hlix
161	EXTERN ____sdcc_ll_sub_de_hlix_bc
162	EXTERN ____sdcc_ll_sub_de_hlix_bcix
163	EXTERN ____sdcc_ll_sub_deix_bc_hl
164	EXTERN ____sdcc_ll_sub_deix_hlix
165	EXTERN ____sdcc_ll_sub_hlix_bc_deix
166	EXTERN ____sdcc_ll_sub_hlix_deix_bc
167	EXTERN ____sdcc_ll_sub_hlix_deix_bcix
168	EXTERN ____sdcc_load_debc_deix
169	EXTERN ____sdcc_load_dehl_deix
170	EXTERN ____sdcc_load_debc_mhl
171	EXTERN ____sdcc_load_hlde_mhl
172	EXTERN ____sdcc_store_dehl_bcix
173	EXTERN ____sdcc_store_debc_hlix
174	EXTERN ____sdcc_store_debc_mhl
175	EXTERN ____sdcc_cpu_pop_ei
176	EXTERN ____sdcc_cpu_pop_ei_jp
177	EXTERN ____sdcc_cpu_push_di
178	EXTERN ____sdcc_outi
179	EXTERN ____sdcc_outi_128
180	EXTERN ____sdcc_outi_256
181	EXTERN ____sdcc_ldi
182	EXTERN ____sdcc_ldi_128
183	EXTERN ____sdcc_ldi_256
184	EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix
185	EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix
186	EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix
187	EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix
188	EXTERN ____sdcc_4_or_src_dehl_dst_bcix
189	EXTERN ____sdcc_4_xor_src_dehl_dst_bcix
190	EXTERN ____sdcc_4_and_src_dehl_dst_bcix
191	EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc
192	EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc
193	EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc
194	EXTERN ____sdcc_4_cpl_src_mhl_dst_debc
195	EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc
196	EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc
197	EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc
198	EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc
199	EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc
200	EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc
201
202;--------------------------------------------------------
203; Public variables in this module
204;--------------------------------------------------------
205	GLOBAL _m32_atanf
206;--------------------------------------------------------
207; Externals used
208;--------------------------------------------------------
209	GLOBAL _m32_polyf
210	GLOBAL _m32_hypotf
211	GLOBAL _m32_ldexpf
212	GLOBAL _m32_frexpf
213	GLOBAL _m32_invsqrtf
214	GLOBAL _m32_sqrtf
215	GLOBAL _m32_invf
216	GLOBAL _m32_sqrf
217	GLOBAL _m32_div2f
218	GLOBAL _m32_mul2f
219	GLOBAL _m32_modff
220	GLOBAL _m32_fmodf
221	GLOBAL _m32_roundf
222	GLOBAL _m32_floorf
223	GLOBAL _m32_fabsf
224	GLOBAL _m32_ceilf
225	GLOBAL _m32_powf
226	GLOBAL _m32_log10f
227	GLOBAL _m32_log2f
228	GLOBAL _m32_logf
229	GLOBAL _m32_exp10f
230	GLOBAL _m32_exp2f
231	GLOBAL _m32_expf
232	GLOBAL _m32_atanhf
233	GLOBAL _m32_acoshf
234	GLOBAL _m32_asinhf
235	GLOBAL _m32_tanhf
236	GLOBAL _m32_coshf
237	GLOBAL _m32_sinhf
238	GLOBAL _m32_atan2f
239	GLOBAL _m32_acosf
240	GLOBAL _m32_asinf
241	GLOBAL _m32_tanf
242	GLOBAL _m32_cosf
243	GLOBAL _m32_sinf
244	GLOBAL _poly_callee
245	GLOBAL _poly
246	GLOBAL _exp10_fastcall
247	GLOBAL _exp10
248	GLOBAL _mul10u_fastcall
249	GLOBAL _mul10u
250	GLOBAL _mul2_fastcall
251	GLOBAL _mul2
252	GLOBAL _div2_fastcall
253	GLOBAL _div2
254	GLOBAL _invsqrt_fastcall
255	GLOBAL _invsqrt
256	GLOBAL _inv_fastcall
257	GLOBAL _inv
258	GLOBAL _sqr_fastcall
259	GLOBAL _sqr
260	GLOBAL _isunordered_callee
261	GLOBAL _isunordered
262	GLOBAL _islessgreater_callee
263	GLOBAL _islessgreater
264	GLOBAL _islessequal_callee
265	GLOBAL _islessequal
266	GLOBAL _isless_callee
267	GLOBAL _isless
268	GLOBAL _isgreaterequal_callee
269	GLOBAL _isgreaterequal
270	GLOBAL _isgreater_callee
271	GLOBAL _isgreater
272	GLOBAL _fma_callee
273	GLOBAL _fma
274	GLOBAL _fmin_callee
275	GLOBAL _fmin
276	GLOBAL _fmax_callee
277	GLOBAL _fmax
278	GLOBAL _fdim_callee
279	GLOBAL _fdim
280	GLOBAL _nexttoward_callee
281	GLOBAL _nexttoward
282	GLOBAL _nextafter_callee
283	GLOBAL _nextafter
284	GLOBAL _nan_fastcall
285	GLOBAL _nan
286	GLOBAL _copysign_callee
287	GLOBAL _copysign
288	GLOBAL _remquo_callee
289	GLOBAL _remquo
290	GLOBAL _remainder_callee
291	GLOBAL _remainder
292	GLOBAL _fmod_callee
293	GLOBAL _fmod
294	GLOBAL _modf_callee
295	GLOBAL _modf
296	GLOBAL _trunc_fastcall
297	GLOBAL _trunc
298	GLOBAL _lround_fastcall
299	GLOBAL _lround
300	GLOBAL _round_fastcall
301	GLOBAL _round
302	GLOBAL _lrint_fastcall
303	GLOBAL _lrint
304	GLOBAL _rint_fastcall
305	GLOBAL _rint
306	GLOBAL _nearbyint_fastcall
307	GLOBAL _nearbyint
308	GLOBAL _floor_fastcall
309	GLOBAL _floor
310	GLOBAL _ceil_fastcall
311	GLOBAL _ceil
312	GLOBAL _tgamma_fastcall
313	GLOBAL _tgamma
314	GLOBAL _lgamma_fastcall
315	GLOBAL _lgamma
316	GLOBAL _erfc_fastcall
317	GLOBAL _erfc
318	GLOBAL _erf_fastcall
319	GLOBAL _erf
320	GLOBAL _cbrt_fastcall
321	GLOBAL _cbrt
322	GLOBAL _sqrt_fastcall
323	GLOBAL _sqrt
324	GLOBAL _pow_callee
325	GLOBAL _pow
326	GLOBAL _hypot_callee
327	GLOBAL _hypot
328	GLOBAL _fabs_fastcall
329	GLOBAL _fabs
330	GLOBAL _logb_fastcall
331	GLOBAL _logb
332	GLOBAL _log2_fastcall
333	GLOBAL _log2
334	GLOBAL _log1p_fastcall
335	GLOBAL _log1p
336	GLOBAL _log10_fastcall
337	GLOBAL _log10
338	GLOBAL _log_fastcall
339	GLOBAL _log
340	GLOBAL _scalbln_callee
341	GLOBAL _scalbln
342	GLOBAL _scalbn_callee
343	GLOBAL _scalbn
344	GLOBAL _ldexp_callee
345	GLOBAL _ldexp
346	GLOBAL _ilogb_fastcall
347	GLOBAL _ilogb
348	GLOBAL _frexp_callee
349	GLOBAL _frexp
350	GLOBAL _expm1_fastcall
351	GLOBAL _expm1
352	GLOBAL _exp2_fastcall
353	GLOBAL _exp2
354	GLOBAL _exp_fastcall
355	GLOBAL _exp
356	GLOBAL _tanh_fastcall
357	GLOBAL _tanh
358	GLOBAL _sinh_fastcall
359	GLOBAL _sinh
360	GLOBAL _cosh_fastcall
361	GLOBAL _cosh
362	GLOBAL _atanh_fastcall
363	GLOBAL _atanh
364	GLOBAL _asinh_fastcall
365	GLOBAL _asinh
366	GLOBAL _acosh_fastcall
367	GLOBAL _acosh
368	GLOBAL _tan_fastcall
369	GLOBAL _tan
370	GLOBAL _sin_fastcall
371	GLOBAL _sin
372	GLOBAL _cos_fastcall
373	GLOBAL _cos
374	GLOBAL _atan2_callee
375	GLOBAL _atan2
376	GLOBAL _atan_fastcall
377	GLOBAL _atan
378	GLOBAL _asin_fastcall
379	GLOBAL _asin
380	GLOBAL _acos_fastcall
381	GLOBAL _acos
382	GLOBAL _m32_coeff_atan
383;--------------------------------------------------------
384; special function registers
385;--------------------------------------------------------
386;--------------------------------------------------------
387; ram data
388;--------------------------------------------------------
389	SECTION bss_compiler
390;--------------------------------------------------------
391; ram data
392;--------------------------------------------------------
393
394IF 0
395
396; .area _INITIALIZED removed by z88dk
397
398
399ENDIF
400
401;--------------------------------------------------------
402; absolute external ram data
403;--------------------------------------------------------
404	SECTION IGNORE
405;--------------------------------------------------------
406; global & static initialisations
407;--------------------------------------------------------
408	SECTION code_crt_init
409;--------------------------------------------------------
410; Home
411;--------------------------------------------------------
412	SECTION IGNORE
413;--------------------------------------------------------
414; code
415;--------------------------------------------------------
416	SECTION code_compiler
417;	---------------------------------
418; Function m32_atanf
419; ---------------------------------
420_m32_atanf:
421	push	ix
422	ld	ix,0
423	add	ix,sp
424	ld	c, l
425	ld	b, h
426	ld	hl, -9
427	add	hl, sp
428	ld	sp, hl
429	ld	(ix-4),c
430	ld	(ix-3),b
431	ld	(ix-2),e
432	ld	(ix-1),d
433	ld	l,(ix-4)
434	ld	h,(ix-3)
435	ld	e,(ix-2)
436	ld	d,(ix-1)
437	call	_m32_fabsf
438	ld	c,l
439	ld	b,h
440	ex	(sp),hl
441	ld	(ix-7),e
442	ld	(ix-6),d
443	ld	a, d
444	and	a,0x7f
445	or	a, e
446	or	a, b
447	or	a, c
448	jr	NZ,l_m32_atanf_00102
449	ld	hl,0x0000
450	ld	e,l
451	ld	d,h
452	jp	l_m32_atanf_00107
453l_m32_atanf_00102:
454	pop	bc
455	pop	hl
456	push	hl
457	push	bc
458	push	hl
459	push	bc
460	ld	hl,0x3f80
461	push	hl
462	ld	hl,0x0000
463	push	hl
464	call	___fslt_callee
465	ld	(ix-5),l
466	ld	a,l
467	or	a, a
468	jr	Z,l_m32_atanf_00104
469	ld	l,(ix-9)
470	ld	h,(ix-8)
471	ld	e,(ix-7)
472	ld	d,(ix-6)
473	call	_m32_invf
474	ex	(sp),hl
475	ld	(ix-7),e
476	ld	(ix-6),d
477l_m32_atanf_00104:
478	ld	hl,0x0007
479	push	hl
480	ld	hl,_m32_coeff_atan
481	push	hl
482	ld	l,(ix-7)
483	ld	h,(ix-6)
484	push	hl
485	ld	l,(ix-9)
486	ld	h,(ix-8)
487	push	hl
488	call	_m32_polyf
489	ld	a,(ix-5)
490	or	a,a
491	ld	c,l
492	ld	b,h
493	jr	Z,l_m32_atanf_00106
494	push	de
495	push	bc
496	ld	hl,0x3fc9
497	push	hl
498	ld	hl,0x0fdb
499	push	hl
500	call	___fssub_callee
501	ld	c, l
502	ld	b, h
503l_m32_atanf_00106:
504	push	bc
505	push	de
506	ld	hl,0x0000
507	push	hl
508	push	hl
509	ld	l,(ix-2)
510	ld	h,(ix-1)
511	push	hl
512	ld	l,(ix-4)
513	ld	h,(ix-3)
514	push	hl
515	call	___fslt_callee
516	pop	de
517	pop	bc
518	ld	a,l
519	or	a, a
520	jr	Z,l_m32_atanf_00109
521	ld	a, d
522	xor	a,0x80
523	ld	d, a
524l_m32_atanf_00109:
525	ld	l, c
526	ld	h, b
527l_m32_atanf_00107:
528	ld	sp, ix
529	pop	ix
530	ret
531	SECTION IGNORE
532