Go to the documentation of this file.00001 #include "arith.h"
00002
00003 same2(w,en,hashtab)
00004 REAL w[MAXRANK][MAXEDGE];
00005 int en;
00006 TABLE hashtab;
00007 {
00008 VECTOR w1,w2;
00009 REAL error;
00010 int i,k,hashkey,hashval;
00011
00012 for(i=0; i<MAXRANK; i++)
00013 w1[i]= w[i][en];
00014
00015 hashval=hash5(w1);
00016 for(k=hashval; k<HASHNO; k++){
00017 hashkey= hashtab[k];
00018 if(hashkey == EMPTY){
00019 return(k);
00020 }
00021 else{
00022 error= 0.0e0;
00023 for(i=0; i<MAXRANK; i++){
00024 w2[i] = w[i][hashkey];
00025 error += fabs(w1[i] - w2[i]);
00026 }
00027 if(error < EPS * MAXRANK)
00028 return(COLLISION);
00029 }
00030 }
00031
00032 for(k=0; k<HASHNO; k++){
00033 hashkey= hashtab[k];
00034 if(hashkey == EMPTY){
00035 return(k);
00036 }
00037 else{
00038 error= 0.0e0;
00039 for(i=0; i<MAXRANK; i++){
00040 w2[i] = w[i][hashkey];
00041 error += fabs(w1[i] - w2[i]);
00042 }
00043 if(error < EPS * MAXRANK)
00044 return(COLLISION);
00045 }
00046 }
00047 }
00048
00049
00050
00051
00052