Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
+154 -52
View File
@@ -817,15 +817,33 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
break;
case value::FLOAT:
switch(aV.m_type) {
case value::DOUBLE:
aThis.u.m_float -= (float)aV.u.m_double;
return true;
case value::DOUBLE:{
double tmp = double(aThis.u.m_float) - aV.u.m_double;
aThis.set(tmp);
return true;}
case value::UNSIGNED_SHORT :
aThis.u.m_float -= aV.u.m_unsigned_short;
return true;
case value::UNSIGNED_INT:
aThis.u.m_float -= aV.u.m_unsigned_int;
return true;
case value::INT:
aThis.u.m_float -= aV.u.m_int;
return true;
case value::SHORT:
aThis.u.m_float -= aV.u.m_short;
return true;
case value::FLOAT:
aThis.u.m_float -= aV.u.m_float;
return true;
case value::INT64:{
double tmp = double(aThis.u.m_float) - aV.u.m_int64;
aThis.set(tmp);
return true;}
case value::UNSIGNED_INT64:{
double tmp = double(aThis.u.m_float) - aV.u.m_unsigned_int64;
aThis.set(tmp);
return true;}
case value::ARRAY_DOUBLE:{
double tmp = aThis.u.m_float;
//In the below, this becomes a value::ARRAY_DOUBLE.
@@ -835,15 +853,10 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
aThis.u.m_array_double->add(tmp);
return true;}
case value::NONE:
case value::INT:
case value::VOID_STAR:
case value::BOOL:
case value::SHORT:
case value::INT64:
case value::FLOAT:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_INT64 :
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
case value::INT_STAR:
@@ -874,6 +887,21 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
case value::UNSIGNED_INT:
aThis.u.m_double -= aV.u.m_unsigned_int;
return true;
case value::INT:
aThis.u.m_double -= aV.u.m_int;
return true;
case value::SHORT:
aThis.u.m_double -= aV.u.m_short;
return true;
case value::INT64:
aThis.u.m_double -= aV.u.m_int64;
return true;
case value::FLOAT:
aThis.u.m_double -= aV.u.m_float;
return true;
case value::UNSIGNED_INT64 :
aThis.u.m_double -= aV.u.m_unsigned_int64;
return true;
case value::ARRAY_DOUBLE:{
double tmp = aThis.u.m_double;
//In the below, this becomes a value::ARRAY_DOUBLE.
@@ -883,15 +911,10 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
aThis.u.m_array_double->add(tmp);
return true;}
case value::NONE:
case value::INT:
case value::VOID_STAR:
case value::BOOL:
case value::SHORT:
case value::INT64:
case value::FLOAT:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_INT64 :
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
case value::INT_STAR:
@@ -917,6 +940,18 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
//case value::UNSIGNED_INT:
// aThis.u.m_unsigned_int -= aV.u.m_unsigned_int;
// return true;
case value::DOUBLE:{
double d = double(aThis.u.m_unsigned_int) - aV.u.m_double;
aThis.set(d);
return true;}
case value::FLOAT:{
float d = float(aThis.u.m_unsigned_int) - aV.u.m_float;
aThis.set(d);
return true;}
case value::INT:{
int d = int(aThis.u.m_unsigned_int) - aV.u.m_int;
aThis.set(d);
return true;}
case value::ARRAY_DOUBLE:{
unsigned int tmp = aThis.u.m_unsigned_int;
//In the below, this becomes a value::ARRAY_DOUBLE.
@@ -925,17 +960,11 @@ inline bool value::subtract(value& aThis,const value& aV,std::string& aError){
aThis.u.m_array_double->multiply(-1);
aThis.u.m_array_double->add(double(tmp));
return true;}
case value::DOUBLE:{
double d = double(aThis.u.m_unsigned_int) - aV.u.m_double;
aThis.set(d); //this becomes a value::DOUBLE.
return true;}
case value::NONE:
case value::INT:
case value::VOID_STAR:
case value::BOOL:
case value::SHORT:
case value::INT64:
case value::FLOAT:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_SHORT :
@@ -1055,6 +1084,9 @@ inline bool value::multiply(value& aThis,const value& aV,std::string& aError){
case value::INT:
aThis.u.m_int *= aV.u.m_int;
return true;
case value::UNSIGNED_INT:
aThis.u.m_int *= aV.u.m_unsigned_int;
return true;
case value::DOUBLE:
aThis.u.m_int *= (int)aV.u.m_double;
return true;
@@ -1080,7 +1112,6 @@ inline bool value::multiply(value& aThis,const value& aV,std::string& aError){
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
case value::INT_STAR:
case value::UNSIGNED_INT:
case value::STRING:
//case value::ARRAY_UNSIGNED_CHAR:
//case value::ARRAY_CHAR:
@@ -1352,6 +1383,16 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
switch(aThis.m_type) {
case value::INT:
switch(aV.m_type) {
case value::INT:
if(aV.u.m_int==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
int tmp = aThis.u.m_int/aV.u.m_int;
aThis.set(tmp);
return true;
}
case value::FLOAT:
if(aV.u.m_float==0.0F) {
aError = value::error_div_zero();
@@ -1385,7 +1426,6 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.u.m_array_double->multiply((double)tmp);
return true;}
case value::NONE:
case value::INT:
case value::VOID_STAR:
case value::BOOL:
case value::SHORT:
@@ -1425,6 +1465,15 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.u.m_float /= aV.u.m_int;
return true;
}
case value::SHORT:
if(aV.u.m_short==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_float /= aV.u.m_short;
return true;
}
case value::FLOAT:
if(aV.u.m_float==0.0F) {
aError = value::error_div_zero();
@@ -1435,12 +1484,13 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
return true;
}
case value::DOUBLE:
if(aV.u.m_float==0.0F) {
if(aV.u.m_double==0.0F) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_float /= (float)aV.u.m_double;
double tmp = double(aThis.u.m_float)/aV.u.m_double;
aThis.set(tmp);
return true;
}
case value::UNSIGNED_INT:
@@ -1452,6 +1502,35 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.u.m_float /= aV.u.m_unsigned_int;
return true;
}
case value::UNSIGNED_SHORT:
if(aV.u.m_unsigned_short==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_float /= aV.u.m_unsigned_short;
return true;
}
case value::UNSIGNED_INT64:
if(aV.u.m_unsigned_int64==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
double tmp = double(aThis.u.m_float)/aV.u.m_unsigned_int64;
aThis.set(tmp);
return true;
}
case value::INT64:
if(aV.u.m_int64==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
double tmp = double(aThis.u.m_float)/aV.u.m_int64;
aThis.set(tmp);
return true;
}
case value::ARRAY_DOUBLE:{
double tmp = aThis.u.m_float;
//In the below, this becomes a value::ARRAY_DOUBLE.
@@ -1468,12 +1547,8 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
case value::NONE:
case value::VOID_STAR:
case value::BOOL:
case value::SHORT:
case value::INT64:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_SHORT :
case value::UNSIGNED_INT64 :
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
case value::INT_STAR:
@@ -1513,6 +1588,15 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.u.m_double /= aV.u.m_int;
return true;
}
case value::INT64:
if(aV.u.m_int64==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_double /= aV.u.m_int64;
return true;
}
case value::FLOAT:
if(aV.u.m_float==0.0F) {
aError = value::error_div_zero();
@@ -1540,6 +1624,24 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.u.m_double /= aV.u.m_unsigned_int;
return true;
}
case value::UNSIGNED_SHORT:
if(aV.u.m_unsigned_short==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_double /= aV.u.m_unsigned_short;
return true;
}
case value::UNSIGNED_INT64:
if(aV.u.m_unsigned_int64==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
aThis.u.m_double /= aV.u.m_unsigned_int64;
return true;
}
case value::ARRAY_DOUBLE:{
double tmp = aThis.u.m_double;
//In the below, this becomes a value::ARRAY_DOUBLE.
@@ -1556,11 +1658,8 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
case value::NONE:
case value::VOID_STAR:
case value::BOOL:
case value::INT64:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_SHORT :
case value::UNSIGNED_INT64 :
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
case value::INT_STAR:
@@ -1582,29 +1681,16 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
break;
case value::UNSIGNED_INT:
switch(aV.m_type) {
//case value::UNSIGNED_INT:
// if(aV.u.m_unsigned_int==0) {
// aError = value::error_div_zero();
// aThis.set_none();
// return false;
// } else {
// //FIXME : ???
// aThis.set((double)(aThis.u.m_unsigned_int / aV.u.m_unsigned_int ));
// return true;
// }
case value::ARRAY_DOUBLE:{
unsigned int tmp = aThis.u.m_unsigned_int;
//In the below, this becomes a value::ARRAY_DOUBLE.
aThis.set(aV.u.m_array_double->orders(),
aV.u.m_array_double->vector());
if(!aThis.u.m_array_double->invert()) {
case value::UNSIGNED_INT:
if(aV.u.m_unsigned_int==0) {
aError = value::error_div_zero();
aThis.set_none();
return false;
} else {
unsigned int tmp = aThis.u.m_unsigned_int/aV.u.m_unsigned_int;
aThis.set(tmp);
return true;
}
aThis.u.m_array_double->multiply(double(tmp));
return true;}
case value::FLOAT:
if(aV.u.m_float==0) {
aError = value::error_div_zero();
@@ -1625,6 +1711,19 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
aThis.set(d); //this becomes a value::DOUBLE.
return true;
}
case value::ARRAY_DOUBLE:{
unsigned int tmp = aThis.u.m_unsigned_int;
//In the below, this becomes a value::ARRAY_DOUBLE.
aThis.set(aV.u.m_array_double->orders(),
aV.u.m_array_double->vector());
if(!aThis.u.m_array_double->invert()) {
aError = value::error_div_zero();
aThis.set_none();
return false;
}
aThis.u.m_array_double->multiply(double(tmp));
return true;}
case value::NONE:
case value::INT:
case value::VOID_STAR:
@@ -1634,7 +1733,6 @@ inline bool value::divide(value& aThis,const value& aV,std::string& aError){
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_SHORT :
case value::UNSIGNED_INT:
case value::UNSIGNED_INT64 :
case value::DOUBLE_STAR:
case value::FLOAT_STAR:
@@ -1998,13 +2096,17 @@ inline bool value::if_gt(value& aThis,const value& aV,std::string& aError){
case value::INT:
aThis.set((bool)((int)aThis.u.m_unsigned_int >aV.u.m_int?true:false));
return true;
case value::DOUBLE:
aThis.set((bool)(double(aThis.u.m_unsigned_int)>aV.u.m_double?true:false));
return true;
case value::FLOAT:
aThis.set((bool)(float(aThis.u.m_unsigned_int)>aV.u.m_float?true:false));
return true;
case value::NONE:
case value::VOID_STAR:
case value::DOUBLE:
case value::BOOL:
case value::SHORT:
case value::INT64:
case value::FLOAT:
//case value::UNSIGNED_CHAR:
//case value::CHAR:
case value::UNSIGNED_SHORT :