WO2018116483A1 - Calculation using numerical values represented inside a computer in undecimal or higher positional notation - Google Patents

Calculation using numerical values represented inside a computer in undecimal or higher positional notation Download PDF

Info

Publication number
WO2018116483A1
WO2018116483A1 PCT/JP2016/089228 JP2016089228W WO2018116483A1 WO 2018116483 A1 WO2018116483 A1 WO 2018116483A1 JP 2016089228 W JP2016089228 W JP 2016089228W WO 2018116483 A1 WO2018116483 A1 WO 2018116483A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
calculation
numerical
numerical calculation
byte
Prior art date
Application number
PCT/JP2016/089228
Other languages
French (fr)
Japanese (ja)
Inventor
和己 阿部
Original Assignee
和己 阿部
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 和己 阿部 filed Critical 和己 阿部
Priority to PCT/JP2016/089228 priority Critical patent/WO2018116483A1/en
Publication of WO2018116483A1 publication Critical patent/WO2018116483A1/en

Links

Images

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/49Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM

Definitions

  • the present invention relates to a numerical calculation using an array structure. More specifically, an accurate numerical calculation for a larger number is realized at a higher speed by using a numerical value expressed inside the computer by an arbitrary scale method.
  • the current hardware has higher performance than when the prior art was invented.
  • the upper limit of the number that can be handled Replace the constraint from “memory capacity” to “capacity of storage medium other than memory”.
  • the upper limit of the number that can be handled by the increased capacity increases.
  • it becomes easy to take in parallel processing because a margin arises in memory.
  • the calculation processing at the hardware level does not increase the required time by the number of bits handled.
  • the number that can be expressed doubles every time the number of bits to be handled increases by one.
  • This speeding-up is realized by applying a process simulating “an arithmetic operation process provided in advance in the basic data type” to an arbitrary number of consecutive bits.
  • the present invention should be able to be reflected in a system in which a plurality of connected nodes operate in cooperation. In this case, further improvements are expected in the range and speed of numbers that can be handled.
  • the conceptual diagram of the conversion to the decimal notation at the time of input / output The figure which illustrated "the main computer” and “the apparatus which performs or assists numerical calculation independently”. A computer that is subordinate to the main computer on the network. The figure which illustrated performing a numerical calculation using an array structure using a network. The figure which illustrated "the main computer” and “the apparatus which contains two or more in FIG. 2". The figure which showed invention in steps from the viewpoint of the range of the number which can be handled.
  • a series as a unit for performing four arithmetic operations in “numerical calculation using a character string of a prior art” or “numerical calculation using an arbitrary number of consecutive bits arranged in an array or array” of the present invention This process is referred to as a “unit of calculation processing”.
  • the content of the series of processing varies depending on the type of arithmetic operation.
  • “addition of digits” is subtracted, “subtraction of digits” is subtracted, “addition of one digit and another digit” is added in integration, Is a process of performing one subtraction by numerical calculation using an array structure from the number “.”
  • total number of calculation processes In the numerical calculation using the array structure, the total number of the above-mentioned calculation processing units executed when a certain arithmetic operation is performed is referred to as the “total number of calculation processing”. . Even if this value is a numerical calculation for the same two numbers, it differs depending on the type of calculation.
  • this value is the "minimum capacity required to perform numerical calculations" and does not take into account the area for storing the calculation results. If the calculation result is to be secured only by the necessary amount at the time of calculation, one of the areas representing the two numbers is regarded as an “area for storing the calculation result” and is executed while rewriting it. However, since it becomes impossible to cope with overflow, it is necessary to secure an area for storage separately from the necessary amount at the time of calculation if the overflow is surely handled.
  • FIG. 5 of FIG. 1/2 is “Overview of the Invention”. Please refer to these as you continue to read. I will explain the meaning of the formula more concretely.
  • the feasibility of the numerical calculation of the present invention depends on “required capacity” and “time required for calculation”. If these values are sufficiently realistic, it should be feasible. We will see under what circumstances these values are realistic.
  • the three elements of “total number of elements”, “time required to access the storage medium”, and “time required to execute the unit of calculation processing” will be described.
  • Total number of elements is set to “K”.
  • the total number of elements coincides with the number of digits when an attempt is made to express a certain number N in Pn base. Therefore, K can be expressed as follows. From this, the denominator of the S is increased the larger the value of P n, it can be seen that the value of K that is "the total number of elements" less.
  • time required to access the storage medium is “T”.
  • R is the time required to establish communication with a storage medium other than the memory.
  • the time required for opening a file in the file input / output process is R.
  • the difference between “time required to read 1 byte from a storage medium other than memory” and “time required to read 1 byte from memory” is defined as “Q”.
  • Q the difference between “time required to read 1 byte from the file excluding time required to open the file” and “time required to read 1 byte from the memory”.
  • time required to access the storage medium is expressed as follows using R, L, Q, and T.
  • the processing time does not increase X times, and the rate of increase is slight.
  • the time required for arithmetic processing between 8-byte long long int types is not twice the time required for arithmetic processing between 4-byte int types, and the rate of increase is 1.5. Less than double. Therefore, it can be said that the value of I is very small (I ⁇ 1). The fact that the value of I becomes very small will be described more specifically in paragraph 197.
  • I and U are used to represent the time required for the unit of calculation processing.
  • time required for the unit of calculation processing is as follows.
  • K represents “total number of elements”.
  • the value of K in the case of a certain number N tried to deal with P n-ary is log (P n) N.
  • the denominator when the base of this equation is converted to 10 is S. Therefore, the value of S decreases as the value of Pn increases.
  • a decrease in the value of S means a decrease in the value of K, and a decrease in the value of K means that the total number of elements decreases.
  • the element represents one digit in the case where a certain number N is expressed on the computer by Pn base. Therefore, reducing the total number of elements means that the number of digits required to express a certain number is reduced, and this is synonymous with “decreasing the total number of calculation processes”.
  • the value of K also depends on the value of log 10 N.
  • log 10 N depends on the value of N.
  • the value of N represents the number to be handled. The larger the number handled, the greater the value of N. Therefore, it can be understood that the larger the number handled, the larger the value of K.
  • the expression corresponding to the present invention is expressed as follows: “In numerical calculations using an array structure, the larger the number to be handled, that is, the number to be expressed by the array structure, the value of K becomes “This is because the value of log 10 N increases.”
  • P seems to be limited. When one digit is expressed by n bits, a maximum of 2 n numbers can be expressed. The value of P is 2 if all the numbers that can be represented by n bits are used up. From here, it will adjust the value of the bottom to a value smaller than 2 n depending on the application, it seems generally probably be limited to 10 x ary. This will be described from paragraph 143 as “speeding up display”. What I want to say now is that the value of P is likely to be 2 or 10.
  • the value of L is the number of bytes required to express one digit when trying to express the number N on the computer in the Pn base notation in the numerical calculation using the array structure.
  • R is the time required to establish communication with a storage medium other than the memory.
  • Q is the difference between “time required to read 1 byte from a storage medium other than memory” and “time required to read 1 byte from memory”. Accordingly, the values of R and Q are both affected by hardware performance. The higher the “access speed of the storage medium other than the memory” employed, the smaller the values of R and Q.
  • the value of Q turns negative. This can occur, for example, when an external device (5 in FIG. 2) specialized for numerical calculation using an array structure is created. More specifically, the external device includes “a storage medium that exceeds the memory performance of the main body”, “arithmetic processing device”, and “software for executing numerical calculations using an array structure”. In this case, the numerical calculation is performed independently in response to a request from the main computer and the result is returned to the main computer.
  • an external device (5 in FIG. 2) specialized for numerical calculation using an array structure is created. More specifically, the external device includes “a storage medium that exceeds the memory performance of the main body”, “arithmetic processing device”, and “software for executing numerical calculations using an array structure”. In this case, the numerical calculation is performed independently in response to a request from the main computer and the result is returned to the main computer.
  • T value is the time required to read 1 byte from the memory area. Therefore, the value of T depends on the memory performance. The value of T increases as the memory with lower performance is employed, and the value of T decreases as the memory with higher performance is employed.
  • the present invention itself relies on the fact that “the access speed to the storage medium has increased” and the “capacity has increased” much more than when the prior art was invented. If the performance improvement will continue in the future, in the numerical calculation using the array structure, the improvement that is established between “current and present” should also be realized between “present and future”.
  • K is a value that supports the total number of instructions
  • S is a value that decreases the value of K.
  • ⁇ and ⁇ are equations relating to the speed per element. Therefore, when log 10 N is regarded as a constant, “S ⁇ ⁇ ⁇ ⁇ takes a smaller value” means that “a numerical calculation using an array structure is faster when a number of the same size is handled. It can be understood that this means that “the operation is performed”. If the upper limit of the capacity required at the time of calculation is not considered, it means that “a larger number can be handled at the same time”, that is, “the capacity of the storage medium satisfies the capacity required at the time of calculation. It is understood that the smaller the values of S, ⁇ , and ⁇ , the larger number can be handled at the same time.
  • L appearing as ⁇ and ⁇ is a capacity necessary to represent one element, that is, a capacity necessary to represent one digit in the numerical calculation using the array structure.
  • the value of K is the total number of elements required to express a certain number N in the numerical calculation using the array structure, that is, the number of digits required. Therefore, in the numerical calculation using the array structure, the “capacity required when expressing a certain number N” is equal to the number obtained by multiplying the value of K by the value of L.
  • the “capacity required for the storage medium” is “capacity required to express N” and “ It is a value obtained by adding together “capacity necessary for expressing N ′”.
  • the minimum required capacity to express a certain number is “required amount when expressing”, and the minimum necessary to perform numerical calculation using a certain two numbers This capacity is called “calculated amount”.
  • P n is the size of the base when a certain number N is expressed by the scaled number method.
  • the value of K is the total number of digits required when a certain number N is expressed in Pn decimal notation, that is, an element required when a number N on the computer is expressed in Pn decimal notation.
  • the total number of The value of L is a capacity required to represent one digit at this time.
  • the value of K is larger the value of P n becomes large, it becomes smaller.
  • the value of L increases as the value of Pn increases.
  • the value of K decreases and the value of L increases.
  • the “decrease rate for K” exceeds the “increase rate for L”
  • the required amount for expression “KL” and the “necessary amount for calculation” represented by the addition should decrease. is there.
  • KL is the maximum (1/2) because “S and thus K decreases (1 / 2.4) times and L is constant”. 4) Decrease by a factor of 2. However, in the latter, since the decrease rate of K and the increase rate of L are offset, the improvement of KL as in the former cannot be obtained. Regarding KL, the difference between the former and the latter can be expressed as follows. Note that the value of (KL / K'L) is (1 / 2.4) in the former, whereas the value of (K'XL / KL) is 1 in the latter.
  • the prior art tries to solve the digit loss on the memory.
  • the required capacity of the storage medium increases as the number to be handled increases. If the place where the data is handled is limited to the memory, the total capacity of the memory becomes the upper limit of the number that can be handled. Therefore, we introduced a storage medium with a larger capacity, changed the storage location of the array structure representing a certain number to this storage medium, and in exchange, “the array structure representing the number on this storage medium is retained. It holds three values: a reference to a location that is being used, or a key value for accessing the location, “total number of elements”, and “number of bits of each element (size)”. By doing so, it is possible to simplify the competition in memory with other applications, and to increase the upper limit of the number that can be handled.
  • Access speed to storage media depends on hardware performance. Therefore, by adopting a storage medium having a higher access speed, a direct improvement in access to the storage medium should be obtained.
  • the main change caused by transferring data representing a certain number to a storage medium other than the memory is only the part related to the access procedure to the storage medium other than the memory, and in the numerical calculation using the array structure Note that there is no particular change in the behavior of the elements themselves. This is the end of the introduction of storage media other than memory. Let me return to the discussion about V and its configuration again.
  • the value of S and thus the value of K decreases as the number of elements per element increases.
  • the value of L increases stepwise as the number represented by the element increases.
  • the increase in the value of L is the reason why the values of ⁇ and ⁇ increase. Accordingly, in the numerical calculation using the array structure, when the number to be numerically calculated is to be expressed by the Pn base system, the values of S, ⁇ , and ⁇ can be said as follows. “As the value of Pn increases, the value of S decreases. On the other hand, the values of ⁇ and ⁇ increase.”
  • the above improvement can be described in more detail as follows. “The values of S and ⁇ decrease while the values of ⁇ and ⁇ remain unchanged” simply means that only the value of K decreases.
  • the value of K is the total number of numbers, that is elements of digits when then an attempt is made to represent the N in P n. Since the “total number of calculation processes” is proportional to the “total number of elements”, a simple decrease in the value of K means that “the total number of calculations has been reduced without changing the contents of the calculation process”. is doing.
  • the fact that the values of ⁇ and ⁇ remain unchanged and only the value of S is reduced means that the total number of calculations is reduced, and higher-speed processing is possible for the same number.
  • a character string including a character that cannot be recognized by a person can be rephrased as “an array having a 1-byte variable as an element”. In other words, if it is a 1-byte variable, it does not have to be a character type. This means that a maximum of 256 types of numbers can be expressed in an 8-bit sequence, and high-speed arithmetic operations that are not inferior to the basic data type can be executed using two “8-bit sequences”. , Implying that an 8-bit sequence is acceptable. This plays a very important role in the discussion of “means for increasing the value of the“ third ” Pn ”.
  • the required time does not increase X times. Also, just because the number of bits to be processed at a time is X times does not mean that the required time is X times. In both cases, the increase in required time is less than X times.
  • the required time when comparing reading of 1 byte and reading of 1000 bytes, the required time hardly changes even though the reading capacity is 1000 times. Further, when the operation between 1 byte and the operation between 4 bytes are compared, the required time is less than 1.5 times even though the number of bits handled at a time is 4 times. Put differently, number despite a two 32 times that can be handled, the required time is not less than 1.5 times.
  • the values of ⁇ and ⁇ are not X times just because the value of L is X times, and in recent storage media, this is especially expressed by ⁇ (time required to access the storage media). It is remarkable. More specifically, it can be said that this opening depends on the values of “Q of ⁇ ” and “I of ⁇ ”, in particular, the value of Q is small in recent storage media.
  • the first point to note is that there is no change in the value of KL even if the size of the element is increased. If the value of L, which is the size of the element, is X times, the value of S is reduced to 1 / X times, and the value of K is also reduced to 1 / X times. The value of K ⁇ L is offset by the decrease in K and the increase in L, and no change occurs. Therefore, it can be seen that “when only the size of the element is increased for the same number, the speed is improved, and the capacity of the storage medium required at this time is not particularly changed”.
  • the int type is a 4-byte variable
  • the long long int type is an 8-byte variable.
  • the time required for the calculation does not double.
  • the required time is about twice that of the int type operation. This is because operations between int types are executed twice. About these things, it seems that you can be convinced as a well-known fact.
  • Acceleration in terms of speed can be obtained when the size of each element is increased without using a segmented area such as an array or compound variable.
  • the improvements I made in the 96th to 113th paragraphs were roughly such.
  • the location of the elements in the improvements described in paragraphs 96 to 113 that is, the location of “basic data type other than 1-byte character type” is expressed as “arbitrary arbitrary number of consecutive bits”. If it can be replaced, it can be said that further speed improvements are obtained.
  • “Processing a sequence of consecutive bits all at once” is a combination of the four arithmetic operations provided in advance in the basic data type with AND operators, OR operators, XOR operators, bit shift operators, etc. To reproduce at the bit pattern level. To put it more simply, it means “make your own basic data type arithmetic operation function for a bit sequence longer than the basic data type”. In other words, it is only necessary to prepare two “regions longer than the basic data type” and reproduce the behavior as close as possible to the “four arithmetic operations included in the basic data type”.
  • the standard C ++ has a class called bitset.
  • bitset By using this class, “reserving a continuous sequence of bits longer than the basic data type” can also be used to collectively process a sequence of consecutive bits. Can also be solved.
  • binary file input / output can be used in the same way as a normal type, “expression on a storage medium other than memory” can be easily performed.
  • the 8-byte long long int type is the most efficient for integer calculations.
  • bitset a sequence of 9 or more consecutive bits is assigned, and the bit pattern required for any four arithmetic operations is assigned to this sequence.
  • the functions of the four arithmetic operations provided in advance in the long long int type can be reproduced at the bit pattern level. Since the long long int type is a sequence of 64 consecutive bits, it is only necessary to prepare two sequences of 72 or more consecutive bits and reproduce the behavior similar to the long long int type for the four arithmetic operations. By using bitset and various operators (&,
  • the improvement obtained by replacing the element with the “basic data type excluding the 1-byte character type” with the “arbitrary number of consecutive bits” is the above-mentioned improvement of the “1-byte character type It is the same quality as the improvement obtained by moving from "Numerical calculation using array” to "Numerical calculation using basic data type excluding 1-byte character type”.
  • the Q value that appears as ⁇ and the I value that appears as ⁇ depend on the performance of the hardware.
  • the value of T that appears as ⁇ depends on the memory.
  • the values of Q and I are improved by adopting “storage media other than memory with faster reading speed” and “higher performance processing device”, and adopt “memory with faster reading speed”. As a result, the value of is improved.
  • the improvement of the values of ⁇ and ⁇ while keeping the value of S means that only the time required for the unit of calculation processing is improved. Therefore, it can be said that the larger the total number of calculation processes, the more remarkable the improvement effect. It can be said that “the total number of calculation processes” is proportional to the value of K, and the value of K is proportional to the value of the number N to be expressed. Therefore, it can be understood that “the larger the number handled, the more remarkable the effect obtained by adopting high-performance hardware”. In other words, if the rate of increase of ⁇ and ⁇ is small in the first place, it is impossible to obtain a visible improvement for this point unless a certain number of numbers is handled.
  • providing an external device specialized for numerical computation using an array structure is an effective means for the subject of "handle larger numbers faster".
  • This device has “software that can execute the method according to claim 1”, and thereby performs numerical calculation using an array structure.
  • the method described in claim 2 or claim 3 is incorporated in this software as necessary.
  • the connection with the main computer should be feasible with known techniques. For example, connection using USB or wireless LAN is conceivable. In any case, it is desirable from the viewpoint of handling a larger number that a larger-capacity storage medium prepared for numerical calculation using an array structure is included in this device. Seem.
  • the value of Q can turn negative depending on the configuration of the apparatus. That is, faster access to the storage medium can be realized than when the main computer executes alone.
  • this device is responsible for all of the processing and cases where a part of the processing is performed auxiliary, but the operation contents are arranged in a single unit using a storage medium other than the memory by the main computer. This is the same as when performing numerical calculations using. The only difference is whether an external device does all of that or assists some. In any case, the processing content of the numerical calculation remains the same, only the place where it is executed is changed. As stated in the 132nd paragraph, in the numerical calculation using the array structure, since each digit is independent for a certain number of expressions, it is easy to share such processing at the software level. Such a combination of external devices can be regarded as a form of introduction of parallel processing if the viewpoint is changed.
  • the present invention can be realized by a plurality of computers connected by a network. For example, one main computer is determined, this computer is set as a UI, and the remaining computers are regarded as the external devices described above (FIG. 3).
  • FIG. 4 is an example of this, and 6 in FIG. 4 is a device that includes a plurality of the above-mentioned external devices.
  • the former should use decimal or hexadecimal notation for the purpose of the invention.
  • the latter is expanded to a maximum of 256 base.
  • the latter can be a character string by definition, but such a character string will be mixed with symbols other than numbers and so-called garbled characters, so it should no longer be a "character string that people can recognize as numbers". .
  • 256 types of characters must be properly used for each digit, and it is difficult to pass the number as intended from a person to a computer via such a character string.
  • bit sequence may be examined 32 bits at a time from the top, and the group that was 0 may be shifted left 32 bits and deleted. . It should be noted that this operation is facilitated by using a class called bitset provided in the standard C ++ mentioned in the 122nd paragraph. Specifically, functions are already provided for memory reservation, assignment, and bit shift. All that is required is an "approximate number of digits". As described above, such an approximation can be obtained by an equation for obtaining K.
  • the conversion process does not have to be executed every time an operation is performed, but should be performed once when a person passes a “character string regarded as a numerical value” to a computer and once when it is displayed.
  • a “character array for display” is prepared separately from the array of the main body, and each element is filled with “numeric value in decimal notation” and displayed. If the values of the array of the main body are not changed in this way, the calculation can be resumed without conversion after display.
  • the number that a person can input by inputting to the calculator via the UI should not be so large. For example, it is difficult to imagine a situation in which a person directly manually inputs a number of 100 million digits. Since such a large number of digits will not be handled, it can be said that the load of such conversion processing is not so much concerned with the input. When used by humans, it seems that the appearance of “a smaller value is entered and the number of digits expands as a result of repeated internal numerical calculations, and this is displayed as a result”. However, issues remain with regard to output. This is because an enormous number of digits can be displayed during output. When large numbers are frequently output, it is necessary to deal with them.
  • the character string can be displayed from the beginning, and the conversion process at the time of display can be completed with a smaller burden than when the number of characters is expanded to 2n .
  • the number that can be expressed is smaller than when the base is expanded to 2 n . For example, there are fewer numbers that can be represented by the same number of digits in the decimal system than in the 256-base system.
  • a character array having elements corresponding to the number of digits required for decimal notation is prepared. Aliquoted I than the digit number of elements that took this sequence 10 x ary notation. Each partition generated by equally dividing corresponds to each digit of the 10 x-ary. For each of the sections, conversion to decimal is completed if “10 x decimal digit values” are sequentially satisfied from the end in order from the end. Note that the remaining digits are filled with zeros.
  • the “character array expressing a certain number of decimal notation” thus formed can have a leading zero in the block including the largest digit in the 10 ⁇ decimal system, in other words, the leftmost digit. That is, one or more zeros can follow from the beginning. Therefore, it is necessary to detect an element in which a non-zero character appears for the first time, and prepend it so that this is the head. Since this display array is a character array, such an operation can be easily realized. A portion where a non-zero character appears for the first time may be used as the start address of the character string, and such an operation, that is, an operation of filling the character string forward is a known technique. Through this process, even if a plurality of 0s are arranged from the top, it should be possible to display without problems. Hereinafter, the above method will be described more specifically.
  • Table 1 shows a step-by-step process for converting the number xyz represented by three digits in decimal notation to decimal. It can be seen that the number that requires 3 digits in decimal notation does not exceed 6 digits in decimal notation.
  • a character array having six elements is prepared ((1) in Table 1). Since the number of digits required in the decimal system is 3, the 6 elements of the array are divided into 3 equal parts. Then, it can be classified in a state of two elements per section ((2) in Table 1). Each section can correspond to each digit in decimal notation ((3) in Table 1). After that, it is sufficient to fill with the value of each digit in the corresponding decimal notation in order from the last element of each section. Then, what is concrete about this "filling with the value of each digit in the corresponding decimal notation in order from the last element of each partition" is more concrete using Table 2. Let me tell you.
  • Table 2 shows a step-by-step process for converting a number represented as “123” in decimal notation into decimal notation. * In the table represents an arbitrary value.
  • a character array having six elements is prepared ((1) in Table 2). Dividing into three sections, each section is associated with each digit in decimal notation ((2) in Table 2). Specifically, the elements of subscript numbers [4] and [5] correspond to the first place from the right in decimal notation, and the elements of [2] and [3] correspond to the second place. , [0], [1] correspond to the third place.
  • [4] and [5] are filled with 3, [2] and [3] are filled with 2, and [0] and [1] are filled with “1” in order from the end of each partition. That is, 3 is assigned to [5], 2 is assigned to [3], and 1 is assigned to [1]. ((3) in Table 2). At this time, if there is an element to which nothing is assigned for each section, 0 is assigned. In other words, [4] in the operations [4] and [5], [2] in the operations [2] and [3], and 0 in [0] in the operations [0] and [1]. To do. ((4) in Table 2). This completes the conversion to decimal notation. However, since the top of the array is 0, this needs to be corrected. The character string is corrected by prepending it ((5) in Table 2). You can display this afterwards.
  • Such an operation can be executed sequentially from the first section.
  • it is necessary to consider the overflow must Ika doing the conversion operation from a small digits.
  • the 10x base system there is no overflow in conversion, so it is possible to perform conversion from a large place and display sequentially from the converted part.
  • the padding of characters since it can be understood that [0] [1] is the head, this operation may be performed only at the time of the first process.
  • decimal notation 123 since each digit is a numerical value, it is necessary to convert it into a character code when storing the numerical value in a character type array for display. This is the same even in cases other than the 10x base. For example, in Windows, characters from 0 to 9 are represented by 48 to 57. Therefore, in order to convert a numerical value of 0 to 9 into a displayable character of 0 to 9, it is necessary to add 48. As mentioned above, over the 143rd to 162nd paragraphs, the speeding up of the display has been described. Examples will be described below.
  • a decimal line is a char type means “a char type is an element in decimal notation”.
  • decimal notation is used for the purpose of the invention. Therefore, the “decimal” line in Table 3 is the value of each expression constituting V when trying to handle 10 10 ⁇ 12 in “numerical calculation using a character string that a person can recognize as a number”.
  • the number of digits required when 10 10 ⁇ 12 is expressed in decimal notation is (10 12 +1) digits. As it let me get one digit for simplicity rounding results in 10 12-digit i.e. that 1T digits necessary. This corresponds to the value of K.
  • one digit is represented by a 1-byte character type. That is, one element is represented by a 1-byte character type. This corresponds to the value of L. Therefore, the capacity of the storage medium required when 10 10 12 is expressed by the prior art is 1 TB with 1T elements of 1 byte. This corresponds to the value of KL.
  • K log 10 10 10 ⁇ 12 / log 10 10”. Therefore, the value of S is 1. Since the value of L is 1, the value of ⁇ is “R + Q + T”, and the value of ⁇ is “U”.
  • N ′ there are a number N ′ of exactly the same conditions, and N and N ′ are used for addition.
  • the required amount at the time of calculation is 2 TB. This corresponds to the sum of “KL of N” and “KL of N ′”.
  • the “unit of calculation” is addition, subtraction, integration, or division using a 1-byte character type. In this case, addition is performed using a 1-byte character type.
  • “Implicit recognition” corresponds to “access to storage medium” on the computer.
  • the time required to do this once is ⁇ .
  • “Addition between predetermined digits” is “calculation using two elements”, that is, “unit of calculation”. And the time required for doing this once is ⁇ .
  • will be executed at least 932G times and ⁇ will be executed at least 416G times. More specifically, it is understood that an operation of reading data of one element (in this case, 1 byte) from the storage medium is executed 932G times, and addition of one element is executed 416G times. In this case, the required amount at the time of calculation is 932G.
  • the need for about 416 GB to represent 10 10 ⁇ 12 in 256 base means that when 1 TB is used, a number about 256 584 G times can be expressed.
  • the time required for the numerical calculation should be almost the same as the time required for using 1 TB in the prior art. This is because the size of each element is the same, and the behavior of the elements is almost the same. “The behavior of the elements is almost the same” means “the same as the unit of calculation processing, except that the boundary of overflow is changed from 10 to 256”. “The number that can be expressed per one digit savings is 256 times”, and “the numerical calculation with the same number of digits does not change despite the increase in the number that can be handled”. That is.
  • FIG. 5 corresponds to the transition from (c) to (b).
  • Table 4 shows specific numerical values in the case of handling 10 10 ⁇ 12 in order from the smallest bottom size. The contents of each column are the same as in Table 3.
  • will be executed at least 208G times and ⁇ will be executed at least 104G times. More specifically, it is understood that an operation of reading data of one element (“4” bytes) from the storage medium is executed 208 G times, and addition of one element is executed 104 G times. The required amount at the time of calculation remains 932 GB.
  • the reason why the rate of increase of ⁇ and ⁇ approaches 1 is the miniaturization of Q and I, and I mentioned in paragraphs 52-60 that the miniaturization of Q and I is brought about by the improvement of hardware performance. Street. If the hardware performance continues to improve, further improvements should be expected in this area. If we look at this improvement in performance, it would be better to make the product operable with more hardware.
  • N 10 10 ⁇ 6
  • N is a number of 1 million digits.
  • Such calculation includes a lot of room for parallel processing.
  • Improvements that accompany the transition from char type to int type arise from the transition from int type to long long int type. Then, if it is possible to execute an arithmetic operation that is inferior to that of the basic data type for "arbitrary number of bits", the improvement that occurs with the transition from int type to long long int type will be long long int It should also occur when moving from type to “longer bit sequence”. As described in the 120th to 122th paragraphs, “to execute an arithmetic operation that is inferior to that of the basic data type” should be sufficiently realized by a known technique. This is because the algorithm employed in such an operation should be the same as that executed in the case of the char type or int type. An arbitrary sequence of bits should be subjected to "a series of fixed operations at the bit pattern level" according to the type of arithmetic operation.
  • Table 5 shows data when "addition using an area of an arbitrary length” is executed "in series” 1 million times using bitset.
  • the “required time” is the time required to execute addition one million times in series, and the unit is seconds.
  • “Rate 1” is a magnification of the area size based on 8 bits
  • “Rate 2” is a magnification of the required time based on 8 bits. I wanted to show from a global perspective that the time required is not X times just because the size of the element has increased X times, so the time required has been approximated.
  • Rate 1 means “16 times as large as the element size is 8 bits”.
  • Rate2 means that “the required time is about three times as long as 8 bits”. (Note again that these values are approximate. For example, this tripled value is obtained by dividing the 128-bit duration 0.16 by the 8-bit duration 0.06. Rounded up to the nearest whole number) Note that the required time has only tripled despite the fact that the element size has increased by a factor of 16. When applied to V, this means that “with the transition from 8 bits to 128 bits, an improvement of 1/16 is obtained for S, but ⁇ is only 3 times worse”.
  • the rightmost column in Table 5 represents the difference between Rate1 and Rate2. If the required time is X times as the element size is X times, this value should be zero and constant. However, this is not the case, and the value increases as the number of bits increases. Therefore, it can be seen that, generally, the difference between the improvement of S and the deterioration of ⁇ increases, and the degree of improvement increases. The value of the time required should change depending on the environment, but the behavior that the degree of improvement increases globally should be the same in any environment.
  • the challenge in this effort is“ how much wasteful behavior is achieved for the four arithmetic operations using two longer bit sequences ”. If high-speed processing with less waste than that using bitset can be realized by using an assembly language or the like, it is considered preferable to adopt that from the viewpoint of speed. This is because this part is most frequently executed. However, from the standpoint of “an improvement in hardware performance is unpredictable”, specifications that can be executed in more forms should be adopted. In implementation, the two should be compared and a method convenient for the purpose should be adopted.
  • the range of numbers that can be handled (e) The range of numbers that can be handled (f) Increasing click or by use of an external device, increased by a combination of a number in the range (g) a storage medium other than the memory that can be handled, ranging the number of which can be handled

Abstract

The present invention utilizes numerical values represented inside a computer in undecimal or higher positional notation to achieve an accurate numerical calculation of a larger number than in the prior art at a higher speed. The nature of the present invention is to pay attention to one having a high share among various costs in a numerical calculation utilizing an array structure and look for "an event such as improves another value while the deterioration of a specific value is kept small (or prevented from occurring)". By using the present invention, the upper limit of numbers that can be treated is dramatically improved. For example, as of 2016, by combining a personal computer and hardware that are generally on the market, such a level that "it becomes possible to perform a numerical calculation of tens of millions of figures to one trillion figures within a time that is not unrealistic" is reached.

Description

11進法以上の位取り記数法にてコンピュータ内部に表現された数値を用いた計算Calculations using numerical values expressed in the computer by the decimal notation method of the decimal system or higher
 本発明は配列構造を利用した数値計算に関するものである。より具体的には、任意の位取り記数法によりコンピュータ内部に表現された数値を利用して、より大きな数についての正確な数値計算をより高速に実現するものである。ソフトウェアによって「ハードウェアレベルでのビットの並び及びその挙動」を再現し、それを拡張し、以って演算を実行することで、より大きな数についての正確な数値計算をより高速に実現するものだとみなすこともできる。 The present invention relates to a numerical calculation using an array structure. More specifically, an accurate numerical calculation for a larger number is realized at a higher speed by using a numerical value expressed inside the computer by an arbitrary scale method. A software that reproduces the "order of bits and their behavior at the hardware level", extends it, and executes operations, thereby realizing accurate numerical calculations for larger numbers faster. It can be regarded as.
 先行技術の本質は、ソフトウェアと文字型を利用した「近似値を介さない10進法による計算」の実現である。従って、たとえ浮動小数点計算であったとしても「近似値によらない誤差のない演算」を実行できる。 The essence of the prior art is the realization of “decimal calculation without using approximate values” using software and character types. Therefore, even if it is a floating point calculation, “an error-free operation that does not depend on an approximate value” can be executed.
 コンピュータではハードウェアレベルでの数値表現に2進法が採用されているところ、先行技術は文字列を利用して任意の数を10進法表記にて表現し、更にこれで以って数値計算を実行する。より具体的には、1文字が10種類の数(人が数値として認識することのできる文字)を表すものと定義し、この文字の羅列、すなわち文字型の配列—文字列を用意し、これを任意の数の10進法表記とみなし、更にこの配列2つで以って数値計算を実行する。このとき、文字型の配列の要素一個一個が「10進法表記における1桁」を表すことになる。 In computers, binary systems are used to represent numerical values at the hardware level, and the prior art uses character strings to represent arbitrary numbers in decimal notation, and this allows numerical calculations. Execute. More specifically, it is defined that one character represents 10 types of numbers (characters that a person can recognize as a numerical value), and an array of these characters, that is, a character type array-character string is prepared. Is regarded as an arbitrary number of decimal notation, and further, numerical calculation is executed with the two arrays. At this time, each element of the character array represents “one digit in decimal notation”.
 あり得る要素の挙動を考えると、ソフトウェア上で「ハードウェアレベルのビットの並び及びその挙動」を再現し拡張したものと捉えることもできる。この観点からは、ハードウェアレベルで「1ビット」が2種類の数を表すところ、ソフトウェアを利用して「1文字」あたり10種類の表現にまで拡張させることで、「桁落ちを防ぐ」技術だと言える。言い換えると、ハードウェアレベルの表現では「1桁」が2種類の数を表すところ、ソフトウェア上で「1桁」あたり10種類の表現にまで拡張させ、「より大きな数を扱えるようにする」技術である。 Considering the behavior of possible elements, it can also be regarded as a reproduction and extension of the "Hardware level bit arrangement and its behavior" on software. From this point of view, “1 bit” represents two types of numbers at the hardware level, but the software is used to expand the expression to 10 types per “one character”, thereby preventing “digit loss”. I can say that. In other words, in the hardware level representation, “1 digit” represents 2 types of numbers, but the software expands to 10 types of representation per “1 digit”, and makes it possible to handle “larger numbers”. It is.
特開2004−178539公報JP 2004-178539 A
 先行技術には少なくとも三つの制約が潜在する。第一に「人が数値として認識できる文字列をそのまま扱う」という制約、第二に「データの保存場所にメモリを使う」という制約、第三に「”いわゆる基本データ型”を使用する」という制約、すなわち「既存の枠組みを利用する」という制約である。 There are at least three limitations in the prior art. First, the restriction of “handling a character string that humans can recognize as numerical values”, second, the restriction of “using memory as a data storage location”, and third, “using a so-called basic data type” It is a restriction, that is, a restriction of “using an existing framework”.
 先行技術を使えば、従来に比してより大きな数を近似値を用いずに取り扱うことができるようになるが、これら三つの制約が扱うことのできる数の範囲を理論面から、そして実用面から狭くしている。 Using the prior art, it becomes possible to handle a larger number without using approximate values than in the past, but the range of numbers that these three constraints can handle is theoretically and practically used. It is narrowed from.
 「人が数値として認識できる文字」という制約のため、1バイトで256種類の数を表現できるところが、10種類までに限定されてしまっている。これによって、扱うことのできる数の範囲が狭くなっている。 ”Because of the restriction of“ characters that people can recognize as numerical values ”, 256 types of numbers can be expressed in 1 byte, but it is limited to 10 types. This narrows the range of numbers that can be handled.
 先行技術では「文字列を使って表現する数」の桁が増えるほど、必要となるメモリの容量が大きくなっていく。「データの保存場所にメモリを使う」という制約が、「表現できる数の限界」を、理論面では「メモリ容量の範囲内」へ、実用面では「利用可能なメモリ容量の範囲内」へと狭めてしまっている。 In the prior art, the required memory capacity increases as the number of “numbers expressed using character strings” increases. The restriction of “use memory for data storage location” has changed the “limit of the number that can be expressed” to “within the range of memory capacity” in theory, and “within the range of available memory capacity” in practical terms. It has narrowed.
 先行技術によって実現される数値計算では、桁の数が増えるほど「実行される処理の単位」の総数が増えていく。従って、この「実行される処理の単位」に要する命令の数を少なくすることができれば、同じ数について、より高速な数値計算を実現できるはずである。ソフトウェアを介してコンピュータ上で演算を行う際、基本データ型は処理の単位となるが、「基本データ型の使用」から脱却することによって、この高速化を実現できる。例えば、文字型2つを用いた演算をX回実行するよりも、「文字型X個分の大きさの変数あるいは領域」2つを用いた演算を1度実行した方が、同じ数についてより高速であり得るということである。先行技術における「基本データ型を使用する」という暗黙の制約が、数値計算の処理を重くし、「より膨大な数についての数値計算が、より実用的な速度にて実行される」という可能性を狭めていると言える。 In the numerical calculation realized by the prior art, the total number of “units of processing executed” increases as the number of digits increases. Therefore, if the number of instructions required for the “unit of processing to be executed” can be reduced, higher-speed numerical calculation should be realized for the same number. When performing calculations on a computer via software, the basic data type becomes a unit of processing, but this speedup can be realized by moving away from “use of basic data type”. For example, rather than executing an operation using two character types X times, it is better to execute an operation using two “variables or areas of the size of X character types” once for the same number. It can be fast. The implicit restriction of “use basic data type” in the prior art makes the numerical calculation processing heavy, and the possibility that “numerical calculations for larger numbers are performed at a more practical speed” It can be said that it is narrowing.
 先行技術を位取り記数法の立場から眺め、その観点からその技術的思想に洗練を施すことによって、一桁で表現することのできる数の種類を増加させ、結果として扱うことのできる数を増加させる。同時に、同じ数についてより少ない容量で表現することを可能にする。 By looking at the prior art from the standpoint numbering system and refining the technical idea from that viewpoint, the number of types that can be expressed in single digits is increased and the number that can be handled as a result is increased. Let At the same time, the same number can be expressed with less capacity.
 現在のハードウェアは先行技術が発明されたときに比べ性能が高い。先行技術が発明されたときには存在していなかったような現在の記憶媒体を取り入れ、数値計算に使用するデータの保存場所をこの記憶媒体へと移行させることによって、扱うことのできる数の上限についての制約を「メモリ容量」から「メモリ以外の記憶媒体の容量」へと置き換える。結果として、増加した容量の分だけ扱うことのできる数の上限が増加する。同時に、メモリ上での他のアプリケーションとの競合を避けることができるようになる。また、メモリに余裕が生じることで、並列処理を取り入れ易くもなる。これらのことは、実用化及び高速化の観点から課題解決の手段となる。 The current hardware has higher performance than when the prior art was invented. By taking the current storage medium that did not exist when the prior art was invented and moving the data storage location used for numerical calculations to this storage medium, the upper limit of the number that can be handled Replace the constraint from “memory capacity” to “capacity of storage medium other than memory”. As a result, the upper limit of the number that can be handled by the increased capacity increases. At the same time, it becomes possible to avoid contention with other applications on the memory. Moreover, it becomes easy to take in parallel processing because a margin arises in memory. These are means for solving the problems from the viewpoints of practical use and high speed.
 ハードウェアレベルでの演算処理は、扱うビットの数が増加したからといって、その分だけ所要時間も増加するといったことが起こらない。一方、表現することのできる数は扱うビットの数が1つ増える毎に倍加して行く。この性質を利用すれば、「同じ数については、より高速な処理」を扱うことができるようになり、「同じ時間では、より大きな記憶容量と引き換えに、より大きな数」を扱うことができるようになる。連続する任意の数のビットの並びに対して、「基本データ型に予め備わっている四則演算処理」を模した処理を施すことで、この高速化を実現する。より具体的には、基本データ型の機能の一部を模した型を作成し、これを「配列構造を利用した数値計算」における要素として用いることで、「同じ数についてはより高速な数値計算」を「同じ時間では、より大きな記憶容量と引き換えに、より大きな数の数値計算」を実現する。 The calculation processing at the hardware level does not increase the required time by the number of bits handled. On the other hand, the number that can be expressed doubles every time the number of bits to be handled increases by one. By using this property, it will be possible to handle “higher speed processing for the same number”, and “larger numbers in exchange for larger storage capacity at the same time”. become. This speeding-up is realized by applying a process simulating “an arithmetic operation process provided in advance in the basic data type” to an arbitrary number of consecutive bits. More specifically, by creating a type that imitates a part of the basic data type function and using it as an element in "Numerical calculation using an array structure", "Faster numerical calculation is possible for the same number" "At the same time, a larger number of numerical calculations in exchange for a larger storage capacity".
 簡単に言うと、「”いわゆる基本データ型”を使用する」という制約を廃すことで、この高速化を実現する。 To put it simply, this speedup is achieved by removing the restriction of “using so-called basic data types”.
 先行技術に比して、取り扱うことのできる数の上限が飛躍的に向上する。 Compared to the prior art, the upper limit of the number that can be handled is dramatically improved.
 例えば、2016年現在、市場に一般に出回っているようなパーソナルコンピュータやハードウェア(GPUや高性能なハードディスク)を組み合わせるだけで、非現実的でない時間内に数千万桁から1兆桁の数値計算を行わせることが可能となる。数百万~数千万個の連続したビットの並びの処理に過ぎないからである。 For example, by combining personal computers and hardware (GPU and high-performance hard disks) that are generally on the market as of 2016, numerical calculations of tens of millions to trillions of digits in unrealistic time Can be performed. This is because it is merely processing a sequence of millions to tens of millions of consecutive bits.
 そして、本発明は連結された複数のノードが協調して作動するシステムにも反映させることができるはずである。この場合には、扱うことのできる数の範囲及び速度について、更なる向上が見込まれる。 And, the present invention should be able to be reflected in a system in which a plurality of connected nodes operate in cooperation. In this case, further improvements are expected in the range and speed of numbers that can be handled.
入出力時の10進法表記への変換の概念図。The conceptual diagram of the conversion to the decimal notation at the time of input / output. 「主たるコンピュータ」と「数値計算を独立に実行あるいは補助する装置」を例示的した図。The figure which illustrated "the main computer" and "the apparatus which performs or assists numerical calculation independently". ネットワーク上の主たるコンピュータと従属するコンピュータ。ネットワークを利用して配列構造を利用した数値計算を実行する様を例示した図。A computer that is subordinate to the main computer on the network. The figure which illustrated performing a numerical calculation using an array structure using a network. 「主たるコンピュータ」と「図2を複数内包する装置」を例示した図。The figure which illustrated "the main computer" and "the apparatus which contains two or more in FIG. 2". 扱うことのできる数の範囲の観点から、発明を段階的に示した図。The figure which showed invention in steps from the viewpoint of the range of the number which can be handled.
 以下の定義で以って、頻繁に使用する概念の表現を簡略化させて頂く。
第一に、「配列構造を利用した数値計算」の定義について述べる。先行技術の「人が数として認識することのできる文字列」を利用した数値計算、本発明の「基本データ型を要素とする配列」あるいは「配列構造に見立てた連続する任意の数のビットの並び」を利用した数値計算のことを、「配列構造を利用した数値計算」と呼ばせて頂くこととする。
The following definitions simplify the expression of frequently used concepts.
First, the definition of “numerical calculation using array structure” will be described. Numerical calculation using the “character string that can be recognized as a number” by the prior art, “array having basic data type as an element” or “arbitrary arbitrary number of bits based on an array structure” The numerical calculation using “arrangement” is referred to as “numerical calculation using an array structure”.
 第二に、「要素」の定義について述べる。ある数のP進法表記と見做した「基本データ型を要素とする配列」あるいは「配列構造に見立てた任意の数のビットの並び」について、P進法表記の1桁に相当する部分のことを「要素」と呼ばせて頂くこととする。先行技術の「人が数として認識することのできる文字列を利用した数値計算」においては、1文字すなわち1バイトの文字型が要素に相当する。基本データ型の配列を利用した数値計算においては、配列内の各要素が要素に相当する。配列構造に見立てた任意の数のビットの並びを利用した数値計算においては、1桁を表すと定義し、区分けした1区画が要素に相当する。 Second, the definition of “element” will be described. "An array with basic data type as an element" or "arbitrary number of bits arranged in an array structure" regarded as a certain number of Pn base notation corresponds to one digit in Pn base notation Let's call this part an "element". In the prior art “numerical calculation using a character string that a person can recognize as a number”, a character type of one character, that is, one byte corresponds to an element. In numerical calculation using an array of the basic data type, each element in the array corresponds to an element. In numerical calculation using an arbitrary number of bits arranged as an array structure, it is defined to represent one digit, and one divided section corresponds to an element.
 第三に、「計算処理の単位」の定義について述べる。「先行技術の文字列を利用した数値計算」または本発明の「配列あるいは配列に見立てた連続する任意の数のビットの並びを利用した数値計算」において、四則演算を行う際の単位となる一連の処理のことを「計算処理の単位」と呼ばせて頂くこととする。一連の処理の内容は四則演算の種類によって変わる。加算においては「ある桁同士を加え合わせる処理」、減算においては「ある桁同士を減ずる処理」、積算においては「ある桁と別のある桁とを積算する処理」、除算においては、「割る対象となる数から、配列構造を利用した数値計算による1回の減算を実行する処理」のことである。 Third, the definition of “unit of calculation processing” will be described. A series as a unit for performing four arithmetic operations in “numerical calculation using a character string of a prior art” or “numerical calculation using an arbitrary number of consecutive bits arranged in an array or array” of the present invention This process is referred to as a “unit of calculation processing”. The content of the series of processing varies depending on the type of arithmetic operation. In addition, “addition of digits” is subtracted, “subtraction of digits” is subtracted, “addition of one digit and another digit” is added in integration, Is a process of performing one subtraction by numerical calculation using an array structure from the number “.”
 より単純には、我々が紙面上で筆算を行う際に単位とみなすことができる計算のことである。加算、減算、積算については、各桁同士についての計算を「計算処理の単位」とみなす。除算については、われわれが商に新たな桁を記入する際に実行する「積算と減算」を「減算の繰り返し」とみなし、この繰り返される減算の内の1回を「計算処理の単位」とみなす。 More simply, it is a calculation that we can consider as a unit when performing a calculation on paper. For addition, subtraction, and integration, calculation for each digit is regarded as a “unit of calculation processing”. With regard to division, the “accumulation and subtraction” that we perform when entering a new digit in the quotient is regarded as “repetition of subtraction”, and one of these repeated subtractions is regarded as “unit of calculation processing” .
 第四に、「計算処理の総数」の定義について述べる。配列構造を利用した数値計算において、四則演算の内のある演算を行った際に実行される、前述の計算処理の単位の総数のことを「計算処理の総数」と呼ばせて頂くこととする。この値は、同じ2数に対する数値計算であったとしても、演算の種類によって異なる。 Fourth, the definition of “total number of calculation processes” will be described. In the numerical calculation using the array structure, the total number of the above-mentioned calculation processing units executed when a certain arithmetic operation is performed is referred to as the “total number of calculation processing”. . Even if this value is a numerical calculation for the same two numbers, it differs depending on the type of calculation.
 第五に、「表現時必要量」の定義について述べる。配列構造を利用した数値計算において、ある数Nを表現するのに最低限必要となる容量のことを「表現時必要量」と呼ばせて頂くこととする。 Fifth, the definition of “required amount for expression” will be described. In the numerical calculation using the array structure, the minimum capacity required to express a certain number N is referred to as “required amount during expression”.
 第六に、「計算時必要量」の定義について述べる。配列構造を利用した数値計算を実行するのに、最低限必要となる容量のことを計算時必要量と呼ばせて頂くこととする。ある数Nとある数N´とを用いて数値計算を実行する際の計算時必要量は「Nの表現時必要量」と「N´の表現時必要量」との和である。 Sixth, the definition of “Required amount for calculation” will be described. Let us say that the minimum required capacity for performing numerical calculations using the array structure is called the necessary amount at the time of calculation. The required amount at the time of performing numerical calculation using a certain number N and a certain number N ′ is the sum of “required amount when expressing N” and “required amount when expressing N ′”.
 この値は「数値計算を実行するのに最低限必要となる容量」のことであり、計算結果を保存する領域は考慮に入れていないことに留意されたい。計算時必要量だけで計算結果の確保までやろうとするのであれば、2数を表す領域のいずれかを「計算結果を格納する領域」とみなし、これを書き換えながら実行していくことになる。しかし、これだと桁溢れに対応できなくなるので、確実に桁溢れに対応させるのであれば、計算時必要量とは別に格納のための領域を確保する必要がある。 Note that this value is the "minimum capacity required to perform numerical calculations" and does not take into account the area for storing the calculation results. If the calculation result is to be secured only by the necessary amount at the time of calculation, one of the areas representing the two numbers is regarded as an “area for storing the calculation result” and is executed while rewriting it. However, since it becomes impossible to cope with overflow, it is necessary to secure an area for storage separately from the necessary amount at the time of calculation if the overflow is surely handled.
 以上の定義を踏まえ、実施の形態を述べさせて頂く。なお、35ページの表8に「実施の形態の概観」を記載させて頂いた。34ページの表6には「頻繁に使用する語の定義」を、表7には「頻繁に使用する式の意味等」をまとめて記載させて頂いた。また、図面1/2の図5は「発明の概観」である。読み進めていく上でこれらを参照されたい。式の意味についてはこれより先、具体的に述べさせて頂く。
本発明の数値計算の実現可能性は「要求される容量」と「計算にかかる時間」にかかっている。これらの値が十分に現実的な値であれば、実現可能なはずである。どのような状況でこれらの値が現実的であるか見ていく。以下、「要素の総数」、「記憶媒体へのアクセスに要する時間」、「計算処理の単位を実行するのに要する時間」の3つの要素について述べる。
The embodiment will be described based on the above definitions. In Table 8 on page 35, “Overview of the embodiment” is described. Table 6 on page 34 summarizes “definitions of frequently used words” and Table 7 summarizes “meaning of frequently used expressions”. FIG. 5 of FIG. 1/2 is “Overview of the Invention”. Please refer to these as you continue to read. I will explain the meaning of the formula more concretely.
The feasibility of the numerical calculation of the present invention depends on “required capacity” and “time required for calculation”. If these values are sufficiently realistic, it should be feasible. We will see under what circumstances these values are realistic. Hereinafter, the three elements of “total number of elements”, “time required to access the storage medium”, and “time required to execute the unit of calculation processing” will be described.
 まず、要素の総数について述べる。「要素の総数」を「K」とおく。要素の総数はある数NをP進法で表そうとしたときの桁数に一致する。よってKを次のように表すことができる。
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-I000002
Figure JPOXMLDOC01-appb-M000003
これより、Pの値が大きければ大きいほどSの分母が大きくなり、Kの値すなわち「要素の総数」が少なくなるということが分かる。
First, the total number of elements will be described. “Total number of elements” is set to “K”. The total number of elements coincides with the number of digits when an attempt is made to express a certain number N in Pn base. Therefore, K can be expressed as follows.
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-I000002
Figure JPOXMLDOC01-appb-M000003
From this, the denominator of the S is increased the larger the value of P n, it can be seen that the value of K that is "the total number of elements" less.
 次に、「記憶媒体へのアクセスに要する時間」について述べる。コンピュータのメモリ領域から1バイト読み取るのに要する時間を「T」とする。 Next, we will describe “time required to access the storage medium”. The time required to read one byte from the memory area of the computer is “T”.
 メモリ以外の記憶媒体と通信を確立するのに要する時間を「R」とする。例えばファイル入出力処理におけるファイルオープンに要する時間がRである。「メモリ以外の記憶媒体から1バイト読み取るのに要する時間」と「メモリから1バイト読み取るのに要する時間」との差分を「Q」とする。例えば、「ファイルオープンに要する時間を除く、当該ファイルから1バイト読み取るのに要する時間」と「メモリから1バイト読み取るのに要する時間」との差分のことである。一般に記憶媒体から読み取る容量がX倍になったからといって、読み取りに要する時間もX倍になるといったことはない。従って、Qはとても小さいといえる(Q<<1)。 “R” is the time required to establish communication with a storage medium other than the memory. For example, the time required for opening a file in the file input / output process is R. The difference between “time required to read 1 byte from a storage medium other than memory” and “time required to read 1 byte from memory” is defined as “Q”. For example, the difference between “time required to read 1 byte from the file excluding time required to open the file” and “time required to read 1 byte from the memory”. In general, just because the capacity of reading from a storage medium has increased X times, the time required for reading does not increase X times. Therefore, it can be said that Q is very small (Q << 1).
 配列構造を利用した数値計算において、1要素当たり「L」バイト使用するとき、すなわち1桁を表現するのにLバイト使用するとき、1要素当たりの「記憶媒体へのアクセスに要する時間」、言い換えれば、「記憶媒体から1要素を読み取るのに要する時間」はR、L、Q、Tを用いて表現すると以下のようになる。
Figure JPOXMLDOC01-appb-M000004
In numerical calculation using an array structure, when “L” bytes are used per element, that is, when L bytes are used to represent one digit, “time required to access the storage medium” per element, in other words, For example, the “time required to read one element from the storage medium” is expressed as follows using R, L, Q, and T.
Figure JPOXMLDOC01-appb-M000004
 例えば、「先行技術の文字列を利用した数値計算」では、1バイトで1桁を表現する。よってこの場合のLの値は1で、式は次のようになるはずである。
Figure JPOXMLDOC01-appb-M000005
For example, in “numerical calculation using a character string of the prior art”, one digit is expressed by one byte. Therefore, the value of L in this case is 1, and the formula should be as follows.
Figure JPOXMLDOC01-appb-M000005
 次に、「計算処理の単位に要する時間」について述べる。 Next, “Time required for the unit of calculation processing” will be described.
 1バイトの要素を用いて計算処理の単位を実行した場合に要する時間を「U」とする。要素の大きさが1バイト大きくなる毎に増加する所要時間を「I」とする。 Suppose that the time required to execute a unit of calculation processing using a 1-byte element is “U”. The required time that increases every time the element size increases by 1 byte is defined as “I”.
 一般に、一度に演算処理するビット数がX倍になったからといって、処理に要する時間もX倍になるといったことはなく、その増加率はわずかである。例えばC言語では、8バイトのlong long int型同士の演算処理に要する時間が、4バイトのint型同士の演算処理に要する時間の2倍になるといったことはなく、その増加率は1.5倍程度にも満たない。従って、Iの値はとても小さいと言える(I<<1)。Iの値がとても小さくなることについては、197段落にてより具体的に述べさせて頂く。 Generally, just because the number of bits to be processed at a time has increased X times, the processing time does not increase X times, and the rate of increase is slight. For example, in C language, the time required for arithmetic processing between 8-byte long long int types is not twice the time required for arithmetic processing between 4-byte int types, and the rate of increase is 1.5. Less than double. Therefore, it can be said that the value of I is very small (I << 1). The fact that the value of I becomes very small will be described more specifically in paragraph 197.
 IとUを用いて、計算処理の単位の所要時間を表す。1要素あたりLバイト使用する場合、言い換えると1桁を表現するのにLバイト使用する場合の「計算処理の単位に要する時間」は以下のようになる。
Figure JPOXMLDOC01-appb-M000006
I and U are used to represent the time required for the unit of calculation processing. When using L bytes per element, in other words, when using L bytes to represent one digit, the “time required for the unit of calculation processing” is as follows.
Figure JPOXMLDOC01-appb-M000006
 例えば、先行技術の文字列を利用した数値計算では、1桁を1バイトで表現するので、上記の式は以下のようになる。
Figure JPOXMLDOC01-appb-M000007
For example, in the numerical calculation using the character string of the prior art, one digit is expressed by 1 byte, and the above formula is as follows.
Figure JPOXMLDOC01-appb-M000007
 ある数NをP進法で表現するとき、1桁をLバイトで表現するなら、必然的に28L進法になるのではないかと思われるかもしれないが、必ずしも28L進法を採用する必要はない。 When expressing a certain number N in P n-ary, if expressed one digit at L bytes, inevitably you might think might become the 2 8L ary necessarily adopt 2 8L ary do not have to.
 最たる例は、先行技術の「人が数として認識することのできる文字列を利用した数値計算」と、後述する「人が数として認識することの“できない”文字列を利用した数値計算、すなわち1バイトの変数を要素とする配列を利用した数値計算」との比較である。前者では発明の趣旨から10進法あるいは16進法で数を表すことが伺える。一方、後者では最大256進法で数を表す。しかし、両者共に1桁を1バイト(2ビット)で表現する。 The best examples are the prior art “numerical calculation using a character string that a person can recognize as a number” and “numerical calculation using a character string that cannot be recognized by a person as a number” described later, This is a comparison with “Numerical calculation using an array of 1-byte variables”. It can be said that the former expresses numbers in decimal or hexadecimal notation for the purpose of the invention. On the other hand, in the latter, a number is expressed in a maximum 256-decimal system. However, in both cases, one digit is expressed by 1 byte ( 28 bits).
 このように、1桁を表現するのにLバイト使用する場合、Lバイトで表現できる数を全て使い切らずに、使用する数の範囲を定めることも可能である。どのような範囲とするかは、目的によって変わる。 In this way, when L bytes are used to represent one digit, it is possible to define the range of numbers to be used without using up all the numbers that can be represented by L bytes. The range depends on the purpose.
 より高いパフォーマンスを追及するのであれば、Lバイトで表現できる数を全て使うべきである。この手法を使って、より多くのプログラマが手軽に開発することを目的とするのであれば、プログラマが触れる箇所では10進法を採用し、内部処理ではより大きな底を採用するという体裁をとるのが良いと思われる。 If you want to pursue higher performance, you should use all numbers that can be expressed in L bytes. If this method is used for the purpose of easy development by more programmers, the decimal system should be adopted where the programmer touches, and the larger base should be adopted for internal processing. Seems good.
 応用として、数の表示処理を高速化させるために、10進法を採用する、という状況も考えられる。10進法を使った表示の高速化については後述させて頂く(143段落~)。 As an application, in order to speed up the display processing of numbers, a situation where a 10n- ary system is adopted may be considered. The speeding up of the display using the 10n- ary system will be described later (from paragraph 143).
 以下、「要素の総数」、「記憶媒体へのアクセスに要する時間」及び「計算処理の単位を実行するのに要する時間」に関わる値の変化について見ていく。 Hereinafter, changes in values related to “total number of elements”, “time required to access a storage medium”, and “time required to execute a unit of calculation processing” will be described.
 第一に、Kの値の変化について述べる。Kは「要素の総数」を表す。ある数NをP進法にて扱おうとした場合のKの値は、log( )Nである。この式の底を10に変換したときの分母がSである。よってPの値が大きくなるほどSの値は小さくなる。Sの値が小さくなるということはKの値が小さくなるということであり、Kの値が小さくなるということは、要素の総数が少なくなるということである。要素は、ある数Nをコンピュータ上でP進法にて表現する場合の1桁を表す。よって、要素の総数が少なくなるということは、ある数を表現するのに要する桁の数が少なくなるということであり、このことは「計算処理の総数が減少すること」と同義である。 First, changes in the value of K will be described. K represents “total number of elements”. The value of K in the case of a certain number N tried to deal with P n-ary is log (P n) N. The denominator when the base of this equation is converted to 10 is S. Therefore, the value of S decreases as the value of Pn increases. A decrease in the value of S means a decrease in the value of K, and a decrease in the value of K means that the total number of elements decreases. The element represents one digit in the case where a certain number N is expressed on the computer by Pn base. Therefore, reducing the total number of elements means that the number of digits required to express a certain number is reduced, and this is synonymous with “decreasing the total number of calculation processes”.
 我々が紙面上で行う筆算に当てはめて言えば、桁の数が少なくなるほど、各桁を利用した演算の総回数が減るが、これを位取り記数法の底を変えることで、演算の内容は同じままに実現できるということである。底を上昇させて筆算を行うことは、我々にとってむしろ不便に感じられるが、これは我々が10進法以外の扱いに不慣れだからである。一方、コンピュータにはこのような不便だという感覚はなく、文字通り機械的な実行が可能である。我々が特定のビットパターンに特定の意味を持たせたところで、コンピュータにとっては「nビットの並び」のままである。我々が1バイトに「10種類の数を表す」という意味を持たせたところで、コンピュータにとっては「8ビットの並び」のままである。 Speaking of the calculation that we do on paper, the smaller the number of digits, the less the total number of operations using each digit, but by changing the bottom of the scaled number method, the content of the operation is It can be realized as it is. It is rather inconvenient for us to raise the bottom and perform calculations, because we are not used to anything other than decimal. On the other hand, there is no such inconvenience in computers, and literally mechanical execution is possible. Where we give a particular meaning to a particular bit pattern, it remains an “n-bit sequence” for the computer. Where we have the meaning of “representing 10 types of numbers” in one byte, it remains “an 8-bit sequence” for computers.
 上記のKの値の変化は「Pの値が増加すると、計算処理の総数が減少する」と約めることができる。本発明と対応させた表現で以って換言すると、「配列構造を利用した数値計算において、ある数NをP進法で表現しようとするとき、Pの値が大きくなるにつれて、計算処理の総数が減少する」となる。 The above change in the value of K can be approximated as “the total number of calculation processes decreases as the value of P n increases”. In other words I than in representation in correspondence with the present invention, as in the numerical calculation using the "array structure, when attempting to express a certain number N in P n ary, the value of P n increases, the computing The total number will decrease. "
 また、Kの値はlog10Nの値にも左右される。log10NはNの値に左右される。Nの値は取り扱う数を表している。取り扱う数が大きければ大きい程、Nの値は大きくなる。よって、取り扱う数が大きければ大きい程、Kの値は大きくなると分かる。このことを本発明と対応させた表現で以って換言すると、「配列構造を利用した数値計算において、扱う数すなわち配列構造で以って表現しようとする数が大きくなる程、Kの値は大きくなる。これは、log10Nの値が大きくなるためである」となる。 The value of K also depends on the value of log 10 N. log 10 N depends on the value of N. The value of N represents the number to be handled. The larger the number handled, the greater the value of N. Therefore, it can be understood that the larger the number handled, the larger the value of K. In other words, the expression corresponding to the present invention is expressed as follows: “In numerical calculations using an array structure, the larger the number to be handled, that is, the number to be expressed by the array structure, the value of K becomes “This is because the value of log 10 N increases.”
 以上、43~47段落にわたって申し上げた、Kの値を変化させる2つの事由をまとめて、「配列構造を利用した数値計算において、Kの値はPの値が大きくなるほど小さくなり、Nの値が大きくなるほど大きくなる」と言うことができる。 As described above, the two reasons for changing the value of K mentioned in paragraphs 43 to 47 are summarized as follows: “In the numerical calculation using the array structure, the value of K decreases as the value of P n increases, and the value of N It can be said that it increases as the value increases.
 なお、Pの値は限られるものと思われる。1桁をnビットで表そうとするとき、最大で2通りの数を表現することができる。nビットで表すことのできる数を全て使いきるのなら、Pの値は2である。ここから、用途に応じて底の値を2より小さな値に調整することになるが、おそらく10進法に限定することが一般的だと思われる。このことについては「表示の高速化」として143段落から述べさせて頂く。今申し上げたいことは、Pの値は2または10となる可能性が高いということである。 Note that the value of P seems to be limited. When one digit is expressed by n bits, a maximum of 2 n numbers can be expressed. The value of P is 2 if all the numbers that can be represented by n bits are used up. From here, it will adjust the value of the bottom to a value smaller than 2 n depending on the application, it seems generally probably be limited to 10 x ary. This will be described from paragraph 143 as “speeding up display”. What I want to say now is that the value of P is likely to be 2 or 10.
 第二に、Lの値の変化について述べる。Lの値は配列構造を利用した数値計算において、コンピュータ上である数NをP進法で表現しようとするとき、1桁を表現するのに必要となるバイト数である。Pの値が大きくなればなる程、つまり1つの要素が表す数が増加する程、Lの値は段階的に大きくなっていく。 Second, the change in the value of L will be described. The value of L is the number of bytes required to express one digit when trying to express the number N on the computer in the Pn base notation in the numerical calculation using the array structure. The larger the value of P n , that is, the greater the number represented by one element, the larger the value of L increases.
 本発明と対応させた表現で以って換言すると、「配列構造を利用した数値計算において、ある数NをP進法で表現しようとするとき、Pの値が大きくなるにつれて、1桁を表現するのに必要となる容量たるLの値が大きくなる」となる。なお、nとLの間には以下の不等式が成立する。
Figure JPOXMLDOC01-appb-M000008
In other words, in an expression corresponding to the present invention, “in numerical calculation using an array structure, when a certain number N is to be expressed in the Pn- ary system, one digit increases as the value of Pn increases. The value of L, which is the capacity required to express “is increased”. The following inequality holds between n and L.
Figure JPOXMLDOC01-appb-M000008
 第三にR、Q、Tの値の変化について述べる。 Thirdly, changes in the values of R, Q, and T will be described.
 Rはメモリ以外の記憶媒体と通信を確立するのに要する時間である。Qは「メモリ以外の記憶媒体から1バイト読み取るのに要する時間」と「メモリから1バイト読み取るのに要する時間」との差分である。従って、R、Qの値は共にハードウェア性能に左右されることになる。採用する「メモリ以外の記憶媒体のアクセス速度」が高速である程、R及びQの値は小さくなる。 R is the time required to establish communication with a storage medium other than the memory. Q is the difference between “time required to read 1 byte from a storage medium other than memory” and “time required to read 1 byte from memory”. Accordingly, the values of R and Q are both affected by hardware performance. The higher the “access speed of the storage medium other than the memory” employed, the smaller the values of R and Q.
 なお、「メモリ以外の記憶媒体のアクセス速度」がメモリアクセスよりも高速な場合にはQの値は負に転ずる。これは例えば、配列構造を利用した数値計算に特化した外付けデバイス(図2の5)を作成した場合に起こりうる。より具体的には、係る外付けデバイスが「本体のメモリ性能を上回る記憶媒体」、「演算処理装置」及び「配列構造を利用した数値計算を実行するためのソフトウェア」を内包しており、「メインとなるコンピュータからの要求に応じて数値計算を独立して実行し、結果をメインとなるコンピュータへと返す」という体裁を取る場合である。 Note that if the “access speed of the storage medium other than the memory” is faster than the memory access, the value of Q turns negative. This can occur, for example, when an external device (5 in FIG. 2) specialized for numerical calculation using an array structure is created. More specifically, the external device includes “a storage medium that exceeds the memory performance of the main body”, “arithmetic processing device”, and “software for executing numerical calculations using an array structure”. In this case, the numerical calculation is performed independently in response to a request from the main computer and the result is returned to the main computer.
 Tの値はメモリ領域から1バイト読み取るのに要する時間である。よって、Tの値はメモリ性能に左右されることになる。性能が低いメモリを採用する程、Tの値は大きくなり、性能が高いメモリを採用する程、Tの値は小さくなる。 T value is the time required to read 1 byte from the memory area. Therefore, the value of T depends on the memory performance. The value of T increases as the memory with lower performance is employed, and the value of T decreases as the memory with higher performance is employed.
 以上より、R、Q、Tの値はハードウェアの性能に左右されるということ分かる。 From the above, it can be seen that the values of R, Q, and T depend on the hardware performance.
 ソフトウェア面からハードウェア性能を直接的に改善させることは困難である。ソフトウェア面からなしうることがあるとすれば、「メモリ以外の記憶媒体へのアクセス方法を選択すること」である。例えば、ファイル入出力用に用意されたAPIを採用するのか、フォーマット用のAPIを採用するのか、アセンブリ言語を採用するのか、といった具合である。アクセス方法によってR及びQの値は異なるはずである。 It is difficult to improve hardware performance directly from the software side. If there is something that can be done from the viewpoint of software, it is “selecting an access method to a storage medium other than the memory”. For example, whether to use an API prepared for file input / output, whether to use an API for formatting, or an assembly language. Depending on the access method, the values of R and Q should be different.
 ソフトウェア面からハードウェア性能を直接的に改善しようとする試みは一般的かつ現実的な取り組みではないように思われるが、より高性能なハードウェアを取り入れることは一般的かつ現実的であり、同時に好都合な事実を伴う。好都合な事実とは、種々のハードウェアの性能が上昇を続けてきたということである。 While attempts to improve hardware performance directly from a software perspective do not appear to be a general and realistic approach, incorporating higher performance hardware is common and practical, while at the same time With favorable facts. The favorable fact is that the performance of various hardware has continued to rise.
 本発明自体、先行技術が発明された時よりも飛躍的に「記憶媒体へのアクセス速度が上昇した」という事実と、「容量が大きくなった」という事実に依っている。今後も性能の改善が続くのであれば、配列構造を利用した数値計算において、「当時—現在」間で成立する改善が「現在—未来」間についても成立するはずである。 The present invention itself relies on the fact that “the access speed to the storage medium has increased” and the “capacity has increased” much more than when the prior art was invented. If the performance improvement will continue in the future, in the numerical calculation using the array structure, the improvement that is established between “current and present” should also be realized between “present and future”.
 第四に、I及びUの値の変化について述べる。「1バイトの要素を用いて計算処理の単位を実行した際に要する時間」がU、「扱う要素の大きさが1バイト増える毎に増加する所要時間の増加分」がIである。従って、UとIの値は演算処理装置の性能に左右されることになる。 Fourth, the change in I and U values will be described. “Time required to execute a unit of calculation processing using a 1-byte element” is U, and “Increase in required time that is increased every time the size of an element to be handled increases by 1 byte” is I. Therefore, the values of U and I depend on the performance of the arithmetic processing unit.
 これらの値については、並列処理を併用することで、ソフトウェア面から改善を試みることが可能だと思われる。例えば、計算処理の単位の一部に並列処理を取り入れる、といったことが考えられる。 It seems that these values can be improved from the software side by using parallel processing together. For example, it is conceivable to incorporate parallel processing as part of a unit of calculation processing.
 以上、「K」、「L」、「R、Q、T」、「I、U」の変化について述べさせていただいたが、ここで、配列構造を利用した数値計算の指標を「V」とし、以下の式で表すこととさせて頂く。{ }で括った箇所がそれぞれ「要素の総数」、「(1要素当たりの)記憶媒体へのアクセスに要する時間」、「(1要素当たりの)計算の単位の所要時間」に対応している。
Figure JPOXMLDOC01-appb-M000009
更に、上記の式について{R+L(Q+T)}をα、{(L−1)I+U}をβと置いた上で、再び考察へ戻らせて頂く。
Figure JPOXMLDOC01-appb-M000010
The changes in “K”, “L”, “R, Q, T” and “I, U” have been described above. Here, the numerical calculation index using the array structure is “V”. Let me denote it by the following formula. Each part enclosed in {} corresponds to “total number of elements”, “time required to access the storage medium (per element)”, and “required time per unit of calculation” (per element). .
Figure JPOXMLDOC01-appb-M000009
Furthermore, let {R + L (Q + T)} be α and {(L−1) I + U} be β for the above formula, and let us return to the discussion again.
Figure JPOXMLDOC01-appb-M000010
 第五に、「S・α・βの値が小さくなるとはどういったことか」について述べる。Kは命令の総数を裏打ちする値、SはKの値を減少せしめる値である。αとβは1要素当たりの速度に関する式である。よって、log10Nを定数とみなすとき、「S・α・βがより小さな値をとる」ということは、「配列構造を用いた数値計算において、同じ大きさの数を扱う場合に、より高速な演算がなされる」ということを意味していると分かる。また、計算時に要求される容量の上限を考えないのであれば、「同じ時間では、より大きな数を扱うことができる」ということ、すなわち「記憶媒体の容量が、計算時に要求される容量を満足させるものであるとき、S・α・βの値が小さければ小さいほど、同じ時間でより大きな数を扱うことができるようになる」ということを意味していると分かる。 Fifth, "What does the value of S, α, β decrease?" K is a value that supports the total number of instructions, and S is a value that decreases the value of K. α and β are equations relating to the speed per element. Therefore, when log 10 N is regarded as a constant, “S · α · β takes a smaller value” means that “a numerical calculation using an array structure is faster when a number of the same size is handled. It can be understood that this means that "the operation is performed". If the upper limit of the capacity required at the time of calculation is not considered, it means that “a larger number can be handled at the same time”, that is, “the capacity of the storage medium satisfies the capacity required at the time of calculation. It is understood that the smaller the values of S, α, and β, the larger number can be handled at the same time.
 第六に、「配列構造を利用した数値計算を実行する際に要求される記憶媒体の容量」について述べる。α及びβに見えるLは、配列構造を利用した数値計算において、要素1個を表すのに必要となる容量、すなわち1桁を表すのに必要となる容量である。Kの値は配列構造を用いた数値計算において、ある数Nを表現するのに必要となる要素の総数、すなわち必要となる桁の数である。従って、配列構造を利用した数値計算において、「ある数Nを表現しようとする時に要求される容量」はKの値にLの値を乗じて得られた数に一致する。よって、配列構造を用いて2つの数NとN´の数値計算を行おうとするとき、最低限「記憶媒体に要求される容量」は、「Nを表現するのに必要となる容量」と「N´を表現するのに必要となる容量」とを加え合わせた値である。 Sixth, we will describe “capacity of storage media required when performing numerical calculations using an array structure”. L appearing as α and β is a capacity necessary to represent one element, that is, a capacity necessary to represent one digit in the numerical calculation using the array structure. The value of K is the total number of elements required to express a certain number N in the numerical calculation using the array structure, that is, the number of digits required. Therefore, in the numerical calculation using the array structure, the “capacity required when expressing a certain number N” is equal to the number obtained by multiplying the value of K by the value of L. Therefore, when numerical calculation of two numbers N and N ′ is performed using the array structure, the “capacity required for the storage medium” is “capacity required to express N” and “ It is a value obtained by adding together “capacity necessary for expressing N ′”.
 以降、配列構造を利用した数値計算において、ある数を表現するのに最低限必要となる容量のことを「表現時必要量」、ある2数を用いて数値計算を実行するのに最低限必要となる容量のことを「計算時必要量」と呼ばせて頂く。
Figure JPOXMLDOC01-appb-M000011
Figure JPOXMLDOC01-appb-M000012
From now on, in the numerical calculation using the array structure, the minimum required capacity to express a certain number is “required amount when expressing”, and the minimum necessary to perform numerical calculation using a certain two numbers This capacity is called “calculated amount”.
Figure JPOXMLDOC01-appb-M000011
Figure JPOXMLDOC01-appb-M000012
 ある数Nの表現時必要量をE(N)、ある数NとN´についての計算時必要量をF(N,N´)とすると、以下の式で表されることになる。
Figure JPOXMLDOC01-appb-M000013
If the required amount at the time of expression of a certain number N is E (N) and the required amount at the time of calculation for a certain number N and N ′ is F (N, N ′), it is expressed by the following equation.
Figure JPOXMLDOC01-appb-M000013
 以上を踏まえると、第63段落にて申し上げた「記憶媒体の容量が計算時に要求される容量を満足するものであるとき、S・α・βの値が小さければ小さいほど、同じ時間でより大きな数を扱うことができるようになる」という一文を、「記憶媒体の容量が計算時必要量を満足するものであるとき、S・α・βの値が小さければ小さい程、同じ時間でより大きな数を扱うことができるようになる」と言い換えることができる。 Based on the above, as stated in the 63rd paragraph, “When the capacity of the storage medium satisfies the capacity required at the time of calculation, the smaller the value of S · α · β, the larger at the same time. "When the storage medium capacity satisfies the required amount at the time of calculation, the smaller the value of S / α / β, the larger the value at the same time” In other words, you can handle numbers.
 ここで、KとLの関係、Kの値が小さくなるほどLの値が大きくなるという関係に留意されたい。Pはある数Nを位取り記数法で表現する際の底の大きさである。Kの値は、ある数NをP進法表記にて表現したときに必要となる桁の総数、つまりコンピュータ上である数NをP進法表記にて表現したときに必要となる要素の総数である。Lの値は、このときに1桁を表すのに必要となる容量である。 Note the relationship between K and L, and the relationship that the value of L increases as the value of K decreases. P n is the size of the base when a certain number N is expressed by the scaled number method. The value of K is the total number of digits required when a certain number N is expressed in Pn decimal notation, that is, an element required when a number N on the computer is expressed in Pn decimal notation. The total number of The value of L is a capacity required to represent one digit at this time.
 Kの値はPの値が大きくなる程、小さくなっていく。Lの値はPの値が大きくなる程、大きくなっていく。ある数NについてPの値を増加させていくとき、Kの値が減少し、Lの値が増加するということである。このとき、「Kについての減少率」が「Lについての増加率」を上回るのであれば、表現時必要量「KL」と、その加算によって表される「計算時必要量」が減少するはずである。 The value of K is larger the value of P n becomes large, it becomes smaller. The value of L increases as the value of Pn increases. When increasing the value of P n for a certain number N, the value of K decreases and the value of L increases. At this time, if the “decrease rate for K” exceeds the “increase rate for L”, the required amount for expression “KL” and the “necessary amount for calculation” represented by the addition should decrease. is there.
 これは例えば、先行技術の「人が数として認識できる文字列を利用した数値計算」について、「人が数として認識できる」という条件を廃し、「人が数として認識できない文字を含む、文字型の配列を利用した数値計算」へと移行させた場合に起こりうる。 For example, with respect to the prior art “numerical calculation using a character string that a person can recognize as a number”, the condition that “a person can be recognized as a number” is abolished. This can happen when moving to "Numerical calculation using the array of".
 両者共にLの値が1バイトで一定だが、位取り記数法の底の値が10から最大で2にまで増加したことによりKの値が減少する。従ってこの場合、同じ数にいついて表現時必要量がより小さくなり、計算時必要量もより小さくなる。つまり、KLが改善する。 But constant Both the value of 1 byte L, the value of the bottom of a weighted number value of K is reduced by that increased to 2 8 up to 10 1. Therefore, in this case, the required amount for expression becomes smaller at the same number, and the required amount for calculation becomes smaller. That is, KL improves.
 一方、「要素の大きさを増やし、位取り記数法の底の大きさを大きくしてKの値を小さくした場合」には、このようにはならない。例えば、要素の大きさをX倍にした場合、言い換えるとPを最大でP(xn)にした場合、同じ数についてKの値が減少し、最小で(1/X)倍になる。しかし、要素の大きさたるLの値もX倍になっているので、K・L全体の値が小さくなることはない。 On the other hand, this is not the case when “the size of the element is increased and the base size of the scaled number method is increased to reduce the value of K”. For example, when the size of the element is increased by X times, in other words, when P n is maximized to P (xn) , the value of K decreases for the same number, and the minimum is (1 / X) times. However, since the value of L, which is the size of the element, is also multiplied by X, the value of K · L as a whole is not reduced.
 log102を0.3とすると、同じ数について、前者では「SひいてはKが(1/2.4)倍に減少し、かつLが一定であること」によって、KLが最大(1/2.4)倍にまで減少する。しかし、後者では、Kの減少率とLの増加率とが相殺されることになるため、KLについて前者のような改善は得られない。KLについて、前者と後者の違いを式で表すと以下のようになる。前者で(KL/K´L)の値が(1/2.4)であるのに対し、後者で(K´XL/KL)の値が1となっている点に留意されたい。
Figure JPOXMLDOC01-appb-M000014
When log 10 2 is 0.3, for the same number, in the former case, KL is the maximum (1/2) because “S and thus K decreases (1 / 2.4) times and L is constant”. 4) Decrease by a factor of 2. However, in the latter, since the decrease rate of K and the increase rate of L are offset, the improvement of KL as in the former cannot be obtained. Regarding KL, the difference between the former and the latter can be expressed as follows. Note that the value of (KL / K'L) is (1 / 2.4) in the former, whereas the value of (K'XL / KL) is 1 in the latter.
Figure JPOXMLDOC01-appb-M000014
 以上を踏まえると、配列構造を利用した数値計算において、1桁を表現するのに必要な容量を変化させることなく、1桁が表すことのできる数を増加させた場合に限り、「表現時必要量」ひいては「計算時必要量」が、同じ数について小さくなると分かる。このことは、記憶媒体の容量を増やしていないにも関わらず、増やしたかのような効果が得られることを意味している。 Based on the above, in numerical calculations using an array structure, only if the number that can be represented by one digit is increased without changing the capacity necessary to represent one digit, It can be seen that the “quantity” and thus the “calculation required amount” become smaller for the same number. This means that the effect can be obtained as if the capacity of the storage medium has not been increased.
 配列構造を利用した数値計算において、この改善を実現しているのは、前述の通り「人が数として認識できる文字列」という条件を廃して「人が認識することの“できない”文字列」を採用した場合だけである。本発明の実施においては、これ以外の手段でこの改善を実現させることは困難だと思われる。 In the numerical calculation using the array structure, this improvement is realized by eliminating the condition of “character string that humans can recognize as numbers” as described above, and “character strings that cannot be recognized by humans” It is only when adopting. In implementing the present invention, it would be difficult to achieve this improvement by other means.
 この考察を踏まえ、実施の観点から確かなことは「配列構造を利用してより大きな数を扱う際、記憶媒体のサイズを節約しようとするならば、人が認識することのできない文字を含む文字列へと延長するだけで、同じ数について速度面の改善が得られるだけでなく、表現時必要量をも最大(1/2.4)倍程度にまで節約できる」ということである。このことについては後に再び触れさせて頂く。 Based on this consideration, from the implementation point of view, it is clear that “characters including characters that cannot be recognized by humans if they try to save the size of the storage medium when handling larger numbers using the array structure. Not only can the speed be improved for the same number, but the required amount at the time of expression can be saved up to (1 / 2.4) times by simply extending to the column. I will come back to this later.
 以上、64~75段落にわたって、配列構造を利用した数値計算を実行する際、要求される記憶媒体の容量の変化等について述べさせていただいた。ここで、Vとその構成に関する考察をいったん停止し、「メモリ以外の記憶媒体を採用することによって得られる効果」について述べさせていただく。これは図5では(g)に相当する話題となる。 As mentioned above, the 64th to 75th paragraphs describe the required change in storage medium capacity when performing numerical calculations using array structures. Here, I will stop the discussion on V and its configuration and describe the “effects obtained by adopting a storage medium other than memory”. This is a topic corresponding to (g) in FIG.
 先行技術はメモリ上で桁落ちを解決しようとする。配列構造を利用した数値計算では、扱う数が大きくなればなるほど要求される記憶媒体の容量も大きくなっていく。データを扱う場所をメモリ上に限ると、メモリの総容量が扱うことのできる数の上限となってしまう。そこで、より大容量の記憶媒体を導入し、ある数を表現した配列構造の保存場所をこの記憶媒体へと変更し、引き換えにメモリ上では「この記憶媒体上である数を表す配列構造が保持されている場所への参照、あるいはそこへアクセスするためのキーとなる値」、「要素の総数」、「一個当たりの要素のビット数(大きさ)」の3つを保持する。このようにすることで、他のアプリケーションとのメモリ上の競合をより単純にすることができるし、扱うことのできる数の上限を増加させることもできる。 The prior art tries to solve the digit loss on the memory. In the numerical calculation using the array structure, the required capacity of the storage medium increases as the number to be handled increases. If the place where the data is handled is limited to the memory, the total capacity of the memory becomes the upper limit of the number that can be handled. Therefore, we introduced a storage medium with a larger capacity, changed the storage location of the array structure representing a certain number to this storage medium, and in exchange, “the array structure representing the number on this storage medium is retained. It holds three values: a reference to a location that is being used, or a key value for accessing the location, “total number of elements”, and “number of bits of each element (size)”. By doing so, it is possible to simplify the competition in memory with other applications, and to increase the upper limit of the number that can be handled.
 数値計算を実行する際には、計算の対象となる2数について、ソフトウェア側で配列構造が収められている箇所を参照し、任意の要素が表すデータを取得し、そのデータで以って任意の計算処理の単位を実行してゆく。そして、各要素についての数値計算の結果を記憶媒体の別の箇所へと保存してゆく(要求される容量を最低限に抑えるのであれば、より長い方の配列構造を書き換えていく)。 When performing numerical calculations, for the two numbers to be calculated, refer to the location where the array structure is stored on the software side, acquire the data represented by any element, and use that data as an arbitrary The unit of calculation processing is executed. Then, the result of the numerical calculation for each element is stored in another part of the storage medium (if the required capacity is minimized, the longer array structure is rewritten).
 参照を保持しているので、ある数を表す配列構造がどこから始まるのか把握できる。また、要素の総数と要素の大きさが分かっているので、任意の要素にアクセスすることが可能であり、かつ配列構造の終わりを知ることも可能である。つまり、多くのプログラミング言語で採用されている「添え字アクセス」のようなアクセスの仕方がメモリ以外の記憶媒体上でも可能である。 Since the reference is held, it is possible to grasp where the array structure representing a certain number starts. In addition, since the total number of elements and the element size are known, it is possible to access any element and to know the end of the array structure. That is, an access method such as “subscript access” adopted in many programming languages is possible on a storage medium other than the memory.
 記憶媒体へのアクセス速度はハードウェア性能に依存する。よって、アクセス速度がより速い記憶媒体を採用することで、記憶媒体へのアクセスについての直接的な改善が得られるはずである。 * Access speed to storage media depends on hardware performance. Therefore, by adopting a storage medium having a higher access speed, a direct improvement in access to the storage medium should be obtained.
 ソフトウェア面から、ハードウェア性能を直接的に向上させることは困難だと思われる。しかし、「アクセス手段」を選択し間接的な改善を試みることは可能である。例えば、ファイル入出力用のAPIを採用するのか、フォーマット用のAPIを採用するのか、それともアセンブリ言語を採用するのかといった具合である。実施に当たっては、目的に対して都合の良い手段を採用するのが良いものと思われる。 From the software perspective, it seems difficult to improve hardware performance directly. However, it is possible to try an indirect improvement by selecting an “access means”. For example, whether to use a file input / output API, a format API, or an assembly language. In the implementation, it seems to be good to adopt the means that are convenient for the purpose.
 なお、ある数を表現したデータをメモリ以外の記憶媒体へと移行させることによって生じる主だった変化は、メモリ以外の記憶媒体へのアクセス手続きに関する箇所だけであり、配列構造を利用した数値計算における要素の挙動の仕方自体については、特段の変更がないことに留意されたい。以上、メモリ以外の記憶媒体の導入について述べさせていただいた。再び、Vとその構成に関する考察へと戻らせて頂く。 The main change caused by transferring data representing a certain number to a storage medium other than the memory is only the part related to the access procedure to the storage medium other than the memory, and in the numerical calculation using the array structure Note that there is no particular change in the behavior of the elements themselves. This is the end of the introduction of storage media other than memory. Let me return to the discussion about V and its configuration again.
 第七に「S・α・βの値を小さくする事由」について述べる。ソフトウェア経由で小さくする場合とハードウェア経由で小さくする場合の2通りが考えられる。まず、ソフトウェア経由で小さくする場合、すなわちソフトウェアレベルでの改善について述べる。 Seventh, “Reason for reducing the values of S, α, and β” is described. There are two ways to reduce the size via software and the size via hardware. First, the improvement in the case of reducing the size via software, that is, at the software level will be described.
 第48段落及び第50段落にて申し上げた通り、SひいてはKの値は1個当たりの要素が表す数が大きければ大きいほど、小さくなっていく。また、Lの値は要素が表す数が大きくなっていくほど、段階的に大きくなっていく。Lの値の増加は、α及びβの値が増加する事由である。従って、配列構造を利用した数値計算において、数値計算の対象たる数をP進法で表現しようとする場合、S・α・βの値について次のように言うことができる。「Pの値が大きくなるにつれて、Sの値が小さくなっていく。反面α及びβの値は大きくなっていく」。 As stated in the 48th and 50th paragraphs, the value of S and thus the value of K decreases as the number of elements per element increases. In addition, the value of L increases stepwise as the number represented by the element increases. The increase in the value of L is the reason why the values of α and β increase. Accordingly, in the numerical calculation using the array structure, when the number to be numerically calculated is to be expressed by the Pn base system, the values of S, α, and β can be said as follows. “As the value of Pn increases, the value of S decreases. On the other hand, the values of α and β increase.”
 従って、Pの値を増加させていくとき、Sの減少率がα、βの増加率よりも大きいのであれば、S・α・βの値が減少することになる。言い換えれば、「Sの減少率」と「α・βの増加率」の積が1を下回る間は、Pの増加に伴いS・α・βの値が減少する。 Therefore, when increasing the value of Pn , if the rate of decrease of S is greater than the rate of increase of α and β, the value of S · α · β will decrease. In other words, while the product of “S decrease rate” and “α · β increase rate” is less than 1, the value of S · α · β decreases as Pn increases.
 この時、「要求される記憶媒体の容量」のことを考慮していないということに留意されたい。記憶媒体が、少なくとも「計算時必要量」を満たしていないと、どんなにS・α・βの値を小さくしても、数値計算を実現することはできない。計算時必要量は表現時必要量によって決まる。表現時必要量はNが大きくなるに連れて増加する。表現時必要量の改善が例外的であるということは75段落にて述べさせて頂いた通りである。
