view src/samer/maths/Linear.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
line wrap: on
line source
/*
 *	Copyright (c) 2000, Samer Abdallah, King's College London.
 *	All rights reserved.
 *
 *	This software is provided AS iS and WITHOUT ANY WARRANTY; 
 *	without even the implied warranty of MERCHANTABILITY or 
 *	FITNESS FOR A PARTICULAR PURPOSE.
 */

package samer.maths;
import  samer.core.*;


public class Linear extends Function
{	
	private double	a, b;

	public Linear() { this( Shell.getDouble("a",1), Shell.getDouble("b",0)); }
	public Linear(double a, double b) { this.a = a; this.b = b; }

	public double apply(double t) { return a*t+b; }
	public void apply(double [] x) {
		for (int i=0; i<x.length; i++) { x[i]*=a;  x[i]+=b; }
	}
	public void apply(double [] x, double [] y) {
		for (int i=0; i<x.length; i++) y[i]=a*x[i]+b;
	}
	public String format(String arg) { 
		StringBuffer buf=new StringBuffer();
		if (b!=0) {
			buf.append(X.string(b));
			if (a!=0) buf.append(" + ").append(X.string(a)).append(arg);
		} else {
			if (a!=0) buf.append(X.string(a)).append(arg);
			else return "0";
		}
		return buf.toString();
	}

	public Function derivative() { return new Constant(a); }
	public Function inverse() { return new Linear(-a/b,1/b); }
}