public static float nextDown(final float start){
  if (start > Float.NEGATIVE_INFINITY) {
    if (start == 0.0f) {
      return -Float.MIN_VALUE;
    }
    final int bits=Float.floatToRawIntBits(start);
    return Float.intBitsToFloat(bits + (bits > 0 ? -1 : 1));
  }
 else   if (start == Float.NEGATIVE_INFINITY) {
    return Float.NEGATIVE_INFINITY;
  }
 else {
    return start;
  }
}

public static float nextDown ( final float start ) { if ( start > Float . NEGATIVE_INFINITY ) { if ( start == 0.0f ) { return - Float . MIN_VALUE ; } final int bits = Float . floatToRawIntBits ( start ) ; return Float . intBitsToFloat ( bits + ( bits > 0 ? - 1 : 1 ) ) ; } else if ( start == Float . NEGATIVE_INFINITY ) { return Float . NEGATIVE_INFINITY ; } else { return start ; } }
semantically equivalent to nextafter ( start , double . negative_infinity ) .
