WO2006065251A2 - Binary digit multiplications and applications - Google Patents

Binary digit multiplications and applications Download PDF

Info

Publication number
WO2006065251A2
WO2006065251A2 PCT/US2004/042782 US2004042782W WO2006065251A2 WO 2006065251 A2 WO2006065251 A2 WO 2006065251A2 US 2004042782 W US2004042782 W US 2004042782W WO 2006065251 A2 WO2006065251 A2 WO 2006065251A2
Authority
WO
WIPO (PCT)
Prior art keywords
bit
value
blocks
evaluating
block
Prior art date
Application number
PCT/US2004/042782
Other languages
French (fr)
Other versions
WO2006065251A3 (en
Inventor
Te Chiang Hu
Original Assignee
The Regents Of The University Of California
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by The Regents Of The University Of California filed Critical The Regents Of The University Of California
Priority to PCT/US2004/042782 priority Critical patent/WO2006065251A2/en
Publication of WO2006065251A2 publication Critical patent/WO2006065251A2/en
Publication of WO2006065251A3 publication Critical patent/WO2006065251A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Definitions

  • Figure 1 illustrates how this may be done by a computer.
  • the second 1101I 2 is added to the first version.
  • row 100 is for the lowest significance digit
  • row 102 is for the next highest significance digit.
  • the third highest significance digit, for row 104 is a 0, thereby forming a row of zeros.
  • rows 106 and 108 are formed.
  • Embodiments describe finding blocks of ones in a multiplied result, and evaluating the blocks individually.
  • Another embodiment represents the blocks of l's by reduced symbols. Another embodiment describes calculating the value of the block from most significant bits first, and lesser significance bits after the more significant bits.
  • two numbers to be multiplied are input into a computing device.
  • the sequences of consecutive same value bits are identified.
  • Blocks of l's are identified, and the partial contribution from these blocks of l's are calculated.
  • the partial contributions are accumulated until the ends of the block is reached.
  • figure 1 illustrates a prior art method of multiplying
  • figure 2a illustrates a zero-one memory table which may be weighted according to a technique of multiplication
  • figure 2b illustrates hardware which may be used according to this system
  • figure 3 illustrates the weighting of the table in figure 2A
  • figure 4a and 4b show how a block of ones can be represented by a reduced symbol representation
  • figure 5 illustrates another way in which a block of l's can be illustrated by a reduced representation
  • figures ⁇ a and 6b illustrate an embodiment in which the multiplication can be divided and assigned to multiple different processors
  • figures 7 and 8 illustrate how this divided multiplication can be represented as a reduced multiplication
  • figures 9a-9d illustrate dividing the multiplying into different blocks
  • figures 10a and 10b show the weighting of these blocks
  • figures lla-llc show the reduced symbol technique
  • figure 12 illustrates finding transitions in the multiplied values between l's and O's
  • figure 13 shows how this
  • Figure 14 flowcharts how this system can be used for division bounding.
  • FIG. 2A shows an example of a zero-one memory table which may be used for the calculation of the values.
  • This memory table may be formed in a memory 250 within the structure of figure 2B.
  • Processor 252 receives input which may include data, on bus 254. The results may also be output on bus 254.
  • the embodiment of figure 2B may be used as part of any of the other embodiments described throughout this application.
  • This system may be used in any computing system, including an optical computer.
  • This multiplication system is illustrated as a rectangular array. While the embodiments show a square array, it should be understood that in general a rectangular array may be used, or a multiple dimensional array.
  • Figure 2A shows the array being used to multiply 011011 by 011011.
  • Values along the horizontal axis are referred to as X values, as conventional for the horizontal axis.
  • the value X refers to a complete sequence of bits, with X n referring to the individual bits, of bit value n.
  • the value of X 0 represents the value of the least significant bit of x.
  • values along the vertical axis are referred to using Y values, with y 0 - ys respectively representing least significant to most significant bits.
  • a leading (most significant) 0 may be used during the multiplication as shown.
  • each area of intersection between individual bits is weighted according to the multiplication value of those individual bits.
  • Figure 2A illustrates how "0" bits value cause an entire row or an entire column to correspondingly become 0.
  • the patterns of O's and l's forms rectangular blocks of "1" bits.
  • Another embodiment uses a special position encoding system to simplify each block of l's of any size to four or fewer symbols within the array.
  • a block of l's such as shown in figure 4A is positionally encoded into four symbols representing that block of Is, as shown in figure 4B. This is referred to herein as a 4 symbol, or MS," representation.
  • the rules encoding the block of bits with value "1" into a four symbol or "4S" block as in figure 4B are as follows.
  • the northeast bit of the block of l's is shown as 400 in figure 4A. This remains in the same position in the 4S encoded block of figure 4B, shown as bit 450 in figure 4B.
  • the Southeast bit 402 is positionally encoded one bit south of the bit position 402, and changed to a (-1) shown as 452 in figure 4B.
  • the Southwest bit 404 is positionally encoded into a corresponding 1 bit at position 454, shifted diagonally one bit down and to the left.
  • the Northwest bit 406 is positionally encoded as (-1) bit 456, which is shifted one bit to the left.
  • Figure 4A has the following bit positions, shown in table 2.
  • Figure 4B has the positions shown in table 3.
  • a 4S representation allows this block to be represented as four symbols or two symbols (or 1 symbol for 1 bit) to represent its value. Note also that all of these values are powers of 2, and are relatively easy to add and subtract.
  • FIG. 5 An alternative simplification to the figure 4S simplification of figures 4A/4B is shown in figure 5.
  • Figure 5 simplifies each block of Is into 2 coordinates defining the two edges of the blocks of l's.
  • the block 500 of Is can be simplified according to its two coordinates, (11, 6) representing the edge 502, and (6,3) representing the edge 504. These two values unambiguously define the corners of the blocks of Is.
  • these two sets of coordinates can be used according to the rule above, to define the 4S symbols 450-456 that can be used to evaluate the value of the block.
  • the coordinates 11,6 and 6,3 can be similarly translated into the four symbols 450-456 in figure 4B.
  • FIG. 5 These coordinates shown in figure 5 can be obtained directly from reading the two input sequences of multiplier and multiplicant.
  • the multiplier and multiplicant are evaluated to find the leading zero and ending zero of each run of consecutive Os.
  • figure 5 has a sequences of Os as Rl R2; R5 R6 in the multiplier and Cl, C3, C6, C7 in the multiplicant.
  • the coordinates of the cells can be determined from these values .
  • Another embodiment describes ordering all blocks of Is from highest significance to lowest significance and calculating the block values as soon as the parts are read that are responsible for the formation of the block. For example, the most significant bits of the multiplier and multiplicant can be read first. This allows obtaining the most significant bit of the final product value before reading or evaluating less significant digits of the multiplier and multiplicant.
  • FIG. 6A Another embodiment describes how a larger multiplication can be assigned to multiple separate processing implementers, each of which evaluates a smaller part of the multiplication.
  • the processing implementers may be separate processors, separate processor cores, separate threads within a multithreaded system, or separate processes within any kind of pipelined or parallel system.
  • FIG. 6A An embodiment is illustrated in figure 6A, of multiplying the value 011011110001 by 011011100111.
  • the values are assigned to the x and y axes of a rectangular memory block as in the figure 2A/2B embodiment.
  • the intersection between bits of value 1 forms blocks of l's in the product.
  • Figure 6A shows nine contiguous blocks of l's.
  • Processor 1 computes
  • Figures 9A-9D respectively show the separated Northeast, Northwest, Southeast and Southwest blocks. Each block is separately evaluated by a separate processor.
  • Figures 1OA and 1OB illustrate how the blocks of l's can be separately evaluated. The values of the l's within the block are evaluated according to the weighting factors shown in figure 1OA and summed. The product value of the Northeast block is thus
  • each or any of the blocks can be evaluated using the four symbol rule.
  • Figure 7 shows the figure 6 block converted to 4S representation.
  • Figure HA shows the northeast block, and figure HB shows how that northeast block can be converted using the four symbol rule into nine symbols. Those nine symbols are evaluated as shown in figure HC, which evaluates to
  • each of the binary sequences to be multiplied is read to determine consecutive intervals of l's and/or O's.
  • This sequence is analyzed to determine that there are four consecutive sequences of l's, the first sequence of length 2, the second and third sequence, each of length 1, and the fourth sequence of length 3. This analysis indicates that the heights of the blocks are 2, 1, 1,3, independent of the X sequence.
  • Figure 12 shows a table of the positions of bits being read at the different times. At times 1, bits yu, yio, y 9 are read. Each occurrence of "01" indicates that a row of l's is starting. Hence at time 1, a one block is signaled is starting at position yio- Each occurrence of "10" indicates that a run of l's is ending. Therefore, the marks of start and end of l's can be automatically determined. [00049] This determination can also be done by a divided technique, for example when assigned to four or some different number of processors. If four processors are used, each read a sequence of N/4 bits.
  • the sizes of the x and y extents of the blocks of l's are determined, and used to convert to continuous blocks of l's.
  • the four symbol rule can be used to convert each block of l's to four symbols as above.
  • This rule defines which of the symbols are Is and which are -Is, and hence can be used to avoid storing -l's. This rule can easily be computer implemented.
  • FIG. 13 shows a more detailed flowchart, having additional implementation details.
  • the starting positions of Is is the index of Is and the ending position of Is is the index of I 7 .
  • This technique can be used to determine the heights of all 1 blocks at 1305, without reading the x sequence.
  • all of the 1 blocks in the bottom four rows will be of height 2 in Figure 5.
  • the X sequence is read. Analogously to the above, this is done to find the consecutive Is starts and ends, in the same way as done for the Y values. This finds the widths of all the blocks at 1315. Here, so the marked positions are
  • the y sequence is analyzed to find heights
  • the x sequence is analyzed to find widths, thereby finding the information from which the table of figure 6A could be created.
  • the "four symbol rule” may be used to find the outer symbols representing the blocks of l's.
  • the 4S rule allows blocks of any size, that is arbitrary n and arbitrary m, to have its value represented by four or fewer symbols, two +ls, and two -Is.
  • Another embodiment describes multiplication of 3 or more dimensions, e.g., 4 dimensions, 5 dimensions or more, at once.
  • a multidimensional array like the ones described in Figures 2a and 3 is formed and used to find the three dimensional blocks of l's, analogously to the above embodiments that find 2 dimensional blocks of Is.
  • the four symbol rule is generalized to an eight symbol rule formed as the product of three sequences, x, y and z. This enables repeated multiplications through a cubic structure as follows.
  • P (3) (2"-l)*(2"-l)*(2"-l)
  • One application of this system is for factoring a large binary sequence X into its prime factors.
  • the binary sequence X is called the public-key, which is the product of two other large prime numbers D and Q. Both D and Q are unknown.
  • a faster multiplying system such as that described in the first through seventh embodiments, could increase the speed of decoding. However, this could still take a very long time. The long computation time protects the intended receiver who has the secret key as well as the public-key.
  • division e.g., for decoding an encrypted value, is carried out by bounding the values.
  • the value X is assumed to have n bits and the value D is assumed to have m bits. Both are powers of 2. Therefore, Q has (n-m+1) bits. This is also a power of 2. [00073]
  • X which is known, is bounded at 1405, between a value that is one power of 2 less, and one power of 2 more, than X. Therefore, in the example, X is bounded as 256 ⁇ 437 ⁇ 512. Analogously, D is bounded between 16 and 32, and Q is bounded between 8 and 32. [00076] Expressing this in binary,
  • any given binary number can be easily bounded by a binary number of length one greater than the other binary number.
  • the binary value is bounded as (at 1405) (100 000 000) ⁇ (110 110 101) ⁇ (1000 000 000)
  • the public-key is first increased and then D is increased.
  • a value of the divisor is postulated as 16io which is the lower estimate of the true value 23io.
  • the quotient is postulated as Q. equals (32) io which is an overestimate of the true value (19) i 0 . [00079] This estimate is easily done because all of the numbers are powers of two.
  • the value of the public-key can be reduced to 100 000 000.
  • a value of the divisor is then guessed as 32 which is an overestimate of the true value 23. This provides a quotient value of 8 which underestimates the true value 19.
  • the value of the public-key is increased to be a power of 2 which is one power of two larger than its actual value.
  • a value of the divisor D is then postulated which is a lower estimate of the true value of D.
  • This provides an overestimate of the true value of Q, shown in 1415 as Qupperbound- Analogously, at 1420, the value of the public-key is decreased by a power of two, D is increased by a power of 2, to determine an overestimate of the true value of D.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

A multiplying system for binary digits. The digits are multiplied in a rectangular memory array, where the digits are placed along the edges, and intersections between 1’s form blocks of 1’s in the memory array. The blocks of 1’s are evaluated based on a weighting assigned to positions within the memory, either directly, or by reducing each block to a reduced block representation. The system can be used for multiplications, partial multiplications, and divisions, as well as applications thereof.

Description

BINARY DIGIT MULTIPLICATIONS AND APPLICATIONS
Background
[0001] Computer implemented multipliers are crucial in modern computer systems. Many different applications, including, but not limited to, linear programming, digit multiplication, vector graphics and others, use computer implemented multipliers.
[0002] One conventional way of doing multiplication in computers has been based on the conventional, paper-and-pencil technique known as repeated addition. Consider the example of (27)10 * (27)io = (729)io.
[0003] Figure 1 illustrates how this may be done by a computer. First the computer takes the binary version of 27 = IIOII2. Then, the second 1101I2 is added to the first version. For the each of the five digits of the second 1101I2, a row is formed; row 100 is for the lowest significance digit, and row 102 is for the next highest significance digit. The third highest significance digit, for row 104, is a 0, thereby forming a row of zeros. Similarly, rows 106 and 108 are formed.
[0004] All of the rows are added together to form the final value 101101100I2 = 72910.
[0005] Note that when digits are multiplied in this way, 2n2 units of memory storage are required. In addition, there are nine columns to be added, and hence the total addition may include as many as eight carry bits. [0006] The above describes one technique of multiplication on a computer, and it should be understood that there are other such techniques. While the above describes that the amount of storage that is needed grows quadratically with the number of bits, other techniques may scale more or less than this. [0007] In addition, various ways have been used to improve the speed of operation of such a system, and also to minimize the amount of memory storage needed to multiply in this way. Computer hardware and software may operate using bit-shift, look ahead, parallel read, pipeline, table lookup, and other techniques. Booth encoding, 2's compliment representation of signed binary numbers, the composition or partitioning of the number into parts, binary trees, and other similar techniques to improve and increase the speed of this multiplication and to reduce the complexity of the multiplication process.
Summary
[0008] A new technique of multiplying, which determines information related to blocks of the l's in the numbers being multiplied, is disclosed.
[0009] Embodiments describe finding blocks of ones in a multiplied result, and evaluating the blocks individually.
[00010] Another embodiment represents the blocks of l's by reduced symbols. Another embodiment describes calculating the value of the block from most significant bits first, and lesser significance bits after the more significant bits.
[00011] In an embodiment, two numbers to be multiplied are input into a computing device. The sequences of consecutive same value bits are identified. Blocks of l's are identified, and the partial contribution from these blocks of l's are calculated. The partial contributions are accumulated until the ends of the block is reached.
[00012] One aspect attempts to ignore locations where the Os are multiplied in recognition of 0 * (0 or I)=O.
Brief Description of the Drawings
These and other aspects will now be described in detail with reference to the accompanying drawings, wherein: figure 1 illustrates a prior art method of multiplying; figure 2a illustrates a zero-one memory table which may be weighted according to a technique of multiplication; figure 2b illustrates hardware which may be used according to this system; figure 3 illustrates the weighting of the table in figure 2A; figure 4a and 4b show how a block of ones can be represented by a reduced symbol representation; figure 5 illustrates another way in which a block of l's can be illustrated by a reduced representation; figures βa and 6b illustrate an embodiment in which the multiplication can be divided and assigned to multiple different processors; figures 7 and 8 illustrate how this divided multiplication can be represented as a reduced multiplication; figures 9a-9d illustrate dividing the multiplying into different blocks; figures 10a and 10b show the weighting of these blocks; figures lla-llc show the reduced symbol technique; figure 12 illustrates finding transitions in the multiplied values between l's and O's; figure 13 shows how this can be carried out on a program computer; and
Figure 14 flowcharts how this system can be used for division bounding.
Detailed Description
[00013] A two-dimensional multiplication system is described as a first embodiment with reference to figures 2A and 2B. Figure 2A shows an example of a zero-one memory table which may be used for the calculation of the values. This memory table may be formed in a memory 250 within the structure of figure 2B. Processor 252 receives input which may include data, on bus 254. The results may also be output on bus 254. The embodiment of figure 2B may be used as part of any of the other embodiments described throughout this application. This system may be used in any computing system, including an optical computer.
[00014] This multiplication system is illustrated as a rectangular array. While the embodiments show a square array, it should be understood that in general a rectangular array may be used, or a multiple dimensional array.
[00015] Figure 2A shows the array being used to multiply 011011 by 011011. Values along the horizontal axis are referred to as X values, as conventional for the horizontal axis. The value X refers to a complete sequence of bits, with Xn referring to the individual bits, of bit value n. In the embodiment, the value of X0 represents the value of the least significant bit of x. Analogously, values along the vertical axis are referred to using Y values, with y0 - ys respectively representing least significant to most significant bits. A leading (most significant) 0 may be used during the multiplication as shown. In the embodiment, each area of intersection between individual bits, is weighted according to the multiplication value of those individual bits. [00016] Figure 2A illustrates how "0" bits value cause an entire row or an entire column to correspondingly become 0. For example, y2=0 renders the bits in the third row all equal to 0. The patterns of O's and l's forms rectangular blocks of "1" bits.
[00017] Multiplying in this way, where areas of intersections between l's in the binary values area accumulated and evaluated, requires special weighting for the positions of the array. The values of the weighting are illustrated in figure 3. Each position in the array is weighted according to the weighting factor 21, where 21=0 is the northeast corner of the square array (bit position 300) , and i linearly increases along each linear direction of the array.
[00018] The bit in the upper right hand corner is weighted by 2°, and the bit in the lower left corner in Figure 3 is weighted by 210. In any column or row, the values of the bits increase linearly from right to left and from top to bottom. Each bit along any left-to-right, top-to-bottom diagonal is weighted the same as shown in Figure 3. Figure 3 also shows the convention used to describe the positions, where the upper right corner is called the "northeast" or NE corner or direction; top left is NW, bottom left is SW, and bottom right is SE.
[00019] Using this weighting system, if each "1" bit in figure 2 is multiplied by the corresponding weighting factor in figure 3, then:
+ 25 * 24 * 0 ♦ ZZ * Z1
0 * 0 * 0 * 0 + 0 C* 29) 10
4- 27 * Z6 4 0 f 24 4 23 Table 1
+' 28 + 27 ♦ 0 » 2δ 4 2 demonstrating that this weighting is correct.
[00020] In this table format, the product of any two numbers with Os in the multiplier will correspond to a row of Os. The product of any two numbers with Os in the multiplicant will correspond to a column of Os in the product, [00021] The figure 2A technique can be used to multiply binary numbers. Important features of this system include that the more significant bits can be calculated prior to the least significant bits, facilitating an initial analysis or estimate. Also, different parts or blocks of the multiplication can be separately handled. Second Embodiment
[00022] Another embodiment uses a special position encoding system to simplify each block of l's of any size to four or fewer symbols within the array. A block of l's such as shown in figure 4A is positionally encoded into four symbols representing that block of Is, as shown in figure 4B. This is referred to herein as a 4 symbol, or MS," representation.
[00023] The rules encoding the block of bits with value "1" into a four symbol or "4S" block as in figure 4B are as follows. The northeast bit of the block of l's is shown as 400 in figure 4A. This remains in the same position in the 4S encoded block of figure 4B, shown as bit 450 in figure 4B. The Southeast bit 402 is positionally encoded one bit south of the bit position 402, and changed to a (-1) shown as 452 in figure 4B. The Southwest bit 404 is positionally encoded into a corresponding 1 bit at position 454, shifted diagonally one bit down and to the left. Finally, the Northwest bit 406 is positionally encoded as (-1) bit 456, which is shifted one bit to the left.
[00024] More generally, for any block of l's with m rows and n and columns, the corresponding weighting factors for the 4S representation are:
2 m+n _ 2™ _ 2n +2°. This rule of converting from a block of l's, to the 4S representation, can be computer implemented. [00025] Figure 4A has the following bit positions, shown in table 2.
Figure imgf000008_0001
22 ♦ Z14 Table 2
+ 2 f 2 + 2 4 2 = (105)
10 k 25 + 24 ♦ 23 + 22
Figure 4B has the positions shown in table 3.
Figure imgf000009_0001
Table 3
[00026] A special or degenerate case occurs when either m and/or n is equal to one. For m equals one, only two symbols are used, with a +1 weighted by 2n and a -1 by 2° =1. For n = 1, again only two symbols are used: a +1 weighted by 2m and a -1 weighted by 2° (=1) .
[00027] One way of handling the numbers is to add up the negative factors, and then subtract those negative factors from the summation of positive factors. This reduces the problem of multiplication to a problem of subtraction between two numbers.
[00028] More generally, independent of the size of any block of l's, a 4S representation allows this block to be represented as four symbols or two symbols (or 1 symbol for 1 bit) to represent its value. Note also that all of these values are powers of 2, and are relatively easy to add and subtract.
Third Embodiment
[00029] An alternative simplification to the figure 4S simplification of figures 4A/4B is shown in figure 5. Figure 5 simplifies each block of Is into 2 coordinates defining the two edges of the blocks of l's. For example, the block 500 of Is can be simplified according to its two coordinates, (11, 6) representing the edge 502, and (6,3) representing the edge 504. These two values unambiguously define the corners of the blocks of Is. Moreover, these two sets of coordinates can be used according to the rule above, to define the 4S symbols 450-456 that can be used to evaluate the value of the block. For example, the coordinates 11,6 and 6,3 can be similarly translated into the four symbols 450-456 in figure 4B. [00030] These coordinates shown in figure 5 can be obtained directly from reading the two input sequences of multiplier and multiplicant. The multiplier and multiplicant are evaluated to find the leading zero and ending zero of each run of consecutive Os. For example, figure 5 has a sequences of Os as Rl R2; R5 R6 in the multiplier and Cl, C3, C6, C7 in the multiplicant. The coordinates of the cells can be determined from these values .
[00031] Another embodiment describes ordering all blocks of Is from highest significance to lowest significance and calculating the block values as soon as the parts are read that are responsible for the formation of the block. For example, the most significant bits of the multiplier and multiplicant can be read first. This allows obtaining the most significant bit of the final product value before reading or evaluating less significant digits of the multiplier and multiplicant.
Fourth Embodiment
[00032] Another embodiment describes how a larger multiplication can be assigned to multiple separate processing implementers, each of which evaluates a smaller part of the multiplication. For example, the processing implementers may be separate processors, separate processor cores, separate threads within a multithreaded system, or separate processes within any kind of pipelined or parallel system. An embodiment is illustrated in figure 6A, of multiplying the value 011011110001 by 011011100111.
[00033] In the embodiment, the values are assigned to the x and y axes of a rectangular memory block as in the figure 2A/2B embodiment. The intersection between bits of value 1 forms blocks of l's in the product. Figure 6A shows nine contiguous blocks of l's.
[00034] In the embodiment, the calculation is divided into multiple processing implementers. Figure 6A shows the memory table divided into four quadrants, 600, 602, 604 and 606. Figure 6B shows each of the quadrants being handled by a separate processor. Processor 650 handles the calculation of bits in quadrant 600, processor 652 handles the calculation of bits in the quadrant 602, processor 654 handles the processing of the bits in the quadrant 604, and processor 656 handles the processing of bits in the quadrant 606. Each processor accumulates partial results, and those partial results may be added up by yet another processor, or by one of the processors 1-4.
[00035] In an embodiment where the processing implementers are separate processors, the tasks are partitioned into 4 processors. Processor 1 (650) computes
(_/5/ Yi, Y3, YZ, Yl, Yo) * (*5, X4/ X3f X-2, X-I, *0)
= (100111) * (110001) referred to as the NE block
processor 2 (652) computes
(y5f Yi, Y3, Yi, Yi, Yo) * (xii/ Xio, X9, *-β, *i, Xe) = (100111) * (011011) referred to as NW block
Processor 3 (654) computes
(yii, yio, Y9, Ye, Yif ye) * (xs, *i, X-3, *-2, Xi, Xo)
Referred to as the SE block = (011011) * (110001)
processor 4 (656) computes
(yii, yio/ y9, y8, y7, y6) * (xn, Xio, X9, xβ, x?, Xe) = (011011) * (011011) referred to as the SW block.
[00036] Figures 9A-9D respectively show the separated Northeast, Northwest, Southeast and Southwest blocks. Each block is separately evaluated by a separate processor. [00037] Figures 1OA and 1OB illustrate how the blocks of l's can be separately evaluated. The values of the l's within the block are evaluated according to the weighting factors shown in figure 1OA and summed. The product value of the Northeast block is thus
25+24+0+...+2° +26+25+0+...+2' +27+26+0+...+22 =(1911)10 +0+... +210+29+0+...+25
Table 5
[00038] Alternatively, each or any of the blocks can be evaluated using the four symbol rule. Figure 7 shows the figure 6 block converted to 4S representation. Figure HA shows the northeast block, and figure HB shows how that northeast block can be converted using the four symbol rule into nine symbols. Those nine symbols are evaluated as shown in figure HC, which evaluates to
Figure imgf000012_0001
Table 6
[00039] The remaining blocks are analogously evaluated. [00040] In an embodiment, each evaluated block is evaluated first with 2° weighting, that is, as though it was the NE block. After evaluating the results of the partial multiplication, each evaluated block is then weighted according to its actual position. For example, the Northwest block (block 602, figure 9B) is evaluated as a 6x6 block. The value of all the "1" bits evaluate to 1053. However, this represents the unadjusted value: that is, the value of the block if it were the Northeast block. In fact, the upper right corner of the block is weighted by 26=64. The evaluation is then weighted by the actual value of the lowest significant bit value. Therefore, when weighted by 2°, the block in figure 9B contributes 1053. However, the real contribution for the block is 1053 * (64) =67392. Analogously, the Southeast block in figure 9C contributes 1323 * (64) =84672, and the Southwest block contributes 7298 * 212=2985984. [00041] Adding the contributions gives
1911 + 67392 + 84672 + 2985984= 3,139,959.
[00042] While the above has described processing on four different processors, it should be understood that the processing can be divided into any number of processors, and specifically divided into two, three, four, five, six, seven, eight or more processors. It may be particularly desirable to divide the processing into a number of processors that is a power of two, such as two, four, eight or 16. [00043] These blocks of l's can be handled as is, or replaced by the 4S simplification described above. If replaced by the 4S simplification, then six of the blocks representing the two-dimensional blocks are replaced by symbols, leaving 24 symbols. Three of the blocks are one- dimensional and are replaced by two symbols leading six symbols. Figure 7 shows how these symbols replace the blocks of one bits. For completeness, figure 8 shows the weighting of these symbols, with the calculation of the final value as: 139959)10
Figure imgf000014_0001
Table 4
Fifth embodiment
[00044] The above embodiments have described multiplying two numbers using a table configuration. This fifth embodiment can be used with any of the embodiments described above or any embodiments described within this application for obtaining the information directly from the X sequence and the Y sequence.
[00045] Note also that the Os appear in the product array in a very predictable fashion. The cells of Os are identified and used for further simplification in an embodiment. [00046] In this embodiment, each of the binary sequences to be multiplied is read to determine consecutive intervals of l's and/or O's. An embodiment describes reading the bits three at a time, with each group of three bits having one bit that overlaps the last bit of the previous group. For example, consider the sequence: Y=OIl 010 100 111.
[00047] This sequence is analyzed to determine that there are four consecutive sequences of l's, the first sequence of length 2, the second and third sequence, each of length 1, and the fourth sequence of length 3. This analysis indicates that the heights of the blocks are 2, 1, 1,3, independent of the X sequence.
[00048] Figure 12 shows a table of the positions of bits being read at the different times. At times 1, bits yu, yio, y9 are read. Each occurrence of "01" indicates that a row of l's is starting. Hence at time 1, a one block is signaled is starting at position yio- Each occurrence of "10" indicates that a run of l's is ending. Therefore, the marks of start and end of l's can be automatically determined. [00049] This determination can also be done by a divided technique, for example when assigned to four or some different number of processors. If four processors are used, each read a sequence of N/4 bits.
[00050] The sizes of the x and y extents of the blocks of l's are determined, and used to convert to continuous blocks of l's. Optionally, the four symbol rule can be used to convert each block of l's to four symbols as above.
Sixth Embodiment
[00051] An additional embodiment may avoid the storage of -1 symbols, using a rule to define values of different symbols based on their positions. For any block of m, n where both are greater than two, then the symbols with the largest and smallest weighting factors are +1, and the two intermediate signs are -1. For any block where m=l or n=l, and the other is greater than or equal to two, then the two symbols are +1 and -1 with the +1 having the larger weighting factor. For a 1x1 block, the single symbol is +1. This rule defines which of the symbols are Is and which are -Is, and hence can be used to avoid storing -l's. This rule can easily be computer implemented.
[00052] Note that these representations need not be mathematical representations of the entire array, but can be any information indicative of that array. That information can be data in memory in any form. The techniques described herein can be carried out in software or hardware. [00053] A hardware gate can alternately be used which produces an output of 1 when both the inputs are 1, to define the overlap between the l's. The analogous reverse of this can alternatively be used, where the gate produces an output of zero when either of the inputs is zero.
[00054] As one speed increasing mechanism, the sequences of x and y can be read alternately until either Vj or Xi becomes zero.
[00055] Figure 13 shows a more detailed flowchart, having additional implementation details. At 1300, the multiplier y is analyzed to determine information about the runs of consecutive Is. 1305 illustrates how this is used to define the heights of all the 1 blocks. This is done by finding where the consecutive l's in the y sequence start. For example, of if Vj-i=0, and Vj=I, then this is the start of a 1 block. When Vj-i=l, and Vj=O, then this represents an end of a 1 block. Using the illustration in figure 5, yio=O;
Figure imgf000016_0001
and yo=O, where (y9=0, ys=l) and (y7=l; y6=0) correspond to a starting and ending interval of Is in Figure 5.
[00056] At this point, the starting positions of Is is the index of Is and the ending position of Is is the index of I7. This technique can be used to determine the heights of all 1 blocks at 1305, without reading the x sequence. Thus, all of the 1 blocks in the bottom four rows will be of height 2 in Figure 5.
[00057] Further reading of the y sequence shows y5 =0 and y4=l, and also shows yi=l and yo=O. For this block, the starting positions of Is is the index of y4 and the ending position is the index of yi. The formula used is (start - finish +1), so the height equals 4. Thus, all the one blocks in the top four rows will be of height 4.
[00058] At 1310, the X sequence is read. Analogously to the above, this is done to find the consecutive Is starts and ends, in the same way as done for the Y values. This finds the widths of all the blocks at 1315. Here,
Figure imgf000017_0001
so the marked positions are
Xi0=O; X9=I; X8=O; X7=I; X6=I; Xs=O; X4=0; X3=X2=Xi=I; Xo=O. [00059] Thus the width of the 1-blocks are from left to right in the top 4 rows of Figure 5 is:
(8 - 8) + 1 (i.e. it is a sin gle bit) (6 - 5) + 1 (i.e. its width is two (2 - O) + 1 (i.e. its width is three)
[00060] Therefore, the y sequence is analyzed to find heights, the x sequence is analyzed to find widths, thereby finding the information from which the table of figure 6A could be created.
[00061] At 1325, the "four symbol rule" may be used to find the outer symbols representing the blocks of l's. As described above, the 4S rule allows blocks of any size, that is arbitrary n and arbitrary m, to have its value represented by four or fewer symbols, two +ls, and two -Is.
[00062] The values are accumulated at 1335, to produce the final product, P.
Seventh embodiment
[00063] Another embodiment describes multiplication of 3 or more dimensions, e.g., 4 dimensions, 5 dimensions or more, at once. A multidimensional array like the ones described in Figures 2a and 3 is formed and used to find the three dimensional blocks of l's, analogously to the above embodiments that find 2 dimensional blocks of Is. [00064] For a 3 dimensional block of l's, the four symbol rule is generalized to an eight symbol rule formed as the product of three sequences, x, y and z. This enables repeated multiplications through a cubic structure as follows. [00065] For the special case of an n-bit-length cube, let the value of product be P<3) . P(3)=(2"-l)*(2"-l)*(2"-l)
=(23"X+l)+(22"X-3)+(2")(+3)+(2°)(-l) where the coefficients are (+l),(-3),(+3),(-l)
[00066] This may important for repeated multiplications. For p<4), the product value is
(l) (24n)+ (-4) (23m) + (6) (22n) + (-4) (2n) + (l) (2°) . The coefficients are the coefficients of Pascal's triangle with alternating signs.
Eighth embodiment
[00067] Another embodiment describes using this technique for division. Consider a division problem as
X = D * Q + R, where X is the "dividend", D is the "divisor", Q is the "quotient", and R is the "remainder". The embodiment is shown in the flowchart of Figure 14, where 1400 shows the basic equation.
[00068] In a general division problem, X and D are known, but the problem requires calculating the quotient Q=X/D. In the embodiment, successive values of Q are used. Q may be changed until O≤ R <Q holds. Each test, for a fixed D, is a multiplication problem, of D*Qi, D*Q2, etc. [00069] Using the terminology explained above, D is treated as the multiplier, and the fixed D is used to determine the heights of all the blocks of l's in the products
Figure imgf000018_0001
[00070] One application of this system is for factoring a large binary sequence X into its prime factors. The binary sequence X is called the public-key, which is the product of two other large prime numbers D and Q. Both D and Q are unknown. An encryption of this type could be decoded by determining D and Q for various prime numbers until D*Q = X is found. A faster multiplying system such as that described in the first through seventh embodiments, could increase the speed of decoding. However, this could still take a very long time. The long computation time protects the intended receiver who has the secret key as well as the public-key. [00071] In the embodiment, division, e.g., for decoding an encrypted value, is carried out by bounding the values. [00072] The value X is assumed to have n bits and the value D is assumed to have m bits. Both are powers of 2. Therefore, Q has (n-m+1) bits. This is also a power of 2. [00073] The value of X can be used to determine bounds for the bit lengths of D and Q. If X has a length of 1000 bits, then both D and Q are approximately between 400 bits and 600 bits in length. Again, however, trying all prime numbers between 400 bits and 600 bits would be an extremely long and tedious process. Therefore, according to the embodiment, a bound of the possible values of Q is first established. For example, if Q is between 8 and 32, then the only prime numbers necessary to test would be Q = 13, 17, 19, 23, 29 and 31. [00074] For illustration, if X=(437)i0, D=(23)io, and
[00075] First, X, which is known, is bounded at 1405, between a value that is one power of 2 less, and one power of 2 more, than X. Therefore, in the example, X is bounded as 256 < 437 < 512. Analogously, D is bounded between 16 and 32, and Q is bounded between 8 and 32. [00076] Expressing this in binary,
X = (437)10 = (110 110 101) =(010 111) * (010 011), where X has nine bits and D and Q each have six bits.
X - D * Q ≥ 0 (l) (Both X & Dare given positive images)
LetX,≤ X ≤ X2 (2) DX ,≤ D ≤ D2 (3)
[00077] This illustrates the concept - that any given binary number can be easily bounded by a binary number of length one greater than the other binary number. For example, in the example above, the binary value is bounded as (at 1405) (100 000 000) < (110 110 101) ≤ (1000 000 000)
Nine bits, nine bits, 10 bits [00078] In order to use this system to calculate, the public-key is first increased and then D is increased. In the example above, the public-key is first increased to value X2= 1 000 000 000 according to equation 2. A value of the divisor is postulated as 16io which is the lower estimate of the true value 23io. The quotient is postulated as Q. equals (32) io which is an overestimate of the true value (19) i0. [00079] This estimate is easily done because all of the numbers are powers of two. In binary:
1000 000 000 = 10 000 * 100 000
[00080] Analogously, the value of the public-key can be reduced to 100 000 000. A value of the divisor is then guessed as 32 which is an overestimate of the true value 23. This provides a quotient value of 8 which underestimates the true value 19.
[00081] Generalizing this then, after bounding at 1405 and 1410, the value of the public-key is increased to be a power of 2 which is one power of two larger than its actual value. A value of the divisor D is then postulated which is a lower estimate of the true value of D. This provides an overestimate of the true value of Q, shown in 1415 as Qupperbound- Analogously, at 1420, the value of the public-key is decreased by a power of two, D is increased by a power of 2, to determine an overestimate of the true value of D. This provides a lower estimate of the value of Q, Qiowerbound- [00082] Once having the upper and lower Q estimates, all binary numbers between QupPerbound and Qiowerbound are used to find the true value. In the example above, the lower limit 8 and the upper limit 32 enables testing the prime numbers within the range, and specifically 11, 13, 17, 19, 23, 29 and 31. [00083] This technique may be used iteratively to make larger bounds. Other techniques may be used to bound the numbers .
[00084] Many applications of this system are possible. For a public key crypto system, the basic protection is in the difficulty of factoring the product of two large prime numbers, C= x*y. However, this system can be used to narrow down the search. If the leading digit of a product is much larger than the public key C, then it is not necessary to try an even larger x and y.
[00085] Other embodiments are within this disclosure. For example, while many of these embodiments are described as software routines, they can easily be carried out in dedicated hardware. Also, the techniques described herein may be used with negative values, in addition to the described positive multiplication and division. Any size or capacity of registers may be used. While the above has described the leading digits on the left and bottom, the direction of the leading digits may be reversed. Moreover, while the division problem has been disclosed for use in bounding numbers for decryption, it can also be used for bounding division problems for other purposes, as well as for finding final values associated with divisions.
[00086] Only claims herein which use the word "means" are intended to be interpreted in accordance with 35 USC 112, sixth paragraph.

Claims

What is claimed is
1. A method comprising: multiplying a first binary value by a second binary value and accumulating information indicative of areas of intersections between l's in said first binary value and l's in said second binary value; and evaluating said information indicative of said areas of intersections to determine a value related to said multiplying.
2. A method as in claim 1, wherein said accumulating information comprises forming a table having areas, said areas being weighted in a way such that areas of intersection between the l's in said table represent a partial value associated with said intersections between the l's.
3. A method as in claim 2, wherein said table is formed in a memory associated with a processor.
4. A method as in claim 2, further comprising identifying blocks of l's in said table, and wherein said evaluating comprises evaluating values of the blocks of l's.
5. A method as in claim 4, wherein said evaluating comprises reducing the blocks of l's to a reduced representation indicative of the blocks of l's.
6. A method as in claim 5, wherein said reducing comprises reducing the blocks of l's to a representation where any block of l's of any size can be represented by four symbols or less.
7. A method as in claim 6 wherein said reducing comprises reducing a block of l's with m rows and n columns to a corresponding reduced value proportional to
Figure imgf000023_0001
8. A method as in claim 6, wherein said reducing comprises determining a block of l's, maintaining a northeast bit of the block of l's 'in a same position as a first bit, positionally encoding a southeast bit one bit south of its bit position as a (-1) value as a second bit, positionally encoding a southwest bit into a corresponding 1 bit shifted diagonally one bit south and west as a third bit, and positionally encoding a Northwest bit as a(-l) bit, one bit to the west of its position as a fourth bit, and removing all other bits from said block of l's, other than said first bit, said second bit, said third bit, and said fourth bit.
9. A method as in claim 1, further comprising dividing said first value and said second value into multiple separated portions, and carrying out said accumulating and said evaluating of each of said separate portions, separately.
10. A method as in claim 9, further comprising carrying out said evaluating for each of said multiple separated portions on each of a plurality of separated processing implementers.
11. A method as in claim 9, wherein said carrying out said evaluating on each of said separate portions comprises evaluating intersections between each of the separate portions, and subsequently weighting values related to the intersections according to values of said separate portions.
12. A method as in claim 9, further comprising evaluating each of a plurality of separated portions on each of a plurality of separate processing implementers.
13. A method as in claim 12, wherein said evaluating each of the plurality of separated portions comprises forming a table which is weighted in a way such that intersections between the l's represent a partial value associated with said intersections between the l's, and accumulating partial values, to form a partial value related to said separated portions.
14. A method as in claim 13, wherein said accumulating said partial values comprises reducing said partial values to a representation where at least a plurality of two-dimensional blocks of same value bits are reduced to a reduced representation of four symbols or less.
15. A method as in claim 13, wherein said evaluating further comprises weighting said partial value according to a position of said partial bits.
16. A method as in claim 6, wherein said evaluating comprises reducing the blocks of one's to coordinates indicative of specified corners of the blocks.
17. A method as in claim 1, wherein said evaluating comprises determining a partial result.
18. A method as in claim 17, wherein said partial result comprises obtaining a more significant part of the result prior to obtaining a less significant part of the result.
19. A method as in claim 1, wherein said multiplying comprises analyzing said first and second binary values to determine locations of transitions between 0 values and 1 values, and using said locations to form said information.
20. A method as in claim 1, wherein said multiplying multiplies said first binary digit and said second binary digit by a third binary digit, and accumulating information indicative of interactions between l's in all of said first, second and third binary digits.
21. A method as in claim 1, wherein said multiplying determines said information by finding O's in said first or second binary values, and using areas of O's to define said areas of intersections between l's.
22. A method as in claim 1, further comprising, after said evaluating, using said value to bound an operation related to a division.
23. A system comprising: a memory, having a plurality of memory locations; a multiplier, that receives a first binary value and a second binary value and accumulates information indicative of areas of intersections between l's in said first binary value and l's in said second binary value in said memory and evaluates said information indicative of said areas of intersections to determine a value related to multiplying said first binary value by said second binary value.
24. A system as in claim 23, wherein said multiplier includes a processor, running according to a stored program.
25. A system as in claim 23, wherein said multiplier includes hardware logic.
26. A system as in claim 23, wherein said accumulating information comprises forming a table in said memory having areas, said areas being weighted in a way such that areas of intersection between the l's in said table represent a partial value associated with said intersections between the l's.
27. A system as in claim 26, wherein said multiplier identifies blocks of l's in said table and evaluates values attributable to the blocks of l's.
28. A system as in claim 27, wherein said multiplier reduces at least one of the blocks of l's to a reduced representation indicative of the blocks of l's but having fewer symbols that than the original block of l's.
29. A system as in claim 28, wherein said multiplier reduces at least a plurality of the blocks of l's to a representation where any block of l's of any size can be represented by four symbols or less.
30. A system as in claim 29, wherein said multiplier reduces said blocks by maintaining a northeast bit of the block of l's in a same position as a first bit, positionally encoding a southeast bit one bit south of its bit position as a (-1) value as a second bit, positionally encoding a southwest bit into a corresponding 1 bit shifted diagonally one bit south and west as a third bit, and positionally encoding a Northwest bit as a(-l) bit, one bit to the west of its position as a fourth bit, and removing all other bits from said block of l's, other than said first bit, said second bit, said third bit, and said fourth bit.
31. A system as in claim 23, wherein said multiplier comprises a plurality of separate processing implementers, each receiving only a part of data comprising said first value and said second value, and each carrying out only a portion of a total computation.
32. A system as in claim 31, wherein each of said processing implementers evaluates values attributable to intersections between each of the separate portions, and subsequently weights said values according to positions of said separate portions.
33. A system as in claim 28, wherein said multiplier reduces the blocks of l's to coordinates indicative of specified corners of the blocks.
34. A system as in claim 23, wherein said multiplier obtains a partial result attributable to a multiplication between said first binary value and said second binary value.
35. A system as in claim 34, wherein said partial result comprises obtaining a more significant part of the result prior to obtaining a less significant part of the result.
36. A system as in claim 23, further comprising an evaluating unit which analyzes said first and second binary values to determine locations of transitions between 0 values and 1 values, and uses said locations to form said information.
37. A system as in claim 23, wherein said multiplier multiplies said first binary digit and said second binary digit by a third binary digit.
38. A system as in claim 23, wherein said multiplier uses said value to bound an operation related to a division.
39. A computer-readable medium containing a set of instructions for a general purpose computing part, the set of instructions comprising:
Obtaining a first binary value and a second binary value; accumulating information indicative of areas of intersections between l's in said first binary value and l's in said second binary value; and evaluating said information indicative of said areas of intersections to determine a value related to multiplying of said first binary value by said second binary value.
40. A medium as in claim 39, wherein said accumulating information comprises forming a table having areas, said areas being weighted in a way such that areas of intersection between the l's in said table represent a partial value associated with said intersections between the l's.
41. A medium as in claim 40, wherein said forming a table, comprises using the computing part to form a table in a memory.
42. A medium as in claim 41, further comprising identifying blocks of l's in said table, and wherein said evaluating comprises evaluating values in a final multiplication result that are attributable to the blocks of l's.
43. A medium as in claim 42, wherein said evaluating comprises reducing the blocks of l's to a reduced representation indicative of the blocks of l's.
44. A medium as in claim 43, wherein said reducing comprises reducing the blocks of l's to a representation where any block of l's of any size can be represented by four symbols or less.
45. A medium as in claim 44, wherein said reducing comprises determining a block of l's, maintaining a northeast bit of the block of l's in a same position as a first bit, positionally encoding a southeast bit one bit south of its bit position as a (-1) value as a second bit, positionally encoding a southwest bit into a corresponding 1 bit shifted diagonally one bit south and west as a third bit, and positionally encoding a Northwest bit as a(-l) bit, one bit to the west of its position as a fourth bit, and removing all other bits from said block of l's, other than said first bit, said second bit, said third bit, and said fourth bit.
46. A medium as in claim 39, further comprising dividing said first value and said second value into multiple separated portions, and assigning said accumulating and said evaluating of each of said separate portions, to each of a separate processing implementer, respectively.
47. A medium as in claim 39, wherein said evaluating comprises determining a partial result.
48. A medium as in claim 47, wherein said partial result comprises obtaining a more significant part of the result prior to obtaining a less significant part of the result.
49. A medium as in claim 39, further comprising, after said evaluating, using said value to bound an operation related to a division.
50. A medium as in claim 49, further comprising, using said evaluating for cryptographic evalution.
51. A method, comprising: analyzing a first value and a second value to obtain an interim value with at least one two-dimensional block representing same value bits therein; reducing at least one of said two-dimensional blocks to a reduced representation which includes four symbols that represent the value attributable to said one two-dimensional block; and evaluating said reduced representation to determine a result related to a multiplying of said first value by said second value.
52. A method as in claim 51, wherein said result relating to said multiplying comprises a multiplication result of said first value by said second value.
53. A method as in claim 51, wherein said result related to said multiplying comprises a partial multiplication result of said first value by said second value.
54. A method as in claim 51, wherein said result related to said multiplying comprises a partial multiplication result indicative of certain more significant bits only, of a product of said first value multiplied by said second value.
55. A system, comprising: a processor, receiving a first value and a second value, and processing said first and second values to obtain an interim value with at least one two-dimensional block representing same value bits therein, said processory operating to reduce at least one of said two-dimensional blocks to a reduced representation which includes four symbols that represent the value attributable to said one two- dimensional block and evaluating said reduced representation to determine a result related to a multiplying of said first value by said second value.
56. A system as in claim 55, wherein said processor runs according to a stored program.
57. A system as in claim 55, wherein said processor includes hardware logic.
58. A system as in claim 55, wherein said result relating to said multiplying comprises a multiplication result of said first value by said second value.
59. A system as in claim 55, wherein said result related to said multiplying comprises a partial multiplication result of said first value by said second value.
60. A system as in claim 55, wherein said result related to said multiplying comprises a partial multiplication result indicative of certain more significant bits only, of a product of said first value multiplied by said second value.
61. A method, comprising: obtaining a first number and a second number to be multiplied; and accumulating partial results from a multiplying by finding blocks of values at intersections between l's in the first and second numbers, and accumulating results from said blocks of values, wherein each partial result from each block of values is accumulated separately without carry over from any other block of values.
62. A method as in claim 61, further comprising reducing said blocks of values into a reduced representation, where said reduced representation includes fewer symbols than a number of symbols in said blocks of values.
63. A method as in claim 61, wherein said establishing blocks of values comprises establishing information indicative of an intersection between the l's in the first number and the second number in a rectangular array, establishing a 1 at intersections between said l's in the first number and l's in the second number and evaluating each block of l's at said intersections.
64. A method as in claim 63, further comprising reducing each of said blocks of l's into a reduced block of symbols.
65. A method as in claim 61, wherein said reduced block of symbols comprises four symbols for a two-dimensional block of l's.
66. A method, comprising: using a computer to multiply a first value having a plurality of bits by a second value having a plurality. of bits; and obtaining a portion of a solution attributable to more significant bits before obtaining another portion of the solution attributable to less significant bits.
67. A method as in claim 66, wherein said obtaining comprises finding intersections between l's in said first value and said second value, and evaluating portions of the solution attributable to said l's.
68. A method as in claim 67, wherein said obtaining comprises grouping said intersections into blocks of l's, and evaluating each of the blocks of l's separately.
69. A method as in claim 68, wherein said evaluating comprises reducing at least one of said blocks of l's by maintaining a northeast bit of the block of l's in a same position as a first bit, positionally encoding a southeast bit one bit south of its bit position as a (-1) value as a second bit, positionally encoding a southwest bit into a corresponding 1 bit shifted diagonally one bit south and west as a third bit, and positionally encoding a Northwest bit as a(-l) bit, one bit to the west of its position as a fourth bit, and removing all other bits from said block of l's, other than said first bit, said second bit, said third bit, and said fourth bit.
70. An apparatus, comprising:
Means for multiplying a first value having a plurality of bits by a second value having a plurality of bits; and
Means for obtaining a portion of a solution attributable to more significant bits before obtaining another portion of the solution attributable to less significant bits.
71. An apparatus as in claim 70, wherein said obtaining means comprises grouping said intersections into blocks of l's, and means for evaluating each of the blocks of l's separately.
72. An apparatus as in claim 70, wherein said evaluating means comprises reducing at least one of said blocks of l's by maintaining a northeast bit of the block of l's in a same position as a first bit, positionally encoding a southeast bit one bit south of its bit position as a (-1) value as a second bit, positionally encoding a southwest bit into a corresponding 1 bit shifted diagonally one bit south and west as a third bit, and positionally encoding a Northwest bit as a(-l) bit, one bit to the west of its position as a fourth bit, and removing all other bits from said block of l's, other than said first bit, said second bit, said third bit, and said fourth bit.
PCT/US2004/042782 2004-12-17 2004-12-17 Binary digit multiplications and applications WO2006065251A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2004/042782 WO2006065251A2 (en) 2004-12-17 2004-12-17 Binary digit multiplications and applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2004/042782 WO2006065251A2 (en) 2004-12-17 2004-12-17 Binary digit multiplications and applications

Publications (2)

Publication Number Publication Date
WO2006065251A2 true WO2006065251A2 (en) 2006-06-22
WO2006065251A3 WO2006065251A3 (en) 2006-09-14

Family

ID=36588290

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/042782 WO2006065251A2 (en) 2004-12-17 2004-12-17 Binary digit multiplications and applications

Country Status (1)

Country Link
WO (1) WO2006065251A2 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4566075A (en) * 1982-12-21 1986-01-21 Texas Instruments Incorporated Table lookup multiplier employing compressed data read only memory
US6490608B1 (en) * 1999-12-09 2002-12-03 Synopsys, Inc. Fast parallel multiplier implemented with improved tree reduction schemes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4566075A (en) * 1982-12-21 1986-01-21 Texas Instruments Incorporated Table lookup multiplier employing compressed data read only memory
US6490608B1 (en) * 1999-12-09 2002-12-03 Synopsys, Inc. Fast parallel multiplier implemented with improved tree reduction schemes

Also Published As

Publication number Publication date
WO2006065251A3 (en) 2006-09-14

Similar Documents

Publication Publication Date Title
Bini et al. Polynomial and matrix computations: fundamental algorithms
Tygert Fast algorithms for spherical harmonic expansions, III
Kulisch Computer arithmetic and validity: theory, implementation, and applications
CN106951211A (en) A kind of restructural fixed and floating general purpose multipliers
Molin et al. Computing period matrices and the Abel-Jacobi map of superelliptic curves
WO2013109532A1 (en) Algebraic processor
Meher et al. Arithmetic circuits for DSP applications
US7565391B2 (en) Binary digit multiplications and applications
Kauers D-finite Functions
TWI291129B (en) Methods and apparatus for performing mathematical operations using scaled integers and machine accessible medium recorded with related instructions
EP3672246B1 (en) Astc interpolation
Tsai et al. Algorithm 812: BPOLY: An object-oriented library of numerical algorithms for polynomials in Bernstein form
WO2006065251A2 (en) Binary digit multiplications and applications
CA2293953A1 (en) A method and system for implementing a coprocessor
Yun et al. A latency-effective pipelined divider for double-precision floating-point numbers
Alt et al. Stochastic Arithmetic Theory and Experiments
RU2509345C1 (en) Method of facilitating multiplication of two numbers in modular-position presentation format with floating point on universal multi-core processors
Asad et al. Radix-8 design alternatives of fast two operands interleaved multiplication with enhanced architecture
JP5528249B2 (en) Optimal alignment calculation device and program
Rouigueb et al. Integration of polynomials over n-dimensional simplices
Shirane et al. A design methodology for approximate multipliers in convolutional neural networks: A case of MNIST
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
EP3671644B1 (en) Astc interpolation
Prebeck et al. A Scalable, Configurable and Programmable Vector Dot-Product Unit for Edge AI
CN109992242A (en) Operation method and device based on multiplier

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase in:

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 04814914

Country of ref document: EP

Kind code of ref document: A2