首页 > 其他分享 >分支预测(if里一般不要包含函数)

分支预测(if里一般不要包含函数)

时间:2023-02-11 12:00:17浏览次数:31  
标签:p3 p1 函数 包含 float else xz xmid 分支

在结果冒险和数据冒险中,可以发现,所有的流水线停顿的操作都要从指令执行阶段开始。流水线的前两个阶段,也就是取取指令(IF)和指令译码(ID)阶段,是不需要停顿的。CPU会在流水线里面去取下一条指令,然后进行译码。

取指令和指令译码不会需要遇到任何瓶颈,这是基于一个假设。这个假设就是,所有的指令代码都是顺序加载执行的。不过这个假设,在执行的代码中,一旦遇到if…else这样的条件分支,或者for/while循环,就会不成立。

 

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
int qwzsf(float* p1, float* p2, float* p3);
float xz(float x);
float a = 0, b = 0, c = 0, d = 0;
int main()
{
float* p1=NULL, * p2=NULL, * p3=NULL;
float x1, x2, x3;
p1 = &x1;
p2 = &x2;
p3 = &x3;
scanf("%f %f %f %f", &a, &b, &c, &d);
qwzsf( p1, p2, p3);
printf("%.2f %.2f %.2f", *p1, *p2, *p3);
return 0;
}
int qwzsf(float* p1, float* p2, float* p3)
{
float xfirst1=-100, xlast3=100;
float xfirst2, xlast1, xfirst3, xlast2;
float xmid;
float m,l,f;
xfirst2 = xlast1 = (-b - sqrt(b * b - 3 * a * c)) / 3 * a;
xfirst3 = xlast2 = (-b + sqrt(b * b - 3 * a * c)) / 3 * a;
if (xz(100) == 0)
{
*p3 = 100;
}
if (xz(-100) == 0)
{
*p1 = -100;
}
for (; xlast1 - xfirst1 > 0.005;)
{
xmid = (xfirst1 + xlast1) / 2;
m = xz(xmid);
f = xz(xfirst1);
l = xz(xlast1);
if (m == 0)
{
*p1 = xmid;
}
else if (l * m < 0)
{
xfirst1 = xmid;
}
else
{
xlast1 = xmid;
}
}
*p1 = xmid;

 

for (; xlast2 - xfirst2 > 0.005;)
{
xmid = (xfirst2 + xlast2) / 2;
m = xz(xmid);
f = xz(xfirst2);
l = xz(xlast2);
if (m == 0)
{
*p1 = xmid;
}
else if (l * m < 0)
{
xfirst2 = xmid;
}
else
{
xlast2 = xmid;
}
}
*p2 = xmid;


for (; xlast3 - xfirst3 > 0.005;)
{
xmid = (xfirst3 + xlast3) / 2;
m = xz(xmid);
f = xz(xfirst3);
l = xz(xlast3);
if (m == 0)
{
*p1 = xmid;
}
else if (l * m < 0)
{
xfirst3 = xmid;
}
else
{
xlast3 = xmid;
}
}
*p3 = xmid;
return 0;
}
float xz(float x)
{
return a * x * x * x + b * x * x + c * x + d;
}

标签:p3,p1,函数,包含,float,else,xz,xmid,分支
From: https://www.cnblogs.com/haimian666/p/17110978.html

相关文章

  • 函数参数之arguments
    前言EMCAScript规定在调用函数时,可传入任意数量,任意类型的参数,可以不跟函数定义时传入的形参数量相对应。为什么会这样呢?原因就是---------EMACAScript中的参数在内部是......
  • 前端学习案例6-构造函数继承
    ......
  • MFC-MouseProc鼠标钩子处理函数
     POINTpos={0,0};CStringstrx;HWNDhwnd;LRESULTCALLBACKMouseProc(intnCode,WPARAMwParam,LPARAMlParam)//参数1:当nCode=HC_ACTION时,wParam和lParam......
  • Java8函数式编程读后总结与感想
    1. 基本信息Java8函数式编程Java8Lambdas:FunctionalProgrammingfortheMasses[英]RichardWarburton著;王群锋译人民邮电出版社,2015年3月出版1.1. ......
  • Go 内置常量、类型、函数
    常量:true、false、iota、nil类型:int、int8、int16、int32、int64uint、uint8、unit16、uint32、uint64、uintptrfloat32、float64、complex128、complex64bool、......
  • 函数部分的详细讲解
    函数是什么在数学里,我们经常接触并且为之头疼的就是函数,但是越头疼,反而用到的越多,数学中不开函数。同样在C语言里,也存在着函数。在C语言里,函数是一个完成特定工作的独立程......
  • 函数式接口介绍、方法引用在Lambda中的使用 及 基本数据类型优化、并行流使用
    (目录)函数式接口1.概述​ 只有一个抽象方法的接口我们称之为函数接口。​ JDK的函数式接口都加上了**@FunctionalInterface**注解进行标识。但是无论是否加上该注解......
  • c语言中调用sve函数的例子
    c语言中调用sve函数(ArmCLanguageExtensionsforSVE)PDFsve.c#include<arm_sve.h>#include<stdio.h>#include<stdlib.h>#include<time.h>#defineARRAYSIZE......
  • 莫比乌斯函数入门
    \[\mu(n)=\left\{\begin{matrix}1&n=1\\0&n含有平方因子\\(-1)^k&其中k为n本质不同的质因子个数\end{matrix}\right.\]这个答辩似乎看不懂……不如换个形式去描......
  • 56.函数模板
    1.什么是函数模版  函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板2.怎么编写函数模版//T代......