All pastes #488208 Raw Edit

Untitled

public text v1 · immutable
·published 2007-05-14 21:42 UTC
rendered paste body
public class Poly
	{
	private String variableName;
	private long [] coeffs;
	private long denominator;

// Constructors

public 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", variableName

public static Poly mulByx(Poly in, String "x")
	{
		Poly returnValue = new Poly ( mulByx.variableName, new long [mulByx.coeffs.length + 1], mulByx.denominator);
		
		returnValue.coeffs[0] = 0;
		for (int i = 0; i < coeffs.length; i++)
			{ returnValue.coeffs[i+1] = coeffs[i];	};	
		
		return returnValue;
	}

// 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 method

public 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");

	}

	}