samer@0: /* samer@0: * Copyright (c) 2000, Samer Abdallah, King's College London. samer@0: * All rights reserved. samer@0: * samer@0: * This software is provided AS iS and WITHOUT ANY WARRANTY; samer@0: * without even the implied warranty of MERCHANTABILITY or samer@0: * FITNESS FOR A PARTICULAR PURPOSE. samer@0: */ samer@0: samer@0: package samer.maths.opt; samer@0: samer@0: public class Util samer@0: { samer@0: public static double maxabs(double [] x) samer@0: { samer@0: double m=Math.abs(x[0]); samer@0: for (int i=1; im) m=x[i]; samer@0: } samer@0: return m; samer@0: } samer@0: samer@0: // returns abs(x) > tol ? x : tol*sgn(x) samer@0: public static double unzero(double x, double tol) { samer@0: if (x>tol) return x; samer@0: else if (x<-tol) return x; samer@0: else if (x>0) return tol; samer@0: else return -tol; samer@0: } samer@0: samer@0: public static boolean between(double b, double u, double c) samer@0: { samer@0: if (b=upper) return upper; samer@0: else return t; samer@0: } samer@0: samer@0: public static double cubici( double f1, double g1, double f2, double g2, double lambda) samer@0: { samer@0: double z=g2+g1-3*(f2-f1)/lambda; samer@0: double w=z*z-g1*g2; samer@0: w = (w>0) ? Math.sqrt(w) : 0; samer@0: return lambda*((z+g1+w)/(g2+g1+2*z)); samer@0: } samer@0: samer@0: public static int find( int i, int [] A, int n) samer@0: { samer@0: for (int j=0; j