Figure JPOXMLDOC01-appb-M000015
It should be noted that at this time, “required storage medium capacity” is not considered. If the storage medium does not satisfy at least the “necessary amount at the time of calculation”, no matter how small the values of S · α · β cannot be, numerical calculation cannot be realized. The required amount for calculation is determined by the required amount for expression. The required amount for expression increases as N increases. As mentioned in paragraph 75, the improvement in expression requirements is exceptional.
Figure JPOXMLDOC01-appb-M000015
 以下、「S・α・βを減少させるようなPの増加」を三つに分けて見ていく。 Hereinafter, “increase in Pn that decreases S · α · β” will be divided into three.
 一つ目の「S・α・βを減少させるようなPの増加」として、先行技術の「人が数として認識できる文字列を利用した数値計算」から「人が数として認識できない文字を含む文字列を利用した数値計算」へと移行した場合に生じるS・α・βの変動を考える。この話題は図5の(d)から(c)へと拡張した場合に生じる変化の考察に相当する。Pの値については、前者は10で、後者は最大2となる。前者から後者への移行に伴い生じるKの変動は以下の通りである。
Figure JPOXMLDOC01-appb-M000016
The first of as "an increase in P n, such as to reduce the S · α · β", a character that "people from the" numerical calculation person has used a string that can be recognized as the number "of prior art can not be recognized as the number Consider the fluctuations of S, α, and β that occur when moving to “Numerical calculation using a character string including”. This topic corresponds to the consideration of changes that occur when expanding from (d) to (c) in FIG. The value of P n, the former is 10 1, the latter is maximum 2 8. The fluctuations in K that accompany the transition from the former to the latter are as follows.
Figure JPOXMLDOC01-appb-M000016
 log102を0.3とすると前者から後者への移行に伴いSの値は(1/2.4)倍程度になる。一方、Lの値に変動はない。1バイト当たり、256文字表すことができるところを10種類(あるいは16種類)に限定していた制約を廃しただけだからである。前者も後者もコンピュータ上で1桁をあらわすのに要する容量たるLの大きさは1バイトのままなので、α及びβの値に変化はない。 The value of S with the migration of log 10 2 from the former When 0.3 to the latter is (1 / 2.4) times approximately. On the other hand, there is no change in the value of L. This is because the restriction that limited 256 characters per byte to 10 (or 16) characters has been eliminated. In both the former and the latter, the size of L, which is the capacity required to represent one digit on the computer, remains 1 byte, so there is no change in the values of α and β.
 よってこの場合、S・α・βの値が改善する。なおかつ、この場合に限り、例外的なK・Lの改善を伴うということについては、第69~75段落に渡って述べさせて頂いた通りである。 Therefore, in this case, the values of S, α, and β are improved. In addition, only in this case, the exceptional K · L improvement is as described in the 69th to 75th paragraphs.
 この場合、「K・L」と「S・α・β」双方の改善が得られるということになる。同じ数について、より少ない容量でより高速に数値計算を実行できるということが分かる。 In this case, both “K · L” and “S · α · β” can be improved. It can be seen that for the same number, numerical calculation can be performed faster with less capacity.
 上記の改善をより詳細に申し上げると、次のようになる。「α、βの値はそのままに、Sの値だけが減少する」ということは、単純にKの値だけが減少するということを意味している。Kの値はNをPで表そうとしたときの桁の数、つまり要素の総数である。「計算処理の総数」は「要素の総数」に比例するので、Kの値だけが単純に減少するということは、「計算処理の内容はそのままに計算の総数だけが減ったと」いうことを意味している。α及びβの値はそのままにSの値だけが減少したことにより、計算の総数が減って、同じ数についてより高速な処理が可能になったということである。この状況に第69~71段落の例外的なK・Lの改善が加わったというのが、「人が数として認識できる文字列を利用した数値計算」から「人が数として認識できない文字を含む、文字型の配列を利用した数値計算」へと移行することによって得られる改善の主たる内容である。 The above improvement can be described in more detail as follows. “The values of S and β decrease while the values of α and β remain unchanged” simply means that only the value of K decreases. The value of K is the total number of numbers, that is elements of digits when then an attempt is made to represent the N in P n. Since the “total number of calculation processes” is proportional to the “total number of elements”, a simple decrease in the value of K means that “the total number of calculations has been reduced without changing the contents of the calculation process”. is doing. The fact that the values of α and β remain unchanged and only the value of S is reduced means that the total number of calculations is reduced, and higher-speed processing is possible for the same number. In this situation, the exceptional K / L improvement in paragraphs 69-71 was added, "From numerical calculations using character strings that humans can recognize as numbers" from "characters that humans cannot recognize as numbers" It is the main content of the improvement obtained by moving to “Numerical calculation using character type array”.
 端的には、「表現時必要量、計算時必要量の減少」、「同じ数についての高速化」そして「同じ時間で、“同じ容量で”扱うことのできる数の増加」である。「同じ時間で、同じ容量で扱うことのできる数の増加」という改善が見られるのはこの場合に限られ、これ以外の場合には「“より大きな容量を使用することと引き換えに”、同じ時間でより大きな数を扱うことができるようになる」ということに留意されたい。72段落にて述べさせて頂いた通り、他の場合にはK・Lの改善が得られないからである。この改善は「人が数として認識できるか、できないか」という点が核心であって、要素の大きさ自体は1バイトのまま変化しないという点に重ねて留意されたい。 In short, “reduction in required amount for expression, required amount for calculation”, “acceleration for the same number”, and “increase in the number that can be handled with“ same capacity ”at the same time”. This is the only improvement that can be seen in the "Increase in the number that can be handled with the same capacity at the same time", otherwise "In exchange for using larger capacity", the same Note that you will be able to handle larger numbers in time. This is because as described in paragraph 72, the improvement of K · L cannot be obtained in other cases. It should be noted that this improvement is centered on whether “a person can be recognized as a number or not” and the size of the element itself remains 1 byte.
 なお、「人が認識できない文字を含む文字列」は「1バイトの変数を要素とする配列」と言い換えることができる。つまり、1バイトの変数であれば文字型でなくても差し支えないことになる。このことは、8ビットの並びで最大256種類の数を表現でき、かつ2つの「8ビットの並び」を使って、基本データ型に劣らない高速な四則演算を実行することができるのであれば、8ビットの並びでも差し支えないということを暗に意味している。このことが「“三”つ目のPの値を増加させる手段」の考察において、とても重要な役割を果たす。 In addition, “a character string including a character that cannot be recognized by a person” can be rephrased as “an array having a 1-byte variable as an element”. In other words, if it is a 1-byte variable, it does not have to be a character type. This means that a maximum of 256 types of numbers can be expressed in an 8-bit sequence, and high-speed arithmetic operations that are not inferior to the basic data type can be executed using two “8-bit sequences”. , Implying that an 8-bit sequence is acceptable. This plays a very important role in the discussion of “means for increasing the value of the“ third ” Pn ”.
 以上、一つ目の「S・α・βを減少させるようなPの増加」について述べさせて頂いたが、前段で言及した「1バイトの変数を要素とする配列を利用した数値計算」における「1バイトの変数」という箇所を「1バイトの変数以外の基本データ型」で置き換える操作を、二つ目の「S・α・βを減少させるようなPの増加」として述べさせて頂く。 In the above, we have described the first “Increase in Pn to decrease S, α, and β”. As mentioned earlier, “Numerical calculation using an array of 1-byte variables” Let 's say that the operation of replacing “1 byte variable” with “basic data type other than 1 byte variable” is the second “increase in Pn to decrease S, α, β” Get it.
 以下、二つ目の「S・α・βを減少させるようなPの増加」について述べさせて頂く。この話題は、図5の(c)から(b)へと移行した際に生じる変化の考察に相当する。Sの値については、今までの考察と比べて特に変わった点はない。要素の大きさがX倍になればSの値は1/X倍になる。例えば、C言語で1バイトの文字型に変えて4バイトの整数型を採用した場合には、Sの値は1/4倍になる。式は以下の通りである。
