answersLogoWhite

0


Best Answer

IBM 1620, IBM 1401 and the Honeywell Liberator series, could manipulate numbers bound only by available storage, with an extra bit that delimited the value. Numbers can be stored in a fixed-point format, or in a floating-point format as a significand multiplied by an arbitrary exponent. However, since division almost immediately introduces infinitely repeating sequences of digits (such as 4/7 in decimal, or 1/10 in binary), should this possibility arise then either the representation would be truncated at some satisfactory size or else rational numbers would be used: a large integer for the numerator and for the denominator. But even with the greatest common divisor divided out, arithmetic with rational numbers can become unwieldy very quickly: 1/99 − 1/100 = 1/9900, and if 1/101 is then added, the result is 10001/999900. The size of arbitrary-precision numbers is limited in practice by the total storage available, the variables used to index the digit strings, and computation time. A 32-bit operating system may limit available storage to less than 4 GB. A programming language using 32-bit integers can only index 4 GB. If multiplication is done with a Θ {\displaystyle \Theta } (N2) algorithm, it would take on the order of 1012 steps to multiply two one-million-word numbers. Numerous algorithms have been developed to efficiently perform arithmetic operations on numbers stored with arbitrary precision. In particular, supposing that N digits are employed, algorithms have been designed to minimize the asymptotic complexity for large N. The simplest algorithms are for addition and subtraction, where one simply adds or subtracts the digits in sequence, carrying as necessary, which yields an O(N) algorithm (see big O notation). Comparison is also very simple. Compare the high-order digits (or machine words) until a difference is found. Comparing the rest of the digits/words is not necessary. The worst case is Θ {\displaystyle \Theta } (N), but usually it will go much faster. For multiplication, the most straightforward algorithms used for multiplying numbers by hand (as taught in primary school) require Θ {\displaystyle \Theta } (N2) operations, but multiplication algorithms that achieve O(N log(N) log(log(N))) complexity have been devised, such as the Schönhage–Strassen algorithm, based on fast Fourier transforms, and there are also algorithms with slightly worse complexity but with sometimes superior real-world performance for smaller N. The Karatsuba multiplication is such an algorithm. For division, see division algorithm. For a list of algorithms along with complexity estimates, see computational complexity of mathematical operations. For examples in x86 assembly, see external links. In some languages such as REXX, the precision of all calculations must be set before doing a calculation. Other languages, such as Python and Ruby extend the precision automatically to prevent overflow. The calculation of factorials can easily produce very large numbers. This is not a problem for their usage in many formulae (such as Taylor series) because they appear along with other terms, so that—given careful attention to the order of evaluation—intermediate calculation values are not troublesome. If approximate values of factorial numbers are desired, Stirling's approximation gives good results using floating-point arithmetic. The largest representable value for a fixed-size integer variable may be exceeded even for relatively small arguments as shown in the table below. Even floating-point numbers are soon outranged, so it may help to recast the calculations in terms of the logarithm of the number. But if exact values for large factorials are desired, then special software is required, as in the pseudocode that follows, which implements the classic algorithm to calculate 1, 1×2, 1×2×3, 1×2×3×4, etc. the successive factorial numbers. Constant Limit = 1000; % Sufficient digits. Constant Base = 10; % The base of the simulated arithmetic. Constant FactorialLimit = 365; % Target number to solve, 365! Array digit[1:Limit] of integer; % The big number. Integer carry,d; % Assistants during multiplication. Integer last,i; % Indices to the big number's digits. Array text[1:Limit] of character; % Scratchpad for the output. Constant tdigit[0:9] of character = ["0","1","2","3","4","5","6","7","8","9"]; BEGIN digit:=0; % Clear the whole array. digit[1]:=1; % The big number starts with 1, last:=1; % Its highest-order digit is number 1. for n:=1 to FactorialLimit do % Step through producing 1!, 2!, 3!, 4!, etc. carry:=0; % Start a multiply by n. for i:=1 to last do % Step along every digit. d:=digit[i]*n + carry; % The classic multiply. digit[i]:=d mod Base; % The low-order digit of the result. carry:=d div Base; % The carry to the next digit. next i; while carry > 0 % Store the carry in the big number. if last >= Limit then croak("Overflow!"); % If possible! last:=last + 1; % One more digit. digit[last]:=carry mod Base; % Placed. carry:=carry div Base; % The carry reduced. Wend % With n > Base, maybe > 1 digit extra. text:=" "; % Now prepare the output. for i:=1 to last do % Translate from binary to text. text[Limit - i + 1]:=tdigit[digit[i]]; % Reversing the order. next i; % Arabic numerals put the low order last. Print text," = ",n,"!"; % Print the result! next n; % On to the next factorial up. END; With the example in view, a number of details can be discussed. The most important is the choice of the representation of the big number. In this case, only integer values are required for digits, so an array of fixed-width integers is adequate. It is convenient to have successive elements of the array represent higher powers of the base. The second most important decision is in the choice of the base of arithmetic, here ten. There are many considerations. The scratchpad variable d must be able to hold the result of a single-digit multiply plus the carry from the prior digit's multiply. In base ten, a sixteen-bit integer is certainly adequate as it allows up to 32767. However, this example cheats, in that the value of n is not itself limited to a single digit. This has the consequence that the method will fail for n > 3200 or so. In a more general implementation, n would also use a multi-digit representation. A second consequence of the shortcut is that after the multi-digit multiply has been completed, the last value of carry may need to be carried into multiple higher-order digits, not just one. There is also the issue of printing the result in base ten, for human consideration. Because the base is already ten, the result could be shown simply by printing the successive digits of array digit, but they would appear with the highest-order digit last (so that 123 would appear as "321"). The whole array could be printed in reverse order, but that would present the number with leading zeroes ("00000...000123") which may not be appreciated, so this implementation builds the representation in a space-padded text variable and then prints that. The first few results (with spacing every fifth digit and annotation added here) are: This implementation could make more effective use of the computer's built in arithmetic. A simple escalation would be to use base 100 (with corresponding changes to the translation process for output), or, with sufficiently wide computer variables (such as 32-bit integers) we could use larger bases, such as 10,000. Working in a power-of-2 base closer to the computer's built-in integer operations offers advantages, although conversion to a decimal base for output becomes more difficult. On typical modern computers, additions and multiplications take constant time independent of the values of the operands (so long as the operands fit in single machine words), so there are large gains in packing as much of a bignumber as possible into each element of the digit array. The computer may also offer facilities for splitting a product into a digit and carry without requiring the two operations of mod and div as in the example, and nearly all arithmetic units provide a carry flag which can be exploited in multiple-precision addition and subtraction. This sort of detail is the grist of machine-code programmers, and a suitable assembly-language bignumber routine can run much faster than the result of the compilation of a high-level language, which does not provide access to such facilities. For a single-digit multiply the working variables must be able to hold the value (base-1)2 + carry, where the maximum value of the carry is (base-1). Similarly, the variables used to index the digit array are themselves limited in width. A simple way to extend the indices would be to deal with the bignumber's digits in blocks of some convenient size so that the addressing would be via (block i, digit j) where i and j would be small integers, or, one could escalate to employing bignumber techniques for the indexing variables. Ultimately, machine storage capacity and execution time impose limits on the problem size. IBM's first business computer, the IBM 702 (a vacuum-tube machine) of the mid-1950s, implemented integer arithmetic entirely in hardware on digit strings of any length from 1 to 511 digits. The earliest widespread software implementation of arbitrary-precision arithmetic was probably that in Maclisp. Later, around 1980

