2016-11-16 4 views
1

私は行列でC++で作業していますが、要素の型はdoubleです。行列の次元の制限は10,000です。私は要素の限界として設定する論理的な値が何であるかを知りたいと思っています。私はこの数字を可能な限り高くしたいが、無限の問題はない。最高のdouble値の制限はC++で

+10

なぜ「要素の制限を設定する」必要があると思いますか? –

+1

つまり、マトリックスにインデックスを付けるためには、システムアーキテクチャによってすでに制限されています。十分ではありませんか? – mascoj

+0

行列積の結果は無限になります。 – dieKoderin

答えて

0

いつでもstd::numeric_limitsを使用できます。例えば


#include <limits> 
#include <iostream> 

int main() 
{ 
      std::cout << "float\t" 
      << std::numeric_limits<float>::lowest() << '\t' 
      << std::numeric_limits<float>::max() << '\n'; 
      std::cout << "double\t" 
      << std::numeric_limits<double>::lowest() << '\t' 
      << std::numeric_limits<double>::max() << '\n'; 
} 
+0

これはどのようにオペアンプの質問に答えますか? – George

+1

@ジョージErrr ...のように、彼女は制限を求め、モハメドは1つを提供していますか? (確かに質問は完全には明らかではない - 他の人たちは、価値観ではなく、指標に限界を求めていると思っているようだが、彼女は無限の結果について多くの和と乗法をしているということを考えると、要素値の制限については) –

+0

質問「要素の限界として設定する論理値は何か知りたい」要素は「double」なので、これはaのdoubleとdoubleの最大値と最小値与えられたマシン。 –

1

二重の範囲が

1.7976931348623158e+308 

では、Xとしての要素の最大値を言うことができます。 乗算に最大答えは `

1.7976931348623158e+308 = 10000*X*X 

1.7976931348623158e+304 = X*X 

X ~ 1.7976931348623158e+150 

したがって

X*X + X*X + X*X .....10,000 times(maximum row and column count)

すなわち

10000*X*X

されますが、精度を失うことになります。

この値は、1回乗算する場合の値です。

関連する問題