015 do-while语句
来源:互联网 发布:mac天津专柜地址 编辑:程序博客网 时间:2024/03/28 22:42
/********************015.c do-while语句************************* * C语言精彩编程百例的第15个例子 * 计算sin(x)=x-x^3/3!+x^5/5!-x^7/7!+... 直到最后一项小于1e-7为止 * 这个是利用泰勒展开求sin(x)值的例子,教材里没有说明的是: * 泰勒展开的这一公式:F(N+1)=-F(N)*X*X/(2N*(2N+1)),,F1=X * 这个是程序编写的关键。 */#include <math.h>#include <stdio.h>void main(){//用s表示多项式的值,用t表示每一项的值double s,t,x;int n;printf("please input x:");scanf("%lf",&x);//赋初值t=x;n=1;s=x;//进行叠加运算do{n=n+2;t=t*(-x*x)/((float)(n)-1)/(float)(n);s=s+t;}while(fabs(t)>=1e-8);printf("sin(%f)=%lf\n",x,s);}
对应的汇编部分
subl$12, %esppushl$LC0 # printfcall_printfaddl$16, %espsubl$8, %esp # scanfleal-24(%ebp), %eaxpushl%eaxpushl$LC1call_scanfaddl$16, %espmovl-24(%ebp), %eax # eax=x低32位 movl-20(%ebp), %edx # edx=x高32位movl%eax, -16(%ebp) # t=x低32位movl%edx, -12(%ebp) # t=x高32位movl$1, -28(%ebp) # n=1movl-24(%ebp), %eax # eax=x低32位movl-20(%ebp), %edx # edx=x高32位movl%eax, -8(%ebp) # s=x高32位movl%edx, -4(%ebp) # s=x高32位L34:leal-28(%ebp), %eax # eax=&naddl$2, (%eax) # n=n+2movl-24(%ebp), %eax # eax=x低32位movl-20(%ebp), %edx # edx=x高32位movl%eax, -40(%ebp)movl%edx, -36(%ebp)fldl-40(%ebp) # 加载浮点数x到FPUfchs # 改变符号位 -xfmull-24(%ebp) # -x*xfmull-16(%ebp) # -x*x*tfildl-28(%ebp) # 装入整数i 到st(0)fld1 # FLD1 将1.0装入st(0) fsubrp%st, %st(1) # st1-st 然后执行一次出栈操作fdivrp%st, %st(1) # st1/stfildl-28(%ebp) # 装入整数i 到st(0)fdivrp%st, %st(1) # st1/stfstpl-16(%ebp) # FSTP dest dest <- st(0) (mem32/mem64/mem80);然后再执行一次出栈操作fldl-8(%ebp) # 装入s 到stfaddl-16(%ebp) # s+tfstpl-8(%ebp) # s=s+tsubl$8, %esp # 准备调用fabspushl-12(%ebp)pushl-16(%ebp)call_fabsaddl$16, %espfldlLC3fxch%st(1) #FXCH 交换指令,交换st(0)和st(1)的值 st(0) <-st(1) fucompp #FUCOMPP st(i) 比较st(0) 和st(i),并且执行两次出栈操作fnstsw%ax #用FNSTSW把FPU状态字送到AX,用了FNSTSW后与跳转有关的那几个标志都在AH里testb$5, %ah #设置状态标志jeL34 #判断条件符合跳转执行下一次循环subl$12, %esppushl-4(%ebp)pushl-8(%ebp)pushl-20(%ebp)pushl-24(%ebp)pushl$LC4call_printfaddl$32, %espleaveret
0 0
- 015 do-while语句
- while与do while语句
- do-while语句
- do-while语句学习
- do while 循环语句
- do-while语句
- do-while语句
- do-while语句
- do while 语句
- do-while语句
- do.while循环语句
- do-while语句
- do-while语句
- do-while语句
- do while语句
- do while语句
- while语句和do...while语句
- Delphi while do 语句使用
- edit control
- shop++ 开源的电商系统
- php socket
- MATLAB学习笔记(三):符号计算(积分+导数)
- Ant 打 war 包过程
- 015 do-while语句
- CAS修改源码支持多种方式登录认证
- 轻松Scrum之旅(下)
- C#多线程指纹比对
- UVa #11214 Guarding the Chessboard (习题7-10)
- birt报表用rptlibrary统一所有报表的数据源
- pb数据窗口saveas成xml的时候返回-1的问题处理
- ant 部署war包到tomcat,weblogic服务器上
- 浅谈怎样提高百度空间排名(非原创)