Salome HOME
bos #20256: [CEA 18523] Porting SMESH to int 64 bits
[modules/smesh.git] / src / StdMeshers / StdMeshers_Distribution.cxx
index 900723108e1d41e774dc5a156101165bc43bd0c6..90174fce1058bfc151dfff2cd4300f57f1d33046 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -55,7 +55,7 @@ bool Function::value( const double, double& f ) const
     try {
       OCC_CATCH_SIGNALS;
       f = pow( 10., f );
-    } catch(Standard_Failure) {
+    } catch(Standard_Failure&) {
       f = 0.0;
       ok = false;
     }
@@ -156,7 +156,7 @@ double FunctionTable::integral( const double a, const double b ) const
 
 bool FunctionTable::findBounds( const double x, int& x_ind_1, int& x_ind_2 ) const
 {
-  int n = myData.size() / 2;
+  int n = (int) myData.size() / 2;
   if( n==0 || x<myData[0] )
   {
     x_ind_1 = x_ind_2 = 0;
@@ -185,7 +185,7 @@ FunctionExpr::FunctionExpr( const char* str, const int conv )
     OCC_CATCH_SIGNALS;
     myExpr = ExprIntrp_GenExp::Create();
     myExpr->Process( ( Standard_CString )str );
-  } catch(Standard_Failure) {
+  } catch(Standard_Failure&) {
     ok = false;
   }
 
@@ -217,7 +217,7 @@ bool FunctionExpr::value( const double t, double& f ) const
   try {
     OCC_CATCH_SIGNALS;
     f = myExpr->Expression()->Evaluate( myVars, myValues );
-  } catch(Standard_Failure) {
+  } catch(Standard_Failure&) {
     f = 0.0;
     ok = false;
   }
@@ -235,7 +235,7 @@ double FunctionExpr::integral( const double a, const double b ) const
       ( *static_cast<math_Function*>( const_cast<FunctionExpr*> (this) ), a, b, 20 );
     if( _int.IsDone() )
       res = _int.Value();
-  } catch(Standard_Failure) {
+  } catch(Standard_Failure&) {
     res = 0.0;
     MESSAGE( "Exception in integral calculating" );
   }
@@ -289,35 +289,35 @@ double dihotomySolve( Function& f, const double val, const double _start, const
 }
 
 bool buildDistribution( const TCollection_AsciiString& f, const int conv, const double start, const double end,
-                        const int nbSeg, vector<double>& data, const double eps )
+                        const smIdType nbSeg, vector<double>& data, const double eps )
 {
   FunctionExpr F( f.ToCString(), conv );
   return buildDistribution( F, start, end, nbSeg, data, eps );
 }
 
 bool buildDistribution( const std::vector<double>& f, const int conv, const double start, const double end,
-                        const int nbSeg, vector<double>& data, const double eps )
+                        const smIdType nbSeg, vector<double>& data, const double eps )
 {
   FunctionTable F( f, conv );
   return buildDistribution( F, start, end, nbSeg, data, eps );
 }
 
-bool buildDistribution( const Function& func, const double start, const double end, const int nbSeg,
-                        vector<double>& data, const double eps )
+bool buildDistribution( const Function& func, const double start, const double end,
+                        const smIdType nbSeg, vector<double>& data, const double eps )
 {
   if( nbSeg<=0 )
     return false;
 
   data.resize( nbSeg+1 );
   data[0] = start;
-  double J = func.integral( start, end ) / nbSeg;
+  double J = func.integral( start, end ) / double( nbSeg );
   if( J<1E-10 )
     return false;
 
   bool ok;
   //MESSAGE( "distribution:" );
   //char buf[1024];
-  for( int i=1; i<nbSeg; i++ )
+  for( smIdType i = 1; i < nbSeg; i++ )
   {
     FunctionIntegral f_int( &func, data[i-1] );
     data[i] = dihotomySolve( f_int, J, data[i-1], end, eps, ok );