/** * Sum * Provides overflow protection. * @param values values in int * @return sum */ public static double bigSum( float[] values, int length ) { return bigSum(values, 0, length); }
/** * Add a new value to the list but don't employ a wrapper. * * @param value new value * @return was able to add. */ public boolean addFloat(float value) { if (end + 1 >= values.length) { values = grow(values); } values[end] = value; end++; return true; }
@Override public int hashCode() { int result = 1; result = 31 * result + (values != null ? Flt.hashCode(0, end, values) : 0); result = 31 * result + end; return result; }
@Universal public static float[] insert( final float[] array, final int idx, final float v ) { if ( idx >= array.length ) { return add( array, v ); } final int index = calculateIndex( array, idx ); //Object newArray = Array.newInstance(array.getClass().getComponentType(), array.length+1); float[] newArray = new float[ array.length + 1 ]; if ( index != 0 ) { /* Copy up to the length in the array before the index. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, 0, newArray, 0, index ); } boolean lastIndex = index == array.length - 1; int remainingIndex = array.length - index; if ( lastIndex ) { /* Copy the area after the insert. Make sure we don't write over the end. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } else { /* Copy the area after the insert. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } newArray[ index ] = v; return newArray; }
@Universal public static float atIndex( final float[] array, final int index ) { return idx(array, index); }
@Universal public static float[] slc( float[] array, int startIndex, int endIndex ) { final int start = calculateIndex( array, startIndex ); final int end = calculateEndIndex( array, endIndex ); final int newLength = end - start; if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, end index %d, length %d", startIndex, endIndex, array.length ) ); } float[] newArray = new float[ newLength ]; System.arraycopy( array, start, newArray, 0, newLength ); return newArray; }
/** * max * * @return max */ public float max() { return Flt.max(values, end); }
@Universal public static float idx( final float[] array, final int index ) { final int i = calculateIndex( array, index ); return array[ i ]; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FloatList values = (FloatList) o; if (end != values.end) return false; if (!Flt.equals(0, end, this.values, values.values)) return false; return true; }
@Universal public static int lengthOf( float[] array ) { return len(array); }
@Universal public static float[] slcEnd( float[] array, int endIndex ) { final int end = calculateEndIndex( array, endIndex ); final int newLength = end; // + (endIndex < 0 ? 1 : 0); if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, length %d", endIndex, array.length ) ); } float[] newArray = new float[ newLength ]; System.arraycopy( array, 0, newArray, 0, newLength ); return newArray; }
@Universal public static float[] insert( final float[] array, final int idx, final float v ) { if ( idx >= array.length ) { return add( array, v ); } final int index = calculateIndex( array, idx ); //Object newArray = Array.newInstance(array.getClass().getComponentType(), array.length+1); float[] newArray = new float[ array.length + 1 ]; if ( index != 0 ) { /* Copy up to the length in the array before the index. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, 0, newArray, 0, index ); } boolean lastIndex = index == array.length - 1; int remainingIndex = array.length - index; if ( lastIndex ) { /* Copy the area after the insert. Make sure we don't write over the end. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } else { /* Copy the area after the insert. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } newArray[ index ] = v; return newArray; }
@Universal public static void atIndex( final float[] array, int index, float value ) { idx (array, index, value); }
@Universal public static float[] slc( float[] array, int startIndex, int endIndex ) { final int start = calculateIndex( array, startIndex ); final int end = calculateEndIndex( array, endIndex ); final int newLength = end - start; if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, end index %d, length %d", startIndex, endIndex, array.length ) ); } float[] newArray = new float[ newLength ]; System.arraycopy( array, start, newArray, 0, newLength ); return newArray; }
/** * max * @param values values in int * @return max */ public static float max( float[] values, int length ) { return max(values, 0, length); }
@Universal public static void idx( final float[] array, int index, float value ) { final int i = calculateIndex( array, index ); array[ i ] = value; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FloatList values = (FloatList) o; if (end != values.end) return false; if (!Flt.equals(0, end, this.values, values.values)) return false; return true; }
@Universal public static int lengthOf( float[] array ) { return len(array); }
@Universal public static float[] slcEnd( float[] array, int endIndex ) { final int end = calculateEndIndex( array, endIndex ); final int newLength = end; // + (endIndex < 0 ? 1 : 0); if ( newLength < 0 ) { throw new ArrayIndexOutOfBoundsException( String.format( "start index %d, length %d", endIndex, array.length ) ); } float[] newArray = new float[ newLength ]; System.arraycopy( array, 0, newArray, 0, newLength ); return newArray; }
@Universal public static float[] insert( final float[] array, final int idx, final float v ) { if ( idx >= array.length ) { return add( array, v ); } final int index = calculateIndex( array, idx ); //Object newArray = Array.newInstance(array.getClass().getComponentType(), array.length+1); float[] newArray = new float[ array.length + 1 ]; if ( index != 0 ) { /* Copy up to the length in the array before the index. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, 0, newArray, 0, index ); } boolean lastIndex = index == array.length - 1; int remainingIndex = array.length - index; if ( lastIndex ) { /* Copy the area after the insert. Make sure we don't write over the end. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } else { /* Copy the area after the insert. */ /* src sbegin dst dbegin length of copy */ System.arraycopy( array, index, newArray, index + 1, remainingIndex ); } newArray[ index ] = v; return newArray; }