Revision: 7378
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at July 20, 2008 07:18 by tkf
                            
                            Initial Code
template<class Rand>
  class ContinuousRandWithLagrangeInterpolation {
  public:
    int num;
    double x_max;
    Rand rand;
    std::vector<double> x, f, den;
    ContinuousRandWithLagrangeInterpolation(double _x_max, int _num):
      rand(), x_max(_x_max), num(_num),
      x(_num+1,0), f(_num+1,0), den(_num+1,0)
    {
      init();
    }
    void init(){
      int i;
      for(i=0;i<num+1;i++){
	x[i] = x_max/num*i;
	f[i] = rand();
      }
      for(i=0;i<num+1;i++){
	den[i] = mult(x[i], i);
      }
    }
    double mult(const double& y, const int& j){
      int i;
      double m=1;
      for(i=0;i<num+1;i++){
	if(i != j){
	  m *= ( y - x[i] );
	}
      }
      return m;
    }
    double operator()(const double& y) {
      double p=0;
      int i;
      for(i=0;i<num+1;i++){
	p += f[i] * mult(y, i) / den[i];
      }
      return p;
    }
  };
                                Initial URL
Initial Description
Initial Title
Continuous Rand With Lagrange Interpolation (suck)
Initial Tags
Initial Language
C++