19 package ca.uqac.lif.synthia.random;
82 public static class AffineTransformInteger
extends AffineTransform<Integer>
98 return (
int) super.pickFloat();
102 public AffineTransformInteger
duplicate(
boolean with_state)
110 @SuppressWarnings(
"unchecked")
112 public AffineTransformInteger
shrink(Integer o, Picker<Float> decision,
float magnitude)
114 if (!(
m_picker instanceof Shrinkable))
116 throw new CannotShrinkException(
m_picker);
118 int source_value = (int) Math.floor((o -
m_b) /
m_m);
119 return new AffineTransformInteger(((Shrinkable<Integer>)
m_picker).
shrink(source_value, decision, 1),
m_m,
m_b);
123 public Shrinkable<Integer>
shrink(Integer o)
125 return shrink(o, RandomFloat.instance, 1);
132 public static class AffineTransformFloat
extends AffineTransform<Float>
140 public AffineTransformFloat( Picker<? extends Float> picker, Number m, Number b)
152 public AffineTransformFloat
duplicate(
boolean with_state)
157 @SuppressWarnings(
"unchecked")
159 public AffineTransformFloat
shrink(Float o, Picker<Float> decision,
float magnitude)
161 if (!(
m_picker instanceof Shrinkable))
163 throw new CannotShrinkException(
m_picker);
165 float source_value = (o -
m_b) /
m_m;
166 return new AffineTransformFloat(((Shrinkable<Float>)
m_picker).
shrink(source_value, decision, 1),
m_m,
m_b);
170 public Shrinkable<Float>
shrink(Float o)
172 return shrink(o, RandomFloat.instance, 1);