Figure JPOXMLDOC01-appb-M000017
In the following, the second “increase in Pn that decreases S · α · β” will be described. This topic corresponds to consideration of changes that occur when the process shifts from (c) to (b) in FIG. There is no particular change in the value of S compared to the previous discussion. If the element size becomes X times, the value of S becomes 1 / X times. For example, when the 4-byte integer type is adopted instead of the 1-byte character type in the C language, the value of S is ¼. The formula is as follows.
Figure JPOXMLDOC01-appb-M000017
 一方、要素の大きさたるLの値は4倍になる。よってα及びβの値が増加する。
Figure JPOXMLDOC01-appb-M000018
On the other hand, the value of L, which is the element size, is quadrupled. Therefore, the values of α and β increase.
Figure JPOXMLDOC01-appb-M000018
 一般に、記憶媒体から読み取る容量がX倍になったからといって、所要時間がX倍になるといったことはない。また、一度に処理するビットの数がX倍になったからといって所要時間がX倍になるといったこともない。両者共に所要時間の増加量はX倍を下回るものである。 Generally, just because the capacity read from the storage medium has increased X times, the required time does not increase X times. Also, just because the number of bits to be processed at a time is X times does not mean that the required time is X times. In both cases, the increase in required time is less than X times.
 例えば、1バイト読み取るのと1000バイト読み取るのとを比較した場合、読み取る容量が1000倍になっているにも関わらず、所要時間は殆ど変わらない。また、1バイト同士の演算と、4バイト同士の演算を比較した場合一度に扱うビットの数が4倍になっているにも関わらず、所要時間は1.5倍にも満たない。見方を変えると、扱うことのできる数が232倍になっているにも関わらず、所要時間は1.5倍にも満たない。なお、これらのことは公知の事実である。ハードウェアの性能に左右されるので1.5倍とさせていただいたが、実際にはもっと1に近いはずである。C言語に当てはめれば、int型同士の演算が、char型同士の演算の1.5倍の時間を要するといった事態は、現在のハードウェア性能では考えがたいことだと分かる。 For example, when comparing reading of 1 byte and reading of 1000 bytes, the required time hardly changes even though the reading capacity is 1000 times. Further, when the operation between 1 byte and the operation between 4 bytes are compared, the required time is less than 1.5 times even though the number of bits handled at a time is 4 times. Put differently, number despite a two 32 times that can be handled, the required time is not less than 1.5 times. These are known facts. Since it depends on the performance of the hardware, it was 1.5 times, but it should be closer to 1 in practice. If applied to the C language, it can be understood that the situation where the operations between int types require 1.5 times as long as the operations between char types is unthinkable in current hardware performance.
 従って、α及びβの値はLの値がX倍になったからといってX倍になるといったことはなく、最近の記憶媒体においては、特にα(記憶媒体へのアクセスに要する時間)でこのことが顕著である。より詳細には、この開きは「αのQ」と「βのI」の値、特に最近の記憶媒体でQの値が小さいことに依ると言える。 Therefore, the values of α and β are not X times just because the value of L is X times, and in recent storage media, this is especially expressed by α (time required to access the storage media). It is remarkable. More specifically, it can be said that this opening depends on the values of “Q of α” and “I of β”, in particular, the value of Q is small in recent storage media.
 要素の大きさをX倍にするとき、「Sの減少率」と「αとβの増加率の積」との積が1を下回る範囲でS・α・βの値は減少してくが、上述の事実を踏まえると、大局的にはXの値が大きくなるほど両者の差が開いていくと分かる。式は以下の通りである。
