56 |
#include "macros.inc" |
#include "macros.inc" |
57 |
#include "fplib.inc" |
#include "fplib.inc" |
58 |
|
|
59 |
TEXT_SEG(fplib, tanh) |
TEXT_SEG(fplib, tanh) |
60 |
FUNCTION(tanh) |
FUNCTION(tanh) |
61 |
|
|
62 |
GLOBAL(tanh) |
GLOBAL(tanh) |
63 |
/* check for x > 8.3177661895751953 [41051592] |
/* check for x > 8.3177661895751953 [41051592] |
82 |
1: |
1: |
83 |
BLD rA3,7 |
BLD rA3,7 |
84 |
|
|
85 |
PUSH rA0 /* LDI rB3,1 */ |
/* PUSH rA0 */ LDI rB3,0 |
86 |
PUSH rA1 /* RCALL _ldexp ; x -> 2x */ |
/* */ LDI rB2,1 |
87 |
PUSH rA2 /* */ |
/* PUSH rA1 */ RCALL _U(ldexp) ; x -> 2x |
88 |
PUSH rA3 /* RCALL _exp */ |
/* PUSH rA2 */ |
89 |
RCALL _U(cosh) /* PUSH rA0 */ |
/* PUSH rA3 */ RCALL _U(exp) |
90 |
POP rB3 /* PUSH rA1 */ |
/* RCALL _U(cosh) */ PUSH rA0 |
91 |
POP rB2 /* PUSH rA2 */ |
/* POP rB3 */ PUSH rA1 |
92 |
POP rB1 /* PUSH rA3 */ |
/* POP rB2 */ PUSH rA2 |
93 |
POP rB0 /* CLR rB0 */ |
/* POP rB1 */ PUSH rA3 |
94 |
PUSH rA3 /* CLR rB1 */ |
/* POP rB0 */ CLR rB0 |
95 |
PUSH rA2 /* LDI rB2,0x80 */ |
/* PUSH rA3 */ CLR rB1 |
96 |
PUSH rA1 /* LDI rB3,0x3F ; B = 1.0 */ |
/* PUSH rA2 */ LDI rB2,0x80 |
97 |
PUSH rA0 /* RCALL ___addsf3 */ |
/* PUSH rA1 */ LDI rB3,0x3F ; B = 1.0 |
98 |
MOV rA3,rB3 /* POP rB3 */ |
/* PUSH rA0 */ RCALL _U(__addsf3) |
99 |
MOV rA2,rB2 /* POP rB2 */ |
/* MOV rA3,rB3 */ POP rB3 |
100 |
MOV rA1,rB1 /* POP rB1 */ |
/* MOV rA2,rB2 */ POP rB2 |
101 |
MOV rA0,rB0 /* POP rB0 ; B = exp(2x) */ |
/* MOV rA1,rB1 */ POP rB1 |
102 |
RCALL _U(sinh) /* PUSH rA0 */ |
/* MOV rA0,rB0 */ POP rB0 ; B = exp(2x) |
103 |
POP rB0 /* PUSH rA1 */ |
/* RCALL _U(sinh) */ PUSH rA0 |
104 |
POP rB1 /* PUSH rA2 */ |
/* POP rB0 */ PUSH rA1 |
105 |
POP rB2 /* PUSH rA3 */ |
/* POP rB1 */ PUSH rA2 |
106 |
POP rB3 /* CLR rA0 */ |
/* POP rB2 */ PUSH rA3 |
107 |
RJMP _U(__divsf3) /* CLR rA1 */ |
/* POP rB3 */ CLR rA0 |
108 |
/* LDI rA2,0x80 */ |
/* RJMP _U(__divsf3) */ CLR rA1 |
109 |
/* LDI rA3,0xBF ; A = -1.0 */ |
/* */ LDI rA2,0x80 |
110 |
/* RCALL ___addsf3 */ |
/* */ LDI rA3,0xBF ; A = -1.0 |
111 |
/* POP rB3 */ |
/* */ RCALL _U(__addsf3) |
112 |
/* POP rB2 */ |
/* */ POP rB3 |
113 |
/* POP rB1 */ |
/* */ POP rB2 |
114 |
/* POP rB0 ; B = exp(2x)+1 */ |
/* */ POP rB1 |
115 |
/* RJMP ___divsf3 */ |
/* */ POP rB0 ; B = exp(2x)+1 |
116 |
|
/* */ RJMP _U(__divsf3) |
117 |
|
|
118 |
ENDFUNC |
ENDFUNC |
119 |
|
|