package com.nr; import org.netlib.util.intW; public class NRUtil { private NRUtil(){} public final static float FLT_EPSILON = 1.19209290E-07F; public final static double DBL_EPSILON = 2.2204460492503131E-16; public final static int FLT_RADIX = 2; public final static int DBL_MANT_DIG = 53; public final static int INT_DIGITS = 32; public static double SQR(final double a){return a*a;} public static float SQR(final float a){return a*a;} public static int SQR(final int a){return a*a;} public static double SIGN(final double a, final double b) {return b >= 0 ? (a >= 0 ? a : -a) : (a >= 0 ? -a : a);} public static int SIGN(final int a, final int b) {return b >= 0 ? (a >= 0 ? a : -a) : (a >= 0 ? -a : a);} public static float SIGN(final float a, final double b) {return b >= 0 ? (a >= 0 ? a : -a) : (a >= 0 ? -a : a);} public static float SIGN(final double a, final float b) {return (float)(b >= 0 ? (a >= 0 ? a : -a) : (a >= 0 ? -a : a));} /** * Swaps x[a] with x[b]. */ public static void swap(double x[], int a, int b) { double t = x[a]; x[a] = x[b]; x[b] = t; } public static void swap(int x[], int a, int b) { int t = x[a]; x[a] = x[b]; x[b] = t; } public static void swap(char x[], int a, int b) { char t = x[a]; x[a] = x[b]; x[b] = t; } public static void swap(Object x[], int a, int b) { Object t = x[a]; x[a] = x[b]; x[b] = t; } public static double[] buildVector(final int n, final double a) { double[] v = new double[n]; for(int i=0; i 0 ? new double[nn] : null; } return v; } public static void copyAssign(final double[]v, final double[] rhs) { // postcondition: normal assignment via copying has been performed; // if vector and rhs were different sizes, vector // has been resized to match the size of rhs int nn = v.length; int rnn = rhs.length; if (v != rhs) { if (nn != rnn ) { // nn=rnn; //v = new double[nn]; throw new IllegalArgumentException("Must be same size."); } System.arraycopy(rhs, 0, v, 0, nn); } return; } public static double[][] buildMatrix(final int nn, final int mm, final double a) { double[][] v = new double[nn][mm]; for(int i=0; i> 52) - 1022; return d; } public static String toString(double[]v){ StringBuilder sb = new StringBuilder(256); int nn = v.length; int nb =10; for(int i=0;i