import static Helpers320.UtilsIan.*; class StackDiagram { public static void main( String... argv ) { testAll(); System.out.printf("This program verifies whether 5 to the 300th power is bigger than 0.\n"); int x = 5; int y = 300; String report = "Yes!"; boolean overflow; if (power(x,y) >= 0) { System.out.printf("%s\n",report); overflow = false; } else { System.out.printf( "It's not! Hmmm; overflow?\n" ); overflow = true; } System.exit(overflow ? 1 : 0); // indicate an error, to the shell / caller. } // Return a^b. // static int power(int a, int b) { int product = 1; while (b!=0) { product = multiply(product, a); b--; } return product; } // Return x*y. // static int multiply(int x, int y) { return x*y; } static void testAll() { assertAssertionsEnabled(); testMultiply(); testPower(); } static void testMultiply() { System.out.printf("testMultiply: "); assertEquals( multiply(0,0), 0); assertEquals( multiply(0,3), 0); assertEquals( multiply(3,0), 0); assertEquals( multiply(1,1), 1); assertEquals( multiply(1,3), 3); assertEquals( multiply(3,1), 3); assertEquals( multiply(3,2), 6 ); assertEquals( multiply(3,-2), -6 ); assertEquals( multiply(-3,2), -6 ); assertEquals( multiply(-3,-2), 6 ); assertEquals( multiply(200,75), 15000 ); System.out.printf("done\n"); } static void testPower() { System.out.printf("testPower: "); //assertEquals( power(0,0), 1 ); assertEquals( power(0,1), 0 ); assertEquals( power(1,0), 1 ); assertEquals( power(0,3), 0 ); assertEquals( power(3,0), 1 ); assertEquals( power(1,1), 1 ); assertEquals( power(1,3), 1 ); assertEquals( power(3,1), 3 ); assertEquals( power( 3,2), 9 ); assertEquals( power( 3,3), 27 ); assertEquals( power(-3,2), 9 ); assertEquals( power(-3,3), -27 ); assertEquals( power(2,10), 1024 ); assertEquals( power(10,9), 1000000000 ); System.out.printf("done\n"); } } /** * @author ibarland * @version 2025-Jan-20 * * @license CC-BY -- share/adapt this file freely, but include attribution, thx. * https://creativecommons.org/licenses/by/4.0/ * https://creativecommons.org/licenses/by/4.0/legalcode * Including a link to the *original* file satisifies "appropriate attribution". */