Figure JPOXMLDOC01-appb-M000019
(1/X)による減少量が、X(Q+T)及び(X−1)・Iによる増加量を上回り、大局的にはこの差が開いてゆくということが申し上げたい。この「大局的な差」については、197段落以降にてより具体的に申し上げさせて頂く。
When the element size is multiplied by X, the value of S · α · β decreases in the range where the product of “S decrease rate” and “product of α and β increase rate” is less than 1, Based on the above facts, it can be seen that the difference between the two increases as the value of X increases. The formula is as follows.
Figure JPOXMLDOC01-appb-M000019
I would like to say that the amount of decrease by (1 / X) exceeds the amount of increase by X (Q + T) and (X-1) · I, and this difference is widening. This “global difference” will be described in more detail in paragraphs 197 and after.
 以上の考察を約めて、「一般に、配列構造を利用した数値計算において、要素の大きさを増加させることによって、つまり底の大きさを大きくすることによって、S・α・βの値について改善が得られる」と言える。この際、次の2点に留意されたい。 Approximating the above considerations, “Generally, in numerical calculations using an array structure, the value of S ・ α ・ β is improved by increasing the size of the element, that is, by increasing the size of the bottom. Can be obtained. " At this time, note the following two points.
 一つ目の留意点は、要素の大きさを大きくしたとしても、K・Lの値に変化がないということである。要素の大きさたるLの値がX倍になれば、Sの値は1/X倍にまで減少し、連れてKの値も1/X倍にまで減少する。K・Lの値については、Kの減少とLの増加とで相殺され、変化が生じないことになる。従って、「同じ数について要素の大きさだけを増加させた場合、速度が向上し、このとき要求される記憶媒体の容量には特に変化がない」ということが分かる。 The first point to note is that there is no change in the value of KL even if the size of the element is increased. If the value of L, which is the size of the element, is X times, the value of S is reduced to 1 / X times, and the value of K is also reduced to 1 / X times. The value of K · L is offset by the decrease in K and the increase in L, and no change occurs. Therefore, it can be seen that “when only the size of the element is increased for the same number, the speed is improved, and the capacity of the storage medium required at this time is not particularly changed”.
 見方を変えれば、速度は改善後のままに、より大きな数を表そうとした場合には、より大きな容量が必要になるということである。以下の式の破線部分は両者を比較したものである。速度はそのままに、Nの桁の数をX増やした場合、X倍の容量が必要になること、つまり、要素の大きさと要素の数をX倍にした場合、表現時必要量がXKLとなることが分かる。
