我有一个赋值,我基本上需要在一个简单的程序中计算浮点运算的数量,它涉及一个循环,一个矩阵,以及*,+和^等操作。
根据我的理解,浮点运算是一个涉及浮点数的运算,我们可能有兴趣计算这些运算,因为我认为它们可能对计算机来说更贵。如果你想为这个部分添加更多细节,那就太好了。
我的问题是我不知道究竟哪些操作涉及浮点数,除非我使用isfloat
等函数。在这种情况下,只需将操作中的一个数字作为浮点运算被视为浮点运算,对吗?如果没有,为什么?你能在这个上添加更多细节吗?
例如,假设我有以下简单的功能:
function [r, n] = naive(c, x)
% c is the vector of coefficients of the polynomial
% The coeffiecients should be given as follows
% c(1) = coefficient of x^0 (or 1).
% c(length(c)) = coefficient of the largest power of x
% x is the point to evaluate the polynomial at
% r is the result of the evaluation
% (Assumes that the entries are integers)
r = c(1);
n = 0;
for i=2:length(c)
r = r + c(i) * x^(i - 1);
n = n + 2 + (i - 1);
end
end
它基本上计算了在x
评估的正常多项式给定向量c
中的系数。
从代码中可以看出,n
实际上是跟踪浮点运算。但实际上,我将每个数学运算(除了赋值)都算作浮点运算,但这当然可能不对,或者是这样吗?如果是或否,为什么?
系数和c
都可能是浮点数。因此,如果数字是浮点数,那么我们应该首先检查isfloat
,而不是将每个操作都计为浮点运算,而只是增加n
?
注意,我已经意识到函数flops
,根据我的理解,它应该计算浮点运算,但是它已被弃用了,而且我想要更好地学习这些概念,因此尝试手动计算它们。
感谢您的帮助!