Practice Problem 2.35 (solution page 154)
You are given the assignment to develop code for a function tmult_ok that will determine whether two arguments can be multiplied without causing overflow. Here is your solution:
/* Determine whether arguments can be multiplied without overflow */
int tmult_ok(int x, int y) {
int p = x*y;
/* Either x is zero, or dividing p by x gives y */
return !x | | p/x == y;
}
You test this code for a number of values of x and y, and it seems to work properly. Your coworker challenges you, saying, “If I can’t use subtraction to test whether addition has overflowed (see Problem 2.31), then how can you use division to test whether multiplication has overflowed?”
Devise a mathematical justification of your approach, along the following lines. First, argue that the case x = 0 is handled correctly. Otherwise, consider w-bit numbers x (x ≠ 0), y, p, and q, where p is the result of performing two’s- complement multiplication on x and y, and q is the result of dividing up by x.
- 1. 1 Show that x · y, the integer product of x and y, can be written in the form x · y = p + t2w, where t ≠ 0 if and only if the computation of p overflows.
- 2. Show that p can be written in the form p = x · q + r, where |r| < |x|.
- 3. Show that q = y if and only if r = t = 0.
Want to see the full answer?
Check out a sample textbook solutionChapter 2 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
Additional Engineering Textbook Solutions
Digital Fundamentals (11th Edition)
Java: An Introduction to Problem Solving and Programming (8th Edition)
Starting Out with Programming Logic and Design (5th Edition) (What's New in Computer Science)
Concepts of Programming Languages (11th Edition)
Concepts Of Programming Languages
- Help me please :( Write a Python program where a non-intrinsic function solves for all the roots of a cubic polynomial given by the mathematical function ?(?)=??^3+??a^2+??+? where ?,?,? and ? are nonzero real numbers given by the user. Afterwards, the program will also solve for the sum and product of these roots. You must be able to create a function for getting the sum, and another for the product and use it in your main program. (HINT: Use Cardano’s formula).arrow_forwardC ( answer fast please) Q1. Write a MATLAB code to obtain the following. Keep your code commented whenever required. Copy your source code and outcomes from command widow also add screen shots of any figures in your solution (3.0) Create a function called ‘My_Calc’ that satisfies the following criteria:. For x <4, f(x)= x^3; For x ≥4 and x<8 f(x)= x^2; For x ≥8, f(x)= 8.x; Plot your results for values of x from -5 to 25. Choose your spacing to create a smooth curve.arrow_forward(c) Assuming function prototype is declared, identify and correct the errors for the following functions: (i) int sum( int x, int y ) { int result; result = x + y; cout<< x <<" + "<< y <<" is " << result; }arrow_forward
- (a) Assume that five generation units with third order cost function (F: (P) = A: P²³ + B; P; ² + C; P; +D;) are in the circuit. Write a computer program using any arbitrary programming language (MATLAB, C++, C#, Python,...) to calculate economic. load dispatch (ELD) using first order gradient method. Note that all parameters and variables should be defined inside the program (at first lines) such that units' characteristics and demand can be changed easily. Neglect grid losses.arrow_forwardProblem 7. [ 1 point ] A function named cube_volume has already been defined. It consumes a float value and returns a float value. Call the function cube_volume with an argument of 2.5 and assign the result to a variable named cube.arrow_forward(4) [8]Write code for a function multBy3divBy4, that for argument int x, computes 3*x/4, but follows the bit-level integer coding rules (text p.128) like in problem 3 of the assignment 1. (you may assume ints are 32 bits). (Note: The operation in your code 3*x is allowed to cause overflow.)arrow_forward
- QUESTION 2 Develop a C++ program to calculate integration of the non-linear equations You need to consider the following requirements: a. Lets f(x) = ax^2 +bx +c is a non-linear equation. Your program should be able to get input from user (any value of a, b and c) b. Find the integration of the equation. c. Ask the user to enter upper limit and lower limits. d. Calculate the area between the curve in question a) and the x-axis within the upper and lower limit. Find the x-intercept. If the x-intercept is in between the upper and lower limits, you have to consider positive and negative area as what you have learnt in the class. e. Display the output in question b, c, d.arrow_forwardProblem 11. (i) Consider the following arithmetic problem ab*c de + fg hi where a, b, c, d, e, f, g, h, i stand for a nonzero digit, i.e., they are elements of the set {1,2,3, 4, 5, 6, 7,8, 9}, * denotes multiplication and + addition. Each nonzero digit occurs only once in the problem. Is there a solution? If so, is the solution unique? (ii) Write a C++ program that finds a solution (if one exists).arrow_forwardsplir + 1).) 7. (Numerical) Heron's formula for the area, A, of a triangle with sides of length a, b, and cie A = vIsts - aXs - b(s - c)] where (a +b+c) Write, test, and execute a function that accepts the values of a, b, and c as parameters from a calling function, and then calculates the values of s and [s(s - a)(s - b)(s - c)]. If this quantity is positive, the function calculates A. If the quantity is negative, a, b, and c do not form a triangle, and the function should set A = -1. The value of A should be returned by the function.arrow_forward
- Question 2 Using the incomplete programming code given, complete the code using dynamic programming with memory function, to reproduce the results in the following Table 1. (C++) #include<iostream>using namespace std; // max knapsack capacity // *** WRITE YOUR CODE HERE ***// num of items // *** WRITE YOUR CODE HERE ***// weight of each item // *** WRITE YOUR CODE HERE ***// value of each item // *** WRITE YOUR CODE HERE ***// variable for dynamic programming matrix // *** WRITE YOUR CODE HERE *** //==========================================// Dynamic programming function: recursive// ========================================= // ALGORITHM F(i,j) // int value // if F[i,j] is not filled yet (-1): // (start with j = W, i = n) // if capacity j < current item's weight w[i]: // value = recall F(i-1, j) // else: // we can include current item,…arrow_forwardProblem 2 (5 pts) Write a Python program that plays the game Ro-Sham-Bo (a.k.a., Rock, Paper, Scissors) for a player and a computer opponent. The player selects one of the options listed in a console prompt, then the computer randomly selects an option as well. The winner of the game is determined as follows: Rock beats Scissors - Scissors beats Paper - Paper beats Rock The same selection results in a tie. Your program must do the following: Prompt the player to enter a selection in the console. Provide instructions to user on what is a valid input. For example, you can have the integers 1, 2, and 3 represent the selection, or use the words rock, paper, scissors, etc. Check that the user entered valid input. If the entry is invalid, the program needs to inform the user of the invalid input and can end, or re-prompt the user for their entry. Generate a random selection for the computer's choice. You can use a random integer and follow the same rules as was stated to the user. - Display…arrow_forward2. (a) In this problem consider Newton's method. Write a PYTHON function computing an approximation of the root p of the equation 0 using Newton's method. Specifically the code will compute the terms xn of the = f(x) sequence f(xn) f'(xn)' Xn+1 = Xn n = 0, 1, 2, ..., where xo is a given initial guess (or approximation) of the root p. For stopping criterion use the following: If |xn+1 − xn| ≤ TOL for the first time, then return xn+1 as approximation of the root p. Allow the code to do only NMAX iterations. At every step n, the code should print the values n, xn, f(xn) and n+1- xn. In case where the number of iterations reaches the maximum allowed number of iterations without satisfying the stopping criterion, then the code should print an error message, for example: "Failure: Algorithm fail to converge using only NMAX iterations".arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education