Figure JPOXMLDOC01-appb-M000020
Another way of looking at it is that if you try to represent a larger number while the speed remains improved, you need a larger capacity. The broken line part of the following formula | equation compares the both. If the number of N digits is increased by X while maintaining the speed, X times the capacity is required. That is, if the element size and the number of elements are increased by X times, the required amount at the time of expression becomes XKL. I understand that.
Figure JPOXMLDOC01-appb-M000020
 このことが94段落にて「重ねて留意されたい」と申し上げたことであり、「人が数として認識できる文字列を利用した数値計算」から「1バイトの文字型を要素とする配列を利用した数値計算」へと移行した場合のKLの変化は、この点でそれ以外の場合のKLの変化と異なっている。 This is what I said in paragraph 94, "Please keep this in mind." From "Numerical calculation using character strings that humans can recognize as numbers", "Use arrays with 1-byte character types as elements." In this respect, the change in KL when shifted to “numerical calculation” is different from the change in KL in other cases.
 69~71段落にて申し上げたようなKLの改善があるのは例外的な場合である。通常は、速度はそのままに(改善前と)同じ要素の数で数値計算を実行しようとすれば、表現時必要量ひいては計算時必要量が増加する。 Exceptions to the KL improvements mentioned in paragraphs 69-71. Normally, if the numerical calculation is performed with the same number of elements (as before improvement) while maintaining the speed, the required amount for expression and hence the required amount for calculation increase.
 二つ目の留意点は、1バイトの文字型をXバイトの基本データ型で置き換えた場合には、S・α・βについて改善が得られるが、「1バイトの文字型X個を要素とする配列」を1つの要素とみなして数値計算を実行した場合には改善は得られない、ということである。後者では「計算処理の単位」について命令の数が単純にX倍になるからである。前者と後者とでβ(計算処理の単位に要する時間)を比較すると以下のようになる。
