*** empty log message ***
This commit is contained in:
		
							parent
							
								
									19ad78d6aa
								
							
						
					
					
						commit
						6be91ad771
					
				
							
								
								
									
										12
									
								
								bisection.h
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								bisection.h
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
#ifndef _BISECTION_H
 | 
					#ifndef _BISECTION_H
 | 
				
			||||||
#define _BISECTION_H
 | 
					#define _BISECTION_H
 | 
				
			||||||
//general bisection search
 | 
					//general bisection search between dm and hm
 | 
				
			||||||
//returns dm-1 on failure, otherwise number between dm and hm
 | 
					//returns dm-1 on failure, otherwise number between dm and hm
 | 
				
			||||||
//cmp returns 0 on equal, >0 if first > second argument
 | 
					//cmp returns 0 on equal, >0 if first > second argument
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -39,15 +39,15 @@ int interpolation_find(INDEX dm0, INDEX high, const SUBJECT *x, const SUBJECT *b
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		d1=(*dist)(x,base+low*lead_dimension_base);
 | 
							d1=(*dist)(x,base+low*lead_dimension_base);
 | 
				
			||||||
		d2=(*dist)(base+high*lead_dimension_base,x);
 | 
							d2=(*dist)(base+high*lead_dimension_base,x);
 | 
				
			||||||
		cout << "intlp "<<low<<" "<<high<<" "<<d1<<" "<<d2<,endl
 | 
							cout << "intlp "<<low<<" "<<high<<" "<<d1<<" "<<d2<<endl;
 | 
				
			||||||
		if(d1<=0 || d2 >=0)  break;
 | 
							if(d1<=0 || d2 <=0)  break;
 | 
				
			||||||
		d3=(*dist)(base+high*lead_dimension_base,base+low*lead_dimension_base);
 | 
							d3=(*dist)(base+high*lead_dimension_base,base+low*lead_dimension_base);
 | 
				
			||||||
	        mid = low + (int)((d1 * (high-low)) / d3+.5); 
 | 
						        mid = low + (int)((d1 * (high-low)) / d3); 
 | 
				
			||||||
 | 
							if(mid<low||mid>high) laerror("interpolation_find: error in distance function");
 | 
				
			||||||
		d4=(*dist)(x,base+mid*lead_dimension_base);
 | 
							d4=(*dist)(x,base+mid*lead_dimension_base);
 | 
				
			||||||
		cout << "intlp2 "<<mid<<" "<<d3<<" "<<d4<<endl;
 | 
					 | 
				
			||||||
                if(d4>0)
 | 
					                if(d4>0)
 | 
				
			||||||
                    low = mid + 1;
 | 
					                    low = mid + 1;
 | 
				
			||||||
                else if(d3<0)
 | 
					                else if(d4<0)
 | 
				
			||||||
                    high = mid - 1;
 | 
					                    high = mid - 1;
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    return mid;
 | 
					                    return mid;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user