## gov.sandia.cognition.learning.function.scalar Class LinearFunction

```java.lang.Object gov.sandia.cognition.util.AbstractCloneableSerializable gov.sandia.cognition.math.AbstractScalarFunction<Double> gov.sandia.cognition.math.AbstractUnivariateScalarFunction gov.sandia.cognition.math.AbstractDifferentiableUnivariateScalarFunction gov.sandia.cognition.learning.function.scalar.LinearFunction
```
All Implemented Interfaces:
Evaluator<Double,Double>, DifferentiableEvaluator<Double,Double,Double>, DifferentiableUnivariateScalarFunction, ScalarFunction<Double>, UnivariateScalarFunction, CloneableSerializable, Serializable, Cloneable

`public class LinearFunctionextends AbstractDifferentiableUnivariateScalarFunction`

This function acts as a simple linear function of the form f(x) = m*x + b. Here m is known as the slope and b as the offset. Other terms for m and b are scale/bias, beta_1/beta_0.

Since:
2.1
Author:
Justin Basilico, Kevin R. Dixon
Serialized Form

Field Summary
`static double` `DEFAULT_OFFSET`
The default offset is 0.0.
`static double` `DEFAULT_SLOPE`
The default slope is 1.0.
`protected  double` `offset`
The offset (b).
`protected  double` `slope`
The slope (m).

Constructor Summary
`LinearFunction()`
Creates a new `LinearFunction` with a slope of 1 and offset of 0.
```LinearFunction(double slope, double offset)```
Creates a new `LinearFunction` with the given slope and offset.
`LinearFunction(LinearFunction other)`
Creates a copy of a given `LinearFunction`.

Method Summary
` LinearFunction` `clone()`
This makes public the clone method on the `Object` class and removes the exception that it throws.
` double` `differentiate(double input)`
Differentiates the output of the function about the given input
` double` `evaluate(double input)`
Produces a double output for the given double input
` double` `getOffset()`
Gets the offset of the function, which is the b term in: f(x) = m*x + b.
` double` `getSlope()`
Gets the slope of the function, which is the m term in: f(x) = m*x + b.
` void` `setOffset(double offset)`
Sets the offset of the function, which is the b term in: f(x) = m*x + b.
` void` `setSlope(double slope)`
Sets the slope of the function, which is the m term in: f(x) = m*x + b.

Methods inherited from class gov.sandia.cognition.math.AbstractDifferentiableUnivariateScalarFunction
`differentiate`

Methods inherited from class gov.sandia.cognition.math.AbstractUnivariateScalarFunction
`evaluate, evaluateAsDouble`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface gov.sandia.cognition.math.ScalarFunction
`evaluateAsDouble`

Methods inherited from interface gov.sandia.cognition.evaluator.Evaluator
`evaluate`

Field Detail

### DEFAULT_SLOPE

`public static final double DEFAULT_SLOPE`
The default slope is 1.0.

Constant Field Values

### DEFAULT_OFFSET

`public static final double DEFAULT_OFFSET`
The default offset is 0.0.

Constant Field Values

### slope

`protected double slope`
The slope (m).

### offset

`protected double offset`
The offset (b).

Constructor Detail

### LinearFunction

`public LinearFunction()`
Creates a new `LinearFunction` with a slope of 1 and offset of 0. This makes f(x) = x.

### LinearFunction

```public LinearFunction(double slope,
double offset)```
Creates a new `LinearFunction` with the given slope and offset.

Parameters:
`slope` - The slope.
`offset` - The offset.

### LinearFunction

`public LinearFunction(LinearFunction other)`
Creates a copy of a given `LinearFunction`.

Parameters:
`other` - The LinearFunction to copy.
Method Detail

### clone

`public LinearFunction clone()`
Description copied from class: `AbstractCloneableSerializable`
This makes public the clone method on the `Object` class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call `super.clone()` to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in `ObjectUtil` may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use `super.clone()` as the basis for your implementation.

Specified by:
`clone` in interface `CloneableSerializable`
Overrides:
`clone` in class `AbstractCloneableSerializable`
Returns:
A clone of this object.

### evaluate

`public double evaluate(double input)`
Description copied from interface: `UnivariateScalarFunction`
Produces a double output for the given double input

Parameters:
`input` - Input to the Evaluator
Returns:
output at the given input

### differentiate

`public double differentiate(double input)`
Description copied from interface: `DifferentiableUnivariateScalarFunction`
Differentiates the output of the function about the given input

Parameters:
`input` - Input about which to compute the derivative of the function output
Returns:
Derivative of the output with respect to the input

### getSlope

`public double getSlope()`
Gets the slope of the function, which is the m term in: f(x) = m*x + b.

Returns:
The slope.

### setSlope

`public void setSlope(double slope)`
Sets the slope of the function, which is the m term in: f(x) = m*x + b.

Parameters:
`slope` - The slope.

### getOffset

`public double getOffset()`
Gets the offset of the function, which is the b term in: f(x) = m*x + b.

Returns:
The offset.

### setOffset

`public void setOffset(double offset)`
Sets the offset of the function, which is the b term in: f(x) = m*x + b.

Parameters:
`offset` - The offset.