Figure JPOXMLDOC01-appb-M000021
The second point to note is that if you replace the 1-byte character type with the X-byte basic data type, you can improve S, α, and β. This means that no improvement can be obtained when numerical calculation is performed with the “array to be performed” regarded as one element. This is because in the latter case, the number of instructions for the “unit of calculation processing” is simply X times. A comparison of β (time required for the unit of calculation processing) between the former and the latter is as follows.
Figure JPOXMLDOC01-appb-M000021
 後者では、Sについて1/X倍の改善が得られたとしてもβの係数と相殺されることになる。このことは「底を大きくすることに伴う『計算処理の単位に要する時間』の改善は、配列やプログラマが定義した複合変数(クラス)のような区分けされた変数で以ってその大きさを拡張した場合には得ることができず、連続したビットの並びが一括で処理されるのでなくてはならない」ということを意味する。例えば、前述の通り「4バイトの変数2個を要素とする配列を利用した演算」と「8バイトの変数を利用した演算」とでは、前者の所要時間は「4バイトの変数を利用した演算1回」の2倍だが、後者は1.5倍にも満たないということである。C言語では、int型が4バイトの変数、long long int型が8バイトの変数だが、変数のサイズが2倍だからといって演算に要する時間が2倍になったりすることはない。しかし、int型の変数2つを使って、long long int型同士の演算を再現する場合には、所要時間がint型同士の演算の約2倍となる。int型同士の演算を2度実行することになるからである。これらのことについては、公知の事実として納得していただけるものと思われる。 In the latter case, even if an improvement of 1 / X times is obtained for S, it is offset by the coefficient of β. This means that "the time required for the unit of calculation processing with the increase in the base is improved by the size of the segmented variable such as an array or a programmer defined variable (class). It cannot be obtained in the case of expansion, and a sequence of consecutive bits must be processed in a lump ”. For example, as described above, in the “operation using an array having two 4-byte variables as an element” and “operation using an 8-byte variable”, the former required time is “an operation using a 4-byte variable”. It is twice as long as “once,” but the latter is less than 1.5 times. In the C language, the int type is a 4-byte variable, and the long long int type is an 8-byte variable. However, just because the size of the variable is double, the time required for the calculation does not double. However, in the case where a long long int type operation is reproduced using two int type variables, the required time is about twice that of the int type operation. This is because operations between int types are executed twice. About these things, it seems that you can be convinced as a well-known fact.
 これらの2つの留意点を踏まえ、96段落からの考察をまとめると、次のようになる。配列構造を用いた数値計算において、要素の大きさを大きくする程、同じ数についてより高速な処理が実現する。このとき、要求される記憶媒体の容量に変化はない。ただし、この改善を得るためには各要素が連続したビットの並びで表わされ、かつ直列の演算にあっては、そのビットの並びが一括で処理されるのでなくてはならない。言い換えれば、配列や複合変数のような区分けされた領域を利用して要素の大きさを大きくしても、この改善は得られない。 Based on these two points, the discussion from the 96th paragraph is summarized as follows. In the numerical calculation using the array structure, the larger the element size, the faster the processing for the same number. At this time, there is no change in the required capacity of the storage medium. However, in order to obtain this improvement, each element is represented by a continuous bit sequence, and in the case of serial operation, the bit sequence must be processed in a lump. In other words, this improvement cannot be obtained even if the size of the element is increased by using a partitioned area such as an array or a compound variable.
 以上が、「1バイトの変数を要素とする配列を利用した数値計算」から「1バイトの変数以外の基本データ型を要素とする配列を利用した数値計算」へと移行することによって得られる改善である。 The above is the improvement obtained by moving from "Numerical calculation using arrays with 1-byte variables as elements" to "Numerical calculation using arrays with elements of basic data types other than 1-byte variables" It is.
 より具体的には、「要素の総数を減らすことによって、同じ数についてより高速な数値計算を実行することができるようになる」ということである。「同じ要素の数では、計算時必要量を満足させることができれば、より大きな数を扱うことができるようになる」ということである。 More specifically, “By reducing the total number of elements, it becomes possible to perform faster numerical calculations for the same number”. “With the same number of elements, a larger number can be handled if the necessary amount at the time of calculation can be satisfied.”
 なお、この改善に伴い生じるコストは「要素当たりの記憶媒体へのアクセス時間の増加」と「要素当たりの計算の単位に要する時間の増加」である。 The costs that accompany this improvement are “an increase in access time to the storage medium per element” and “an increase in the time required for the unit of calculation per element”.
 以上、「1バイトの変数を要素とする配列を利用した数値計算」の「1バイトの変数」を「1バイトの変数以外の基本データ型」で置き換えた場合のS・α・βの値の変動について、96~113段落にかけて述べさせていただいた。次に、上述の改善を更に推し進める体裁にて、三つ目の「S・α・βを減少させるようなPの増加」について述べさせて頂く。 As described above, the values of S, α, and β when “1 byte variable” in “Numeric calculation using an array of 1 byte variable” is replaced with “basic data type other than 1 byte variable” I talked about the changes in the 96th to 113th paragraphs. Next, let me describe the third “Increase in Pn to decrease S, α, and β” in the form of further promoting the above improvement.
 以下、三つ目の「S・α・βを減少させるようなPの増加」について述べさせて頂く。この話題は、図5の(b)から(a)への移行に伴い際に生じる変化の考察に相当する。 In the following, the third “increase in Pn that decreases S · α · β” will be described. This topic corresponds to consideration of the change that occurs along with the transition from (b) to (a) in FIG.
 配列や複合変数のような区分けされた領域を利用することなく、一個当たりの要素の大きさを大きくした場合に、速度面での改善が得られることになる。96~113段落にかけて申し上げた改善は大まかにはこういったものであった。 Acceleration in terms of speed can be obtained when the size of each element is increased without using a segmented area such as an array or compound variable. The improvements I made in the 96th to 113th paragraphs were roughly such.
 95段落でも述べさせていただいたが、この改善をより抽象的に捉えて、「連続する任意の数のビットの並びを利用すれば、速度面での改善が得られる」と言うことができる。 As I mentioned in paragraph 95, this improvement can be seen more abstractly and it can be said that "an improvement in speed can be obtained by using an arbitrary number of consecutive bits".
 具体的には、96~113段落にかけて申し上げた改善における要素の箇所、すなわち「1バイトの文字型以外の基本データ型」の箇所を、「より長い連続する任意の数のビットの並び」にて置き換えることができれば、更なる速度の改善が得られると言うことができる。 Specifically, the location of the elements in the improvements described in paragraphs 96 to 113, that is, the location of “basic data type other than 1-byte character type” is expressed as “arbitrary arbitrary number of consecutive bits”. If it can be replaced, it can be said that further speed improvements are obtained.
 この置換を実現するためには、「メモリ及びメモリ以外の記憶媒体上で連続したビットの並びを確保すること」及び「そのビットの並びに対する処理を一括で行うこと」が要件となる。前者はメモリ割り当ての問題であり、後者はソフトウェアレベルでのビット演算の問題である。 In order to realize this replacement, “reserving a continuous bit sequence on a memory and a storage medium other than the memory” and “processing the bit sequence collectively” are necessary. The former is a memory allocation problem, and the latter is a bit operation problem at the software level.
 まず前者について具体的に述べる。この場合、「基本データ型よりも長い連続したビットの並び」をメモリ上に割り当てることができるような言語で調整する必要がある。なお、「メモリ以外の記憶媒体上でのビットの並び」の確保について考慮しないのは、メモリ以外の記憶媒体上では任意のビットの並びを表現することが容易だからである。メモリ以外の記憶媒体上で表現する際に要となるのは、「ある数の表現がどこから始まるのか」、「ある数の表現がどこで終わるのか」そして「1個当たりの要素の大きさ」の3点である。このことについては第77~83段落の「メモリ以外の記憶媒体の導入」の箇所で申し上げた通りである。端的には「メモリ以外の記憶媒体に保持した配列構造への参照等」、「1個当たりの要素の大きさ」、「要素の総量」の3つで解決する。 First, I will describe the former specifically. In this case, it is necessary to make adjustments in a language that can allocate “a sequence of consecutive bits longer than the basic data type” on the memory. The reason why the “arrangement of bits on a storage medium other than the memory” is not taken into account is that it is easy to express an arbitrary bit arrangement on the storage medium other than the memory. When expressing on a storage medium other than memory, the key points are "where a certain number of expressions start", "where a certain number of expressions end", and "the size of each element" Three points. This is as stated in the paragraph “Introduction of storage medium other than memory” in paragraphs 77-83. In short, it solves with “reference to an array structure held in a storage medium other than a memory”, “size of one element”, and “total amount of elements”.
 次に後者について具体的に述べる。「連続するビットの並びを一括で演算処理する」とは、基本データ型に予め備えられた四則演算処理を、AND演算子、OR演算子、XOR演算子、ビットシフト演算子等を組み合わせることで、ビットパターンレベルで再現することである。より簡単に言うと、「基本データ型の四則演算の機能を、基本データ型よりも長いビットの並びについて自作すること」である。つまり、「基本データ型よりも長い領域」を2つ用意して、「基本データ型が備える四則演算」になるべく近い挙動が再現できれば良いということである。 Next, the latter will be specifically described. “Processing a sequence of consecutive bits all at once” is a combination of the four arithmetic operations provided in advance in the basic data type with AND operators, OR operators, XOR operators, bit shift operators, etc. To reproduce at the bit pattern level. To put it more simply, it means “make your own basic data type arithmetic operation function for a bit sequence longer than the basic data type”. In other words, it is only necessary to prepare two “regions longer than the basic data type” and reproduce the behavior as close as possible to the “four arithmetic operations included in the basic data type”.
 例えば、標準C++にはbitsetというクラスが備わっているが、これを使うことで、「基本データ型よりも長い連続したビットの並びの確保」も、「連続するビットの並びを一括で演算処理する」という課題も解決することができる。また、バイナリ形式のファイル入出力も通常の型と同じようにして使えるので、「メモリ以外の記憶媒体上での表現」も簡易になしうる。C言語では8バイトのlong long int型が整数計算について最も効率が良いが、bitsetを使って9バイト以上の連続するビットの並びを割り当て、この並びに対して「任意の四則演算に必要なビットパターンレベルでの処理」を施すことで、long long int型に予め備えられている四則演算の機能をビットパターンレベルで再現できる。long long int型は64個の連続するビットの並びであるから、連続する72個以上のビットの並びを2つ用意し、四則演算についてlong long int型に近い挙動を再現すれば良い。bitsetと種々の演算子(&,|,^,<<,>>等)を用いることで、long long int型の四則演算の機能を、9バイト以上のサイズについて自作できるということである。なお、「任意の四則演算に必要なビットパターンレベルでの処理(アルゴリズム)」は公知技術である。 For example, the standard C ++ has a class called bitset. By using this class, “reserving a continuous sequence of bits longer than the basic data type” can also be used to collectively process a sequence of consecutive bits. Can also be solved. In addition, since binary file input / output can be used in the same way as a normal type, “expression on a storage medium other than memory” can be easily performed. In the C language, the 8-byte long long int type is the most efficient for integer calculations. However, using bitset, a sequence of 9 or more consecutive bits is assigned, and the bit pattern required for any four arithmetic operations is assigned to this sequence. By performing the processing at the level, the functions of the four arithmetic operations provided in advance in the long long int type can be reproduced at the bit pattern level. Since the long long int type is a sequence of 64 consecutive bits, it is only necessary to prepare two sequences of 72 or more consecutive bits and reproduce the behavior similar to the long long int type for the four arithmetic operations. By using bitset and various operators (&, |, ^, <<, >>, etc.), it is possible to make a long long int type arithmetic operation function for a size of 9 bytes or more. “Processing (algorithm) at a bit pattern level necessary for arbitrary four arithmetic operations” is a known technique.
 要素が「1バイト文字型を除く基本データ型」であったところが、「連続する任意の数のビットの並び」にて置き換えられることによって得られる改善は、前述の「1バイトの文字型を要素とする配列を利用した数値計算」から「1バイトの文字型を除く、基本データ型を利用した数値計算」へと移行させることで得られる改善と同質である。 The improvement obtained by replacing the element with the “basic data type excluding the 1-byte character type” with the “arbitrary number of consecutive bits” is the above-mentioned improvement of the “1-byte character type It is the same quality as the improvement obtained by moving from "Numerical calculation using array" to "Numerical calculation using basic data type excluding 1-byte character type".
 配列構造を利用した数値計算において、この「ビットパターンレベルでの基本的な四則演算」は実行される頻度が最も高い。実施において、基本データ型の挙動を「より長いビットの並び」について再現される際には、細かな箇所にまで拘って高速化を試みるのが良いものと思われる。 In the numerical calculation using the array structure, this “basic four arithmetic operations at the bit pattern level” is executed most frequently. In the implementation, when the behavior of the basic data type is reproduced with respect to “longer bit sequence”, it seems to be good to try to increase the speed even if it is detailed.
 以上、84~124段落にわたって「S・α・βの値を小さくする事由」について、ソフトウェアレベルでの改善を3つに分けて述べさせていただいた。以下、「S・α・βの値を小さくする事由」について、ハードウェアレベルでの改善について述べさせて頂く。 As mentioned above, I have described the improvement at the software level in three parts regarding “reasons for reducing the values of S, α, and β” over the 84th to 124th paragraphs. In the following, I will describe the improvement at the hardware level for “reason for reducing the values of S, α, and β”.
 まず、α及びβの改善について述べさせて頂く。53~56段落にて申し上げた通り、αに見えるQの値、βに見えるIの値はハードウェアの性能に左右される。またαに見えるTの値はメモリに左右される。実施に当たって、「より読み込み速度の速いメモリ以外の記憶媒体」、「より性能の高い演算処理装置」を採用することによってQ及びIの値が改善し、「より読み込み速度が速いメモリ」を採用することによって、の値が改善する。 First, let me describe the improvement of α and β. As stated in paragraphs 53 to 56, the Q value that appears as α and the I value that appears as β depend on the performance of the hardware. The value of T that appears as α depends on the memory. In implementation, the values of Q and I are improved by adopting “storage media other than memory with faster reading speed” and “higher performance processing device”, and adopt “memory with faster reading speed”. As a result, the value of is improved.
 Sの値はそのままに、α、βの値が改善するということは、計算処理の単位に要する時間だけが改善することを意味している。従って、計算処理の総数が大きければ大きいほど改善の効果が顕著だと言える。「計算処理の総数」はKの値に比例し、Kの値は表現しようとする数Nの値に比例するといってほぼ良い。従って、「扱う数が大きければ大きいほど、高性能なハードウェアを採用することによって得られる効果が顕著である」と分かる。見方を変えれば、そもそものα及びβの増加率が小さいのであれば、ある程度の大きさの数を扱うのでなければ、この箇所についての目に見えた改善を得ることはできないということである。 The improvement of the values of α and β while keeping the value of S means that only the time required for the unit of calculation processing is improved. Therefore, it can be said that the larger the total number of calculation processes, the more remarkable the improvement effect. It can be said that “the total number of calculation processes” is proportional to the value of K, and the value of K is proportional to the value of the number N to be expressed. Therefore, it can be understood that “the larger the number handled, the more remarkable the effect obtained by adopting high-performance hardware”. In other words, if the rate of increase of α and β is small in the first place, it is impossible to obtain a visible improvement for this point unless a certain number of numbers is handled.
 以上を踏まえ、実施の観点から以下のように言える。第一に、実施の目的が「特定の値を上限として、大きな数を扱うこと」ではなく「なるべく大きな数を扱うこと」であるならば、より高性能なハードウェアを導入するのが良いものと思われる。第二に、コンピュータ関連の技術は先が読めないと言われるが、今後もハードウェア性能の向上が続くのであれば、R、Q、T、Iの値はますます小さくなっていくことになる。この予測不能性の観点から、より多くのハードウェアで動作可能な仕様を採用した製品の方が、ハードウェア性能の向上に基づくR、Q、T、Iの値の改善に対して、より高い順応性を帯びた、より息の長い製品となるはずである。以上が、ハードウェアレベルでのα及びβの改善である。 Based on the above, the following can be said from the implementation point of view. First, if the purpose of the implementation is “to handle as many numbers as possible” rather than “to handle large numbers with a specific value as the upper limit”, it is better to introduce higher-performance hardware. I think that the. Second, computer-related technologies are said to be unreadable, but if hardware performance continues to improve, the values of R, Q, T, and I will become smaller and smaller. . From the viewpoint of this unpredictability, a product that adopts a specification that can operate with more hardware is higher in terms of improving the values of R, Q, T, and I based on improved hardware performance. The product should be more adaptable and longer breathing. The above is the improvement of α and β at the hardware level.
 次に複数装置の利用について述べさせて頂く。これは主に図5の(e)及び(f)についての話題である。配列構造を利用した数値計算の条件については、次のようにまとめることができる。まず、「変数を扱えること」、「配列を扱えること」、「メモリとメモリ以外の記憶媒体を併用できること、あるいは他のアプリケーションと競合がないようなメモリを単独で用意できること」及び「数値計算のためのソフトウェアが実行可能なこと」、少なくともこの4つの条件を満たせば、より大きな数を扱うことを目的としたシステムを実現できる。更にソフトウェアについて「連続するビットの並びを任意に割り当てられること」及び「種々のプログラミング言語で基本データ型に備えられている四則演算のような処理を、任意の数のビットの並びについて再現できること」、この2つの条件を満たすことで、上述のシステムで数値計算の高速化を図ることができるようになる。 Next, let me describe the use of multiple devices. This is mainly a topic about (e) and (f) of FIG. The conditions for numerical calculation using the array structure can be summarized as follows. First, "can handle variables", "can handle arrays", "can use memory and storage media other than memory, or can prepare a memory that does not conflict with other applications" and "numerical calculations" If at least these four conditions are satisfied, a system for handling a larger number can be realized. Furthermore, regarding software, "arbitrary bit sequences can be arbitrarily assigned" and "processing such as the four arithmetic operations provided for basic data types in various programming languages can be reproduced for any number of bit sequences" By satisfying these two conditions, it is possible to speed up the numerical calculation in the above-described system.
 これらの要件さえ満たせば、配列構造を利用した数値計算に特化した外付けの装置を作ることができるはずである。また、これらの要件さえ満たせば、「市場に出回っているようなさまざまなパソコン」からスーパーコンピュータにまで請求項1の手法を反映させることが可能なはずである。 ・ If these requirements are met, an external device specialized for numerical calculations using array structures should be possible. If these requirements are satisfied, it should be possible to reflect the method of claim 1 from “various personal computers on the market” to supercomputers.
 ここで、ソフトウェア上での「要素の挙動」について述べさせて頂く。本発明の根本的な要素の挙動については、先行技術と異なる箇所はない。すなわち、先行技術に準じて筆算のアルゴリズムを採用するのが簡便で良いと思われる。「先行技術における要素の大きさを大きくする」というのが本発明の要の一つである。先行技術は「配列構造を利用した、任意の数の“文字”の処理」に過ぎずない。その延長たる本発明は「配列構造を利用した、任意の数の“基本データ型”の処理」、あるいはその更なる延長たる「配列構造を利用した、任意の数の“より長いビットの並び”の処理」に過ぎない。つまり、いずれの場合も「配列構造の要素の処理」に過ぎない。従って、「文字型を要素とする巨大な配列構造」を公知技術で以って容易に処理できるのであれば、その同類たる「基本データ型を要素とする巨大な配列構造」も、その更なる延長たる「基本データ型の機能を模した、より長いビットの並びを要素とする巨大な配列構造」も公知技術で以って容易に処理できるはずである。「いずれも巨大な配列構造の処理である」という観点からすれば、違うのは要素の大きさだけである。 Here, let me describe the “element behavior” on the software. There is no difference from the prior art in the behavior of the fundamental elements of the present invention. In other words, it seems convenient and easy to adopt a calculation algorithm according to the prior art. “To increase the size of elements in the prior art” is one of the key points of the present invention. The prior art is merely “processing an arbitrary number of“ characters ”using an array structure”. The extension of the present invention is “processing an arbitrary number of“ basic data types ”using an array structure”, or further extending “an arbitrary number of“ longer bit sequences ”using an array structure”. It's just a "process". That is, in either case, it is merely “processing of elements of an array structure”. Therefore, if a “giant array structure with character type elements” can be easily processed with known techniques, the similar “giant array structure with basic data types as elements” is further developed. The extended “huge array structure with elements of longer bit sequences that mimic the function of the basic data type” should be able to be easily processed by known techniques. From the point of view that “all are processing of a huge array structure”, the only difference is the size of the element.
 この筆算のアルゴリズムでは、並列処理を取り入れやすい。一桁一桁を独立に取り扱うことができるからである。「一桁一桁を独立に取り扱う」とは、「配列構造の各要素を独立に取り扱う」というありふれた処理のことに他ならない。従って、これもまた公知技術で以って容易に実現可能である。 This parallel algorithm makes it easy to incorporate parallel processing. This is because each digit can be handled independently. “Handling each digit independently” is just a common process of “handling each element of the array structure independently”. Therefore, this can also be easily realized by known techniques.
 一桁が表す数が大きくなればなるほど、言い換えると一桁を表すのに要する容量が大きくなればなるほど、更に言い換えると要素の大きさが大きくなるほど、並列処理を導入することで得られる改善の効果が高くなるはずである。従って、GPU等を使った並列処理を導入した場合には、より大きな数を扱う場合において、速度面での更なる向上が見込まれる。今後もGPU等の並列処理に特化したハードウェアの性能向上が続くのであれば、やはりそのことは本発明の課題にとって都合の良い事実となり得る。なお、先行技術の手法に並列処理を導入することについては、容易に類推ができるものと判断し、請求項には含めないこととさせて頂いた。 The greater the number of digits that can be represented, in other words, the greater the capacity required to represent a digit, and in other words, the greater the size of the elements, the greater the benefits of introducing parallel processing. Should be higher. Therefore, when parallel processing using a GPU or the like is introduced, a further improvement in speed is expected when a larger number is handled. If the performance of hardware specialized for parallel processing such as GPUs continues to improve in the future, this can be a convenient fact for the problem of the present invention. It should be noted that the introduction of parallel processing into the prior art technique was judged to be easily analogized and was not included in the claims.
 翻って、130段落にて申し上げたように、配列構造を利用した数値計算に特化した外付けの装置を設けることは「より大きな数をより高速に扱う」という主題に対して、有効な手段となり得る。「メインとなるコンピュータからの計算に関する命令を、外付けの装置として受け取り、演算処理を済ませ、得られた結果をメインのコンピュータへと返す」といった体裁をとる。 In turn, as stated in paragraph 130, providing an external device specialized for numerical computation using an array structure is an effective means for the subject of "handle larger numbers faster". Can be. It takes a form such as “Receiving an instruction relating to calculation from the main computer as an external device, completing the arithmetic processing, and returning the obtained result to the main computer”.
 この装置は「請求項1に記載の手法を実行できるソフトウェア」を持ち、これで以って、配列構造を利用した数値計算を実行する。必要に応じて請求項2または請求項3に記載の手法をこのソフトウェアに取り入れる。メインとなるコンピュータとの接続については、公知技術で以って実現可能なはずである。例えば、USBや無線LANを利用した接続などが考えられる。どのような場合にせよ、配列構造を利用した数値計算のために用意された、より大容量の記憶媒体がこの装置に内包されていることが、より大きな数を扱うという観点からは望ましいものと思われる。54段落で述べたように、装置の構成によっては、Qの値が負に転じ得る。つまり、メインとなるコンピュータが単体で実行する場合よりも、高速な記憶媒体へのアクセスが実現され得る。 This device has “software that can execute the method according to claim 1”, and thereby performs numerical calculation using an array structure. The method described in claim 2 or claim 3 is incorporated in this software as necessary. The connection with the main computer should be feasible with known techniques. For example, connection using USB or wireless LAN is conceivable. In any case, it is desirable from the viewpoint of handling a larger number that a larger-capacity storage medium prepared for numerical calculation using an array structure is included in this device. Seem. As described in paragraph 54, the value of Q can turn negative depending on the configuration of the apparatus. That is, faster access to the storage medium can be realized than when the main computer executes alone.
 この装置が処理の全てを担う場合と、処理の一部を補助的に実行する場合とが考えられるが、動作内容はメインとなるコンピュータがメモリ以外の記憶媒体を用いて、単体にて配列構造を利用した数値計算を実行する場合と同じである。外付けの装置がその全てを実行するか、一部を補助するかの違いに過ぎない。いずれの場合にせよ、数値計算の処理内容は同じままに、実行される場所が変わるだけである。第132段落にて申し上げた通り、配列構造を利用した数値計算では、ある数の表現について各桁が独立しているので、こういったソフトウェアレベルでの処理の分担が容易である。このような外付け装置の併用は、見方を変えれば、並列処理の導入の一形態とみなすこともできる。 There are cases where this device is responsible for all of the processing and cases where a part of the processing is performed auxiliary, but the operation contents are arranged in a single unit using a storage medium other than the memory by the main computer. This is the same as when performing numerical calculations using. The only difference is whether an external device does all of that or assists some. In any case, the processing content of the numerical calculation remains the same, only the place where it is executed is changed. As stated in the 132nd paragraph, in the numerical calculation using the array structure, since each digit is independent for a certain number of expressions, it is easy to share such processing at the software level. Such a combination of external devices can be regarded as a form of introduction of parallel processing if the viewpoint is changed.
 以上、配列構造を利用した数値計算に特化した外付けの装置について述べさせて頂いた。装置自体は公知技術で以って十分に実現可能なはずである。「自己が担う特定の目的」に特化した自己専用の演算処理装置と、「自己が担う特定の目的」に特化した自己専用の記憶領域を操作することができさえすれば良いはずだからである。「特定の目的」が配列構造を利用した数値計算に相当する。つまり、既存の装置形態に配列構造を利用した数値計算を実行するためのソフトウェアを持たせるということである。なお、この装置は請求項4及び請求項5に記載の装置に相当する。図2は係る装置の例示である。 So far, I have described an external device specializing in numerical computation using an array structure. The device itself should be fully feasible with known techniques. It is only necessary to be able to operate a dedicated processing unit specialized for the "specific purpose for the self" and a self-dedicated storage area specialized for the "specific purpose for the self". is there. The “specific purpose” corresponds to a numerical calculation using an array structure. That is, software for executing numerical calculations using an array structure is provided in the existing apparatus configuration. This apparatus corresponds to the apparatus described in claims 4 and 5. FIG. 2 is an illustration of such a device.
 本発明をネットワークで結ばれた複数のコンピュータで実現することも可能である。例えば、メインとなるコンピュータを1台定め、このコンピュータをUIとし、残りのコンピュータは上記の外付けの装置と見做してしまう、といった体裁をとる(図3)。 The present invention can be realized by a plurality of computers connected by a network. For example, one main computer is determined, this computer is set as a UI, and the remaining computers are regarded as the external devices described above (FIG. 3).
 各コンピュータに数値計算を行うためのソフトウェアを内包させることが可能である。またGPU等の並列処理に特化した装置を備えることが可能である。そして、大容量の記憶媒体を備えることが可能である。速度を重視するなら、少容量にはなるが、メモリ自体を記憶媒体とみなしてしまうことも可能である。上記の外付けの装置の場合と同様、従属するコンピュータで使用する記憶媒体の性能が、メインとなるコンピュータのメモリ性能を上回るのであれば、Qの値は負に転ずることになる。 It is possible to include software for performing numerical calculations in each computer. It is also possible to provide a device specialized for parallel processing such as GPU. A large-capacity storage medium can be provided. If importance is attached to speed, the capacity can be reduced, but the memory itself can be regarded as a storage medium. As in the case of the external device described above, if the performance of the storage medium used by the subordinate computer exceeds the memory performance of the main computer, the value of Q will turn negative.
 この場合も要素の挙動自体は変わらない。ある数について、各コンピュータが「どの桁からどの桁まで」を担当するのか割り当てれば良いだけである。これは並列処理導入の範疇を超え出るものではない。つまり、配列構造を区分けし、各区画に生成したスレッドを対応させるといったありふれた処理である。「ネットワーク上のコンピュータの連動」については公知技術で実現可能なはずである。既存のプロトコルを採用すれば、複数のOSが混在する場合であっても実行可能なはずである。 In this case, the behavior of the element itself does not change. All you have to do is assign which computer is responsible for "from which digit to which digit" for a certain number. This does not go beyond the scope of parallel processing. In other words, it is a common process of dividing the array structure and associating the generated thread with each partition. “Linking computers on a network” should be feasible with a known technique. If an existing protocol is adopted, it should be executable even when a plurality of OSs coexist.
 逆に、第134~137段落にて申し上げた外付けの装置を複数使用してこの構造を構築するという形態もある。この場合、ネットワーク通信用のプロトコルを採用する必要はなくなる。図4はこの例示であり、図4の6が前述の外付けの装置を複数内包する装置である。 Conversely, there is also a form in which this structure is constructed using a plurality of external devices described in the 134th to 137th paragraphs. In this case, it is not necessary to adopt a network communication protocol. FIG. 4 is an example of this, and 6 in FIG. 4 is a device that includes a plurality of the above-mentioned external devices.
 以上、126~141段落に渡って、主に「S・α・βの値を小さくする事由」におけるハードウェアレベルでの改善について述べさせていただいた。ハードウェアを利活用することで効果がより際立つと言える。 As mentioned above, over the 126th to 141st paragraphs, I have mainly described improvements at the hardware level in the “reason for reducing the values of S, α, and β”. It can be said that the effect is more conspicuous by utilizing the hardware.
 次に、表示の高速化について述べさせて頂く。まず表示に関する課題について述べさせて頂く。「人が数として認識できる文字列」を利用した数値計算から、「1バイトの変数を要素とする配列」を利用した数値計算へと移行する際、表示について課題が生じる。 Next, let me describe the speeding up of the display. First, let me describe the display issues. When shifting from a numerical calculation using a “character string that can be recognized as a number” to a numerical calculation using an “array having a 1-byte variable as an element”, a display problem arises.
 前者は発明の趣旨から10進法あるいは16進法表記を使用するはずである。一方、後者は最大256進法にまで拡張される。後者も定義上は文字列でありうるが、係る文字列には数字以外の記号やいわゆる文字化けが混ざることになるので、もはや「人が数として認識できる文字列」とはいえないはずである。256進法にまで拡張した場合には、1桁当たり256種類の文字を使い分けなくてはならず、係る文字列を介して、人からコンピュータに意図した通りの数を渡すことは困難である。 The former should use decimal or hexadecimal notation for the purpose of the invention. On the other hand, the latter is expanded to a maximum of 256 base. The latter can be a character string by definition, but such a character string will be mixed with symbols other than numbers and so-called garbled characters, so it should no longer be a "character string that people can recognize as numbers". . In the case of expansion to 256 notation, 256 types of characters must be properly used for each digit, and it is difficult to pass the number as intended from a person to a computer via such a character string.
 この問題はソフトウェア側で解決できる。簡単に言うと、人が触れる箇所だけ10進法表記にし、内部処理は1バイト当たり最大256進法にまで拡張するということである。より具体的に言うと、次のようになる。「人が数として認識できる文字列」あるいは「数」をコンピュータへ渡し、受け取ったコンピュータが最大256進法の表現としてこれを「1バイトの変数を要素とする配列」へ変換し、この変換後の配列を内部に保持し、これを用いて演算を行う。そして表示させるときにだけ、また10進法表記へと変換する。 This problem can be solved on the software side. To put it simply, only the parts touched by humans are expressed in decimal notation, and the internal processing is extended to a maximum of 256 decimals per byte. More specifically, it is as follows. “Character string that human can recognize as a number” or “number” is passed to the computer, and the received computer converts it to “array with 1 byte variable as an element” as a maximum 256-ary expression, and after this conversion Is stored inside, and calculation is performed using this array. Then, it is converted into decimal notation only when it is displayed.
 「文字型を除く基本データ型を利用した数値計算」及び「配列構造に見立てた任意の数のビットの並びを利用した数値計算」の場合も同じである。これらの場合において、位取り記数法の底がP進法にまで拡張されるとすると、「人が数として認識できる文字列」あるいは「数」をコンピュータへ渡し、受け取ったコンピュータが「1個当たりP通りの数を表すことのできる要素を持つ配列構造」へと変換し、この変換後の配列構造を用いて数値計算を実行する。そして表示させるときにだけ、また10進法表記へ変換する(図1)。 The same applies to “numerical calculation using basic data types excluding character types” and “numerical calculation using an arbitrary number of bits arranged in an array structure”. In these cases, if the base of the scale system is extended to the Pn base system, a “character string that a person can recognize as a number” or “number” is passed to the computer, It is converted to an “array structure having elements that can represent P n number of hits”, and numerical calculation is executed using the array structure after the conversion. And only when it displays, it converts to decimal notation again (FIG. 1).
 例えばC言語で4バイトのint型を要素とする場合、次のような手法がありえる。232を表現するのに何桁必要になるか概算し、必要な桁数の要素を持つ配列を用意する。概算では桁が多い分には差し支えないが、少ないと桁溢れに対処できなくなることに留意されたい。係る概算はKを求める式で可能である。X桁が必要になったとする。4バイトの要素をX個持つ配列を用意する。受け取った数を232で除算し、余りと商を取得する。余りを配列の末尾の要素に代入する。再び得られた商を232で除算し、余りと商を取得する。余りを「前の操作よりもひとつ若い要素」へ代入する。この操作を商が0になるまで繰り返す。この操作は我々が紙面上にて位取り記数法の底の変換を行う場合と同じである。最後に配列の先頭から値を調べ、初めて0でない箇所が出現する要素を取得し、これを配列の先頭の要素とする。メモリ領域に無駄を生じさせたくない場合には、この配列を任意の領域にコピーした上で破棄し、コピーした値を数値表現とみなせば良い。 For example, when a 4-byte int type is used as an element in C language, the following method can be used. 2 Estimate how many digits are needed to represent 32 , and prepare an array having elements of the necessary number of digits. It should be noted that the rough estimate does not matter if there are many digits, but if it is small, it will not be possible to deal with overflow. Such an approximation can be obtained by an equation for obtaining K. Suppose X digits are needed. Prepare an array with X 4-byte elements. Divide the number received by 2 32 to get the remainder and quotient. Assign the remainder to the last element of the array. The quotient obtained again is divided by 2 32 to obtain the remainder and the quotient. The remainder is assigned to “one element younger than the previous operation”. This operation is repeated until the quotient becomes zero. This operation is the same as when we perform the conversion of the base of the scale system on paper. Finally, the value is checked from the beginning of the array, and the element where a non-zero portion appears for the first time is obtained, and this is used as the first element of the array. If you do not want to waste the memory area, copy this array to an arbitrary area, discard it, and consider the copied value as a numeric expression.
 「連続するビットの並び」を使用する場合には「配列の用意」、「余りの代入」、そして「初めて0でない箇所が出現する箇所の検出」についてやや操作が変わるが、根本的な要素の振る舞いは同じである。この例で言うと次のようになる。 When using "Sequential bit sequence", the operation changes slightly for "preparation of array", "substitution of remainder", and "detection of location where non-zero appears for the first time". The behavior is the same. In this example:
 第一に、「配列の用意」については「必要となる桁数」に「要素の大きさ(4バイト)」を掛けて得られた値の分だけ、メモリ領域を確保すれば良い。第二に、「余りの代入」については、配列構造の要素に見立てた32ビットの区画を全てネゲートし、それから「当の区画」と「代入しようとする値」で以ってOR演算を実行すれば良い。第三に、「初めて0でない要素が出現する箇所の検出」については、ビットの並びを先頭から32ビットずつ調べてゆき、0であった群について32ビット左シフトして削除して行けば良い。なお、第122段落にて申しあげた、標準C++に備わっているbitsetというクラスを用いれば、この操作はより容易になる。具体的には、メモリの確保、代入、及びビットシフトについて、すでに機能が提供されている。特に必要となるのは「桁の数の概算」だけである。前述の通り、係る概算はKを求める式で可能である。 First, regarding “preparation of array”, it is sufficient to secure the memory area by the value obtained by multiplying “number of digits required” by “element size (4 bytes)”. Second, for "remainder assignment", negate all 32-bit sections regarded as elements of the array structure, and then execute an OR operation with "present section" and "value to be substituted" Just do it. Thirdly, with regard to “detection of a location where an element that is not 0 for the first time appears”, the bit sequence may be examined 32 bits at a time from the top, and the group that was 0 may be shifted left 32 bits and deleted. . It should be noted that this operation is facilitated by using a class called bitset provided in the standard C ++ mentioned in the 122nd paragraph. Specifically, functions are already provided for memory reservation, assignment, and bit shift. All that is required is an "approximate number of digits". As described above, such an approximation can be obtained by an equation for obtaining K.
 変換処理は演算を行う度に実行する必要はなく、人がコンピュータへ「数値とみなした文字列」を渡すときに一度、そして表示するときに一度行うだけでよいはずである。表示の際は、本体の配列とは別に「表示用の文字型の配列」を用意し、各要素を「10進法表記の各桁の数値」で満たし、これを表示させれば良い。このように本体の配列の値を変えなければ、表示の後で変換を経ずに計算を再開できる。 The conversion process does not have to be executed every time an operation is performed, but should be performed once when a person passes a “character string regarded as a numerical value” to a computer and once when it is displayed. At the time of display, a “character array for display” is prepared separately from the array of the main body, and each element is filled with “numeric value in decimal notation” and displayed. If the values of the array of the main body are not changed in this way, the calculation can be resumed without conversion after display.
 上述の変換機能に限って言えば、例えば標準C++で「数値計算に使うための配列構造へのポインタ」と「表示用の関数」をメンバとして持つクラスがあり、このクラスがユーザーから受け取った文字列で以ってこのポインタを初期化し、表示の際には「表示用の関数」で以って表示する、といった体裁が考えられる。 Speaking only of the above-mentioned conversion function, for example, there is a class that has “pointer to array structure for use in numerical calculation” and “display function” as members in standard C ++, and this class receives characters received from the user. It is conceivable that the pointer is initialized with a column and displayed with a “display function” at the time of display.
 人がUIを介して、電卓に入力するようにして打ち込むことのできる数はそれほど大きな数にはならないはずである。例えば、人が直接1億桁の数を手動にて打ち込むといった状況は考えづらい。それほど大きな桁数を扱わないだろうことから、係る変換処理の負荷は、入力についてはそれほど気にならないと言えるはずである。人が使う際には、「より小さな値が打ち込まれ、内部での数値計算が繰り返されたことによって桁数が膨れ上がり、これを結果として表示する」といった体裁になるものと思われる。しかし、出力については課題が残る。出力時には膨大な桁数を表示しうるからである。大きな数を頻繁に出力する場合には対処が必要である。 The number that a person can input by inputting to the calculator via the UI should not be so large. For example, it is difficult to imagine a situation in which a person directly manually inputs a number of 100 million digits. Since such a large number of digits will not be handled, it can be said that the load of such conversion processing is not so much concerned with the input. When used by humans, it seems that the appearance of “a smaller value is entered and the number of digits expands as a result of repeated internal numerical calculations, and this is displayed as a result”. However, issues remain with regard to output. This is because an enormous number of digits can be displayed during output. When large numbers are frequently output, it is necessary to deal with them.
 この表示の際の変換処理を大幅に省く手段が1つ考えられる。これが「表示の高速化」であり、請求項2に記載の手法に相当する。1つの要素を表現するのに2ビット使うとする。このとき、位取り記数法の底の値を最大の2にまで拡張するのではなく、10(10<2)までに抑えるというものである。拡張の度合いを抑えることにつき特に問題がないことについては、第38~41段落にて申し上げた通りである。 One means for greatly omitting the conversion process at the time of display is conceivable. This is “speeding up display” and corresponds to the method according to claim 2. Suppose that 2 n bits are used to represent one element. At this time, the base value of the scaled number method is not expanded to the maximum 2 n , but is limited to 10 x (10 x <2 n ). The fact that there is no particular problem in suppressing the degree of expansion is as stated in the 38th to 41st paragraphs.
 このようにすることで、文字列を頭から表示させることができ、なおかつ2にまで拡張した場合よりも少ない負担で表示時の変換処理を済ませることができるようになる。一方、底を10までに抑えた場合は、2にまで拡張させた場合よりも、表すことのできる数は小さくなる。例えば、256進法よりも100進法の方が、同じ桁数で表すことのできる数は少ない。 In this way, the character string can be displayed from the beginning, and the conversion process at the time of display can be completed with a smaller burden than when the number of characters is expanded to 2n . On the other hand, when the base is suppressed to 10 x, the number that can be expressed is smaller than when the base is expanded to 2 n . For example, there are fewer numbers that can be represented by the same number of digits in the decimal system than in the 256-base system.
 10進法に留めることで、表示の際の所要時間が大幅に減少するが、この「大幅に」とは具体的には「2進法から10進法へと変換し、表示する処理に要する時間」と「10進法から10進法へと変換し、表示する処理に要する時間」との差分のことである。 By fastening the 10 x ary, although time required for the display is greatly reduced, and this "substantially" is specifically converted into decimal from "2 n-ary, and displays the processing It is the difference between the “time required for processing” and the “time required for the process of converting from 10 × decimal system to decimal system and displaying”.
 10進法では、10進法表記で表した場合に総桁数が最大で何桁になるのか、予め知ることができる。なおかつ変換時の桁溢れを気にしなくて良いという利点もある。 In the 10x decimal system, it is possible to know in advance how many digits the maximum number of digits is when expressed in decimal notation. In addition, there is an advantage that it is not necessary to worry about overflow when converting.
 まず、10進法表記で必要となる桁の数だけ要素を持つ文字型の配列を用意する。この配列を10進法表記に要した要素の桁数で以って等分する。等分することで生じた各区画は10進法の各桁に対応する。この各区画について、末尾から順に「10進法の各桁の値」を1の位から順に満たしていけば、10進への変換が済んでしまうことになる。なお、この際に余った桁は0で満たすようにする。 First, a character array having elements corresponding to the number of digits required for decimal notation is prepared. Aliquoted I than the digit number of elements that took this sequence 10 x ary notation. Each partition generated by equally dividing corresponds to each digit of the 10 x-ary. For each of the sections, conversion to decimal is completed if “10 x decimal digit values” are sequentially satisfied from the end in order from the end. Note that the remaining digits are filled with zeros.
 こうしてできた「ある数の10進法表記を表現した文字型の配列」は、10進法における最も大きな桁、言い換えると最も左側の桁が含まれるブロックについて、先頭から先が0となりうる。つまり、先頭から1個以上の0が続き得る。従って、初めて0でない文字が出現する要素を検出し、これが先頭となるように前に詰める必要がある。この表示用の配列は文字型の配列なので係る操作は容易に実現できる。初めて0でない文字が現れる箇所を文字列の先頭アドレスとしてしまえば良く、このような操作、すなわち文字列を前に詰める操作は公知の技術である。この処理を経ることで、先頭から複数個の0が並ぶ結果となったとしても問題なく表示ができるはずである。以下、上記の手法について、より具体的に示させて頂く。 The “character array expressing a certain number of decimal notation” thus formed can have a leading zero in the block including the largest digit in the 10 × decimal system, in other words, the leftmost digit. That is, one or more zeros can follow from the beginning. Therefore, it is necessary to detect an element in which a non-zero character appears for the first time, and prepend it so that this is the head. Since this display array is a character array, such an operation can be easily realized. A portion where a non-zero character appears for the first time may be used as the start address of the character string, and such an operation, that is, an operation of filling the character string forward is a known technique. Through this process, even if a plurality of 0s are arranged from the top, it should be possible to display without problems. Hereinafter, the above method will be described more specifically.
 表1は100進法表記にて3桁で表されるxyzという数を10進法へ変換する際の工程を段階的に示したものである。100進法表記で3桁必要になる数は10進法表記では6桁を超えないとわかる。そこでまず、6個の要素を持つ文字型の配列を用意する(表1の▲1▼)。100進法で必要であった桁数は3なので、配列の6要素を3等分する。すると、一区画あたり2要素の状態で区分けできる(表1の▲2▼)。この各区画は100進法表記における各桁に対応させることができる(表1の▲3▼)。あとは、この各区画の末尾の要素から順に、対応する100進法表記の各桁の値で満たしていけば良い。では、この「各区画の末尾の要素から順に、対応する100進法表記の各桁の値で満たしていく」とは具体的にはどういったことなのか、表2を使ってより具体的に述べさせて頂く。
