import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; /**This is the redundancy eliminator from the paper*/ public class IntervalRedundancyEliminator { /**The main routine**/ public static int eliminate(double E,IntervalBoxConfiguration X) { if(isPermuted(X)==1) return(1); //property 2 if(isInverted(X)==1) return(1); //property 3 if(bondTooHi(E,X)==1) return(1); //property 1 return(0); } /**Property 1**/ public static int bondTooHi(double E,IntervalBoxConfiguration X) { IntervalVector[] V1=X.B[0].toVectors(); IntervalVector V2=IntervalVector.northPole(); Interval min=IntervalVector.dist(V1[1],V2); for(int i=0;i<4;++i) { for(int j=i+1;j<5;++j) { if((i!=0)||(j!=4)) { Interval psi_max=IntervalSeparation.psiMax(X.B[i],X.B[j]); if(psi_max.r=X.B[2].yMax()) return(1); if(X.B[2].yMin()>=X.B[3].yMax()) return(1); if(X.B[2].yMax()<=0) return(1); if(X.B[1].yMin()>=0) return(1); if(X.B[0].xMax()<=1) return(1); return(0); } /**Property 3**/ public static int isInverted(IntervalBoxConfiguration X) { if(X.B[1].yMax()>=0) return(0); if(X.B[3].yMin()<=0) return(0); if(X.B[2].xMaxDouble()<-0.41421357) return(1); //this decimal is less than 1-sqrt(2) return(0); } }