Konstantin Ladutenko пре 8 година
родитељ
комит
6ac8e2a631
4 измењених фајлова са 57 додато и 11 уклоњено
  1. 1 6
      src/nmie-impl.hpp
  2. 54 0
      src/nmie-precision.hpp
  3. 1 5
      src/nmie.cc
  4. 1 0
      tests/c++/speed-test.cc

+ 1 - 6
src/nmie-impl.hpp

@@ -40,6 +40,7 @@
 // Hereinafter all equations numbers refer to [2]                                   //
 //**********************************************************************************//
 #include "nmie.hpp"
+#include "nmie-precision.hpp"
 #include <array>
 #include <algorithm>
 #include <cstdio>
@@ -48,16 +49,10 @@
 #include <iomanip>
 #include <stdexcept>
 #include <vector>
-// #include <boost/multiprecision/cpp_int.hpp>
-// #include <boost/multiprecision/cpp_bin_float.hpp>
-// #include <boost/multiprecision/cpp_dec_float.hpp>
-#include <boost/multiprecision/number.hpp>
 
 namespace nmie {  
   //helpers
 
-  //namespace nmm = std;
-  namespace nmm = boost::multiprecision;
   
   
   template<class T> inline T pow2(const T value) {return value*value;}

+ 54 - 0
src/nmie-precision.hpp

@@ -0,0 +1,54 @@
+#ifndef SRC_NMIE_PRECISION_H_
+#define SRC_NMIE_PRECISION_H_
+//**********************************************************************************//
+//    Copyright (C) 2009-2015  Ovidio Pena <ovidio@bytesfall.com>                   //
+//    Copyright (C) 2013-2015  Konstantin Ladutenko <kostyfisik@gmail.com>          //
+//                                                                                  //
+//    This file is part of scattnlay                                                //
+//                                                                                  //
+//    This program is free software: you can redistribute it and/or modify          //
+//    it under the terms of the GNU General Public License as published by          //
+//    the Free Software Foundation, either version 3 of the License, or             //
+//    (at your option) any later version.                                           //
+//                                                                                  //
+//    This program is distributed in the hope that it will be useful,               //
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of                //
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 //
+//    GNU General Public License for more details.                                  //
+//                                                                                  //
+//    The only additional remark is that we expect that all publications            //
+//    describing work using this software, or all commercial products               //
+//    using it, cite the following reference:                                       //
+//    [1] O. Pena and U. Pal, "Scattering of electromagnetic radiation by           //
+//        a multilayered sphere," Computer Physics Communications,                  //
+//        vol. 180, Nov. 2009, pp. 2348-2354.                                       //
+//                                                                                  //
+//    You should have received a copy of the GNU General Public License             //
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.         //
+//**********************************************************************************//
+
+//**********************************************************************************//
+// This class implements the algorithm for a multilayered sphere described by:      //
+//    [1] W. Yang, "Improved recursive algorithm for light scattering by a          //
+//        multilayered sphere,” Applied Optics, vol. 42, Mar. 2003, pp. 1710-1720.  //
+//                                                                                  //
+// You can find the description of all the used equations in:                       //
+//    [2] O. Pena and U. Pal, "Scattering of electromagnetic radiation by           //
+//        a multilayered sphere," Computer Physics Communications,                  //
+//        vol. 180, Nov. 2009, pp. 2348-2354.                                       //
+//                                                                                  //
+// Hereinafter all equations numbers refer to [2]                                   //
+//**********************************************************************************//
+#include <boost/multiprecision/number.hpp>
+#include <boost/multiprecision/cpp_bin_float.hpp>
+
+namespace nmie {
+	typedef boost::multiprecision::cpp_bin_float_100 FloatType;
+	namespace nmm = boost::multiprecision;
+
+	// namespace nmm = std;
+	// typedef double FloatType;
+	//typedef float FloatType;
+
+}  // end of namespace nmie
+#endif  // SRC_NMIE_IMPL_H_

+ 1 - 5
src/nmie.cc

@@ -39,6 +39,7 @@
 //**********************************************************************************//
 #include "nmie.hpp"
 #include "nmie-impl.hpp"
+#include "nmie-precision.hpp"
 #include <array>
 #include <algorithm>
 #include <cstdio>
@@ -47,13 +48,8 @@
 #include <iostream>
 #include <iomanip>
 #include <vector>
-#include <boost/multiprecision/cpp_bin_float.hpp>
-//#include <boost/math/special_functions/gamma.hpp>
 
 namespace nmie {
-  //typedef float FloatType;
-  //typedef double FloatType;
-  typedef boost::multiprecision::cpp_bin_float_100 FloatType;
   
   //**********************************************************************************//
   // This function emulates a C call to calculate the scattering coefficients         //

+ 1 - 0
tests/c++/speed-test.cc

@@ -39,6 +39,7 @@
 //sudo aptitude install libgoogle-perftools-dev
 //#include <google/heap-profiler.h>
 #include "../../src/nmie.hpp"
+//#include "../../src/nmie-precision.hpp"
 //#include "../../src/nmie-impl.hpp"
 
 timespec diff(timespec start, timespec end);