Figure JPOXMLDOC01-appb-T000022
Table 1 shows a step-by-step process for converting the number xyz represented by three digits in decimal notation to decimal. It can be seen that the number that requires 3 digits in decimal notation does not exceed 6 digits in decimal notation. First, a character array having six elements is prepared ((1) in Table 1). Since the number of digits required in the decimal system is 3, the 6 elements of the array are divided into 3 equal parts. Then, it can be classified in a state of two elements per section ((2) in Table 1). Each section can correspond to each digit in decimal notation ((3) in Table 1). After that, it is sufficient to fill with the value of each digit in the corresponding decimal notation in order from the last element of each section. Then, what is concrete about this "filling with the value of each digit in the corresponding decimal notation in order from the last element of each partition" is more concrete using Table 2. Let me tell you.
Figure JPOXMLDOC01-appb-T000022
 表2は、100進法で「123」と表される数を、10進法表記に変換する工程を段階的に示したものである。表中の*は任意の値を表している。前述の通り、まず6個の要素を持つ文字型の配列を用意する(表2の▲1▼)。3つの区画に分け、各区画を100進法表記の各桁に対応させる(表2の▲2▼)。具体的には、添え字番号[4],[5]の要素が100進法表記の右から1番目の位に対応し、[2],[3]の要素が2番目の位に対応し、[0],[1]の要素が3番目の位に対応する。そして、[4],[5]に3を、[2],[3]に2を、[0],[1]に1を、“各区画の末尾から順に”満たしていく。つまり、[5]に3、[3]に2、[1]に1を代入する。(表2の▲3▼)。この際、各区画について何も代入しない要素があれば0を代入する。つまり、[4],[5]の操作においては[4]、[2],[3]の操作においては[2]、[0],[1]の操作においては[0]に0を代入する。(表2の▲4▼)。これで、10進法表記への変換は済む。しかし、配列の先頭が0になっているので、これを修正する必要がある。この文字列を前に詰めることで修正する(表2の▲5▼)。後はこれを表示させれば良い。
Figure JPOXMLDOC01-appb-T000023
Table 2 shows a step-by-step process for converting a number represented as “123” in decimal notation into decimal notation. * In the table represents an arbitrary value. As described above, first, a character array having six elements is prepared ((1) in Table 2). Dividing into three sections, each section is associated with each digit in decimal notation ((2) in Table 2). Specifically, the elements of subscript numbers [4] and [5] correspond to the first place from the right in decimal notation, and the elements of [2] and [3] correspond to the second place. , [0], [1] correspond to the third place. Then, [4] and [5] are filled with 3, [2] and [3] are filled with 2, and [0] and [1] are filled with “1” in order from the end of each partition. That is, 3 is assigned to [5], 2 is assigned to [3], and 1 is assigned to [1]. ((3) in Table 2). At this time, if there is an element to which nothing is assigned for each section, 0 is assigned. In other words, [4] in the operations [4] and [5], [2] in the operations [2] and [3], and 0 in [0] in the operations [0] and [1]. To do. ((4) in Table 2). This completes the conversion to decimal notation. However, since the top of the array is 0, this needs to be corrected. The character string is corrected by prepending it ((5) in Table 2). You can display this afterwards.
Figure JPOXMLDOC01-appb-T000023
 係る操作は先頭の区画から順次実行していくことが可能である。10進法以外を採用した場合には、桁溢れを考慮する必要があるので、小さな桁から変換操作を行っていかねばならない。一方、10進法の場合は、変換の際に桁溢れが生じないので、大きな位から変換してゆき、変換が済んだ箇所から順次表示していくといったことが可能となる。上記の例では、まず[0][1]から処理をはじめてゆき、順次“1”、“02”、“03”と表示していくことが可能である。文字詰めについては、[0][1]が先頭だと分かるので、1番はじめの処理のときにだけ、この操作を行えば良い。 Such an operation can be executed sequentially from the first section. In the case of employing other than 10 x-ary, it is necessary to consider the overflow must Ika doing the conversion operation from a small digits. On the other hand, in the case of the 10x base system, there is no overflow in conversion, so it is possible to perform conversion from a large place and display sequentially from the converted part. In the above example, it is possible to start processing from [0] [1] and display “1”, “02”, “03” sequentially. Regarding the padding of characters, since it can be understood that [0] [1] is the head, this operation may be performed only at the time of the first process.
 ところで、この文字詰めの動作はハードウェアレベルでの左ビットシフトのようである。このような要素の挙動等を踏まえ、第4段落にて“あり得る要素の挙動を考えると、ソフトウェア上で「ハードウェアレベルのビットの並び及びその挙動」を再現し拡張したもの”であると申し上げた。 By the way, this character filling operation seems to be a left bit shift at the hardware level. Based on these element behaviors, etc., in the fourth paragraph, “When considering the possible element behaviors, it is a“ reproduction and extension of hardware-level bit arrangement and behavior ”on software”. I told you.
 なお、100進法表記の123という値について、各桁は数値であるから、表示用の文字型の配列へ数値を収める際に、文字コードへと変換する必要があることに留意されたい。このことは10進法以外の場合でも同じである。例えば、Windowsでは0~9までの文字は48~57で表される。従って、0~9の数値を表示可能な0~9の文字へと変換するには、48を加算する必要がある。以上、第143~162段落に渡り、表示の高速化について述べさせていただいた。以下、実施例について述べさせて頂く。 It should be noted that, for the value of decimal notation 123, since each digit is a numerical value, it is necessary to convert it into a character code when storing the numerical value in a character type array for display. This is the same even in cases other than the 10x base. For example, in Windows, characters from 0 to 9 are represented by 48 to 57. Therefore, in order to convert a numerical value of 0 to 9 into a displayable character of 0 to 9, it is necessary to add 48. As mentioned above, over the 143rd to 162nd paragraphs, the speeding up of the display has been described. Examples will be described below.
 実施例を述べる前に、その前提を述べさせて頂く。実施例では「2016年現在、市場に出回っているような一般的なパソコンやその他のハードウェアを組み合わせて、1兆桁同士の数値計算を現実的に実行できるか、62段落のVを用いたコストの観点から、その実現可能性を見ていく」という体裁をとらせて頂く。log102は0.3として扱わせて頂く。 Before describing the embodiment, let me explain the premise. In the embodiment, “as of 2016, it is possible to realistically execute a trillion-digit numerical calculation by combining a general personal computer or other hardware that is on the market, or use V in 62 paragraphs. We will look at the feasibility from a cost perspective. Log 10 2 is treated as 0.3.
 まず、先行技術の「人が数として認識できる文字列を利用した数値計算」のコストについて述べる。これは図5の(d)についてのより具体的な話題となる。Kは任意の数を任意の底で以って表現した場合に必要となる桁の数、αは記憶領域から必要なデータを取ってくるのに要する時間、βは計算の単位に要する時間である。Nを1010^12とする。1012は1000億に相当するので、1010^12は0が1000億個並ぶ数である。つまりNは10進法で1兆桁の数である。下記(表3)はNが1010^12のときのコストについて、10進法の場合と256進法の場合とを比較したものである。言語は標準C++を想定しており、一番左の列は位取り記数法の底に対応する型を表している。例えば、「10進の行はchar型である」とは、「10進法表記のときにはchar型を要素とする」ということを意味している。先行技術の「人が数として認識できる文字列を利用した数値計算」では、発明の趣旨から10進法表記を利用することが伺える。従って、表3の「10進」の行が「人が数として認識できる文字列を利用した数値計算」にて1010^12を扱おうとするときの、Vを構成する各式の値となる。
Figure JPOXMLDOC01-appb-T000024
First, the cost of the prior art “numerical calculation using a character string that a person can recognize as a number” will be described. This is a more specific topic about (d) in FIG. K is the number of digits required when an arbitrary number is expressed with an arbitrary base, α is the time required to fetch the necessary data from the storage area, and β is the time required for the unit of calculation. is there. Let N be 10 10 ^ 12 . Since 10 12 corresponds to 100 billion, 10 10 ^ 12 is a number in which 100 billion 0s are arranged. That is, N is a trillion-digit number in decimal notation. Below (Table 3) for the cost when N is 10 10 ^ 12 is obtained by comparing the cases of decimal 256 decimal. The language is assumed to be standard C ++, and the leftmost column represents the type corresponding to the base of the scale system. For example, “a decimal line is a char type” means “a char type is an element in decimal notation”. In the prior art “numerical calculation using a character string that a person can recognize as a number”, it can be said that decimal notation is used for the purpose of the invention. Therefore, the “decimal” line in Table 3 is the value of each expression constituting V when trying to handle 10 10 ^ 12 in “numerical calculation using a character string that a person can recognize as a number”. .
Figure JPOXMLDOC01-appb-T000024
 1010^12を10進法表記にて表現しようとした場合に必要となる桁の数は(1012+1)桁である。簡略化のため1桁分は丸めさせて頂くこととして、1012桁すなわち1T桁必要だということになる。これがKの値に相当する。先行技術では1桁を1バイトの文字型で表現する。つまり1要素を1バイトの文字型で表現する。これがLの値に相当する。従って、先行技術で1010^12を表現しようとしたときに必要となる記憶媒体の容量は、1バイトの要素が1T個で1TBである。これがKLの値に相当する。 The number of digits required when 10 10 ^ 12 is expressed in decimal notation is (10 12 +1) digits. As it let me get one digit for simplicity rounding results in 10 12-digit i.e. that 1T digits necessary. This corresponds to the value of K. In the prior art, one digit is represented by a 1-byte character type. That is, one element is represented by a 1-byte character type. This corresponds to the value of L. Therefore, the capacity of the storage medium required when 10 10 12 is expressed by the prior art is 1 TB with 1T elements of 1 byte. This corresponds to the value of KL.
 Kの値は「log101010^12/log1010」である。従ってSの値は1である。Lの値は1なので、αの値は「R+Q+T」であり、βの値は「U」である。 The value of K is “log 10 10 10 ^ 12 / log 10 10”. Therefore, the value of S is 1. Since the value of L is 1, the value of α is “R + Q + T”, and the value of β is “U”.
 まったく同じ条件の数N´があり、NとN´で以って加算を行うとする。この場合、計算時必要量は2TBである。これは「NのKL」と「N´のKL」の和に相当する。また、「計算の単位」は1バイトの文字型を利用した加算、減算、積算、あるいは除算のことであり、この場合は1バイトの文字型を利用した加算となる。 Suppose that there are a number N ′ of exactly the same conditions, and N and N ′ are used for addition. In this case, the required amount at the time of calculation is 2 TB. This corresponds to the sum of “KL of N” and “KL of N ′”. The “unit of calculation” is addition, subtraction, integration, or division using a 1-byte character type. In this case, addition is performed using a 1-byte character type.
 もし、我々が2桁同士の数の加算を、紙面上で筆算にて行うとしたら、所定の桁同士の加算を桁の数だけ、つまり2回実行することになる(簡略化のため桁溢れは考慮していない)。このとき我々は「ある桁同士の加算」を実行するに当たって、加算の対象となるそれぞれの桁を1回ずつ認識している。つまり暗に2回、数字の認識を行っている。また例えば、1兆桁を1T桁と見なすなら、我々が1兆桁同士の数の加算を、紙面上で筆算にて行う場合には、所定の桁同士の加算を少なくとも1T回実行するということになる。そして、このとき我々は暗に1T回ずつ数字の認識を行うことになる。つまり、計2T回、数字の認識を行うことになる。 If we add numbers between two digits by writing on the paper, we will perform the addition between the specified digits only the number of digits, that is, twice (overflow for simplicity). Is not considered). At this time, when executing “addition of certain digits”, we recognize each digit to be added once. That is, the number is recognized twice implicitly. Also, for example, if 1 trillion digits are regarded as 1T digits, when we add the numbers of 1 trillion digits by hand on the paper, the addition of predetermined digits is executed at least 1T times. become. And at this time we implicitly recognize the numbers 1T times. That is, the number is recognized 2T times in total.
 「暗に行う認識」がコンピュータ上では「記憶媒体へのアクセス」に相当する。1回これを行う度に要求される時間がαである。「所定の桁同士の加算」が「2つの要素を用いた計算」、つまり「計算の単位」である。そして1回これを行う度に要求される時間がβである。 “Implicit recognition” corresponds to “access to storage medium” on the computer. The time required to do this once is α. “Addition between predetermined digits” is “calculation using two elements”, that is, “unit of calculation”. And the time required for doing this once is β.
 従って、人が手動で筆算を行う様は、コンピュータによる配列構造を用いた数値計算では次のように言い換えることができる。「“条件が等しい”2数を加算するとき、αが少なくとも2K回実行され、βが少なくともK回実行されることになる」。 Therefore, it can be rephrased as follows in the numerical calculation using the array structure by the computer, that a person manually performs the calculation. “When adding two“ equal ”conditions, α will be executed at least 2K times and β will be executed at least K times.”
 ただし、これは扱う数の桁数が等しい場合の想定であり、毎回必ずαが2K回、βがK回実行される訳ではないということに留意されたい。双方のKの値が異なる場合には、より小さい方に依ることになる。例えば、配列構造を用いた数値計算において、1兆桁と1桁との加算なら、αは少なくとも2回、βは少なくとも1回で済む。1兆桁同士でないならば、αを2T回、βを1T回も実行する必要はない。このように等しい条件にて想定したのは、最も演算回数が大きい例で実行可能性を示すことができれば、より少ない回数での数値計算の実行可能性も示すことができると考えたからである。なお、加算を例にとったのは、「計算処理の単位の総数」の把握が最もわかり易いと考えたからである。四則演算によって「計算の単位の総数」は変わるが、Vの値の増減の考え方についてはいずれも違いはないはずである。除算の場合は、例外的に「計算処理の単位」の内容が「配列構造を利用した減算」となるが、この場合もVの値の増減の考え方は同じである。 However, it should be noted that this is an assumption when the number of digits to be handled is equal, and α is not necessarily executed 2K times and β is not always executed K times. If both values of K are different, it will depend on the smaller value. For example, in the numerical calculation using the array structure, if one trillion digits and one digit are added, α needs to be at least twice and β needs to be at least once. If not one trillion digits, it is not necessary to execute α 2T times and β 1T times. The reason why such an equal condition is assumed is that if the feasibility can be shown in an example in which the number of operations is the largest, it is possible to show the feasibility of numerical calculation with a smaller number of times. The reason why the addition is taken as an example is that it is considered that the “total number of calculation processing units” is most easily understood. Although the “total number of units of calculation” varies depending on the four arithmetic operations, there should be no difference in the concept of increase or decrease in the value of V. In the case of division, the content of “unit of calculation processing” is exceptionally “subtraction using an array structure”. In this case, the concept of increase / decrease in the value of V is the same.
 翻って、「人が数として認識できる文字列を利用した数値計算」における、「Kが1Tである値」同士の加算なので、この場合には、αが少なくとも2T回実行され、βが少なくとも1T回実行されることになる。より具体的には、記憶媒体から1要素(この場合1バイト)のデータを読み込む操作が2T回実行され、1要素同士の加算が1T回実行されることになると分かる。そしてこの場合、表現時必要量が1TBなので、計算時必要量は2TBである。 On the other hand, in the “numerical calculation using a character string that a person can recognize as a number”, since “value where K is 1T” is added to each other, α is executed at least 2T times, and β is at least 1T. Will be executed once. More specifically, it can be understood that an operation of reading data of one element (in this case, 1 byte) from the storage medium is executed 2T times, and addition of one element is executed 1T times. In this case, since the required amount at the time of expression is 1 TB, the required amount at the time of calculation is 2 TB.
 2016年現在、市場に出回っているようなコンピュータで、2TBのメモリというのは一般的ではない。よって、必然的にメモリ以外の記憶媒体を併用することになる。しかし、たとえこれによって記憶媒体の容量についての要件を満足させたとしても、1回の数値計算につき、1バイト同士の加算を1T回行うというのは現実的ではないと思われる。係る数値計算はシステム全体に大きな負荷をかけるはずである。独立の外付けデバイスを作ったとしても、それは外付けのデバイスというよりもむしろ、もう1台別の一般的なコンピュータを用意し、それを「配列構造を利用した数値計算専用」とみなした場合とあまり区別がつかないような、大掛かりな装置となってしまいそうである。よって、「人が数として認識できる文字列を利用した数値計算」は、たとえメモリ以外の記憶媒体を併用したとしても、「2016年現在、市場に出回っているようなコンピュータが1兆桁同士の演算を実用的に行う」といった大規模な演算には向かないということが分かる。 As of 2016, 2TB memory is not common for computers on the market. Therefore, a storage medium other than the memory is inevitably used together. However, even if this satisfies the requirements for the capacity of the storage medium, it seems unrealistic to add 1 byte 1T times for each numerical calculation. Such numerical calculations should put a heavy load on the entire system. Even if an independent external device is created, it is not an external device, but a separate general computer is prepared, and it is regarded as "dedicated to numerical computation using an array structure" It seems to be a large-scale device that cannot be distinguished from it. Therefore, “Numerical calculation using character strings that humans can recognize as numbers” means that even if a storage medium other than a memory is used in combination, “as of 2016, there are 1 trillion digits of computers on the market. It turns out that it is not suitable for large-scale operations such as “performs operations practically”.
 以上の先行技術を用いた考察を踏まえ、実施例を述べさせて頂く。 Based on the above considerations using the prior art, let me describe examples.
 「人が数として認識できる文字列を利用した数値計算」から「1バイトの変数を要素とする配列を利用した数値計算」へと移行した場合、言い換えると、10進法から最大256進法へと拡張した場合のコストの概観を考える。先に申し上げた通り、引き続き1010^12同士の数値計算の想定にて行わせていただく。なお、図5では(d)から(c)への移行に相当する。 When moving from “numerical calculation using character strings that humans can recognize as numbers” to “numerical calculation using an array of 1-byte variables”, in other words, from decimal to maximum 256 Consider the overview of the cost of expansion. As I said earlier, we get to continue to take place at 10 10 ^ 12 assumption of the numerical calculations of each other. In FIG. 5, this corresponds to the transition from (d) to (c).
 上記の考察と異なるのはせいぜい「Sの値」と「桁溢れの境目」である。よって単純な類推が有効である。「256進」の行の値を上記の考察に当てはめると、以下のようになる。 The difference from the above consideration is at most “value of S” and “border overflow”. Therefore, simple analogy is effective. Applying the value of the “256-ary” line to the above consideration gives the following.
 αが少なくとも932G回、βが少なくとも416G回実行されることになる。より具体的には、記憶媒体から1要素(この場合も1バイト)のデータを読み込む操作が932G回実行され、1要素同士の加算が416G回実行されることになると分かる。そしてこの場合、計算時必要量は932Gである。 Α will be executed at least 932G times and β will be executed at least 416G times. More specifically, it is understood that an operation of reading data of one element (in this case, 1 byte) from the storage medium is executed 932G times, and addition of one element is executed 416G times. In this case, the required amount at the time of calculation is 932G.
 αとβの値が変わっていないことに留意されたい。言い換えると、「読み込むデータの量が1要素あたり1バイトである」という点と「計算の単位が1バイト同士の加算である」点に留意されたい。αとβの値が一定なままに、Kの値が約580G減少している。この分だけ実行される命令の数が減ったということになる。「約580Gの減少」といっても、比率の観点からは1/2.4倍程度の減少でしかない。しかし、このような絶対量の大幅な減少は並列処理導入の観点からは有意義である。絶対量が減少すればするほど、スレッドの数は同じままにスレッド1個当たりが担う処理の総数を減らすことができるからである。つまり、「並列処理を併用すれば実現できる」という一文がより現実味を帯びていくことになる。 Note that the values of α and β have not changed. In other words, it should be noted that “the amount of data to be read is 1 byte per element” and “the unit of calculation is addition of 1 byte”. The value of K decreases by about 580 G while the values of α and β remain constant. This means that the number of instructions executed is reduced. Even if it says "reduction of about 580G", it is only about 1 / 2.4 times reduction from a viewpoint of a ratio. However, such a large decrease in absolute quantity is significant from the viewpoint of introducing parallel processing. This is because as the absolute amount decreases, the total number of processes per thread can be reduced while the number of threads remains the same. In other words, a sentence that can be realized by using parallel processing is more realistic.
 また、Lの値が変わっていないことにも留意されたい。同じ数について、必要となる桁の総数Kが減り、かつ1要素あたりの大きさLが変わっていないので、計算時必要量KLが減少する。具体的には、KLが1TB以上減少している。この減少が第69~75段落にて申し上げた「例外的なKLの改善」である。 Also note that the value of L has not changed. For the same number, the total number K of necessary digits is reduced, and the size L per element is not changed, so that the calculation required amount KL is reduced. Specifically, KL has decreased by 1 TB or more. This decrease is the “extraordinary KL improvement” mentioned in paragraphs 69-75.
 このことから、先行技術と同じ計算時必要量で扱うことのできる数が大幅に増加するということが分かる。256進法で1010^12を表現するのに約416GB必要だということは、1TB使用した場合には、更に約256584G倍の数を表すことができるようになるということである。そして、この場合、数値計算の所要時間は、先行技術で1TB使用した場合に要する時間とほぼ同じはずである。1個当たりの要素の大きさが同じだからであり、なおかつ要素の挙動がほぼ同じだからである。「要素の挙動がほぼ同じ」とは、「計算処理の単位について、桁溢れの境目が10から256へと変わることを除けば同じである」といった意味である。「1桁の節約につき表すことのできる数が256倍になる」ということであり、「同じ桁数の数値計算については、扱うことのできる数の増加にも関わらず所要時間が変わらない」ということである。 From this, it can be seen that the number that can be handled with the same calculation requirement as in the prior art is greatly increased. The need for about 416 GB to represent 10 10 ^ 12 in 256 base means that when 1 TB is used, a number about 256 584 G times can be expressed. In this case, the time required for the numerical calculation should be almost the same as the time required for using 1 TB in the prior art. This is because the size of each element is the same, and the behavior of the elements is almost the same. “The behavior of the elements is almost the same” means “the same as the unit of calculation processing, except that the boundary of overflow is changed from 10 to 256”. “The number that can be expressed per one digit savings is 256 times”, and “the numerical calculation with the same number of digits does not change despite the increase in the number that can be handled”. That is.
 ただ、目に見えた大幅な改善は得られるものの、「2016年現在、市場に出回っているようなコンピュータが1兆桁同士の数値計算を実用的に行う」というような主題には、やはり向かないものと思われる。 However, although a significant improvement can be obtained, it is still not suitable for themes such as “Computers that are on the market as of 2016 practically perform numerical calculations between trillions of digits”. It seems that there is nothing.
 引き続き1兆桁にて考察する。「1バイトの文字型以外の基本データ型」を利用し、256進法よりも大きな底へと拡張した場合のコストの概観を考える。図5では(c)から(b)への移行に相当する。表4は1010^12を扱う場合の具体的な数値を、底の大きさが小さいものから順に並べたものである。各列の内容については表3と同じである。
