File:  [DVB] / dietlibc / i386 / ipow.S
Revision 1.1: download - view: text, annotated - select for diffs
Mon Jul 30 13:45:17 2001 UTC (22 years, 10 months ago) by fefe
Branches: MAIN
CVS tags: finnland_test_200301, branch_rc14_fieldtest_finnland, branch_rc13_fieldtest_finnland, branch_rc12_fieldtest_finnland, branch_rc10_fieldtest_finnland, RELEASE_finnland_200301_1, RC12_FIELDTEST_FINNLAND, RC10_FIELDTEST_FINNLAND, HEAD
more math

#
# This is not standard, but often you only need such this function
# which is much shorter than the generic pow() function.
#
#   double  ipow ( double mant, int expo );
#

.text
.global ipow
.type   ipow,@function

ipow:   fld1
        movl    12(%esp),%ecx
        fldl    4(%esp)
        and     %ecx,%ecx
        jns     .Lstart
        negl    %ecx
        fdivr   %st(1),%st(0)
        jmp     .Lstart

.Lnext: fmul    %st(0),%st(0)
.Lstart:shrl    %ecx
        jnc     .Lnomul
        fmul    %st(0),%st(1)
.Lnomul:jnz     .Lnext
        fcomp
        ret

LinuxTV legacy CVS <linuxtv.org/cvs>