1 |
#include "multidimvar.h" |
2 |
|
3 |
// Receives a string with a value with multiple dimensions separated by space |
4 |
// Example of input "5 4 6". Variable with dim1=5, dim2=4, dim3=6. |
5 |
MultiDimVar::MultiDimVar(QString multiDimValue) |
6 |
{ |
7 |
this->multiDimValue=UtilXmlTools::qListDoubleFromSpacedString(multiDimValue); |
8 |
} |
9 |
|
10 |
// Inicializes a new MultiDimVar with the dimensions specified with all zero values |
11 |
MultiDimVar::MultiDimVar(int dim){ |
12 |
|
13 |
for(int i=0; i<dim; i++){ |
14 |
this->multiDimValue.append(0); |
15 |
} |
16 |
|
17 |
} |
18 |
|
19 |
// Sums 2 MultiDimVar values |
20 |
MultiDimVar MultiDimVar::sum(const MultiDimVar &val1, const MultiDimVar &val2){ |
21 |
MultiDimVar result(val1.multiDimValue.size()); |
22 |
|
23 |
if(val1.multiDimValue.size()!=val2.multiDimValue.size()){ |
24 |
UtilXmlTools::displayErrorMessage("MultiDimVar sum","Error summing MultiDimVar, variables don't have the same dimensions."); |
25 |
} |
26 |
|
27 |
for(int i=0; i<result.multiDimValue.size(); i++){ |
28 |
result.multiDimValue[i]=val1.multiDimValue[i]+val2.multiDimValue[i]; |
29 |
} |
30 |
|
31 |
return result; |
32 |
} |
33 |
|
34 |
// Subtract 2 MultiDimVar values |
35 |
MultiDimVar MultiDimVar::sub(const MultiDimVar &val1, const MultiDimVar &val2){ |
36 |
MultiDimVar result(val1.multiDimValue.size()); |
37 |
|
38 |
if(val1.multiDimValue.size()!=val2.multiDimValue.size()){ |
39 |
UtilXmlTools::displayErrorMessage("MultiDimVar subtraction","Error subtracting MultiDimVar, variables don't have the same dimensions."); |
40 |
} |
41 |
|
42 |
for(int i=0; i<result.multiDimValue.size(); i++){ |
43 |
result.multiDimValue[i]=val1.multiDimValue[i]-val2.multiDimValue[i]; |
44 |
} |
45 |
|
46 |
return result; |
47 |
} |
48 |
|
49 |
// Returns a string representation of this multidimensional value as string. |
50 |
// Each dimension is separated by a space. |
51 |
QString MultiDimVar::toString(){ |
52 |
|
53 |
QString result; |
54 |
|
55 |
for(int i=0; i<this->multiDimValue.size()-1; i++){ |
56 |
result += QString::number(this->multiDimValue[i],'G',9) + " "; // G is the option used by onisplit |
57 |
} |
58 |
|
59 |
result += QString::number(this->multiDimValue[this->multiDimValue.size()-1],'G',9); // last one does not have a space at the end |
60 |
|
61 |
return result; |
62 |
|
63 |
} |