view src/samer/functions/LogGenCosh.java @ 5:b67a33c44de7

Remove some crap, etc
author samer
date Fri, 05 Apr 2019 21:34:25 +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.functions;
import  samer.maths.*;
import  samer.core.types.*;

/** Actually NEGATIVE log cosh: like abs but with rounded bottom
	Amount of rounding is adjustable */


public class LogGenCosh extends Function implements DoubleModel
{
	double beta=1, alpha=1, offset;

	public LogGenCosh() {}
	public LogGenCosh( double a) { set(a); }
	
	public double get() { return alpha; }
	public void set(double n)  {
		alpha=n; beta=1/n; offset=-alpha*Math.log(2);
	}

	public String format(String t) { return "log cosh "+t; }

	public final double apply(double t) {
		double s=beta*t;
		if  (s<-16) return offset-t;
		else if (s>16) return offset+t;
		else return alpha*Math.log(Mathx.cosh(beta*t)); 
	}

	public Function derivative() { 
		return new Function() {
			public String format(String t) { return "tanh "+t; }
			public final double apply(double t) { return Mathx.tanh(beta*t); }
		};
	}
}