< prev index next >

src/java.base/share/classes/java/lang/StrictMath.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 65,80 **** * produce correct results, which in some cases means the operations * will not overflow the range of values of the computation. * The best practice is to choose the primitive type and algorithm to avoid * overflow. In cases where the size is {@code int} or {@code long} and * overflow errors need to be detected, the methods {@code addExact}, ! * {@code subtractExact}, {@code multiplyExact}, and {@code toIntExact} * throw an {@code ArithmeticException} when the results overflow. ! * For other arithmetic operations such as divide, absolute value, ! * increment by one, decrement by one, and negation overflow occurs only with ! * a specific minimum or maximum value and should be checked against ! * the minimum or maximum as appropriate. * * @author unascribed * @author Joseph D. Darcy * @since 1.3 */ --- 65,80 ---- * produce correct results, which in some cases means the operations * will not overflow the range of values of the computation. * The best practice is to choose the primitive type and algorithm to avoid * overflow. In cases where the size is {@code int} or {@code long} and * overflow errors need to be detected, the methods {@code addExact}, ! * {@code subtractExact}, {@code multiplyExact}, {@code toIntExact}, ! * {@code incrementExact}, {@code decrementExact} and {@code negateExact} * throw an {@code ArithmeticException} when the results overflow. ! * For the arithmetic operations divide and absolute value, overflow ! * occurs only with a specific minimum or maximum value and ! * should be checked against the minimum or maximum as appropriate. * * @author unascribed * @author Joseph D. Darcy * @since 1.3 */
*** 833,842 **** --- 833,920 ---- public static long multiplyExact(long x, long y) { return Math.multiplyExact(x, y); } /** + * Returns the argument incremented by one, throwing an exception if the + * result overflows an {@code int}. + * + * @param a the value to increment + * @return the result + * @throws ArithmeticException if the result overflows an int + * @since 1.8 + */ + public static int incrementExact(int a) { + return Math.incrementExact(a); + } + + /** + * Returns the argument incremented by one, throwing an exception if the + * result overflows a {@code long}. + * + * @param a the value to increment + * @return the result + * @throws ArithmeticException if the result overflows a long + * @since 1.8 + */ + public static long incrementExact(long a) { + return Math.incrementExact(a); + } + + /** + * Returns the argument decremented by one, throwing an exception if the + * result overflows an {@code int}. + * + * @param a the value to decrement + * @return the result + * @throws ArithmeticException if the result overflows an int + * @since 1.8 + */ + public static int decrementExact(int a) { + return Math.decrementExact(a); + } + + /** + * Returns the argument decremented by one, throwing an exception if the + * result overflows a {@code long}. + * + * @param a the value to decrement + * @return the result + * @throws ArithmeticException if the result overflows a long + * @since 1.8 + */ + public static long decrementExact(long a) { + return Math.decrementExact(a); + } + + /** + * Returns the negation of the argument, throwing an exception if the + * result overflows an {@code int}. + * + * @param a the value to negate + * @return the result + * @throws ArithmeticException if the result overflows an int + * @since 1.8 + */ + public static int negateExact(int a) { + return Math.negateExact(a); + } + + /** + * Returns the negation of the argument, throwing an exception if the + * result overflows a {@code long}. + * + * @param a the value to negate + * @return the result + * @throws ArithmeticException if the result overflows a long + * @since 1.8 + */ + public static long negateExact(long a) { + return Math.negateExact(a); + } + + /** * Returns the value of the {@code long} argument; * throwing an exception if the value overflows an {@code int}. * * @param value the long value * @return the argument as an int
< prev index next >