23 #ifndef O2SCL_VECTOR_DERINT_H
24 #define O2SCL_VECTOR_DERINT_H
48 #include <o2scl/interp.h>
50 #ifndef DOXYGEN_NO_O2NS
62 template<
class vec_t,
class vec2_t,
class fp_t=
double>
65 O2SCL_ERR2(
"Requested derivative of zero or one-element vector ",
74 dv[0]=-1.5*v[0]+2.0*v[1]-0.5*v[2];
75 dv[n-1]=1.5*v[n-1]-2.0*v[n-2]+0.5*v[n-3];
76 for(
size_t i=1;i<n-1;i++) {
77 dv[i]=(v[i+1]-v[i-1])/2.0;
85 template<
class vec_t,
class vec2_t,
class fp_t=
double>
88 O2SCL_ERR2(
"Requested derivative of zero or one-element vector ",
99 dv[n-1]=v[n-1]-v[n-2];
101 for(
size_t i=1;i<n-1;i++) {
102 dv[i]=(v[i+1]-v[i-1])/2.0;
109 template<
class vec_t,
class vec2_t,
class fp_t=
double>
112 O2SCL_ERR2(
"Requested derivative of zero or one-element vector ",
121 dv[0]=-25.0/12.0*v[0]+4.0*v[1]-3.0*v[2]+4.0/3.0*v[3]-0.25*v[4];
122 dv[1]=-0.25*v[0]-5.0/6.0*v[1]+1.5*v[2]-0.5*v[3]+v[4]/12.0;
123 dv[n-2]=-v[n-5]/12.0+0.5*v[n-4]-1.5*v[n-3]+5.0/6.0*v[n-2]+0.25*v[n-1];
124 dv[n-1]=0.25*v[n-5]-4.0*v[n-4]/3.0+3.0*v[n-3]-4.0*v[n-2]+25.0*v[n-1]/12.0;
125 for(
size_t i=2;i<n-2;i++) {
126 dv[i]=1.0/12.0*(v[i-2]-v[i+2])+2.0/3.0*(v[i+1]-v[i-1]);
134 template<
class vec_t,
class vec2_t,
class fp_t=
double>
137 O2SCL_ERR2(
"Requested derivative of zero or one-element vector ",
147 dv[0]=-1.5*v[0]+2.0*v[1]-0.5*v[2];
148 dv[n-1]=1.5*v[n-1]-2.0*v[n-2]+0.5*v[n-3];
150 dv[1]=-v[0]/3.0-v[1]/2.0+v[2]-v[3]/6.0;
151 dv[n-2]=v[n-4]/6.0-v[n-3]+v[n-2]/2.0+v[n-1]/3.0;
153 for(
size_t i=2;i<n-2;i++) {
154 dv[i]=1.0/12.0*(v[i-2]-v[i+2])+2.0/3.0*(v[i+1]-v[i-1]);
175 (
size_t n, vec_t &v) {
177 O2SCL_ERR2(
"Tried to integrate zero-length vector in ",
182 fp_t res=(v[0]+v[n-1])/2.0;
183 for(
size_t i=1;i<n-1;i++) res+=v[i];
193 (
size_t n, vec_t &v) {
195 O2SCL_ERR2(
"Tried to integrate zero-length vector in ",
200 return (v[0]+v[1])/2.0;
202 fp_t res=v[0]+v[n-1];
206 for(
size_t i=1;i<n/2;i++) {
209 if (four) res+=(v[i]+v[n-i-1])*3.5;
210 else res+=(v[i]+v[n-i-1])*2.5;
212 if (four) res+=(v[i]+v[n-i-1])*4.0;
213 else res+=(v[i]+v[n-i-1])*2.0;
226 (
size_t n, vec_t &v) {
228 O2SCL_ERR2(
"Tried to integrate zero-length vector in ",
234 return (v[0]+v[1])/two;
237 return (v[0]+4.0*v[1]+v[2])/three;
242 fp_t res=(v[0]*c1+v[1]*c2+v[n-1]*c1+v[n-2]*c2)/den;
243 for(
size_t i=2;i<n-2;i++) {
255 (
size_t n, vec_t &v) {
257 O2SCL_ERR2(
"Tried to integrate zero-length vector in ",
262 return (v[0]+v[1])/2.0;
264 return (v[0]+4.0*v[1]+v[2])/3.0;
266 fp_t res=(v[0]*4.0+v[1]*11.0+v[n-1]*4.0+v[n-2]*11.0)/10.0;
267 for(
size_t i=2;i<n-2;i++) {
279 (
size_t n, vec_t &v) {
280 if (n<8)
return vector_integ_extended4<vec_t,fp_t>(n,v);
286 fp_t res=((v[0]+v[n-1])*c1+(v[1]+v[n-2])*c2+(v[2]+v[n-3])*c3+
287 (v[3]+v[n-4])*c4)/den;
288 for(
size_t i=4;i<n-4;i++) {
295 #ifndef DOXYGEN_NO_O2NS