@Test
 public void offset() {
   assertThat(func.evaluate(ORIGIN + OFFSET), is(1.0));
   assertThat(func.evaluate(ORIGIN + 0.5 * OFFSET), is(1.0));
   assertThat(func.evaluate(ORIGIN - OFFSET), is(1.0));
   assertThat(func.evaluate(ORIGIN - 0.5 * OFFSET), is(1.0));
 }
 @Test
 public void curve() {
   assertThat(func.evaluate(ORIGIN + OFFSET + 0.25 * SCALE), is(closeTo(0.95, 0.01)));
   assertThat(func.evaluate(ORIGIN + OFFSET + 0.5 * SCALE), is(closeTo(0.84, 0.01)));
   assertThat(func.evaluate(ORIGIN + OFFSET + 0.75 * SCALE), is(closeTo(0.67, 0.01)));
   assertThat(func.evaluate(ORIGIN + OFFSET + 1.25 * SCALE), is(closeTo(0.33, 0.01)));
   assertThat(func.evaluate(ORIGIN + OFFSET + 1.5 * SCALE), is(closeTo(0.21, 0.01)));
   assertThat(func.evaluate(ORIGIN + OFFSET + 1.75 * SCALE), is(closeTo(0.11, 0.01)));
 }
 @Test
 public void defaults() {
   final GaussDecayFunction func = new GaussDecayFunction(13, 2);
   assertThat(func.evaluate(11), is(DEFAULT_DECAY));
 }
 @Test
 public void outside() {
   assertThat(func.evaluate(ORIGIN + 2 * (OFFSET + SCALE)), is(closeTo(0.0, 0.01)));
   assertThat(func.evaluate(ORIGIN - 2 * (OFFSET + SCALE)), is(closeTo(0.0, 0.01)));
 }
 @Test
 public void scale() {
   assertThat(func.evaluate(ORIGIN + (OFFSET + SCALE)), is(DECAY));
   assertThat(func.evaluate(ORIGIN - (OFFSET + SCALE)), is(DECAY));
 }
 @Test
 public void origin() {
   assertThat(func.evaluate(ORIGIN), is(1.0));
 }