All pastes #488251 Raw Edit

Untitled

public java v1 · immutable
·published 2007-05-14 22:12 UTC
rendered paste body
public class Poly	{	private String variableName;	private long [] coeffs;	private long denominator;// Constructorspublic Poly ( String polyVariableName, long [] polyCoeffs, long polyDenominator )	{		variableName = polyVariableName;		coeffs = polyCoeffs;		denominator = polyDenominator;	}// Debug quality printing.  Takes a polynomial and displays its coefficents.public String debugPrint ()	{		String returnValue = "(";		returnValue = returnValue + coeffs [0] + "*" + variableName + "^0";				for (int i = 1; i < coeffs.length; i++)			{ returnValue = returnValue + " + " + coeffs [i] + "*" + variableName + "^" + i; };		returnValue = returnValue + ")/";		returnValue = returnValue + denominator;		return returnValue;	}// Special-case multiplication.  Multiplication by a coefficient.public static Poly mulByCoeff(Poly in, long mulBy)	{		Poly returnValue = new Poly ( in.variableName, new long [in.coeffs.length], in.denominator );		for (int i = 0; i < in.coeffs.length; i++)			{ returnValue.coeffs[i] = mulBy * in.coeffs [i]; };		returnValue = reduce(returnValue);		return returnValue;	}// Special-case multiplication.  Division by a coefficient.public static Poly divByCoeff(Poly in, long divBy)	{		Poly returnValue = new Poly ( in.variableName, new long [in.coeffs.length], in.denominator );		for (int i = 0; i < in.coeffs.length; i++)			{ returnValue.coeffs[i] = in.coeffs [i] / divBy; };		returnValue = reduce(returnValue);		return returnValue;	}// Special-case multiplication.  Multiplication by "x", variableNamepublic static Poly mulByx(Poly in)	{		Poly returnValue = new Poly ( in.variableName, new long [in.coeffs.length + 1], in.denominator);				returnValue.coeffs[0] = 0;		for (int i = 0; i < in.coeffs.length; i++)			{ returnValue.coeffs[i+1] = in.coeffs[i];	};					return returnValue;	}// Addition of two polynomialspublic static Poly polyAdd (Poly A, Poly B)	{		// Determine length of coefficient array first		if ( A.coeff.length == B.coeff.length )			{ lengthC = A.coeff.length; }		else if ( A.coeff.length > B.coeff.length)			{ lengthC = A.length; }		else			{ lengthC = B.length; };		long denomC = A.denominator * B.denominator;		// Create return value		Poly C = new Poly ( variableName, new long [lengthC], denomC);		for (int i = 0; i < C.coeffs.length; i++)				{ C.coeffs[i] = B.denominator * A.coeffs[i] + A.denominator * B.coeffs[i];	}// Start of utility functions called by tickable functions.////////////////// Function to calculate the Highest Common Factor (Greatest Common Divisor) of 2 integers.public static long hcf(long m, long n)	{            if (m == 0) return n;            if (n == 0) return m;            return hcf(n,m%n);        }// Function to reduce a polynomial to its simplest terms.public static Poly reduce(Poly in)	{		Poly returnValue = new Poly ( in.variableName, new long [in.coeffs.length], in.denominator );		long divisor = in.denominator;		for (int i = 0; i < in.coeffs.length; i++)			{  divisor = hcf(in.coeffs[i],divisor); };		for (int i = 0; i < in.coeffs.length; i++)			{ returnValue.coeffs[i] = in.coeffs [i] / divisor; };		returnValue.denominator = in.denominator / divisor;		return returnValue;	}// Start of Main methodpublic static void main(String[] args)	{		String a = "x";		long[] b = {2,8,16};		long c = 2;		Poly test = new Poly(a,b,c);		System.out.printf("Polynomial is " + test.debugPrint() + "%n");		System.out.printf("HCF of 12 and 16 is " + hcf(12,16) + "%n");		System.out.printf("Simplified polynomial is " + reduce(test).debugPrint() + "%n");		System.out.printf("Polynomial multiplied by 4 is " + mulByCoeff(test,4).debugPrint() + "%n");		System.out.printf("Polynomial divided by 4 is " + divByCoeff(test,4).debugPrint() + "%n");		System.out.printf("Polynomial multiplied by x is " + mulByx(test).debugPrint());	}	}