User Avatar

Margaretta Emmerich

Lvl 10
3y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Arrange the tiles according to their usage starting with the earliest first?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Related questions

In dealing with raw materials bags how can you arrange it according to first in-first out?

Date them on receipt


Mendeleev was the first to arrange elements according to their properties in a?

Mendeleev arranged the elements according to their atomic weight and valence.


Who was the earliest recorded emperor of Japan?

According to tradition, Jimmu was the first Emperor of Japan.


To arrange the order of data by date is to?

sort the data chronologically based on the date field, with the earliest date appearing first and the latest date appearing last.


Who arrange the element of the periodic table according to the increase of atomic number?

according to the chronicles Mendelleff first arranged the elements in increasing atomic number


According to the United States Department of Labor (DOL), what is the first thing a person should do when looking for a job?

arrange for a friend to go with


How do you arrange your ideas in a logical sequence?

1.introduction 2.topic 3causes 4.effect 5.advantages and disadvantages 6.important 7.solution 8.conclusion. 666


What is the synonym word for earliest?

first


In what order did Mendeleev arrange the elements in the first periodic table?

Mendeleev arranged the elements in the periodic table according to their atomic masses.


Is earliest a verb?

No, earliest is an adjective. "The earliest record of bread-making is from ..."Earliest is a word used to describe something that came in first. with analysis, it describes so it is an adjective not a verb..


Who discovered the bones of the first earliest known humans?

The earliest bones were discovered in Kenya by Leaky


The first person to arrange elements in a table?

Dmitri Mendeleev