Figure JPOXMLDOC01-appb-T000025
We will continue to consider in trillions of digits. Let us consider an overview of costs when using a “basic data type other than a 1-byte character type” and expanding to a base larger than the 256-ary system. FIG. 5 corresponds to the transition from (c) to (b). Table 4 shows specific numerical values in the case of handling 10 10 ^ 12 in order from the smallest bottom size. The contents of each column are the same as in Table 3.
Figure JPOXMLDOC01-appb-T000025
 例えば、実施例1の数値計算で、1バイトの文字型に変えint型を採用したとする。表4の「int」の行はこの場合の具体的な数値に相当するが、この行の値を実施例1の考察に当てはめると、以下のようになる。 For example, in the numerical calculation of the first embodiment, it is assumed that an int type is adopted instead of a 1-byte character type. The row “int” in Table 4 corresponds to a specific numerical value in this case. When the value of this row is applied to the consideration of the first embodiment, the following is obtained.
 αが少なくとも208G回、βが少なくとも104G回実行されることになる。より具体的には、記憶媒体から1要素(”4”バイト)のデータを読み込む操作が208G回実行され、1要素同士の加算が104G回実行されることになると分かる。そして、計算時必要量は932GBのままである。 Α will be executed at least 208G times and β will be executed at least 104G times. More specifically, it is understood that an operation of reading data of one element (“4” bytes) from the storage medium is executed 208 G times, and addition of one element is executed 104 G times. The required amount at the time of calculation remains 932 GB.
 1要素当たりの大きさたる「L」の値が4バイトになっている点に留意されたい。このときのαの内容は「R+4Q+T」で、βの値は「3・I+U」である。αについてはQの値が4倍になり、βについては新たに「3・I」が加わっている。しかし、この値の変化はそれほど大きな負担にはならず、要素の総数の減少(Sの減少)による速度改善がα及びβの値の上昇による減速を超える。このことについては第101段落、第102段落にて申し上げた通りであるが、端的にはQ及びIの値がとても小さいためである。 Note that the value of “L” per element is 4 bytes. The content of α at this time is “R + 4Q + T”, and the value of β is “3 · I + U”. For α, the value of Q is quadrupled, and for β, “3 · I” is newly added. However, this change in value is not so burdensome, and the speed improvement due to the decrease in the total number of elements (decrease in S) exceeds the deceleration due to the increase in the values of α and β. This is as stated in the 101st and 102nd paragraphs, but in short, the values of Q and I are very small.
 また、要素の総数が減るので、要素の大きさが増加しているにも関わらず、「計算時必要量が増加せずに一定のままである」という点にも留意されたい。詳細は、69~73段落の「KLの値の変化」にて申し上げた通りだが、端的にはKの減少量とLの増加量とで相殺が起こるためである。実施例1における1TB以上の「例外的なKLの改善」と比較されたい。 Also note that, since the total number of elements decreases, the size of the elements increases, but “the required amount at the time of calculation does not increase and remains constant”. The details are as described in “Changes in KL Value” in paragraphs 69 to 73, but this is because there is an offset between the decrease in K and the increase in L. Compare with “excellent KL improvement” of 1 TB or more in Example 1.
 第100段落にて申し上げた通り、1バイトのchar型同士の演算と4バイトのint型同士の演算とでは、その所要時間に大きな差がない。増加率はわずかである。また、記憶媒体から1バイト読み取る場合と4バイト読み取る場合とでも、その所要時間に大きな差はない。増加率はやはりわずかである。かつ、同じ数について配列構造を利用した数値計算を行う場合には、前者と後者とで実行される命令の総数が大いに変わる。実施例1で見たように、char型を最大限利用した場合、Kの値は416Gであった。一方、int型を採用した場合にはKの値は104Gにまで減少している。 As I said in the 100th paragraph, there is no significant difference in the required time between operations of 1-byte char type and operations of 4-byte int type. The rate of increase is slight. Also, there is no significant difference in the required time between reading 1 byte and 4 bytes from the storage medium. The rate of increase is still slight. In addition, when the numerical calculation using the array structure is performed for the same number, the total number of instructions executed in the former and the latter greatly varies. As seen in Example 1, when the char type was used to the maximum, the value of K was 416G. On the other hand, when the int type is adopted, the value of K decreases to 104G.
 このような「S・α・βにおける減少率と増加率のずれ」や「底の増大に対して、KLの値が一定不変であるという事実」を利用して、より大きな値についての数値計算をより高速に実行するというのが本発明の本質である。より抽象的な言い方をすれば、「配列構造を利用した数値計算において、相互に干渉し合う値の内、占有率が高いものについて、”特定の値の変化は無いか、あるいは小さいままに、別の値を減少させるような事象”を探す」ということである。 Numerical calculation of larger values using such “deviation between decrease rate and increase rate in S / α / β” and “the fact that the value of KL is constant with respect to the increase in the bottom” Is the essence of the present invention. To put it more abstractly, “in numerical calculations using an array structure, those that have a high occupancy among the values that interfere with each other”, there is no change in the specific value, or it remains small. “Find” an event that decreases another value.
 この場合、α及びβの上昇率が1に近い程、全体の減少率は1/4に近づく。α及びβの上昇率を1に近づける事由は、Q及びIの微小化であり、Q及びIの微小化はハードウェア性能の向上によってもたらされるということについては第52~60段落にて申し上げた通りである。今後もハードウェア性能の向上が続くのであれば、この箇所について更なる改善が見込まれるはずである。この性能向上のことを見据えるのであれば、より多くのハードウェアで動作可能な製品とするのが良いものと思われる。 In this case, the closer the rate of increase of α and β is to 1, the closer the overall decrease rate is to 1/4. The reason why the rate of increase of α and β approaches 1 is the miniaturization of Q and I, and I mentioned in paragraphs 52-60 that the miniaturization of Q and I is brought about by the improvement of hardware performance. Street. If the hardware performance continues to improve, further improvements should be expected in this area. If we look at this improvement in performance, it would be better to make the product operable with more hardware.
 この段階でも、「一般的なコンピュータで1兆桁同士の数値計算を実行すること」は現実的ではない。しかしint型への移行だけでも十分に大きな数を扱うことができるようになると分かる。具体的には、扱う桁数を1T桁から1G桁にした場合、K及びKLの値は単純に10−3倍になる。例えば、Nが1010^9ならば、int型ではKの値は0.104G、104Mである。同様にして、Nが1010^6ならば、int型ではKの値は0.104“M”に過ぎない。つまり、この桁の範囲では、計算処理の単位の観点からは、int型同士の演算が多くても10万回程度しか実行されないということである。「Nは1010^6である」とは、Nが100万桁の数であることを意味する。そして係る演算には並列処理を取り入れる余地が多分に含まれる。「2016年現在、市場に出回っているようなコンピュータが1兆桁同士の演算を実用的に行うこと」の実現は、int型の導入だけでは、不可能ではないにせよ簡易ではないように思われる。「不可能ではないにせよ簡易ではないように思われる」とは、「ネットワークを用いて複数のコンピュータを併用した場合や、配列構造の数値計算に特化させた外付けデバイスを複数台使用した場合には、実現し得る」といった意味合いである。しかし、「2016年現在、市場に出回っているようなコンピュータが”100万桁”同士の演算を実用的に行うこと」の実現可能性は高いはずである。そして、long long int型を採用した場合には、更にその実現可能性が高まる。表の「long long int型」の行がこの場合の数値を示している。読み方はint型のときと全く同じである。 Even at this stage, it is not realistic to “perform a trillion-digit numerical calculation on a general computer”. However, it turns out that a sufficiently large number can be handled even by the transition to the int type alone. Specifically, when the number of digits to be handled is changed from 1T digits to 1G digits, the values of K and KL are simply 10 −3 times. For example, if N is 10 10 ^ 9, the value of K is int type 0.104 g, is 104M. Similarly, if N is 10 10 6 , the value of K is only 0.104 “M” in the int type. In other words, in this range of digits, from the viewpoint of the unit of calculation processing, only a maximum of about 100,000 operations are performed between int types. “N is 10 10 ^ 6 ” means that N is a number of 1 million digits. Such calculation includes a lot of room for parallel processing. The realization that “computers that are on the market as of 2016 practically perform operations of 1 trillion digits” seems to be not simple, if not impossible, only by introducing the int type. It is. “It seems impossible, if not impossible,” means that “when using multiple computers together with a network, or using multiple external devices specialized for numerical calculation of array structures. In some cases, it can be realized. However, it should be highly feasible that “computers on the market as of 2016 practically perform operations between“ 1 million digits ””. When the long long int type is adopted, the feasibility is further increased. A row of “long long int type” in the table shows the numerical value in this case. Reading is the same as in the int type.
 重要なことは、「char型からint型への移行によってVについて最大1/4近くの改善が得られる」ということではなく、char型からint型への移行に伴い生じるのと同質の改善が、int型から「同様の演算を実行できる、より大きな変数」へと移行した場合にも生じるということである。つまり、この観点から、95段落にて述べさせて頂いたことがとても重要である。 What is important is not to say that the transition from char type to int type gives an improvement of nearly ¼ at maximum for V, but the same quality improvement that occurs with the transition from char type to int type. This also occurs when the int type shifts to “a larger variable that can execute the same operation”. In other words, from this point of view, it is very important that I have stated in paragraph 95.
 char型からint型への移行に伴い生じる改善は、int型からlong long int型への移行に伴い生じる。ならば、「任意の数のビットの並び」について、基本データ型のそれと遜色のない四則演算を実行させることができれば、int型からlong long int型への移行に伴い生じる改善が、long long int型から「より長いビットの並び」へと移行した際にも生じるはずである。「基本データ型のそれと遜色のない四則演算を実行させること」については、第120~122段落にて申し上げた通り、公知技術で以って十分に実現可能なはずである。係る操作において採用されるアルゴリズムは、char型やint型の場合に実行されるそれと変わらないはずだからである。任意のビットの並びに対して、四則演算の種類に応じた「ビットパターンレベルでの一連の決まった操作」を施すことになるはずである。 Improvements that accompany the transition from char type to int type arise from the transition from int type to long long int type. Then, if it is possible to execute an arithmetic operation that is inferior to that of the basic data type for "arbitrary number of bits", the improvement that occurs with the transition from int type to long long int type will be long long int It should also occur when moving from type to “longer bit sequence”. As described in the 120th to 122th paragraphs, “to execute an arithmetic operation that is inferior to that of the basic data type” should be sufficiently realized by a known technique. This is because the algorithm employed in such an operation should be the same as that executed in the case of the char type or int type. An arbitrary sequence of bits should be subjected to "a series of fixed operations at the bit pattern level" according to the type of arithmetic operation.
 最後に「任意の数のビットの並び」を利用した場合について述べる。図5の(b)から(a)への移行に相当する。表4の25616進法以下の行は、「任意の数のビットの並び」を利用した場合のコストを表している。基本データ型と厳密に同じ挙動を再現できなかったとしても、「配列構造を利用した数値計算の実用的な実行が破綻するような大きなロス」にはならないものとして、また「より長いビットの並び」について、基本データ型に対して無駄のない処理を調整できたものとして扱っている。これらの場合にも、Sの改善率がα及びβの減少率を上回り続けるはずである。例えば、「25616」の行は16バイトの区画を用いて、基本データ型の四則演算を再現できた場合を意味している。同様にして「25632」は32バイトの区画、「256128」は128バイトの区画である。変化の仕方につき特に異なることはないので、各値の読み方は実施例2のときと同じである。 Finally, the case of using “arbitrary number of bits” will be described. This corresponds to the transition from (b) to (a) in FIG. Lines below 256 hexadecimal Table 4 represents the cost of using the "sequence of an arbitrary number of bits." Even if the exact same behavior as the basic data type could not be reproduced, it would not be a “large loss that would break the practical execution of numerical calculations using array structures”. Is treated as having been able to adjust the processing without waste for the basic data type. In these cases, the improvement rate of S should continue to exceed the reduction rate of α and β. For example, the line “256 16 ” means a case where the four arithmetic operations of the basic data type can be reproduced using a 16-byte section. Similarly, “256 32 ” is a 32-byte partition, and “256 128 ” is a 128-byte partition. Since there is no particular difference in the manner of change, the reading of each value is the same as in the second embodiment.
 ビットの並びが長くなるほど、つまり下へ行くほど、「2016年現在、市場に出回っているようなコンピュータが1兆桁同士の演算を実用的に行う」という主題の実現可能性が高まることが分かる。つまり、一定の水準以上の環境にあっては、より小規模な環境において実行可能性が高まるということが分かる。 It can be seen that the longer the bit sequence is, that is, the lower it is, the more feasible the theme is "computers that are on the market as of 2016 practically perform operations between trillions of digits." . In other words, it can be seen that in an environment of a certain level or higher, the feasibility increases in a smaller environment.
 次に「より長いビットの並びを使って基本データ型を模した処理を再現した場合、どのような改善があるのか」を具体的に見てみる。「より長いビットの並びを用いた四則演算」を再現することで、より高速な数値計算を実現できる。この改善は底の大きさを大きくすることによって生じる命令数の減少が、α及びβの増加率を上回るためであり、なおかつ大局的にはこの差が開いていくと、102段落にて述べさせていただいた。また、C++のbitsetというクラスを使い「より長いビットの並びを用いた四則演算」を再現できると、122段落にて述べさせていただいた。これらの具体的な様を示す。 Next, let's take a concrete look at “What kind of improvement is possible when processing that mimics the basic data type using a longer sequence of bits?” By reproducing "four arithmetic operations using a longer bit sequence", faster numerical calculations can be realized. This improvement is because the decrease in the number of instructions caused by increasing the size of the base exceeds the rate of increase in α and β. Thank you. In addition, I mentioned in paragraph 122 that a C ++ bitset class can be used to reproduce “four arithmetic operations using a longer bit sequence”. Specific examples of these will be shown.
 表5はbitsetを使って「任意の長さの領域を使った加算」を”直列にて”100万回実行した際のデータである。「所要時間」は直列で加算を100万回実行するのに要した時間のことで、単位は秒である。「Rate1」は8ビットを基準とした領域の大きさの倍率で、「Rate2」は8ビットを基準とした所要時間の倍率である。「要素の大きさがX倍になったからといって、所要時間もX倍になるわけではない」ということ大局的な視点から示したかったので、所要時間は概値とさせていただいた。
Figure JPOXMLDOC01-appb-T000026
Table 5 shows data when "addition using an area of an arbitrary length" is executed "in series" 1 million times using bitset. The “required time” is the time required to execute addition one million times in series, and the unit is seconds. “Rate 1” is a magnification of the area size based on 8 bits, and “Rate 2” is a magnification of the required time based on 8 bits. I wanted to show from a global perspective that the time required is not X times just because the size of the element has increased X times, so the time required has been approximated.
Figure JPOXMLDOC01-appb-T000026
 例えば「ビット数」が128の行では、所要時間が0.14~0.16秒、Rate1が16、Rate2が3である。Rate1は「要素のサイズが8ビットのときに比して16倍である」ということを意味している。Rate2は「所要時間が8ビットのときに比して約3倍である」ということを意味している。(繰り返しになるがこれらの値が概値であることに留意されたい。例えばこの3倍という値は、128ビットの所要時間0.16を8ビットの所要時間0.06で割り、得られた値の小数点以下を切り上げたものである)。要素のサイズが16倍になっているにも関わらず、所要時間が3倍にしかなっていないことに留意されたい。これはVに当てはめて言えば、「8ビットから128ビットへの移行に伴い、Sについて1/16の改善が得られるにも関わらず、βについては3倍の悪化にとどまる」ということを意味している(式は次ページ表7の右下を参照されたい)。つまり命令数が単純に1/16になるにも関わらず、命令の単位に要する時間は3倍にしかならないということである。なお、αの悪化はとりわけ微小である。8ビット読み取るか、128ビット読み取るかの違い、つまり1バイト読み取るか、16バイト読み取るかの違いにすぎないからである。両者の差が殆どないということについては、公知の事実として納得していただけるはずである。 For example, in a row where “number of bits” is 128, the required time is 0.14 to 0.16 seconds, Rate 1 is 16, and Rate 2 is 3. “Rate1” means “16 times as large as the element size is 8 bits”. “Rate2” means that “the required time is about three times as long as 8 bits”. (Note again that these values are approximate. For example, this tripled value is obtained by dividing the 128-bit duration 0.16 by the 8-bit duration 0.06. Rounded up to the nearest whole number) Note that the required time has only tripled despite the fact that the element size has increased by a factor of 16. When applied to V, this means that “with the transition from 8 bits to 128 bits, an improvement of 1/16 is obtained for S, but β is only 3 times worse”. (See the lower right of Table 7 on the next page for the formula). That is, although the number of instructions is simply 1/16, the time required for the instruction unit is only tripled. It should be noted that the deterioration of α is particularly small. This is because there is only a difference between 8-bit reading and 128-bit reading, that is, 1-byte reading or 16-byte reading. The fact that there is almost no difference between the two should be convinced as a known fact.
 表5の一番右の列はRate1とRate2の差を表している。要素のサイズがX倍になるにつれ所要時間もX倍になるのであれば、この値は0で一定のはずである。しかし、そのようにはならず、ビット数が増加するほどに値が大きくなっている。従って、大局的にはSの改善とβの悪化の差が開いてゆき、改善の度合いが高まっていくということが分かる。所要時間の値は環境によって変わるはずだが、大局的に改善の度合いが高まるという挙動についてはどの環境でも同じはずである。 The rightmost column in Table 5 represents the difference between Rate1 and Rate2. If the required time is X times as the element size is X times, this value should be zero and constant. However, this is not the case, and the value increases as the number of bits increases. Therefore, it can be seen that, generally, the difference between the improvement of S and the deterioration of β increases, and the degree of improvement increases. The value of the time required should change depending on the environment, but the behavior that the degree of improvement increases globally should be the same in any environment.
 なお、表5の計算では並列処理を一切使用していないことに留意されたい。並列処理を導入した場合には、更なる改善が得られるはずである。一度に処理するビットの並びが長くなるほど、処理を分割しやすくなるはずである。つまり、並列処理を導入しやすくなるはずである。表5で言えば、下方に行くに連れ並列処理が導入し易くなるということである。 Note that the calculation in Table 5 does not use any parallel processing. If parallel processing is introduced, further improvements should be obtained. The longer the sequence of bits processed at one time, the easier it will be to divide the process. In other words, it should be easy to introduce parallel processing. In Table 5, parallel processing becomes easier to introduce as it goes downward.
 この取り組みにおいて課題となるのは、「より長いビットの並び2つを用いた四則演算について、どれほど無駄のない挙動を実現するか」である。アセンブリ言語を用いるなどして、bitsetを用いた場合よりも無駄の少ない高速な処理を実現できるのであれば、速度の観点からは、そちらを採用した方が好ましいものと思われる。この箇所は実行される頻度が最も高いからである。しかし、「ハードウェア性能の向上は予測不能である」という観点からは、より多くの形態で実行可能な仕様を採用すべきである。実施に当たっては、両者を比較し、目的に対して都合の良い手法を採用すべきである。 “The challenge in this effort is“ how much wasteful behavior is achieved for the four arithmetic operations using two longer bit sequences ”. If high-speed processing with less waste than that using bitset can be realized by using an assembly language or the like, it is considered preferable to adopt that from the viewpoint of speed. This is because this part is most frequently executed. However, from the standpoint of “an improvement in hardware performance is unpredictable”, specifications that can be executed in more forms should be adopted. In implementation, the two should be compared and a method convenient for the purpose should be adopted.
 最後に今一度、表“4”を参照されたい。下方の行ほど、1兆桁同士の演算という「2016年現在の観点からすれば比較的大規模な数値計算」の実行可能性が、より小規模な環境にて高まるとみなすことができる。表5の考察を踏まえれば、表4の下方の行の実施が決して不可能でないことにつき、納得いただけるものと思われる。本発明を用いれば、2016年現在、市場に一般に出回っているようなパーソナルコンピュータとハードウェアを組み合わせただけで、それらがそのままには実行し得ないような、大規模な数値計算を実行させることが、決して不可能でないことにつき、納得いただけるものと思われる。
Figure JPOXMLDOC01-appb-T000027
Figure JPOXMLDOC01-appb-T000028
Figure JPOXMLDOC01-appb-T000029
Finally, please refer to Table 4 again. It can be considered that the lower row, the feasibility of “relatively large-scale numerical calculation from the viewpoint of the current year 2016” that is an operation of 1 trillion digits increases in a smaller environment. Based on the considerations in Table 5, it can be convinced that the implementation of the lower row in Table 4 is never impossible. By using the present invention, it is possible to execute large-scale numerical calculations that cannot be executed as they are just by combining personal computers and hardware that are generally on the market as of 2016. However, it seems to be convinced that it is never impossible.
Figure JPOXMLDOC01-appb-T000027
Figure JPOXMLDOC01-appb-T000028
Figure JPOXMLDOC01-appb-T000029
 1 主たるコンピュータ         6 符号5を複数内包する外付けデバイス
 2 接続                7 符号5または符号6とみなした主たる
 3 処理装置(演算処理装置)        コンピュータと同等のコンピュータ
 4 記憶媒体              8 ネットワーク全体
 5 外付けデバイス
(a)人が数として認識できる文字列を利用した数値計算にて扱うことのできる数の範囲
(b)1バイトの変数を要素とする配列を利用した数値計算にて扱うことのできる数の範囲
(c)文字型を除く基本データ型を要素とする配列を利用した数値計算にて扱うことのできる数の範囲
(d)配列構造に見立てた任意の長さのビットの並びを利用する数値計算にて扱うことのできる数の範囲
(e)並列処理を併用することで増加する、扱うことのできる数の範囲
(f)ネットワークあるいは外付けの装置を併用することで増加する、扱うことのできる数の範囲
(g)メモリ以外の記憶媒体を併用することで増加する、扱うことのできる数の範囲
DESCRIPTION OF SYMBOLS 1 Main computer 6 External device which includes plural number 5 2 Connection 7 Main 3 processing device (arithmetic processing device) regarded as 5 or 6 4 Computer equivalent to computer 4 Storage medium 8 Entire network 5 External device (a ) Range of numbers that can be handled by numerical calculations using character strings that humans can recognize as numbers (b) Range of numbers that can be handled by numerical calculations using arrays with 1-byte variables as elements ( c) Range of numbers that can be handled by numerical calculation using an array whose elements are basic data types other than character types. (d) For numerical calculation using a sequence of bits of arbitrary length based on an array structure. The range of numbers that can be handled (e) The range of numbers that can be handled (f) Increasing click or by use of an external device, increased by a combination of a number in the range (g) a storage medium other than the memory that can be handled, ranging the number of which can be handled

Claims (5)

  1.  ソフトウェアによって、コンピュータ内部に表現した11進法以上の位取り記数法の数値表現を用いて、演算を実行する手法。 手法 A method that uses software to perform arithmetic operations using numerical representations of the decimal notation and above expressed in a computer.
  2.  請求項1において、底の大きさを10進法に限定することで、表示の際に必要となる10進法表記への変換処理を高速化する手法。 According to claim 1, by limiting the size of the bottom 10 x ary technique to speed up the conversion process to the decimal notation that will be required when the display.
  3.  請求項1におけるデータの保存場所を、請求項1を実行するコンピュータのメモリ以外の記憶媒体とすることで、扱うことのできる数の上限を増加させる手法。 A method of increasing the upper limit of the number that can be handled by using the storage location of the data in claim 1 as a storage medium other than the memory of the computer executing claim 1.
  4.  請求項3を実行するための記憶媒体を持ち、請求項3を実行するためのソフトウェアを持ち、請求項3の実行の補助を目的とした演算処理装置を1個以上持ち、主たるコンピュータによる請求項3の実行を補助する装置。 Claims by a main computer having a storage medium for executing claim 3, having software for executing claim 3, and having at least one arithmetic processing unit for assisting execution of claim 3. A device that assists the execution of 3.
  5.  請求項3を実行するための記憶媒体を持ち、請求項3を実行するためのソフトウェアを持ち、請求項3の独立した実行を目的とした演算処理装置を1個以上持ち、主たるコンピュータを含む外部からの命令を受けて、請求項3を独立して実行し、得られた結果を主たるコンピュータへ返す装置。 An external device including a main computer having a storage medium for executing claim 3, software for executing claim 3, one or more arithmetic processing units for independent execution of claim 3 The apparatus which performs the claim 3 independently in response to the instruction from the above and returns the obtained result to the main computer.
PCT/JP2016/089228 2016-12-21 2016-12-21 Calculation using numerical values represented inside a computer in undecimal or higher positional notation WO2018116483A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/089228 WO2018116483A1 (en) 2016-12-21 2016-12-21 Calculation using numerical values represented inside a computer in undecimal or higher positional notation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/089228 WO2018116483A1 (en) 2016-12-21 2016-12-21 Calculation using numerical values represented inside a computer in undecimal or higher positional notation

Publications (1)

Publication Number Publication Date
WO2018116483A1 true WO2018116483A1 (en) 2018-06-28

Family

ID=62626163

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/089228 WO2018116483A1 (en) 2016-12-21 2016-12-21 Calculation using numerical values represented inside a computer in undecimal or higher positional notation

Country Status (1)

Country Link
WO (1) WO2018116483A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57164334A (en) * 1981-04-02 1982-10-08 Nec Corp Operating device
JPS57199043A (en) * 1981-06-03 1982-12-06 Nec Corp Operating device
JPS6275838A (en) * 1985-09-30 1987-04-07 Matsushita Electric Ind Co Ltd Arithmetic unit for numerical data with variable accuracy
JPS62271017A (en) * 1986-05-20 1987-11-25 Fujitsu Ltd Addition and subtraction device for decimal number
JP2004178539A (en) * 2002-11-28 2004-06-24 Kazunori Iwasaki Numerical calculation by using character type data in computer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57164334A (en) * 1981-04-02 1982-10-08 Nec Corp Operating device
JPS57199043A (en) * 1981-06-03 1982-12-06 Nec Corp Operating device
JPS6275838A (en) * 1985-09-30 1987-04-07 Matsushita Electric Ind Co Ltd Arithmetic unit for numerical data with variable accuracy
JPS62271017A (en) * 1986-05-20 1987-11-25 Fujitsu Ltd Addition and subtraction device for decimal number
JP2004178539A (en) * 2002-11-28 2004-06-24 Kazunori Iwasaki Numerical calculation by using character type data in computer

Similar Documents

Publication Publication Date Title
US7958133B2 (en) Application conversion of source data
JP3954171B2 (en) How to fill a vector with scalar values on a computer
JP2003067185A (en) Application editing device and data processing method and program
EP2112602A2 (en) Device, system, and method for solving systems of linear equations using parallel processing
JPS63132338A (en) Code generating method
JP5522283B1 (en) List vector processing apparatus, list vector processing method, program, compiler, and information processing apparatus
Smith et al. Sparse triangular solves for ILU revisited: Data layout crucial to better performance
Scott et al. Structuring the GLL parsing algorithm for performance
US7478363B2 (en) Method for translating a given source program into an object program containing computing expressions
JP5241475B2 (en) Hash value calculation device, hash value calculation method, and hash value calculation program
US20030120887A1 (en) Memory allocation method using multi-level partition
WO2018116483A1 (en) Calculation using numerical values represented inside a computer in undecimal or higher positional notation
CN116186045A (en) Sparse matrix adjustment method and device, electronic equipment and storage medium
US11635947B2 (en) Instruction translation support method and information processing apparatus
JP3310525B2 (en) Digital data processing device
US11556317B2 (en) Instruction translation support method and information processing apparatus
JP2021197173A (en) Improved multiplication/accumulation device for neural network
JP2018124877A (en) Code generating device, code generating method, and code generating program
JP2008544344A (en) Large number multiplication method and device
JP2002269162A (en) Action synthesizing method
US10430326B2 (en) Precision data access using differential data
WO2018179729A1 (en) Index generating program, data search program, index generating device, data search device, index generating method, and data search method
JP2000020318A (en) Device for reducing memory access instruction and storage medium
JP2013122740A (en) Data processing device, conversion device, data processing system, conversion method, and conversion program
JP2013257670A (en) Processor, compression apparatus, compression method, and compression program

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16924431

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16924431

Country of ref document: EP

Kind code of ref document: A1