00001 #ifndef LEGENDRE_H
00002 #define LEGENDRE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ZMENVIRONMENT_H
00012 #include "ZMutility/ZMenvironment.h"
00013 #endif
00014 #include <utility>
00015 #include <vector>
00016
00017 ZM_BEGIN_NAMESPACE( zmsf )
00018
00019 typedef std::vector<double> Dvector;
00020 typedef std::pair<double,double> Dpair;
00021
00026
00027 struct Legendre {
00028
00030 static double P1( const double x );
00031
00033 static Dpair P1Err( const double x );
00034
00036 static double P2( const double x );
00037
00039 static Dpair P2Err( const double x );
00040
00042 static double P3( const double x );
00043
00045 static Dpair P3Err( const double x );
00046
00048 static double Pl( const int l, const double x );
00049
00051 static Dpair PlErr( const int l, const double x );
00052
00054 static Dvector PlArray( const int lmax, const double x );
00055
00057 static Dvector PlErrArray( const int lmax, const double x );
00058
00060 static double Q0( const double x );
00061
00063 static Dpair Q0Err( const double x );
00064
00066 static double Q1( const double x );
00067
00069 static Dpair Q1Err( const double x );
00070
00072 static double Ql( const int l, const double x );
00073
00075 static Dpair QlErr( const int l, const double x );
00076
00078 static double Plm( const int l, const int m, const double x );
00079
00081 static Dpair PlmErr( const int l, const int m, const double x );
00082
00084 static Dvector PlmArray( const int lmax, const int m, const double x );
00085
00087 static double SphericalPlm( const int l, const int m, const double x );
00088
00090 static Dpair SphericalPlmErr( const int l, const int m, const double x );
00091
00093 static Dvector SphericalPlmArray( const int lmax, const int m, const double x );
00094
00096
00100 static Dvector SphericalPlmErrArray( const int lmax, const int m, const double x );
00101
00103 static double RegularSphericalConical( const double lambda, double x );
00104
00106 static Dpair RegularSphericalConicalErr( const double lambda, const double x );
00107
00109 static double IrregularSphericalConical( const double lambda, const double x );
00110
00112 static Dpair IrregularSphericalConicalErr( const double lambda, const double x );
00113
00115 static double ConicalP0( const double lambda, const double x );
00116
00118 static Dpair ConicalP0Err( const double lambda, const double x );
00119
00121 static double ConicalP1( const double lambda, const double x );
00122
00124 static Dpair ConicalP1Err( const double lambda, const double x );
00125
00127 static double RegularSphericalConicalPl( const int l, const double lambda,
00128 const double x );
00129
00131 static Dpair RegularSphericalConicalPlErr( const int l, const double lambda,
00132 const double x );
00133
00135 static double RegularCylindricalConicalPl( const int l, const double lambda,
00136 const double x );
00137
00139 static Dpair RegularCylindricalConicalPlErr( const int l, const double lambda,
00140 const double x );
00141
00143 static double H3d0( const double lambda, const double eta );
00144
00146 static Dpair H3d0Err( const double lambda, const double eta );
00147
00149 static double H3d1( const double lambda, const double eta );
00150
00152 static Dpair H3d1Err( const double lambda, const double eta );
00153
00155 static double H3dl( const int l, const double lambda, const double eta );
00156
00158 static Dpair H3dlErr( const int l, const double lambda, const double eta );
00159
00161 static Dvector H3dlArray( const int lmax, const double lambda, const double eta );
00162
00164 static Dvector H3dlErrArray( const int lmax, const double lambda, const double eta );
00165
00166 };
00167
00168 ZM_END_NAMESPACE( zmsf )
00169
00170 #endif