Imported Upstream version 2.9.0
[debian/cc1111] / device / lib / _logexpf.c
1 #define SDCC_MATH_LIB
2 #include <math.h>
3
4
5 #ifdef MATH_ASM_MCS51
6
7 // This code is shared by both logf() and expf(), so it goes in this
8 // separate file to allow the linker to include it when either
9 // function is needed, but only 1 copy when both are used.
10
11 void _fs_cordic_rshift_r765_unsigned(void)
12 {
13         __asm
14         add     a, #248
15         jnc     00003$
16         mov     b, r5
17         mov     r5, ar6
18         mov     r6, ar7
19         mov     r7, #0
20         add     a, #248
21         jnc     00003$
22         mov     b, r5
23         mov     r5, ar6
24         mov     r6, #0
25         add     a, #248
26         jnc     00003$
27         mov     b, r5
28         mov     r5, #0
29         add     a, #248
30         jnc     00003$
31         mov     b, #0
32         ret
33 00003$:
34         add     a, #8
35         jz      00030$
36         push    ar0
37         mov     r0, a
38 00010$:
39         clr     c
40         mov     a, r7
41         rrc     a
42         mov     r7, a
43         mov     a, r6
44         rrc     a
45         mov     r6, a
46         mov     a, r5
47         rrc     a
48         mov     r5, a
49         mov     a, b
50         rrc     a
51         mov     b, a
52         djnz    r0, 00010$
53         pop     ar0
54 00030$:
55         __endasm;
56 }
57
58 __code unsigned char _fs_natural_log_table[] = {
59 0xFF, 0x42, 0x2E, 0x16,         // 0.693147180560
60 0xF6, 0x91, 0xF9, 0x0C,         // 0.405465108108
61 0xF2, 0xFD, 0x23, 0x07,         // 0.223143551314
62 0xEE, 0xE0, 0xC4, 0x03,         // 0.117783035656
63 0x0C, 0xA3, 0xF0, 0x01,         // 0.060624621816
64 0xD8, 0x14, 0xFC, 0x00,         // 0.030771658667
65 0xA3, 0x02, 0x7F, 0x00,         // 0.015504186536
66 0x55, 0xC0, 0x3F, 0x00,         // 0.007782140442
67 0x0B, 0xF0, 0x1F, 0x00,         // 0.003898640416
68 0x01, 0xFC, 0x0F, 0x00,         // 0.001951220131
69 0x00, 0xFF, 0x07, 0x00,         // 0.000976085973
70 0xC0, 0xFF, 0x03, 0x00,         // 0.000488162080
71 0xF0, 0xFF, 0x01, 0x00,         // 0.000244110828
72 0xFC, 0xFF, 0x00, 0x00,         // 0.000122062863
73 0xFF, 0x7F, 0x00, 0x00,         // 0.000061033294
74 0x00, 0x40, 0x00, 0x00,         // 0.000030517112
75 0x00, 0x20, 0x00, 0x00,         // 0.000015258673
76 0x00, 0x10, 0x00, 0x00,         // 0.000007629365
77 0x00, 0x08, 0x00, 0x00,         // 0.000003814690
78 0x00, 0x04, 0x00, 0x00,         // 0.000001907347
79 0x00, 0x02, 0x00, 0x00,         // 0.000000953674
80 0x00, 0x01, 0x00, 0x00,         // 0.000000476837
81 0x80, 0x00, 0x00, 0x00,         // 0.000000238419
82 0x40, 0x00, 0x00, 0x00,         // 0.000000119209
83 0x20, 0x00, 0x00, 0x00,         // 0.000000059605
84 0x10, 0x00, 0x00, 0x00,         // 0.000000029802
85 0x08, 0x00, 0x00, 0x00,         // 0.000000014901
86 0x04, 0x00, 0x00, 0x00,         // 0.000000007451
87 0x02, 0x00, 0x00, 0x00,         // 0.000000003725
88 0x01, 0x00, 0x00, 0x00          // 0.000000001863
89 };
90
91 #endif
92