summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/exp10.S
blob: 6223e5f85a2352b856c20d3f7358df67ffb012d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

.text
.type   exp10,@function
.global exp10
.type   pow10,@function
.global pow10


pow10:
exp10:                          # note: 10^(x) = 2^(x*log2(10))
        fldl2t
        fmull    4(%esp)        # x*log2(10)
        fld      %st(0)         # x*log2(10)              x*log2(10)
        frndint                 # int(x*log2(10))         x*log2(10)
        fxch                    # x*log2(10)              int(x*log2(10))
        fsub     %st(1),%st(0)  # frac(x*log2(10))        int(x*log2(10))
        f2xm1                   # 2^(fract(x*log2(10)))-1 int(x*log2(10))
        fld1                    # 1                       2^(fract(x*log2(10)))-1       int(x*log2(10))
        faddp    %st(0),%st(1)  # 2^(fract(x*log2(10)))   int(x*log2(10))
        fscale                  # 2^(x*log2(10))          int(x*log2(10))
        fstp     %st(1)         # 2^(x*log2(10))
        ret

.ende:

.size    exp10,.ende-exp10
.size    pow10,.ende-pow10