WO2021106253A1 - 情報処理装置、プログラム、及び情報処理方法 - Google Patents
情報処理装置、プログラム、及び情報処理方法 Download PDFInfo
- Publication number
- WO2021106253A1 WO2021106253A1 PCT/JP2020/024260 JP2020024260W WO2021106253A1 WO 2021106253 A1 WO2021106253 A1 WO 2021106253A1 JP 2020024260 W JP2020024260 W JP 2020024260W WO 2021106253 A1 WO2021106253 A1 WO 2021106253A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- digits
- calculation
- precision
- computers
- extended
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49989—Interval arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
Definitions
- This technology relates to information processing devices, programs, and information processing methods that perform numerical calculations. This application claims priority on the basis of Japanese Patent Application No. Japanese Patent Application No. 2019-214678 filed on November 27, 2019 in Japan. It will be used.
- Numerical calculation is a calculation or method for numerically solving a problem that is difficult to solve analytically, and a floating-point arithmetic by a computer is usually used for the calculation.
- IEEE Institute of Electrical and Electronics Engineers
- Floating-point arithmetic has some drawbacks, such as overflow / underflow, digit loss, information loss, leftovers, and rounding error. Therefore, at the ⁇ m level, no major problem occurred even in double-precision floating-point arithmetic, but at the nm level, there is a concern that the number of significant digits may be insufficient. Furthermore, if a series of higher-order polynomials is used, it is assumed that calculation errors are likely to occur.
- This technology has been proposed in view of such conventional circumstances, and provides an information processing device, a program, and an information processing method capable of easily performing numerical calculation with guaranteed accuracy.
- the information processing apparatus has an input unit for inputting the number of high-precision computers in which the real number A and the real number B are defined in the following equations (11) and (12), respectively, and the number of high-precision computers.
- a storage unit for storing, calculated using the determined number a 1, b 1 of the high number of precision computer stored in the storage unit, the following (13) extended absolute number of significant digits so as to satisfy the formula (gamma + gamma ') It is provided with a calculation unit that determines and stores the number of high-precision computers of the calculation result in the storage unit.
- the program according to the present technology stores the input step for inputting the number of high-precision computers in which the real number A and the real number B are defined in the following equations (11) and (12), respectively, and the number of high-precision computers.
- the information processing method includes an input step for inputting a number of high-precision computers in which real numbers A and B are defined by the following equations (11) and (12), and the number of high-precision computers.
- a storing step of storing in the storage unit said storage confirmation number of the number of high-precision computer stored in section a 1, b 1 is calculated using the following (13) extended absolute number of significant digits so as to satisfy the equation (gamma + gamma ′) Is determined, and the number of high-precision computers of the calculation result is stored in the storage unit.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a + h a ', h b + h b' are each
- ⁇ C hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits
- h a, h b indicates the maximum number of digits which is an integer
- h a ′ and h b ′ indicate the number of decimal places which is a decimal number of 0 ⁇ h a ′ ⁇ 1, 0 ⁇ h b ′ ⁇ 1, respectively.
- e a + e a ′, e b + e b ′, ⁇ + ⁇ ′ indicate the number of extended absolute effective digits, which is the number of extended digits
- e a , e b , ⁇ indicate the number of absolute effective digits which are integers
- e a ′, e b ′ and r ′ indicate the number of decimal places, which is a decimal number of 0 ⁇ e a ′ ⁇ 1,0 ⁇ e b ′ ⁇ 1,0 ⁇ r ′ ⁇ 1, respectively.
- (A, B) are the calculation results of the real numbers A and B
- (a, b) 1 is the calculation result of the fixed numbers a 1 and b 1
- (a, b) 2 is the uncertain number a 2 , a calculation result of b 2.
- FIG. 1 is a block diagram showing a functional configuration of an information processing device according to the present technology.
- FIG. 2 is a diagram showing the relationship between the real number and the number of computers.
- FIG. 3 is a diagram for explaining a buffer for storing the number of computers.
- FIG. 4 is a block diagram showing a hardware configuration for exerting the functions of the information processing device.
- FIG. 6 is a diagram for explaining a method of obtaining the minimum integer r such that C m + ⁇ + C ⁇ + m + C m + n ⁇ C r.
- FIG. 7 is an example of expressing the number of computers in C language.
- FIG. 1 is a block diagram showing a functional configuration of an information processing device according to the present technology.
- FIG. 2 is a diagram showing the relationship between the real number and the number of computers.
- FIG. 3 is a diagram for
- FIG. 8 is an example in which the formats of multiplication, addition, and division of the number of computers are expressed in C language.
- FIG. 9 is an example of a program for calculating the Rump formula in C language.
- FIG. 10 is an example in which the program example shown in FIG. 9 is converted into a program using the number of computers.
- FIG. 11 is a diagram showing an example of bit representation of the calculation result of the positive portion f1.
- FIG. 12 is a diagram showing an example of bit representation of the calculation result of the negative portion f2.
- FIG. 13 is a diagram showing an example of bit representation of the calculation result of the difference f.
- FIG. 15 is a block diagram showing a functional configuration of the information processing apparatus according to the second embodiment of the present technology.
- FIG. 16 is a diagram showing the relationship between the real number and the number of high-precision computers.
- FIG. 17 is an example of a numerical representation of a number of high-precision computers by a computer.
- FIG. 18 is an example of the definition of the number of high-precision computers.
- FIG. 20 is a diagram for explaining how to obtain the decimal digit number h'of the extended maximum digit number.
- FIG. 20 is a diagram for explaining how to obtain the decimal digit number h'of the extended maximum digit number.
- FIG. 21 is a diagram showing 32 bits extracted for obtaining the decimal digit number h'of the extended maximum digit number.
- FIG. 22 is a diagram for explaining an 8-bit- ⁇ 'table.
- FIG. 24 is a diagram for explaining a specific calculation method of supC ⁇ ' + supC ⁇ + ⁇ '.
- FIG. 25 is a diagram for explaining the position of a fixed number of addition of two high-precision computers.
- FIG. 26 is a diagram for explaining the trim processing.
- FIG. 27 is a diagram showing an example of an extended digit addition table.
- FIG. 28 is a diagram for explaining the position of the fixed number (b 1 / a 1 ) of the division of the number of high-precision computers.
- FIG. 30 is a diagram for explaining a specific calculation method of infC ⁇ '- supC ⁇ + ⁇ '.
- FIG. 31 is a diagram showing a double precision floating point representation.
- FIG. 32 is a diagram showing an example in which the decimal number “0.1” is bit-represented by the number of high-precision computers.
- FIG. 33 is a diagram showing an example in which the decimal number “1.1” is bit-represented by the number of high-precision computers.
- FIG. 34 shows an example of the result of calculating "0.1 + 1.1" using the number of high-precision computers after converting the decimal numbers "0.1” and "1.1” into the number of high-precision computers. It is a figure.
- FIG. 35 is a diagram showing an example of the result of calculating a decimal number “0.1 ⁇ 1.1” with a floating point number and converting it into a high-precision computer number.
- FIG. 36 is a diagram showing an example in which the decimal number “0.000000001” is expressed in bits by a high-precision computer number.
- FIG. 37 is a diagram showing an example in which the decimal number “1.0” is bit-represented by the number of high-precision computers.
- FIG. 35 is a diagram showing an example of the result of calculating a decimal number “0.1 ⁇ 1.1” with a floating point number and converting it into a high-precision computer number.
- FIG. 36 is a diagram showing an example in which the decimal number “0.000000001” is expressed
- FIG. 39 is a diagram showing an example of a result obtained by performing a calculation of adding "0.000000001” to "1.0” 100 times in floating point and converting the result into a high-precision computer number.
- FIG. 40 is an example of the result of converting the decimal numbers “0.1” and “1.1” into the number of high-precision computers and calculating “0.1 ⁇ 1.1” using the number of high-precision computers. It is a figure which shows.
- FIG. 41 is a diagram showing an example of the result of calculating a decimal number “0.1 ⁇ 1.1” with a floating point number and converting it into a high-precision computer number.
- FIG. 42 is a diagram showing an example of the result of calculating the decimal number “0.000000001” by multiplying “1.1” 100 times by the number of high-precision computers.
- FIG. 43 is a diagram showing an example of the result of converting the decimal numbers “1” and “3” into the number of high-precision computers and calculating “1/3” using the number of high-precision computers.
- FIG. 44 is a diagram showing an example in which the decimal number “0.1”, which is the denominator, is expressed in bits by the number of high-precision computers.
- FIG. 41 is a diagram showing an example of the result of calculating a decimal number “0.1 ⁇ 1.1” with a floating point number and converting it into a high-precision computer number.
- FIG. 42 is a diagram showing an example of
- FIG. 45 is a diagram showing an example in which the decimal number “1”, which is a molecule, is expressed in bits by a high-precision computer number.
- FIG. 46 is a diagram showing an example of the result of calculating “1 ⁇ 0.1” using the number of high-precision computers.
- FIG. 47 is a diagram showing an example in which the decimal number “0.1”, which is the denominator, is expressed in bits by the number of high-precision computers.
- FIG. 48 is a diagram showing an example in which the decimal number “0.2”, which is a numerator, is expressed in bits by a high-precision computer number.
- FIG. 49 is a diagram showing an example of the result of calculating “0.2 ⁇ 0.1” using the number of high-precision computers.
- FIG. 1 is a block diagram showing a functional configuration of an information processing device according to the present technology.
- the information processing apparatus includes an input unit 11 for inputting the number of computers in which the real number A and the real number B are defined in the following equations (1) and (2), and a storage for storing the number of computers.
- a calculation is performed using the unit 12 and the fixed numbers a 1 and b 1 of the number of computers stored in the storage unit 12, the absolute effective digit number ⁇ is determined so as to satisfy the following equation (3), and the computer of the calculation result is obtained.
- a calculation unit 13 for storing a number in the storage unit 12 is provided.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a, h b are each
- e a , e b , and ⁇ indicate the number of significant significant digits that are integers.
- (A, B) are the calculation results of the real numbers A and B
- (a, b) 1 is the calculation result of the fixed numbers a 1 and b 1
- (a, b) 2 is the uncertain number a 2 , a calculation result of b 2.
- the radix C of the number of computers is not particularly limited, but is preferably any of 2, 8, or 16. This makes it possible to verify the calculation of binary numbers, octal numbers, or hexadecimal numbers used in general-purpose computers.
- FIG. 2 is a diagram showing the relationship between the real number and the number of computers.
- the number of computers (a + b) is based on the idea of the uncertainty principle , in which the real number A is in the range of a-C ⁇ ⁇ A ⁇ a + C ⁇ . ..
- the fixed number a is a numerical value that is valid up to the absolute significant digit (minimum digit), and the numerical value is guaranteed.
- the absolute number of significant digits indicates the number of reliable digits after the decimal point, and is the value of ⁇ at which the error is C ⁇ .
- the input unit 11 inputs the number of computers in which the real number A and the real number B are defined by the following equations (1) and (2), respectively.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a, h b are each
- e a , e b , and ⁇ indicate the number of significant significant digits that are integers.
- the input unit 11 is, for example, an array of a sign (sign), a highest digit (high order max), a lowest digit (low order max), an absolute effective digit number (absolute effective digit), and an array. Enter the number of computers for which the number of array is set.
- the storage unit 12 is for storing the number of computers and is a so-called buffer.
- the buffer is secured based on the most significant digit and the least significant digit input by the input unit 11.
- FIG. 3 is a diagram for explaining a buffer for storing the number of computers.
- the calculation unit 13 calculates using the fixed numbers a 1 and b 1 of the number of computers stored in the storage unit 12, determines the absolute number of effective digits r so as to satisfy the following equation (3), and determines the absolute number of effective digits r of the calculation result.
- the number of computers is stored in the storage unit 12.
- C represents a radix.
- ⁇ is an exponential part and is an absolute number of significant digits.
- (A, B) are the calculation results of the real numbers A and B,
- (a, b) 1 is the calculation result of the fixed numbers a 1 and b 1 , and
- (a, b) 2 is the uncertain number a 2 , This is the calculation result of b 2.
- the calculation of the number of computers is calculated assuming that the real number A and the real number B are in the range of a 1- C ea ⁇ A ⁇ a 1 + C ea and b 1- C eb ⁇ B ⁇ b 1 + C eb , respectively. Since it is a thing and the calculation result is also the number of computers, the equation (3) is satisfied.
- the fixed numbers a 1 , b 1 and the uncertain numbers a 2 , b 2 are separated, the fixed numbers a 1 , b 1 are calculated as they are, and the absolute significant digits r of the calculation result are calculated according to various conditions. decide.
- the maximum number of absolute significant digits can be specified in the calculation of the number of computers.
- the absolute number of significant digits can be specified for division and functions such as root, sin, and cos. As a result, it is possible to guarantee a numerical value equal to or greater than the absolute number of significant digits.
- the calculation of the number of computers can be considered as a special pattern of interval calculation.
- the interval arithmetic indicates a real number in a range and strictly calculates the four arithmetic operations on the range
- the four arithmetic operations on the number of computers differ in that the error is controlled by the number of absolute significant digits.
- the concept of interval arithmetic and the starting point are different in the first place. Therefore, the calculation of the number of computers itself is simpler than the interval calculation, and the evaluation of the error (unclear part) is regarded as the absolute number of significant digits to simplify the calculation.
- the information processing apparatus converts a real numerical value calculation program into a computer number numerical calculation program, executes the computer number numerical calculation program, and stores the number of computers of the calculation result in the calculation unit 13 in the storage unit 12. It is preferable that the portion 14 is further provided. This makes it possible to keep a history of the absolute significant digits of each variable during execution of the computer number numerical calculation program, and to check whether or not the required absolute significant digits are finally obtained. .. It is also possible to back-calculate the absolute significant digits of the value of each variable required to obtain the calculation of the absolute significant digits to be obtained.
- FIG. 4 is a block diagram showing a hardware configuration for exerting the functions of the information processing device.
- the information processing apparatus includes a CPU (Central Processing Unit) 21 that performs program execution processing, a GPU (Graphics Processing Unit) 22 that performs arithmetic processing, and a ROM that stores a program executed by the CPU 21.
- CPU Central Processing Unit
- GPU Graphics Processing Unit
- ROM Read Only Memory
- RAM Random Access Memory
- an operation input unit 25 for receiving various input operations by the user
- a storage 26 for fixedly storing programs and data. It has an input / output interface 27 for inputting / outputting data. That is, the information processing device 2 shown in FIG. 4 is a so-called computer.
- the CPU 21 can process the calculation unit 13 and the control unit 14 in the functional configuration shown in FIG. 1, calculates the number of computers with the computer number calculation library, and stores the number of computers of the calculation result in the storage unit 12. Further, the CPU 21 controls the operation of each block by reading, for example, a numerical calculation program for the number of computers recorded in the storage 26, expanding the program in the RAM 24, and executing the program.
- the GPU 22 has a video memory (VRAM), can perform drawing processing and calculation processing according to a request from the CPU 21, and may calculate the number of computers by the computer number calculation library.
- the ROM 23 is, for example, a non-volatile memory that can only be read, and stores information such as constants required for the operation of each block of the information processing device 2.
- the RAM 24 is a volatile memory, and is used not only as an expansion area for an operation program but also as a storage area for temporarily storing intermediate data and the like output in the operation of each block of the information processing device 2.
- the operation input unit 25 is a user interface that can process the input unit 11 in the functional configuration shown in FIG. 1 and is used when performing an input operation on the information processing device.
- the operation input unit 25 outputs an instruction such as execution or stop of the numerical calculation program processing to the CPU 21 according to the input operation of the user.
- the storage 26 records a numerical calculation program or the like developed in the RAM 24.
- an HDD Hard disk drive
- an SSD Solid State Drive
- an optical drive or the like can be used.
- the input / output interface 27 can output the image generated by the GPU 22 to the display device.
- the functional configuration shown in FIG. 1 can be realized by linking software executed by the CPU 21, GPU 22, ROM 23, RAM 24, CPU 21, and the like. Further, the software program may be stored in a recording medium such as an optical disk or a semiconductor memory and distributed, or may be downloaded via the Internet or the like.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a, h b are each
- e a , e b , and ⁇ indicate the number of significant significant digits that are integers.
- m, n, and r will be used instead of the absolute significant digits e a , e b, and ⁇ , respectively.
- a + B (a 1 + b 1 ) + (A + B) 2
- (A 1 + b 1) is a number determined, (A + B) 2 is indeterminate number satisfies -C r ⁇ (A + B) 2 ⁇ C r, r is the absolute number of significant digits.
- the minimum digit of the fixed number (a 1 + b 1 ) may be smaller than the absolute significant digits. The following will be described by dividing the pattern according to the code of (a 1 + b 1).
- a and B are both positive.
- a 1 ⁇ C ⁇ ; ⁇ is the smallest integer for which the inequality sign holds.
- . b 1 ⁇ C ⁇ ; ⁇ is the smallest integer for which the inequality sign holds.
- a x B a 1 b 1 + (A x B) 2 a 1 b 1 is determined number, (A ⁇ B) 2 is indeterminate number satisfies -C r ⁇ (A ⁇ B) 2 ⁇ C r, r is the absolute number of significant digits. The smallest digit of the fixed number a 1 b 1 may be smaller than the number of significant digits.
- FIG. 6 is a diagram for explaining a method of obtaining the minimum integer r such that C m + ⁇ + C ⁇ + m + C m + n ⁇ C r. 6, each frame represents the position of the 2-bit sequence, a white circle a is C m + ⁇ , C ⁇ + m, indicates the bit position of C m + n, black circle b indicates the bit position of C r, dotted circle c This bit Indicates that it is vacant.
- C m + ⁇ + C ⁇ + m + C m + n C r.
- FIG. 7 is an example in which the number of computers is expressed in C language
- FIG. 8 is an example in which the forms of multiplication, addition, and division of the number of computers are expressed in C language.
- the number of computers includes the sign s (sign), the most significant digit h (high order max), the least significant digit l (low order max), and the absolute effective digit e (absolute effective digit). It is defined by the number of array n (number of array) and the array a.
- the most significant digit h is a value such that
- the least significant digit l is the minimum digit of a fixed number in binary.
- the absolute significant digit e is the smallest integer such that -2 e ⁇ indeterminate number ⁇ 2 e.
- the number of arrays n is the number of unsigned integers that store fixed numbers.
- Array a is an array of unsigned integers that stores fixed numbers.
- the number of significant digits k is the smallest integer such that (log 2
- the multiplication, addition, and division of the number of computers shown in FIG. 8 uses the number of computers as a variable. It is necessary to set the absolute number of significant digits for division.
- FIG. 9 shows an example of a program for calculating the Rump formula in C language
- FIG. 10 shows the program shown in FIG. 9 converted into a program using the number of computers.
- the positive part f1 and the negative part f2 were calculated, and the difference f was calculated.
- the absolute number of significant digits was set to -200.
- FIG. 11 is a diagram showing a bit representation of the calculation result of the positive portion f1
- FIG. 12 is a diagram showing a bit representation of the calculation result of the negative portion f2
- FIG. 13 is a diagram showing the calculation result of the difference f. It is a figure which shows the bit representation.
- the calculation result of the difference f is ⁇ 0.8273960599 ..., Which is slightly different from the true value, but is very superior to the calculation on S / 370. [Calculation of series]
- 1 / (1-x) 1-x + x 2 + ... + (-1) n x n ... (-1 ⁇ x ⁇ 1)
- 1-1 / (1-x) 1-x + x 2 + ... + (-1) n x n ... (-1 ⁇ x ⁇ 1)
- Table 1 shows the calculation results using double-precision floating point. There was no change in the error depending on the value of ⁇ . Since each term of the series in the middle is also a sum of smaller values than the initial value when calculating the sum of the series, it can be seen that the number of significant digits is smaller than the initial value. Even if you use double-precision floating point numbers, you may not be good at calculating the sum of series. On the other hand, in the calculation of the number of computers, the number of significant digits was -500 and the calculation was 0.
- the absolute number of significant digits is about 3 plus, so if the multiplication is repeated, the accuracy of the number of computers will drop sharply. Further, even in addition with different absolute significant digits, the absolute significant digits are always +1. Therefore, if the addition is repeated, the accuracy will surely decrease.
- the number of high-precision computers is used instead of the number of computers in the first embodiment.
- the number of extended digits (maximum number of extended digits, number of extended absolute significant digits) ( ⁇ + ⁇ ') is used instead of the number of digits of the number of computers (maximum number of digits, absolute significant digits).
- ⁇ is an integer, and this value is the number of digits.
- ⁇ ' is a decimal digit number that is a decimal number of 0 ⁇ ⁇ ′ ⁇ 1, and for example, ⁇ ′ can be a / 2 n (0 ⁇ a ⁇ 2 n ).
- the extended absolute significant digits are an integer.
- the number of decimal digits of the extended absolute significant digits can suppress the decrease in accuracy when the four arithmetic operations are repeated, and is very effective especially when there is a difference in the absolute significant digits.
- FIG. 15 is a block diagram showing a functional configuration of the information processing apparatus according to the second embodiment of the present technology.
- the information processing apparatus includes an input unit 31 for inputting the number of high-precision computers in which the real number A and the real number B are defined by the following equations (11) and (12), and the number of high-precision computers.
- the number of high-precision computers stored in the storage unit 32 and the fixed number a 1 and b 1 of the high-precision computer stored in the storage unit 32 are used for calculation, and the number of extended absolute effective digits ( ⁇ + ⁇ ′) is extended so as to satisfy the following equation (13). ),
- a calculation unit 33 for storing the number of high-precision computers of the calculation result in the storage unit 32.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a + h a ', h b + h b' are each
- ⁇ C hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits
- h a, h b indicates the maximum number of digits which is an integer
- h a ′ and h b ′ indicate the number of decimal places which is a decimal number of 0 ⁇ h a ′ ⁇ 1, 0 ⁇ h b ′ ⁇ 1, respectively.
- e a + e a ′, e b + e b ′, ⁇ + ⁇ ′ indicate the number of extended absolute effective digits, which is the number of extended digits
- e a , e b , ⁇ indicate the number of absolute effective digits which are integers
- e a ′, e b ′ and r ′ indicate the number of decimal places, which is a decimal number of 0 ⁇ e a ′ ⁇ 1,0 ⁇ e b ′ ⁇ 1,0 ⁇ r ′ ⁇ 1, respectively.
- (A, B) are the calculation results of the real numbers A and B
- (a, b) 1 is the calculation result of the fixed numbers a 1 and b 1
- (a, b) 2 is the uncertain number a 2 , a calculation result of b 2.
- the radix C of the number of computers is not particularly limited, but is preferably any of 2, 8, or 16. This makes it possible to verify the calculation of binary numbers, octal numbers, or hexadecimal numbers used in general-purpose computers.
- the number of decimal digits h a ', h b', e a ', e b', r ' are each h a' / 2 n (0 ⁇ h a ⁇ 2 n), h b '/ 2 n (0 ⁇ h b ′ ⁇ 2 n ), e a ′ / 2 n (0 ⁇ e a ′ ⁇ 2 n ), e b ′ / 2 n (0 ⁇ e b ′ ⁇ 2 n ), r ′ / 2 n (0) ⁇ r' ⁇ 2 n ), n is preferably represented by a natural number.
- n is preferably 32 or less, more preferably 16 or less, still more preferably 8 or less. Increasing n improves accuracy, but increases calculation costs. If the number of decimal places h a ′, h b ′, e a ′, e b ′, r ′ is set to 0, it is the number of computers according to the first embodiment.
- FIG. 16 is a diagram showing the relationship between the real number and the number of high-precision computers.
- the precision computer number (a 1 + a 2 ) has an uncertainty principle in which the real number A is in the range of a 1 ⁇ C ⁇ + ⁇ ′ ⁇ A ⁇ a 1 + C ⁇ + ⁇ ′.
- the idea is as follows. Determine the number a 1 is a numerical value is valid until the extension absolute number of significant digits (least significant), numerical values is guaranteed.
- the extended absolute significant digits indicate the reliable number of digits after the decimal point, and is the value of ⁇ + ⁇ 'where the error is C ⁇ + ⁇ '.
- ⁇ ′ is the number of decimal places of 0 ⁇ ⁇ ′ ⁇ 1.
- a 2 0 (the number of extended absolute significant digits is infinitesimal), it is the number of fixed computers whose numerical value is fixed, and otherwise it is the number of uncertain computers whose numerical value is not fixed.
- the input unit 31 inputs the number of high-precision computers in which the real numbers A and B are defined by the following equations (11) and (12), respectively.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C indicates the radix.
- h a + h a ', h b + h b' are each
- ⁇ C hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits
- h a, h b indicates the maximum number of digits which is an integer
- h a ′ and h b ′ indicate the number of decimal places which is a decimal number of 0 ⁇ h a ′ ⁇ 1, 0 ⁇ h b ′ ⁇ 1, respectively.
- e a + e a ', e b + e b' indicates the number of extended absolute significant digits is extended digits, e a, e b represents the absolute number of significant digits is an integer, e a ', e b' are each Indicates the number of decimal places, which is a decimal number of 0 ⁇ e a ′ ⁇ 1, 0 ⁇ e b ′ ⁇ 1.
- the input unit 31 has, for example, a sign, a maximum digit number h (high order max) which is the most significant digit, a fractional digit number h ′ (high order max sub) which is the maximum digit number, and a lowest digit.
- the minimum number of digits l (low order max), the number of absolute effective digits e (effective digit), the number of fractional digits of the absolute effective digit e'(effective digit sub), the number of arrays a (number of array), etc. are set. Enter the number of high-precision computers that have been created.
- the storage unit 32 is for storing the number of high-precision computers, and is a so-called buffer.
- the buffer is secured based on the most significant digit h and the least significant digit l input by the input unit 31. For example, as shown in FIG. 3, the buffer can store a plurality of arrays in which data of the same type are arranged in a row.
- the calculation unit 33 calculates using the fixed numbers a 1 and b 1 of the number of computers stored in the storage unit 32, determines the number of extended absolute significant digits ( ⁇ + ⁇ ′) so as to satisfy the following equation (13), and determines the number of extended absolute significant digits ( ⁇ + ⁇ ′).
- the number of computers of the calculation result is stored in the storage unit 32.
- C represents a radix.
- ⁇ + ⁇ ′ indicates the number of extended absolute significant digits
- ⁇ indicates the number of absolute significant digits which is an integer
- ⁇ ′ indicates the number of decimal digits which is a decimal number of 0 ⁇ ⁇ ′ ⁇ 1.
- (A, B) are the calculation results of the real numbers A and B
- (a, b) 1 is the calculation result of the fixed numbers a 1 , b 1
- (a, b) 2 is the uncertain number a 2 , a calculation result of b 2.
- the number of operations precision computer, real A and real B are somewhere between a 1 -C ea + ea ' ⁇ A ⁇ a 1 + C ea + ea' and b 1 -C eb + eb ' ⁇ B ⁇ b 1 + C eb + eb' , respectively Since it is calculated assuming that it is within the range and the calculation result is also the number of high-precision computers, the equation (13) is satisfied.
- the fixed numbers a 1 , b 1 and the uncertain numbers a 2 , b 2 are separated, the fixed numbers a 1 and b 1 are calculated as they are, and the extended absolute significant digits of the calculation result are calculated according to various conditions. Determine the number ( ⁇ + ⁇ ').
- the number of significant digits k is the smallest integer such that log C
- the calculation unit 33 can set the minimum number of extended digits satisfying the following equation (14) as the number of extended absolute significant digits.
- the calculation unit 33 can set the minimum number of extended digits satisfying the following equation (15) as the number of extended absolute significant digits.
- the calculation unit 33 trims the fixed number of supC ⁇ + ⁇ ′ + supC ⁇ + ⁇ ′ ⁇ infC ⁇ + ⁇ ′ based on the difference of infC ⁇ + ⁇ ′ ⁇ (supC ⁇ + ⁇ ′ + supC ⁇ + ⁇ ′). As a result, it is possible to suppress the calculation cost when the calculation is repeated.
- the information processing apparatus converts a real numerical calculation program into a numerical calculation program of a high-precision computer number, executes a numerical calculation program of a high-precision computer number, and stores the number of computers of the calculation result in the calculation unit 33. It is preferable to further include a control unit 34 to be stored in the computer. Specifically, it is preferable to convert the floating point representation into a precision computer number. This makes it possible to keep a history of the extended absolute significant digits of each variable during execution of a high-precision computer number numerical calculation program, and check whether the required extended absolute significant digits can be finally obtained. can do. It is also possible to back-calculate the absolute significant digits of the value of each variable required to obtain the extended absolute significant digit calculation to be obtained.
- the information processing apparatus can include, for example, the hardware configuration shown in FIG. 4, as in the first embodiment.
- the functional configuration shown in FIG. 15 can be realized by linking software executed by the CPU 21, GPU 22, ROM 23, RAM 24, CPU 21, and the like.
- the software program may be stored in a recording medium such as an optical disk or a semiconductor memory and distributed, or may be downloaded via the Internet or the like.
- the functional configuration shown in FIG. 15 may be incorporated into the FPGA (Field Programmable Gate Array).
- FIG. 17 is an example of the numerical representation of the number of high-precision computers by a computer
- FIG. 18 is an example of the definition of the number of high-precision computers.
- the first header portion has a 1-bit code s and a 7-bit array a size.
- the second header part includes a 16-bit maximum digit number h, an 8-bit maximum digit number decimal digit number h', a 16-bit minimum digit number l, a 16-bit absolute effective digit number e, and 8 It has a decimal digit number e'of the absolute effective digit number of the bit.
- a signed 16-bit integer can be used for the maximum number of digits (most significant digit) h, the minimum number of digits (lowest digit) l, and the absolute number of significant digits (significant digits) e. Since the signed 16-bit integer is ⁇ 32768, it can be sufficiently expressed. When the absolute number of significant digits e is -32768 (1000000000000000000 in binary notation), the error is considered to be 0.
- an unsigned 8-bit integer such as an unsigned char variable in C language can be used.
- the number of decimal places h'of the maximum number of digits is 0, there are two meanings.
- the size of the array a does not change in the number of high-precision computers, but the minimum value of the array a is exceptionally set to 0. When the number of computers is other than 0, the 0th bit of the array a is always 1.
- FIG. 20 is a diagram for explaining how to obtain the decimal digit number h'of the extended maximum digit number
- FIG. 21 is a diagram of 32 bits extracted for obtaining the decimal digit number h'of the extended maximum digit number. It is a figure which shows. Here, it is assumed that the maximum number of digits h and the minimum number of digits l are fixed. The maximum number of digits h represents the highest digit when the array a is a bit string, and the minimum number of digits l represents the lowest digit when the array a is a bit string.
- 32 bits are extracted from the beginning of the effective bit length.
- the geta value is set to 1, and when it is 32 bits or less, the geta value is set to 0.
- FIG. 22 is a diagram for explaining an 8-bit- ⁇ 'table.
- the upper ⁇ ' is checked from the 8-bit- ⁇ 'table to obtain C ⁇ 'having a lower limit value larger than 32 bits.
- the above-mentioned extended digit number table is referred to and the lower limit value is higher than this. Find ⁇ 'and let it be h'.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C 2.
- h a + h a ', h b + h b' are each
- ⁇ 2 hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits, h a, h b represents the maximum number of digits is an integer, h a ', h b' indicates the number of decimal places is h a '/ 256, h b ' / 256 , respectively.
- e a + e a ', e b + e b' indicates the number of extended absolute significant digits is extended digits, e a, e b represents the absolute number of significant digits is an integer, e a ', e b' are each Indicates the number of significant digits, which is a decimal number of e a ′ / 256 and e b ′ / 256.
- a + B is represented by the following formulas (21) to (23).
- B is ⁇ C ⁇ 31 ⁇ B ⁇ C ⁇ 31 .
- ⁇ ' is, ⁇ ' is / 2 8. Then, the minimum number of extended digits of C ⁇ + ⁇ ′ including the maximum possible value of C ⁇ ′ + C ⁇ + ⁇ ′ is obtained.
- FIG. 24 is a diagram for explaining a specific calculation method of supC ⁇ ' + supC ⁇ + ⁇ '.
- supC ⁇ 'and supC ⁇ + ⁇ ' represents a a 32-bit combined the least significant bit of supC ⁇ + ⁇ 'to the least significant bit of the 64-bit, performs calculations with unsigned 64-bit integer. This process does not exceed the 64-bit range.
- supC ⁇ 'and supC ⁇ + ⁇ ' and the copies to 64-bit moving the supC ⁇ 'to the left - ⁇ bits. Then, the sum of these values is calculated. In the calculation of this sum, the first non-zero bit is obtained, and the position of the most significant bit of infC ⁇ is adjusted with respect to that bit.
- the position of ⁇ + ⁇ is the position of the original number of digits, and the number of digits less than the number of digits of the difference moved from this position may be rounded down. That is, this difference is absorbed in the difference.
- FIG. 25 is a diagram for explaining the position of a fixed number of addition of two high-precision computers.
- the fixed number of addition of two computer numbers can be suppressed by the width of the uncertain number (supC ⁇ ′ + supC ⁇ + ⁇ ).
- the number of extended digits ( ⁇ + ⁇ ') such that supC ⁇ ' + supC ⁇ + ⁇ ' ⁇ infC ⁇ + ⁇ 'is obtained.
- FIG. 26 is a diagram for explaining the trim process. As shown in FIG. 26, the position from the position of ⁇ to the beginning of the shaded portion is offset.
- the offset value means that the digits below the offset value from ⁇ may be ignored.
- trim the ( ⁇ -offset) digit or less. As a result, it is possible to prevent the number of digits of the calculated value from becoming large.
- the processing in this case performs the same processing as division which will be described later, with the difference ( ⁇ + ⁇ ') + 1/256 in the extended absolute number of significant digits and, C gamma + gamma' and C ⁇ + ⁇ '+ 1/ 256, Calculated Suppress the number of digits of.
- the extended digit addition table is classified by ⁇ (integer from 0 to -32) and outputs ⁇ , ⁇ 'and the number of difference digits for ⁇ ', ⁇ '.
- ⁇ 0, the case of ⁇ ' ⁇ ⁇ ', supC ⁇ '+ supC ⁇ + ⁇ ' ⁇ infC ⁇ + ⁇ ' to become extended digits ( ⁇ + ⁇ ') look, the difference (infC ⁇ + ⁇ '- ( supC ⁇ ' + supC ⁇ + ⁇ By evaluating ′ )), a table of ⁇ ′, ⁇ ′, ⁇ , ⁇ ′, and the number of digits of the difference is created.
- FIG. 27 is a diagram showing an example of an extended digit addition table.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C 2.
- h a + h a ', h b + h b' are each
- ⁇ 2 hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits, h a, h b represents the maximum number of digits is an integer, h a ', h b' indicates the number of decimal places is h a '/ 256, h b ' / 256 , respectively.
- e a + e a ', e b + e b' indicates the number of extended absolute significant digits is extended digits, e a, e b represents the absolute number of significant digits is an integer, e a ', e b' are each Indicates the number of significant digits, which is a decimal number of e a ′ / 256 and e b ′ / 256.
- a ⁇ B is represented by the following formula (31).
- h a, h a ', h b, h b' each m a, m a ', m b, m b' will be described with referred to as.
- the formula (31) is represented by the following formula (39), and the number of extended digits satisfying the formula (40) may be obtained.
- the formula (31) is represented by the following formula (50), and the number of extended digits satisfying the formula (51) may be obtained.
- the formula (31) is represented by the following formula (59), and the number of extended digits satisfying the formula (60) may be obtained.
- the formula (31) is represented by the following formula (68), and the number of extended digits satisfying the formula (69) may be obtained.
- a 1 and b 1 are fixed numbers whose numerical values are fixed, and a 2 and b 2 are uncertain numbers whose numerical values are not fixed.
- C 2.
- h a + h a ', h b + h b' are each
- ⁇ 2 hb + hb' is the smallest expansion digits satisfying describes the extension maximum number of digits, h a, h b represents the maximum number of digits is an integer, h a ', h b' indicates the number of decimal places is h a '/ 256, h b ' / 256 , respectively.
- e a + e a ', e b + e b' indicates the number of extended absolute significant digits is extended digits, e a, e b represents the absolute number of significant digits is an integer, e a ', e b' are each Indicates the number of significant digits, which is a decimal number of e a ′ / 256 and e b ′ / 256.
- the equation (95) is referred to as the equation (96). Then, using the difference between C ⁇ + ⁇ 'and C ⁇ + ⁇ ' , trimming of the extended absolute significant digits is performed.
- FIG. 28 is a diagram for explaining the position of the fixed number (b 1 / a 1 ) of the division of the number of high-precision computers.
- ⁇ C ⁇ + ⁇ ′ -C ⁇ + ⁇ ′ Approximate b 1 / a 1 below.
- the specific value of ⁇ is obtained as the infC ⁇ + ⁇ ⁇ ′ supC ⁇ + ⁇ ′ value.
- ⁇ ' ⁇ 137 the offset value is 9, and when ⁇ '> 137, the offset value is 8.
- B is ⁇ C ⁇ 31 ⁇ B ⁇ C ⁇ 31 .
- ⁇ ' is, ⁇ ' is / 2 8.
- the maximum number of extended digits of C ⁇ + ⁇ ′ including the minimum possible value of C ⁇ ′ + C ⁇ + ⁇ ′ is obtained.
- C ⁇ + ⁇ ′ such that infC ⁇ ′ -supC ⁇ + ⁇ ′ ⁇ supC ⁇ + ⁇ ′ is obtained.
- the difference (supC ⁇ + ⁇ ' -(infC ⁇ '- supC ⁇ + ⁇ ' )) is calculated.
- FIG. 30 is a diagram for explaining a specific calculation method of infC ⁇ '- supC ⁇ + ⁇ '.
- INFC alpha 'and supC ⁇ + ⁇ ' represents a a 32-bit combined the least significant bit of supC ⁇ + ⁇ 'to the least significant bit of the 64-bit, performs calculations with unsigned 64-bit integer. This process does not exceed the 64-bit range.
- the double-precision floating-point representation was converted to the number of high-precision computers, and the calculation was performed using the number of high-precision computers.
- the process of converting a double-precision floating-point representation to a high-precision computer number is performed by examining the sign and exponent part of the double-precision floating-point number and copying the mantissa part.
- FIG. 31 is a diagram showing a double-precision floating-point representation
- FIG. 32 is a diagram showing an example in which the decimal number "0.1" is bit-represented by a high-precision computer number.
- sign (0) indicates a positive number
- An (2) indicates that the number of 32-bit arrays used is “2”.
- h (-4) indicates that the maximum number of digits is "-4”
- h'(174) indicates that the extension part (decimal number of digits) of the maximum number of digits is "174”.
- l (55) indicates that the least significant bit of the array a [0] is -55 digits in binary.
- the mantissa part (fraction) of the double-precision floating-point representation is substituted as it is in the arrays a [1] and a [0].
- the number of high-precision computers is right-justified.
- the decimal number "0.1" is a value like the fourth line because an accurate value cannot be represented by a computer.
- the first bit is the maximum number of digits h, and can be calculated from a double-precision floating-point representation.
- the extension part (decimal number of digits) h'of the maximum number of digits can be obtained by referring to the above-mentioned extended digit number table.
- the first 9 bits of the array (A) are "110011001", and the 8 bits after that are "101001".
- the extension part h'with the maximum number of digits can be obtained.
- “101001” is a decimal number of 153, and the 153rd (starting with 0) numerical value (174) of the "8-bit- ⁇ 'table" is read.
- 2 174/256 is calculated to be 1.601279275568269339353793846241591.
- the top 32 bits of the value of the array (A) is 3435973836, by dividing this value by 2 31, the head 1 bit of can be zero digit binary number. When this value is obtained, it is 1.5999999999927477097015380859375. Therefore, if the first digit of the array (A) is the 0th digit of the binary number, it can be seen that the array (A) can be suppressed by 2 174/256. Since the beginning of the array (A) is -4 in binary digits, it can be seen that 0.1 ⁇ 2 -4 + 174/256 is satisfied.
- FIG. 33 is a diagram showing an example in which the decimal number “1.1” is expressed in bits by the number of high-precision computers
- FIG. 34 is a diagram showing the decimal numbers “0.1” and “1.1” in the high-precision computer. It is a figure which shows an example of the result of having calculated "0.1 + 1.1” using the number of high-precision computers after conversion into a number.
- h (0) and h'(68) indicate that 1.2 ⁇ 2 68/256 .
- the following calculation result is obtained, and it can be seen that 267/256 ⁇ 0.1 ⁇ 2 68/256.
- 2 67/256 1.19890616707438048177...
- 2 68/256 1.2021567314527031420 ...
- the extended absolute significant digits e (-53) and e'(23) of the calculation result are the extended absolute significant digits e (-57) and e'(0) of the number of high-precision computers of "0.1".
- extended absolute number of significant digits e (-53) accurate number of computers of "1.1”, e '(0) by using a, 2 -53 + 22/256 ⁇ 2 -57 +2 -53 ⁇ 2 -53 + 23 It shows that it is / 256.
- 2 22/256 1.061377227289262 ...
- the offset value of the extended digit addition table is 10.
- the number after the decimal point is ".0000000001******", and the part after "1******" can be truncated. This indicates that the binary number may be rounded down from the -53rd digit to the 10th digit or less.
- the minimum number of digits l is -55 digits, which is less than or equal to the absolute number of significant digits e (-53).
- a binary number of -55 digits or less is originally 0.
- FIG. 35 is a diagram showing an example of the result of calculating a decimal number "0.1 ⁇ 1.1" with a floating point number and converting it into a high-precision computer number. It can be seen that the accuracy is somewhat improved by converting to the number of high-precision computers and calculating.
- FIG. 36 is a diagram showing an example in which the decimal number “0.000000001” is expressed in bits by the number of high-precision computers
- FIG. 37 is an example in which the decimal number “1.0” is expressed in bits by the number of high-precision computers. It is a figure which shows.
- FIG. 38 after converting the decimal numbers “0.000000001” and “1.0” into the number of high-precision computers, “0.000000001” is changed to “1.0” by 100 using the number of high-precision computers. It is a figure which shows an example of the result of the addition. It can be seen that there is no change in the absolute significant digit number e (-53), and only the decimal digit number e'is 100.
- the value of the absolute significant digits e increases by about 3 each time, so that the number of significant digits becomes meaningless when the addition is performed 100 times. It can be improved by the number of high-precision computers.
- FIG. 39 is a diagram showing an example of a result obtained by performing a calculation of adding "0.000000001" to "1.0" 100 times in floating point and converting the result into a high-precision computer number.
- the number of significant digits is 15 decimal digits.
- FIG. 40 is an example of the result of converting the decimal numbers “0.1” and “1.1” into the number of high-precision computers and calculating “0.1 ⁇ 1.1” using the number of high-precision computers. It is a figure which shows.
- h (-4) and h'(209) indicate that 0.11 ⁇ 2 -4 + 209/256 .
- 2 -4 + 208/256 0.1097657600233312 ...
- 2 -4 + 209/256 0.11006336518984898 ...
- the minimum number of digits is l (-63), which is smaller than e (-56). Below this digit, it is assumed that 0 is 2 or more consecutive.
- FIG. 41 is a diagram showing an example of the result of calculating a decimal number "0.1 ⁇ 1.1" with a floating point number and converting it into a high-precision computer number. It can be seen that the calculation result by the number of high-precision computers is the same as the calculation result by the floating point number.
- FIG. 42 is a diagram showing an example of the result of calculating the decimal number “0.000000001” by multiplying “1.1” 100 times by the number of high-precision computers.
- the number of significant digits of the calculation result shown in FIG. 42 and the number of high-precision computers of "1.1” shown in FIG. 33 are compared.
- the number of significant digits is the smallest integer such that log C
- Figure 33: (0 + 36/256)-(-53) 53 + 36/256
- Figure 42: (-2326 + 202/256)-(-2372 + 1/256) 43 + 203/256
- FIG. 44 is a diagram showing an example in which the decimal number “0.1” which is the denominator is expressed in bits by the number of high-precision computers
- FIG. 45 is a diagram showing the decimal number “1” which is the molecule by the number of high-precision computers. It is a figure which shows an example of bit representation.
- FIG. 47 is a diagram showing an example in which the decimal number “0.1” which is the denominator is expressed in bits by a high-precision computer number
- FIG. 48 is a diagram showing a decimal number “0.2” which is a molecule in a high-precision computer. It is a figure which shows an example which bit-represented by a number
- FIG. 49 is a diagram showing an example of the result of calculating “0.2 ⁇ 0.1” using the number of high-precision computers. Case indeterminate number of numerator and denominator is not 0 (e a ⁇ - ⁇ , e b ⁇ - ⁇ ) performing calculations at.
- the number of extended absolute significant digits of the calculation result is -52 + 85/256 plus 1/256 in the method when the offset value is ⁇ (e (e (e). -52), e'(86)).
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
精度保証付き数値計算を簡便に行うことができる情報処理装置、プログラム、及び情報処理方法を提供する。 下記式(1)及び式(2)にて実数A及び実数Bがそれぞれ定義されたコンピュータ数の確定数a1,b1を用いて演算し、下記(3)式を満たすように絶対有効桁数γを決定する。 A=a1+a2,|a1|≦Cha,-Cea≦a2<Cea・・・式(1) B=b1+b2,|a1|≦Chb,-Ceb≦b2<Ceb・・・式(2) (A,B)=(a,b)1+(a,b)2,-Cγ≦(a,b)2<Cγ・・・式(3) ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha,hbはそれぞれ|a1|≦Cha,|b1|≦Chbを満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示す。ea,eb,γは整数である絶対有効桁数を示す。
Description
本技術は、数値計算を行う情報処理装置、プログラム、及び情報処理方法に関する。本出願は、日本国において2019年11月27日に出願された日本特許出願番号特願2019-214678を基礎として優先権を主張するものであり、この出願は参照されることにより、本出願に援用される。
数値計算は、解析的に解くのが困難な問題を数値的に解く計算やその手法であり、その計算には、通常、コンピュータによる浮動小数点演算が用いられる。浮動小数点演算の標準的な規格として、IEEE(Institute of Electrical and Electronic Engineers)754がある。現在、ほとんどの数値計算プログラムは、IEEE754方式で実装されており、その資産は膨大である。
浮動小数点数演算には、欠点がいくつか存在し、オーバーフロー/アンダーフロー、桁落ち、情報落ち、積み残し、丸め誤差というエラーがある。このため、μmレベルでは、倍精度の浮動小数点演算でも大きな問題は発生していなかったが、nmレベルになると、有効桁数が不足するのではないかという懸念がある。さらに、高次多項式の級数を使うことになれば、計算誤差が発生し易くなることが想定される。
現在、誤差を考慮した演算(精度保証付き数値計算)が知られており、ソフトウェアにより真の解がどのような範囲にあるかを確かめながら計算を行い、連続数学の問題に対して数学的に真に正しいと保証された演算結果を導くものがある。このソフトウェアによる精度保証は、演算対象となる真値を、演算処理装置で扱うことができる浮動小数点数を両端とする区間の中に挟み込み、それによって連続数の問題を扱おうとするものである。この区間を数と同様に扱うための四則演算は、区間演算と呼ばれ、この区間演算を浮動小数点により行うものは機械区間演算と呼ばれている。しかしながら、区間演算は、実数を範囲で示して範囲に対する四則演算を厳密に計算するため、計算量が多く、複雑である。
本技術は、このような従来の実情に鑑みて提案されたものであり、精度保証付き数値計算を簡便に行うことができる情報処理装置、プログラム、及び情報処理方法を提供する。
本願発明者は、鋭意検討の結果、基数nによってn進数で表すことができる実数の部分集合に属する数を確定数と不確定数に分けて表現する(高精度)コンピュータ数を導入することにより、前記課題を解決できることを見出した。
すなわち、本技術に係る情報処理装置は、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力部と、前記高精度コンピュータ数を格納する格納部と、前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算部とを備える。
また、本技術に係るプログラムは、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力ステップと、前記高精度コンピュータ数を格納部に格納する格納ステップと、前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算ステップとを有する処理をコンピュータに実行させる。
また、本技術に係る情報処理方法は、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力ステップと、前記高精度コンピュータ数を格納部に格納する格納ステップと、前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算ステップとを有する。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′,γ+γ′は拡張桁数である拡張絶対有効桁数を示し、ea,eb,γは整数である絶対有効桁数を示し、ea′,eb′,r′はそれぞれ0≦ea′<1,0≦eb′<1,0≦r′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
本技術によれば、精度保証付き数値計算を簡便に行うことができる。ただし、区間演算は、数を範囲として扱うのに対して、コンピュータ数はあくまでも一つの数であり、不確定数が正確には得られていないため、絶対有効桁数の範囲内の値をどこでも取りうるという考え方をするところが異なる。
<<1.第1の実施の形態>>
以下、本技術の第1の実施の形態について、図面を参照しながら下記順序にて詳細に説明する。なお、本技術は、以下の実施の形態のみに限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
1-1.情報処理装置
1-2.コンピュータ数の計算
1-3.具体例
以下、本技術の第1の実施の形態について、図面を参照しながら下記順序にて詳細に説明する。なお、本技術は、以下の実施の形態のみに限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
1-1.情報処理装置
1-2.コンピュータ数の計算
1-3.具体例
<1-1.情報処理装置>
[機能構成]
図1は、本技術に係る情報処理装置の機能構成を示すブロック図である。図1に示すように、情報処理装置は、下記式(1)及び式(2)にて実数A及び実数Bがそれぞれ定義されたコンピュータ数を入力する入力部11と、コンピュータ数を格納する格納部12と、格納部12に格納されたコンピュータ数の確定数a1,b1を用いて演算し、下記(3)式を満たすように絶対有効桁数γを決定し、該演算結果のコンピュータ数を格納部12に格納する演算部13とを備える。
[機能構成]
図1は、本技術に係る情報処理装置の機能構成を示すブロック図である。図1に示すように、情報処理装置は、下記式(1)及び式(2)にて実数A及び実数Bがそれぞれ定義されたコンピュータ数を入力する入力部11と、コンピュータ数を格納する格納部12と、格納部12に格納されたコンピュータ数の確定数a1,b1を用いて演算し、下記(3)式を満たすように絶対有効桁数γを決定し、該演算結果のコンピュータ数を格納部12に格納する演算部13とを備える。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha,hbはそれぞれ|a1|≦Cha,|b1|≦Chbを満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示す。ea,eb,γは整数である絶対有効桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
コンピュータ数の基数Cは、特に限定されるものではないが、2、8、又は16のいずれかであることが好ましい。これにより、汎用コンピュータで使用される2進数、8進数、又は16進数の計算の検証を行うことができる。
図2は、実数とコンピュータ数との関係を示す図である。図2に示すように、コンピュータ数(a+b)は、実数数Aがa-Cγ≦A<a+Cγの間のいずれかの範囲にある、不確定性原理のような考え方とするものである。確定数aは、絶対有効桁数(最小桁)まで有効である数値であり、数値が保証されている。ここで、絶対有効桁数とは、小数点以下の信頼できる桁数を示すものであり、誤差がCγとなるγの値のことである。b=0(絶対有効桁数mが無限小)である場合、数値が確定した確定コンピュータ数であり、それ以外は数値が確定していない不確定コンピュータ数である。例えば、πや√2を基数Cによって絶対有効桁数γまで展開した場合、絶対有効桁数γまで展開した数値は確定数aとなり、それ以降は不確定数bとなる不確定コンピュータ数である。
入力部11は、下記式(1)及び式(2)にて実数A及び実数Bがそれぞれ定義されたコンピュータ数を入力する。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha,hbはそれぞれ|a1|≦Cha,|b1|≦Chbを満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示す。ea,eb,γは整数である絶対有効桁数を示す。
具体的には、入力部11は、例えば、符号(sign)と、最上位桁(high order max)と、最下位桁(low order max)と、絶対有効桁数(absolute effective digit)と、配列数(number of array)とが設定されたコンピュータ数を入力する。
格納部12は、コンピュータ数を格納するためのものであり、所謂バッファである。バッファは、入力部11で入力された最上位桁及び最下位桁に基づいて確保される。
図3は、コンピュータ数を格納するためのバッファを説明するための図である。図3に示すように、バッファには、同一の型のデータを一列に並べた配列(array)を複数格納する。例えば32ビット配列を10列確保することにより、コンピュータの内部処理の2進数(C=2)において320桁分確保することができる。また、8進数(C=8)の場合は小数点を起点として3桁毎に区切ることで最大で106桁分確保することができ、16進数(C=16)の場合は、小数点を起点として4桁毎に区切ることで最大で80桁分確保することができる。
演算部13は、格納部12に格納されたコンピュータ数の確定数a1,b1を用いて演算し、下記(3)式を満たすように絶対有効桁数rを決定し、該演算結果のコンピュータ数を格納部12に格納する。
ここで、Cは基数を示す。γは指数部であり、絶対有効桁数である。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
コンピュータ数の演算は、実数A及び実数Bがそれぞれa1-Cea≦A<a1+Cea及びb1-Ceb≦B<b1+Cebの間のいずれかの範囲にあるとして計算するものであり、その計算結果もコンピュータ数であるから(3)式を満たす。コンピュータ数の演算は、確定数a1,b1と不確定数a2,b2とを分け、確定数a1,b1をそのまま計算し、各種条件により計算結果の絶対有効桁数rを決定する。
また、コンピュータ数の演算においては、絶対有効桁数の最大値を指定することができる。特に、割算や、root、sin、cosなどの関数に対して絶対有効桁数を指定することができる。これにより、絶対有効桁数以上の数値を保証することができる。
コンピュータ数の演算は、区間演算の特別なパタンであるとも考えられる。ただし、区間演算が実数を範囲で示して、範囲に対する四則演算を厳密に計算するのに対して、コンピュータ数の四則演算では絶対有効桁数で誤差をコントロールする点で異なる。また、コンピュータ数の演算は、実数の代わりの数の体系を求めてからその応用を考えているため、そもそも区間演算の考え方と出発点が異なる。このため、コンピュータ数の計算自体は、区間演算に比較してシンプルであり、誤差(不明確な部分)の評価を絶対有効桁数として計算を簡素化している。
このような情報処理装置によれば、絶対有効桁数が必要な部分のみをコンピュータ数計算ライブラリで計算でき、計算結果の絶対有効桁数を確認することができるため、精度保証付き数値計算を簡便に行うことができる。
また、情報処理装置は、実数の数値計算プログラムをコンピュータ数の数値計算プログラムに変換し、コンピュータ数の数値計算プログラムを実行し、演算部13における演算結果のコンピュータ数を格納部12に格納させる制御部14をさらに備えることが好ましい。これにより、コンピュータ数の数値計算プログラムの実行中に、各変数の絶対有効桁数の履歴を保持することができ、最終的に必要な絶対有効桁数が得られるかどうかをチェックすることができる。また、求めたい絶対有効桁数の計算を得るために必要な各変数の値の絶対有効桁数を逆計算することもできる。
[ハードウェア構成]
図4は、情報処理装置の機能を発揮するためのハードウェア構成を示すブロック図である。図4に示すように、情報処理装置は、プログラムの実行処理を行うCPU(Central Processing Unit)21と、演算処理を行うGPU(Graphics Processing Unit)22と、CPU21により実行されるプログラムを格納するROM(Read Only Memory)23と、プログラムやデータを展開するRAM(Random Access Memory)24と、ユーザにより各種の入力操作を受ける操作入力部25と、プログラムやデータを固定的に保存するストレージ26と、データを入出力する入出力インターフェース27とを有する。すなわち、図4に示す情報処理装置2は、いわゆるコンピュータである。
図4は、情報処理装置の機能を発揮するためのハードウェア構成を示すブロック図である。図4に示すように、情報処理装置は、プログラムの実行処理を行うCPU(Central Processing Unit)21と、演算処理を行うGPU(Graphics Processing Unit)22と、CPU21により実行されるプログラムを格納するROM(Read Only Memory)23と、プログラムやデータを展開するRAM(Random Access Memory)24と、ユーザにより各種の入力操作を受ける操作入力部25と、プログラムやデータを固定的に保存するストレージ26と、データを入出力する入出力インターフェース27とを有する。すなわち、図4に示す情報処理装置2は、いわゆるコンピュータである。
CPU21は、図1に示す機能構成における演算部13及び制御部14の処理が可能であり、コンピュータ数計算ライブラリでコンピュータ数を演算し、演算結果のコンピュータ数を格納部12に格納する。また、CPU21は、例えばストレージ26に記録されているコンピュータ数の数値計算プログラムを読み出し、RAM24に展開して実行することにより、各ブロックの動作を制御する。
GPU22は、ビデオメモリ(VRAM)を有し、CPU21から要求に応じて描画処理及び計算処理が可能であり、コンピュータ数計算ライブラリによるコンピュータ数を演算してもよい。ROM23は、例えば読み込みのみ可能な不揮発性メモリであり、情報処理装置2が有する各ブロックの動作に必要な定数等の情報を記憶する。RAM24は、揮発性メモリであり、動作プログラムの展開領域としてだけでなく、情報処理装置2が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
操作入力部25は、図1に示す機能構成における入力部11の処理が可能であり、情報処理装置に対して入力操作を行う際に用いられるユーザインタフェースである。操作入力部25は、ユーザの入力操作に応じて数値計算プログラム処理の実行または停止等の命令をCPU21に対して出力する。
ストレージ26は、RAM24に展開される数値計算プログラムなどを記録する。なお、ストレージ26としては、HDD(Hard disk drive)、SSD(Solid State Drive)、光学ドライブなどを用いることができる。入出力インターフェース27は、GPU22によって生成した画像を表示装置に出力することが可能である。
このようなハードウェア構成において、図1に示す機能構成は、CPU21、GPU22、ROM23、RAM24、CPU21などにより実行されたソフトウェアの連携によって実現することができる。また、ソフトウェアプログラムは、光ディスクや半導体メモリなどの記録媒体に記憶させて配布する他に、インターネットなどを経由してダウンロードさせる構成としてもよい。
<2.コンピュータ数の計算>
以下、コンピュータ数の基数を2(C=2)として、演算方法について説明する。
以下、コンピュータ数の基数を2(C=2)として、演算方法について説明する。
[足し算]
実数A及び実数Bをそれぞれ式(1)及び式(2)にて定義されるコンピュータ数とする。
実数A及び実数Bをそれぞれ式(1)及び式(2)にて定義されるコンピュータ数とする。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha,hbはそれぞれ|a1|≦Cha,|b1|≦Chbを満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示す。ea,eb,γは整数である絶対有効桁数を示す。
以下、絶対有効桁数ea,eb,γの代わりに、それぞれm,n,rを用いて説明する。
A+B=a1+a2+b1+b2=(a1+b1)+(a2+b2)
⇒(a1+b1)-Cm-Cn≦A+B<(a1+b1)+Cm+Cn
⇒(a1+b1)-Cm-Cn≦A+B<(a1+b1)+Cm+Cn
rをCm+Cn≦Crとなる最小の整数とする。
m=nのときr=m+1、m≠nのときr=max(m,n)+1であるから、r=max(m,n)+1である。
A+B=(a1+b1)+(A+B)2
(a1+b1)が確定数であり、(A+B)2が不確定数であり、-Cr≦(A+B)2<Crを満たし、rは絶対有効桁数である。確定数(a1+b1)の最小の位は、絶対有効桁数よりも小さい場合がある。(a1+b1)の符号別にパタン分けして説明する。
図5は、(a1+b1)=α+β+γとしたときを説明するための図である。図5に示すように、(a1+b1)=α+β+γとし、αは(r+1)桁以上の部分、βはr桁の部分、γは(r-1)桁以下の部分とする。
(a1+b1)-Cr≦A+B<(a1+b1)+Cr
⇒(α+β)+γ-Cr≦A+B<(α+β)+γ+Cr
γ>0((a1+b1)>0)のとき、
(α+β)-Cr-1≦A+B<(α+β)+Cr-1
γ<0((a1+b1)<0)のとき、
⇒(α+β)+γ-Cr≦A+B<(α+β)+γ+Cr
γ>0((a1+b1)>0)のとき、
(α+β)-Cr-1≦A+B<(α+β)+Cr-1
γ<0((a1+b1)<0)のとき、
(α+β)-Cr+1≦A+B<(α+β)+Cr+1
であるから、(α+β)-Cr+1≦A+B<(α+β)+Cr+1が成り立ち、(α+β)が確定数であり、絶対有効桁数はr+1である。
であるから、(α+β)-Cr+1≦A+B<(α+β)+Cr+1が成り立ち、(α+β)が確定数であり、絶対有効桁数はr+1である。
γ=0のときは、(α+β)-Cr≦A+B<(α+β)+Crが成り立ち、(α+β)が確定数であり、絶対有効桁数はrである。
[掛け算]
A×B=(a1+a2)×(b1+b2)=a1b1+a2b1+a1b2+a2b2
A×B=(a1+a2)×(b1+b2)=a1b1+a2b1+a1b2+a2b2
A、Bとも正であるとする。
a1≦Cα;αは不等号が成立する最小の整数。好ましくはlog2|a1|。
b1≦Cβ;βは不等号が成立する最小の整数。好ましくはlog2|b1|。
-CmCβ≦a2b1<CmCβ
-CαCm≦a1b2<CαCm
-CmCn<a2b2≦CmCn
より、
b1≦Cβ;βは不等号が成立する最小の整数。好ましくはlog2|b1|。
-CmCβ≦a2b1<CmCβ
-CαCm≦a1b2<CαCm
-CmCn<a2b2≦CmCn
より、
a1b1-CmCβ-CαCm-CmCn<A×B<a1b1+CmCβ+CαCm+CmCn
⇒a1b1-Cm+β-Cα+m-Cm+n<A×B<a1b1+Cm+β+Cα+m+Cm+n
rをCm+β+Cα+m+Cm+n≦Crとなる最小の整数とする。
⇒a1b1-Cm+β-Cα+m-Cm+n<A×B<a1b1+Cm+β+Cα+m+Cm+n
rをCm+β+Cα+m+Cm+n≦Crとなる最小の整数とする。
A×B=a1b1+(A×B)2
a1b1が確定数であり、(A×B)2が不確定数であり、-Cr≦(A×B)2<Crを満たし、rは絶対有効桁数である。確定数a1b1の最小の位は、有効桁数よりも小さい場合がある。
a1b1が確定数であり、(A×B)2が不確定数であり、-Cr≦(A×B)2<Crを満たし、rは絶対有効桁数である。確定数a1b1の最小の位は、有効桁数よりも小さい場合がある。
意味のない桁の部分を考慮した確定数と絶対有効桁数は、足し算における正のケースと同様である。
図6は、Cm+β+Cα+m+Cm+n≦Crとなる最小の整数rを求める方法を説明するための図である。図6において、各枠は2ビット配列の位置を表し、白丸aはCm+β,Cα+m,Cm+nのビット位置を示し、黒丸bはCrのビット位置を示し、点線丸cはこのビットが空いていることを示す。
Cm+β+Cα+m+Cm+n≦Crとなる最小の整数をrとすると、Cm+β+Cα+m+Cm+n=Crとなるケースは、パタン3のみである。Cm+β+Cα+m+Cm+n≦Crとなるrは、(m+β),(α+n),(m+n)がパタン1、パタン2のときには、最大値+2(r=max(m,n)+2)、それ以外は最大値+1(r=max(m,n)+1)となる。Cm+β+Cα+m+Cm+n<Crとなるrは、(m+β),(α+n),(m+n)がパタン1、パタン2、パタン3のときには、最大値+2(r=max(m,n)+2)、それ以外は最大値+1(r=max(m,n)+1)となる。
<3.具体例>
次に、前述したコンピュータ数を用いたソフトウェアの計算例について説明する。図7は、C言語でコンピュータ数を表現した一例であり、図8は、C言語でコンピュータ数の掛け算、足し算、及び割り算の形式を表現した一例である。
次に、前述したコンピュータ数を用いたソフトウェアの計算例について説明する。図7は、C言語でコンピュータ数を表現した一例であり、図8は、C言語でコンピュータ数の掛け算、足し算、及び割り算の形式を表現した一例である。
図7に示すように、コンピュータ数は、符号s(sign)と、最上位桁h(high order max)と、最下位桁l(low order max)と、絶対有効桁数e(absolute effective digit)と、配列数n(number of array)と、配列aにより定義される。符号sは、s=1のとき正であり、s=-1のとき負である。最上位桁hは、|確定数|≦log2hとなる値である。最下位桁lは、確定数の2進数による最小桁である。絶対有効桁数eは、-2e≦不確定数<2eとなる最小の整数である。配列数nは、確定数を格納する符号なし整数の個数である。配列aは、確定数を格納する符号なし整数の配列である。なお、有効桁数kは、(log2|確定数|-絶対有効桁数)≦kとなる最小の整数である。
図8に示すコンピュータ数の掛け算、足し算、及び割り算は、コンピュータ数を変数としている。割算に関しては絶対有効桁数を設定する必要がある。
[Rump式の計算]
S.M.Rumpが考案した下記式に、a=77617,b=33096を代入したf(a,b)の値を評価する。
f(x,y)=333.75y6+x2(11x2y2-y6-121y4-2)
+55y8+x/2y
S.M.Rumpが考案した下記式に、a=77617,b=33096を代入したf(a,b)の値を評価する。
f(x,y)=333.75y6+x2(11x2y2-y6-121y4-2)
+55y8+x/2y
これをIBMのメインフレームS/370上で演算精度を変えて実行すると、以下の結果となる。
単精度(10進数約8桁):f(x,y)≒1.1720603…
倍精度(10進数約17桁):f(x,y)≒1.17206039400531…
拡張精度(10進数約34桁):f(x,y)≒1.1720603940053178…
単精度(10進数約8桁):f(x,y)≒1.1720603…
倍精度(10進数約17桁):f(x,y)≒1.17206039400531…
拡張精度(10進数約34桁):f(x,y)≒1.1720603940053178…
真の値は、f(a,b)=-0.827386・・・であり、S/370上での計算は、符号もあっていない間違った結果となる。
図9は、C言語でRump式を計算するプログラム例であり、図10は、図9に示すプログラムを、コンピュータ数を用いたプログラムに変換したものである。図10及び図9に示すように、正の部分f1,負の部分f2を計算し、その差分fを計算した。また、「inverse_digital_expression (&k2y, -200, &k2yinv, &status)」の割算において、絶対有効桁数を-200とした。
f1=333.75y6+x2×11x2y2+55y8+x/2y
f2=x2×y6+x2×121y4+x2×2
f=f1-f2
f1=333.75y6+x2×11x2y2+55y8+x/2y
f2=x2×y6+x2×121y4+x2×2
f=f1-f2
図11は、正の部分f1の計算結果のビット表現を示す図であり、図12は、負の部分f2の計算結果のビット表現を示す図であり、図13は、差分fの計算結果のビット表現を示す図である。正の部分f1,負の部分f2のビット表現を合わせて表示すると、黒枠まではビットの並びが一致している。差分f(=f1-f2)を正しく計算するためには139ビット以上の桁数が必要であることがわかる。差分fの計算結果は-0.8273960599・・・であり、真の値と若干異なっているが、S/370上での計算に比べ、非常に優れている。
[級数の計算]
[級数の計算]
1/(1-x)=1-x+x2+…+(-1)nxn・・・ (-1<x<1)
マクローリン展開の式を評価する。1-1/(1-x)に、-x+x2+…+(-1)nxn・・・のように順次、項を足し算していくと0に近づくはずである。
マクローリン展開の式を評価する。1-1/(1-x)に、-x+x2+…+(-1)nxn・・・のように順次、項を足し算していくと0に近づくはずである。
図14は、y=1/(1-x)を示すグラフである。図14に示すように、δを1/1000,1/10000,1/100000,1/1000000にそれぞれ設定し、このδを100分割して上記の計算を行って誤差を評価した。項の数nは50として計算した。
表1に、倍精度浮動小数点による計算結果を示す。δの値によって誤差に変化がなかった。級数の和を求めるときの初期値に対して、途中の級数の各項もそれ以下の小さな値の和であるので、有効桁数は初期値に対して小さくなっていることがわかる。倍精度浮動小数点数を使用しても級数の和を計算することは苦手としている可能性がある。一方、コンピュータ数の計算では有効桁数-500として計算すると0となった。
<<2.第2の実施の形態>>
以下、本技術の第2の実施の形態について、図面を参照しながら下記順序にて詳細に説明する。なお、本技術は、以下の実施の形態のみに限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
2-1.情報処理装置
2-2.高精度コンピュータ数の計算
2-3.具体例
以下、本技術の第2の実施の形態について、図面を参照しながら下記順序にて詳細に説明する。なお、本技術は、以下の実施の形態のみに限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
2-1.情報処理装置
2-2.高精度コンピュータ数の計算
2-3.具体例
第1の実施の形態のコンピュータ数の掛け算の計算においては、絶対有効桁数が3桁程度プラスになるため、かけ算を繰り返すと急激にコンピュータ数の精度が低下する。また、絶対有効桁数の異なる足し算においても、必ず絶対有効桁数が+1になるので、足し算を繰り返すと精度が確実に低下する。
そこで、第2の実施の形態では、第1の実施の形態のコンピュータ数の代わりに、高精度コンピュータ数を使用する。高精度コンピュータ数では、コンピュータ数の桁数(最大桁数、絶対有効桁数)の代わりに、拡張桁数(拡張最大桁数、拡張絶対有効桁数)(α+α′)を使用する。ここで、αは整数であり、この値が桁数である。α′は0≦α′<1の小数である小数桁数であり、例えばα′はa/2n(0≦a<2n)とすることができる。
最初に高精度コンピュータ数を生成するときには、拡張絶対有効桁数は整数である。拡張絶対有効桁数の小数桁数は、四則演算を繰り返した場合の精度低下を抑制することができ、特に絶対有効桁数に差がある場合に非常に有効である。
<2-1.情報処理装置>
[機能構成]
図15は、本技術の第2の実施の形態に係る情報処理装置の機能構成を示すブロック図である。図15に示すように、情報処理装置は、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力部31と、高精度コンピュータ数を格納する格納部32と、格納部32に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を格納部32に格納する演算部33とを備える。
[機能構成]
図15は、本技術の第2の実施の形態に係る情報処理装置の機能構成を示すブロック図である。図15に示すように、情報処理装置は、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力部31と、高精度コンピュータ数を格納する格納部32と、格納部32に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を格納部32に格納する演算部33とを備える。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′,γ+γ′は拡張桁数である拡張絶対有効桁数を示し、ea,eb,γは整数である絶対有効桁数を示し、ea′,eb′,r′はそれぞれ0≦ea′<1,0≦eb′<1,0≦r′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
コンピュータ数の基数Cは、特に限定されるものではないが、2、8、又は16のいずれかであることが好ましい。これにより、汎用コンピュータで使用される2進数、8進数、又は16進数の計算の検証を行うことができる。
また、小数桁数ha′,hb′,ea′,eb′,r′は、それぞれha′/2n(0≦ha<2n)、hb′/2n(0≦hb′<2n)、ea′/2n(0≦ea′<2n)、eb′/2n(0≦eb′<2n)、r′/2n(0≦r′<2n)、nは自然数で表されることが好ましい。nは好ましくは32以下、より好ましくは16以下、さらに好ましくは8以下である。nを大きくすれば精度が向上するが、計算コストが上がってしまう。なお、小数桁数ha′,hb′,ea′,eb′,r′を0とすれば、第1の実施の形態のコンピュータ数である。
図16は、実数と高精度コンピュータ数との関係を示す図である。図16に示すように、高精度コンピュータ数(a1+a2)は、実数Aがa1-Cγ+γ′≦A<a1+Cγ+γ′の間のいずれかの範囲にある、不確定性原理のような考え方とするものである。確定数a1は、拡張絶対有効桁数(最小桁)まで有効である数値であり、数値が保証されている。ここで、拡張絶対有効桁数とは、小数点以下の信頼できる桁数を示すものであり、誤差がCγ+γ′となるγ+γ′の値のことである。また、γ′は0≦γ′<1の小数桁数である。a2=0(拡張絶対有効桁数が無限小)である場合、数値が確定した確定コンピュータ数であり、それ以外は数値が確定していない不確定コンピュータ数である。
入力部31は、下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′は拡張桁数である拡張絶対有効桁数を示し、ea,ebは整数である絶対有効桁数を示し、ea′,eb′はそれぞれ0≦ea′<1,0≦eb′<1の小数である小数桁数を示す。
具体的には、入力部31は、例えば、符号(sign)、最上位桁である最大桁数h(high order max)、最大桁数の小数桁数h′(high order max sub)、最下位桁である最小桁数l(low order max)、絶対有効桁数e(effective digit)、絶対有効桁数の小数桁数e′(effective digit sub)、配列数a(number of array)等が設定された高精度コンピュータ数を入力する。
格納部32は、高精度コンピュータ数を格納するためのものであり、所謂バッファである。バッファは、入力部31で入力された最上位桁h及び最下位桁lに基づいて確保される。例えば、図3に示すように、バッファには、同一の型のデータを一列に並べた配列(array)を複数格納することができる。
演算部33は、格納部32に格納されたコンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果のコンピュータ数を格納部32に格納する。
ここで、Cは基数を示す。γ+γ′は拡張絶対有効桁数を示し、γは整数である絶対有効桁数を示し、γ′は0≦γ′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
高精度コンピュータ数の演算は、実数A及び実数Bがそれぞれa1-Cea+ea′≦A<a1+Cea+ea′及びb1-Ceb+eb′≦B<b1+Ceb+eb′の間のいずれかの範囲にあるとして計算するものであり、その計算結果も高精度コンピュータ数であるから(13)式を満たす。高精度コンピュータ数の演算は、確定数a1,b1と不確定数a2,b2とを分け、確定数a1,b1をそのまま計算し、各種条件により計算結果の拡張絶対有効桁数(γ+γ′)を決定する。なお、有効桁数kは、logC|確定数|-拡張絶対有効桁数(γ+γ′)≦kとなる最小の整数である。
割り算(B/A)の計算において、演算部は、ha+ha′,hb+hb′の代わりに、それぞれha+ha′-1/256,hb+hb′-1/256を用い、下記式(16)及び式(17)にて定義される高精度コンピュータ数として下記式(18)を評価し、拡張絶対有効桁数を決定することができる。
高精度コンピュータ数の四則演算においては、|a|≦infCα+α′(C:基数、a:確定数)、supCα+α′+supCβ+β′≦infCγ+γ′(C:基数)、infCα+α′-supCβ+β′≧supCγ+γ′(C:基数)などの計算を行う必要がある。なお、supAは、Aの上限値、infAは、Aの下限値を表す。
演算部33は、|a|≦infCα+α′について、α=0のときのα′に対するaの値の一覧テーブル、supCα+α′+supCβ+β′≦infCγ+γ′について、α=0のときのα′,β,β′に対するγ,γ′の値の一覧テーブル、infCα+α′-supCβ+β′≧supCγ+γ′について、α=0のときのα′,β,β′に対するγ,γ′の値の一覧テーブルを用いて演算することが好ましい。これにより、高精度コンピュータ数の計算を高速化させることができる。
また、演算部33は、supCα+α′+supCβ+β′≦infCγ+γ′について、infCγ+γ′-(supCα+α′+supCβ+β′)の差分に基づいて確定数をトリム処理することが好ましい。これにより、演算を繰り返した場合の計算コストを抑制することができる。また、infCα+α′-supCβ+β′≧supCγ+γ′についても同様に、infCα+α′-supCβ+β′-supCγ+γ′の差分に基づいて確定数をトリム処理することにより、演算を繰り返した場合の計算コストを抑制することができる。
また、情報処理装置は、実数の数値計算プログラムを高精度コンピュータ数の数値計算プログラムに変換し、高精度コンピュータ数の数値計算プログラムを実行し、演算部33における演算結果のコンピュータ数を格納部32に格納させる制御部34をさらに備えることが好ましい。具体的には、浮動小数点表現を高精度コンピュータ数に変換することが好ましい。これにより、高精度コンピュータ数の数値計算プログラムの実行中に、各変数の拡張絶対有効桁数の履歴を保持することができ、最終的に必要な拡張絶対有効桁数が得られるかどうかをチェックすることができる。また、求めたい拡張絶対有効桁数計算を得るために必要な各変数の値の絶対有効桁数を逆計算することもできる。
このような情報処理装置によれば、拡張絶対有効桁数が必要な部分のみを高精度コンピュータ数計算ライブラリで計算でき、計算結果の拡張絶対有効桁数を確認することができるため、精度保証付き数値計算を簡便に行うことができる。
[ハードウェア構成]
情報処理装置は、第1の実施の形態と同様に、例えば図4に示すハードウェア構成を備えることができる。図4に示すハードウェア構成において、図15に示す機能構成は、CPU21、GPU22、ROM23、RAM24、CPU21などにより実行されたソフトウェアの連携によって実現することができる。また、ソフトウェアプログラムは、光ディスクや半導体メモリなどの記録媒体に記憶させて配布する他に、インターネットなどを経由してダウンロードさせる構成としてもよい。また、図15に示す機能構成をFPGA(Field Programmable Gate Array)に組み込んでもよい。
情報処理装置は、第1の実施の形態と同様に、例えば図4に示すハードウェア構成を備えることができる。図4に示すハードウェア構成において、図15に示す機能構成は、CPU21、GPU22、ROM23、RAM24、CPU21などにより実行されたソフトウェアの連携によって実現することができる。また、ソフトウェアプログラムは、光ディスクや半導体メモリなどの記録媒体に記憶させて配布する他に、インターネットなどを経由してダウンロードさせる構成としてもよい。また、図15に示す機能構成をFPGA(Field Programmable Gate Array)に組み込んでもよい。
<2.高精度コンピュータ数の計算>
以下、高精度コンピュータ数の基数を2(C=2)とし、指数部の小数桁数ha′,hb′,ea′,eb′,r′をそれぞれha′/28(0≦ha′<28),hb′/28(0≦hb′<28),ea′/28(0≦ea′<28),eb′/28(0≦eb′<28),r′/28(0≦r′<28)として、演算方法について説明する。ただし、記述を簡単にするため、指数部の小数桁数をha′,hb′,ea′,eb′,r′と記載することがある。
以下、高精度コンピュータ数の基数を2(C=2)とし、指数部の小数桁数ha′,hb′,ea′,eb′,r′をそれぞれha′/28(0≦ha′<28),hb′/28(0≦hb′<28),ea′/28(0≦ea′<28),eb′/28(0≦eb′<28),r′/28(0≦r′<28)として、演算方法について説明する。ただし、記述を簡単にするため、指数部の小数桁数をha′,hb′,ea′,eb′,r′と記載することがある。
n=8の場合、例えば、supCα+α′+supCβ+β′≦infCγ+γ′の関係において、infCγ+γ-(supCα+α′+supCβ+β′)の差分は特定の場合以外は0にはならず、隙間が生じる。この隙間以下の部分を切り捨てても計算には影響がないため、トリム処理することができ、演算を繰り返した場合の計算コストを抑制することができる。
図17は、高精度コンピュータ数のコンピュータによる数値表現の一例であり、図18は、高精度コンピュータ数の定義の一例である。図17に示すように、第1のヘッダ部は、1ビットの符号sと、7ビットの配列aのサイズとを有する。第2のヘッダ部は、16ビットの最大桁数hと、8ビットの最大桁数の小数桁数h′と、16ビットの最小桁数lと、16ビットの絶対有効桁数eと、8ビットの絶対有効桁数の小数桁数e′とを有する。
仮数部には、32ビットの配列aが格納され、配列aの最大数は127である。配列aは符号なし整数値であるため、仮数部の最大は、127×32=4064ビットである。これは、10進数で1223桁を表現可能である。例えば、1光年が9兆5000億km<10兆km=1013km=1019mm=1025nmであるから、宇宙の大きさを137憶光年、約100憶光年とすると、100憶光年=1010光年=1035nmであり、宇宙の大きさをnmで表すと35桁(10進数)で十分である。これに対し、高精度コンピュータ数は、非常に大きい桁の演算を行うことができる。
最大桁数(最上位桁)h、最小桁数(最下位桁)l、絶対有効桁数(有効桁)eは、符号付き16ビット整数を用いることができる。符号付き16ビット整数は、±32768であるから、十分な表現が可能である。なお、絶対有効桁数eが-32768(2進数表現で1000000000000000)の時は、誤差は0であるとみなす。
最大桁数の小数桁数h′、絶対有効桁数の小数桁数e′は、例えばC言語のunsigned char変数などの符号なし8ビット整数を用いることができる。最大桁数の小数桁数h′が0の時は2つの意味がある。h=lのときは、そのまま0であるが、h>lのときには、h′=256となり、最大桁数は(h+l)となる。
[不確定数0の扱い]
不確定数の範囲は、拡張絶対有効桁数を使い、-Ce+e′≦(不確定数)<Ce+e′と表す。絶対有効桁数eを-∞とすると、不確定数の取りうる幅は限りなく0になる。コンピュータによる高精度コンピュータ数の表現では絶対有効桁数eの最小値は-32768であり、この値を-∞として扱う。e→-∞となるとき、不確定数は0であると定義する。高精度コンピュータ数の計算において取りうる絶対有効桁数eの値は、-32767から32767までの値であり、この範囲を超えたときには計算エラーとして扱う。
不確定数の範囲は、拡張絶対有効桁数を使い、-Ce+e′≦(不確定数)<Ce+e′と表す。絶対有効桁数eを-∞とすると、不確定数の取りうる幅は限りなく0になる。コンピュータによる高精度コンピュータ数の表現では絶対有効桁数eの最小値は-32768であり、この値を-∞として扱う。e→-∞となるとき、不確定数は0であると定義する。高精度コンピュータ数の計算において取りうる絶対有効桁数eの値は、-32767から32767までの値であり、この範囲を超えたときには計算エラーとして扱う。
[高精度コンピュータ数における0]
高精度コンピュータ数における0の表現は、以下のように定義する。
s(符号)→0
h(最大桁数)→0
hd(最大桁数の小数桁数)→0
l(最小桁数)→0
e(絶対有効桁数)→計算値
ed(絶対有効桁数の小数桁数)→計算値
配列a→a[0]=0
高精度コンピュータ数における0の表現は、以下のように定義する。
s(符号)→0
h(最大桁数)→0
hd(最大桁数の小数桁数)→0
l(最小桁数)→0
e(絶対有効桁数)→計算値
ed(絶対有効桁数の小数桁数)→計算値
配列a→a[0]=0
高精度コンピュータ数における配列aのサイズは変わらないが、例外的に配列aの最小の値を0とする。0以外のコンピュータ数においては、配列aの0ビット目は必ず1となる。
[拡張桁数表]
図19は、Cα+α′=A+B(A:確定数、B:不確定数)としたときのAの32ビット表現の一例である。Bは、-Cα-31≦B<Cα-31である。高精度コンピュータ数の計算の高速化に利用するため、α=0としたときのα′に対し、Aの値を出力する拡張桁表を予め作成することが好ましい。
図19は、Cα+α′=A+B(A:確定数、B:不確定数)としたときのAの32ビット表現の一例である。Bは、-Cα-31≦B<Cα-31である。高精度コンピュータ数の計算の高速化に利用するため、α=0としたときのα′に対し、Aの値を出力する拡張桁表を予め作成することが好ましい。
[拡張最大桁数の小数桁数h′]
図20は、拡張最大桁数の小数桁数h′の求め方を説明するための図であり、図21は、拡張最大桁数の小数桁数h′の求めるために抽出した32ビット分を示す図である。ここで、最大桁数hと最小桁数lは確定しているものとする。最大桁数hは、配列aをビット列としたときの最上位の桁を表し、最小桁数lは、配列aをビット列としたときの最下位の桁を表す。
図20は、拡張最大桁数の小数桁数h′の求め方を説明するための図であり、図21は、拡張最大桁数の小数桁数h′の求めるために抽出した32ビット分を示す図である。ここで、最大桁数hと最小桁数lは確定しているものとする。最大桁数hは、配列aをビット列としたときの最上位の桁を表し、最小桁数lは、配列aをビット列としたときの最下位の桁を表す。
図20及び図21に示すように、有効なビット長の先頭から32ビット分を抽出する。有効なビット長が32ビットよりも長いときは、下駄値を1とし、32ビット以下のときは下駄値を0とする。
抽出した32ビットの先頭9ビットを使って、これを256で割った値よりも下限値が大きくなるα′を求める。この処理は8ビットの整数からα′を出力する8ビット-α′表を参照することにより行う。
図22は、8ビット-α′表の説明するための図である。8ビット-α′表から上位のα′をチェックして、32ビットよりも大きな下限値をもつCα′を求める。具体的には、図22に示すように、8ビット数を左の********部分に設定したときに、前述した拡張桁数表を参照し、これ以上の下限値を持つα′を求め、h′とする。
[足し算]
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。C=2である。ha+ha′,hb+hb′はそれぞれ|a1|≦2ha+ha′,|b1|≦2hb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれha′/256,hb′/256である小数桁数を示す。ea+ea′,eb+eb′は拡張桁数である拡張絶対有効桁数を示し、ea,ebは整数である絶対有効桁数を示し、ea′,eb′はそれぞれea′/256,eb′/256の小数である小数桁数を示す。
A+Bは、下記式(21)~(23)で表される。
式(23)を満たす最小の拡張桁数を求める。Cea+ea′,Ceb+eb′,Cγ+γ′などの値は高精度コンピュータ数で表現し、supCea+ea′+supCeb+eb′≦infCγ+γ′を求める。ここでsupAは、Aの上限値、infAは、Aの下限値を表す。
[不確定数が0の場合]
式(21)に示すA+Bにおいて、実数Bの不確定数b2が0の場合、式(22)に示す不等式は、下記式(24)となる。
式(21)に示すA+Bにおいて、実数Bの不確定数b2が0の場合、式(22)に示す不等式は、下記式(24)となる。
さらに実数Aの不確定数a2が0の場合、A+Bの不確定数は0になる。この場合、下位桁のトリム処理は行わない。
[拡張桁数足し算表]
式(23)に示すようなsupCea+ea′+supCeb+eb′≦infCγ+γ′の計算は、Cα′,Cβ+β′に対して、Cα′+Cβ+β′≦Cγ+γ′を満たす最小の拡張桁数(γ+γ′)を出力する拡張桁数足し算表を用いる。ここで、0≧βであり、α′,β′は、それぞれα′/28,β′/28である。
式(23)に示すようなsupCea+ea′+supCeb+eb′≦infCγ+γ′の計算は、Cα′,Cβ+β′に対して、Cα′+Cβ+β′≦Cγ+γ′を満たす最小の拡張桁数(γ+γ′)を出力する拡張桁数足し算表を用いる。ここで、0≧βであり、α′,β′は、それぞれα′/28,β′/28である。
図23は、Cα′=A+B(A:確定数、B:不確定数)としたときのAの32ビット表現の一例である。Bは、-C-31≦B<C-31である。ここで、α′は、α′/28である。そして、Cα′+Cβ+β′の取りうる最大値を含むCγ+γ′の最小の拡張桁数を求める。具体的には、supCα′+supCβ+β′≦infCγ+γ′となるCγ+γ′を求め、その差(infCγ+γ′-(supCα′+supCβ+β′))を計算する。
図24は、supCα′+supCβ+β′の具体的な計算方法を説明するための図である。supCα′とsupCβ+β′とを32ビットで表し、supCβ+β′の最下位ビットを64ビットの最下位ビットに合わせて、符号なし64ビット整数で計算を行う。この処理であれば64ビットの範囲を超えることはない。supCα′とsupCβ+β′とを64ビットにコピーし、supCα′を-βビット左に移動させる。そして、これらの値の和を計算する。この和の計算において、最初が0ではないビットを求め、そのビットに対してinfCγの最上位ビットの位置を合わせる。
確定数において、γ+βの位置が本来の桁数の位置であって、この位置から差分の桁数移動した桁数未満は切り捨ててもよいことが分かる。つまり、この差は差分の中に吸収される。
図25は、2つの高精度コンピュータ数の足し算の確定数の位置を説明するための図である。図25に示すように、2つのコンピュータ数の足し算の確定数は、不確定数の幅(supCα′+supCβ+β)で抑えることができる。これをCγ+γ′で抑えるためにはsupCα′+supCβ+β′≦infCγ+γ′となる拡張桁数(γ+γ′)を求める。その差(infCγ+γ′-(supCα′+supCβ+β′))をδとすると、確定数の位置を±δ移動しても、誤差がCγ+γ′の範囲であれば、高精度コンピュータ数(確定数+不確定数)を含むことになる。確定数の位置Aを±δ移動すると、全体的には±δ誤差が大きくなるが、Cα′+Cβ+β′≦Cγ+γ′を抑えるために、δの誤差を許容する。一方、このδの誤差を利用して確定数の下位の桁をトリムする。
図26は、トリム処理を説明するための図である。図26に示すように、γの位置から斜線部分の先頭までの位置をオフセットしている。オフセット値は、γからオフセット値の桁以下を無視してもよいということを意味している。具体的な計算では、(γ-オフセット)桁以下をトリムする。これにより、計算値の桁数が大きくなるのを防ぐことができる。
Cα+α′+Cβ+β′≦Cγ+γ′において、(α+α′)と(β+β′)とが一致するときに、γ=2α、γ′=α′となり、オフセット値は∞になる。実際には16ビット整数の最大値である65535(プログラム内ではbit16max)で表される。このとき、差分が0となるため、計算値の桁数が大きくなってしまう。この場合の処理については、後述する割り算と同じ処理を行い、(γ+γ′)+1/256を拡張絶対有効桁数にして、Cγ+γ′とCγ+γ′+1/256の差分を使って、計算値の桁数を抑制する。
拡張桁数足し算表は、β(0から-32までの整数)によって分類され、α′,β′に対してγ,γ′,差分の桁数を出力する。
(1)β=0,α′≧β′の場合、supCα′+supCβ+β′≦infCγ+γ′となる拡張桁数(γ+γ′)を求め、その差(infCγ+γ′-(supCα′+supCβ+β′))を評価することにより、α′,β′,γ,γ′,及び、差分の桁数の表が作成される。
(2)βが-1から-9の場合、(1)と同様に、supCα′+supCβ+β′≦infCγ+γ′となる拡張桁数(γ+γ′)を求め、その差(infCγ+γ′-(supCα′+supCβ+β′))を評価することにより、α′,β′,γ,γ′,及び、差分の桁数の表が作成される。
(3)βが-10から-32の場合、β′の値に関係なく、γ=-βとなり、γ′=α′+1となる。ただし、α′=255のときは、γ=-β+1,γ′=0となる。また、その差(infCγ+γ′-(supCα′+supCβ+β′))を評価することにより、α′,β′,γ,γ′,及び、差分の桁数の表が作成される。
(4)βが-33以下の場合、(3)と同様に、β′の値に関係なく、γ=-βとなり、γ′=α′+1となる。ただし、α′=255のときは、γ=-β+1,γ′=0となる。その差(infCγ+γ′-(supCα′+supCβ+β′))を評価することにより、α′,β′,γ,γ′,及び、差分の桁数の表が作成される。なお、差分の桁数は、9以下である。
(5)β=0,α′=β′の場合、差分の桁数は65535とする。これは符号なし単精度整数の最大値である。この場合、配列aのトリム処理は行わない。
図27は、拡張桁数足し算表の一例を示す図である。図27に示す表は、β=0のときの、α′,β′の値に対する拡張桁数(γ+γ′)、及びオフセット値を示している。4番目の列について、22/256+20≦21+2/256となる最小の拡張桁数(γ+γ′)であるか否かを検証する。左辺及び右辺の計算結果は、下記の通りである。
22/256+20=2.0054299011…
21+2/256=2.010859802…
22/256+20=2.0054299011…
21+2/256=2.010859802…
また、21+1/256=2.005422550…であるから、21+2/256が最小の値である。
また、差分(21+2/256-(22/256+20))は、0.0054299009…である。この値に256を掛けると1.3900546304となる。これは、差分の値を8ビット左に移動すると、先頭の位置がγの位置になることを示している。そのため、γから8ビット右に移動し、差分の桁数9未満を0にする。
[掛け算]
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。C=2である。ha+ha′,hb+hb′はそれぞれ|a1|≦2ha+ha′,|b1|≦2hb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれha′/256,hb′/256である小数桁数を示す。ea+ea′,eb+eb′は拡張桁数である拡張絶対有効桁数を示し、ea,ebは整数である絶対有効桁数を示し、ea′,eb′はそれぞれea′/256,eb′/256の小数である小数桁数を示す。
A×Bは、下記式(31)で表される。
以下、ha,ha′,hb,hb′をそれぞれma,ma′,mb,mb′と表記して説明する。
(1)A>0,B>0である場合、a1≦Cma+ma′,b1≦Cmb+mb′であり、下記式(32)~(34)を満たす。
式(32)~(34)を整理すると、下記式(35)~(37)で表される。
下記式(38)とすると、式(31)は下記式(39)で表され、式(40)を満たす拡張桁数を求めればよい。
この拡張桁数を求めるには、下記式(41)を満たす最小の拡張桁数を求めればよい。
また、実数Bの不確定数b2が0の場合、式(38)は下記式(42)となる。
実数A,Bの両方の不確定数が0の場合、γ→-∞となり、絶対有効桁数eの値は-32768(0b1000000000000000)となる。実数A,Bのどちらか一方の不確定数が0のときは、下位桁のトリム処理は行わない。
(2)A>0,B<0である場合、a1≦Cma+ma′,-b1≦Cmb+mb′であり、下記式(43)~(45)を満たす。
式(43)~(45)を整理すると、下記式(46)~(48)で表される。
下記式(49)とすると、式(31)は下記式(50)で表され、式(51)を満たす拡張桁数を求めればよい。
不確定数が0のときの扱いは、(1)A>0,B>0のケースと同じである。
(3)A<0,B>0である場合、-a1≦Cma+ma′,b1≦Cmb+mb′であり、下記式(52)~(54)を満たす。
式(52)~(54)を整理すると、下記式(55)~(57)で表される。
下記式(58)とすると、式(31)は下記式(59)で表され、式(60)を満たす拡張桁数を求めればよい。
不確定数が0のときの扱いは、(1)A>0,B>0のケースと同じである。
(4)A<0,B<0である場合、-a1≦Cma+ma′,-b1≦Cmb+mb′であり、下記式(61)~(63)を満たす。
式(61)~(63)を整理すると、下記式(64)~(66)で表される。
下記式(67)とすると、式(31)は下記式(68)で表され、式(69)を満たす拡張桁数を求めればよい。
不確定数が0のときの扱いは、(1)A>0,B>0のケースと同じである。
[割り算]
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
実数A及び実数Bをそれぞれ式(11)及び式(12)にて定義される高精度コンピュータ数とする。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。C=2である。ha+ha′,hb+hb′はそれぞれ|a1|≦2ha+ha′,|b1|≦2hb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれha′/256,hb′/256である小数桁数を示す。ea+ea′,eb+eb′は拡張桁数である拡張絶対有効桁数を示し、ea,ebは整数である絶対有効桁数を示し、ea′,eb′はそれぞれea′/256,eb′/256の小数である小数桁数を示す。
B/Aでは、拡張最大桁数(ha+ha′,hb+hb′)の代わりに、ha+ha′-1/256,hb+hb′-1/256を用い、下記式(71)及び式(72)にて定義される高精度コンピュータ数とする。
B/Aは、下記式(73)で表される。
式(73)を評価する。
この式(74)は、Cha+ha′-1/256-Cea+ea′が0になることはない想定である。この値が0以下になるということは、Aが0になる可能性があることを意味しているため、割算が成立しない。
式(75)を満たす拡張桁数(Ha+Ha′)を求めると、下記式(76)となる。Ha+Ha′は、Cα′,Cβ+β′に対して、Cα′-Cβ+β′≧Cγ+γ′を満たす最大の拡張桁数(γ+γ′)を出力する拡張桁数引き算表を参照して求めることができる。
次に、b2a1-b1a2をそれぞれの項に分けて評価する。a1>0のとき下記式(77)、a1<0のとき下記式(78)、b1>0のとき下記式(79)、b1<0のとき下記式(80)で表される。
よって、a1>0,b1>0のとき下記式(81)、a1>0,b1<0のとき下記式(82)、a1<0,b1>0のとき下記式(83)、a1<0,b1<0のとき下記式(84)で表される。
式(85)を満たす拡張桁数(Hab+Hab′)を求めると、下記式(86)となる。
よって、式(73)の第2項は下記式(87)で表される。
次に、b1/a1の桁数について説明する。b1/a1の桁数は、不確定部分の計算において、式(85)を満たす拡張桁数(Ha+Ha′)を求めるところの差分に丸め込むことができるので、丸め誤差以上の桁を求めておけばよい。丸め込みについて、下記式(88)~式(90)用いて説明する。
式(90)のようにすると、ε以下の桁は丸めることができる。
次に、不確定数が0のとき、すなわち、ea,ebが-∞のときの処理について説明する。
(1)ea=-∞の場合
前述の式(73)を評価するときの式(74)において、式(75)を満たす拡張桁数(Ha+Ha′)を求めると、下記式(91)となる。
前述の式(73)を評価するときの式(74)において、式(75)を満たす拡張桁数(Ha+Ha′)を求めると、下記式(91)となる。
また、式(85)を満たす拡張桁数(Hab+Hab′)を求めると、下記式(92)となる。
このため、式(88)の不等式は、式(93)であるから、式(94)となる。
(94)式において、(95)式として(96)式とする。そして、Cα+α′とCβ+β′との差を使い、拡張絶対有効桁数のトリム処理を行う。
図28は、高精度コンピュータ数の割り算の確定数(b1/a1)の位置を説明するための図である。ε=Cβ+β′-Cα+α′以下でb1/a1を近似する。εの具体的な値は、infCβ+β-′supCα+α′値として求める。α′≦137の場合、オフセット値は9となり、α′>137の場合、オフセット値は8となる。
eb=-∞の場合は。誤差は0となる。このため、外部から有効桁数の指定が必要である。
(2)ea≠-∞,eb=-∞の場合
式(85)を満たす拡張桁数(Hab+Hab′)を求めると、下記式(97)となる。
式(85)を満たす拡張桁数(Hab+Hab′)を求めると、下記式(97)となる。
このため、式(88)の不等式は、式(98)であるから、式(99)となる。
そして、(1)ea=-∞の場合と同様に、Cα+α′とCβ+β′との差を使い、拡張絶対有効桁数のトリム処理を行う。
[拡張桁数引き算表]
Cα′,Cβ+β′に対して、Cα′-Cβ+β′≧Cγ+γ′を満たす最大の拡張桁数(γ+γ′)を出力する拡張桁数引き算表について説明する。ここで、0≧βであり、α′,β′は、それぞれα′/28,β′/28である。0=βのときは、α′≧β′とする。拡張桁数引き算表を用いることにより、例えば式(75)を満たす拡張桁数(Ha+Ha′)を求める場合、計算を高速化させることができる。
Cα′,Cβ+β′に対して、Cα′-Cβ+β′≧Cγ+γ′を満たす最大の拡張桁数(γ+γ′)を出力する拡張桁数引き算表について説明する。ここで、0≧βであり、α′,β′は、それぞれα′/28,β′/28である。0=βのときは、α′≧β′とする。拡張桁数引き算表を用いることにより、例えば式(75)を満たす拡張桁数(Ha+Ha′)を求める場合、計算を高速化させることができる。
図29は、Cα′=A+B(A:確定数、B:不確定数)としたときのAの32ビット表現の一例である。Bは、-C-31≦B<C-31である。ここで、α′は、α′/28である。そして、Cα′+Cβ+β′の取りうる最小値を含むCγ+γ′の最大の拡張桁数を求める。具体的には、infCα′-supCβ+β′≧supCγ+γ′となるCγ+γ′を求める。また、その差(supCγ+γ′-(infCα′-supCβ+β′))を計算する。
β=0かつα′=β′のときには、Cα′-Cβ+β′≧C-∞である。γの取りうる値は、単精度整数の範囲であり、最も小さい値を-∞として扱う。その値は、2ビット表現で「0b1000000000000000」となる。
図30は、infCα′-supCβ+β′の具体的な計算方法を説明するための図である。infCα′とsupCβ+β′とを32ビットで表し、supCβ+β′の最下位ビットを64ビットの最下位ビットに合わせて、符号なし64ビット整数で計算を行う。この処理であれば64ビットの範囲を超えることはない。infCα′とsupCβ+β′とを64ビットにコピーし、infCα′を-βビット左に移動させる。そして、これらの値の差を計算する。この差の計算において、最初が0ではないビットを求め、そのビットに対してsupCγの最上位ビットの位置を合わせる。
<3.具体例>
以下、高精度コンピュータ数による計算例について説明する。基数は2(C=2)であり、指数部の拡張部(小数部)ha′,hb′,ea′,eb′,r′はそれぞれha′/28(0≦ha′<28),hb′/28(0≦hb′<28),ea′/28(0≦ea′<28),eb′/28(0≦eb′<28),r′/28(0≦r′<28)である。
以下、高精度コンピュータ数による計算例について説明する。基数は2(C=2)であり、指数部の拡張部(小数部)ha′,hb′,ea′,eb′,r′はそれぞれha′/28(0≦ha′<28),hb′/28(0≦hb′<28),ea′/28(0≦ea′<28),eb′/28(0≦eb′<28),r′/28(0≦r′<28)である。
また、計算例では、倍精度浮動小数点表現を高精度コンピュータ数に変換し、高精度コンピュータ数を用いて計算を行った。倍精度浮動小数点表現を高精度コンピュータ数に変換する処理は、倍精度浮動小数点の符号、指数部を調べ、仮数部をコピーすることにより行われる。
図31は、倍精度浮動小数点表現を示す図であり、図32は、10進数の「0.1」を高精度コンピュータ数によりビット表現した一例を示す図である。図32に示す高精度コンピュータ数において、sign(0)は、正の数、An(2)は、32ビットの配列の使用数が「2」であることを示す。h(-4)は、最大桁数が「-4」であることを示し、h′(174)は、最大桁数の拡張部(小数桁数)が「174」であることを示す。l(55)は、配列a[0]の最下位ビットが2進数で-55桁であることを示す。
e(-57)は、有効桁数が2進数で-57まで有効であることを示す。10進数で表すと、log102=0.301029995663981・・・であるから、log102-57=-17.1587097528469281・・・となり、10進数で-17桁まで有効であることを示す(図32の4行目を参照)。
配列a[1],a[0]は、倍精度浮動小数点表現の仮数部(fraction)がそのまま代入される。なお、高精度コンピュータ数では、右詰めである。10進数の「0.1」は、正確な値をコンピュータで表すことはできないため、4行目のような値になっている。
10進数の「0.1」を倍精度浮動小数点表現した仮数部を高精度コンピュータ数の配列に代入すると、下記配列(A)となる。これは、図33に示す高精度コンピュータ数の配列a[1]と配列a[0]とを連結したものである。
0000000000001100110011001100110011001100110011001100110011001101 (A)
先頭の1のビットは、最大桁数hであり、倍精度浮動小数点表現から計算で求めることができる。最大桁数の拡張部(小数桁数)h′は、前述した拡張桁数表を参照して求めることができる。配列(A)の先頭9ビットは「110011001」であり、その後ろの8ビットは「10011001」である。この8ビットを使って、前述した「8ビット-α‘表」を参照することにより、最大桁数の拡張部h′を求めることができる。「10011001」は10進数で153であり、「8ビット-α‘表」の153番目(先頭は0)の数値(174)を読み込む。
先頭の1のビットは、最大桁数hであり、倍精度浮動小数点表現から計算で求めることができる。最大桁数の拡張部(小数桁数)h′は、前述した拡張桁数表を参照して求めることができる。配列(A)の先頭9ビットは「110011001」であり、その後ろの8ビットは「10011001」である。この8ビットを使って、前述した「8ビット-α‘表」を参照することにより、最大桁数の拡張部h′を求めることができる。「10011001」は10進数で153であり、「8ビット-α‘表」の153番目(先頭は0)の数値(174)を読み込む。
2174/256を計算すると、1.601792755682693353793846241591となる。一方、配列(A)の先頭32ビットの値は、3435973836であり、この値を231で割ることにより、先頭の1ビット目を2進数の0桁目とすることができる。この値を求めると、1.59999999962747097015380859375であるため、配列(A)の先頭1の桁を2進数の0桁目とすると、配列(A)は、2174/256で抑えることができることが分かる。配列(A)の先頭は、2進数の桁で-4であるから、0.1≦2-4+174/256を満たすこと分かる。
実際に計算すると下記計算結果となり、2-4+173/256≦0.1≦2-4+174/256であることが分かる。
2-4+174/256=0.10011204723016833461211539009943
2-4+173/256=0.09984134986928919364142626838804
2-4+174/256=0.10011204723016833461211539009943
2-4+173/256=0.09984134986928919364142626838804
[足し算]
図33は、10進数の「1.1」を高精度コンピュータ数によりビット表現した一例を示す図であり、図34は、10進数の「0.1」及び「1.1」を高精度コンピュータ数に変換した後、高精度コンピュータ数を用いて「0.1+1.1」を計算した結果の一例を示す図である。
図33は、10進数の「1.1」を高精度コンピュータ数によりビット表現した一例を示す図であり、図34は、10進数の「0.1」及び「1.1」を高精度コンピュータ数に変換した後、高精度コンピュータ数を用いて「0.1+1.1」を計算した結果の一例を示す図である。
図34に示す高精度コンピュータ数において、h(0),h′(68)は、1.2≦268/256であること示している。実際に計算すると下記計算結果となり、267/256≦0.1≦268/256であることが分かる。
267/256=1.19890616707438048177…
268/256=1.2021567314527031420…
267/256=1.19890616707438048177…
268/256=1.2021567314527031420…
また、計算結果の拡張絶対有効桁数e(-53),e′(23)は、「0.1」の高精度コンピュータ数の拡張絶対有効桁数e(-57),e′(0)と、「1.1」の高精度コンピュータ数の拡張絶対有効桁数e(-53),e′(0)とを使用し、2-53+22/256≦2-57+2-53≦2-53+23/256であることを示している。両辺に253を掛けて、実際に計算すると下記計算結果となり、222/256≦2-4+1≦223/256であることが分かる。
222/256=1.061377227289262…
2-4+1=1.0625
223/256=1.0642549128844645…
222/256=1.061377227289262…
2-4+1=1.0625
223/256=1.0642549128844645…
次に、オフセット値を求める。
0.1=0.100000000 0000000055 5111512312 +α |α|≦2-57
1.1=1.10000000 0000000088 8178419700 +β |β|≦2-53
1.2=1.20000000000000009436895709312 +α+β
0.1=0.100000000 0000000055 5111512312 +α |α|≦2-57
1.1=1.10000000 0000000088 8178419700 +β |β|≦2-53
1.2=1.20000000000000009436895709312 +α+β
ここで、α+β≦2-57+2-53=2-53(2-4+1)であるから、(1+2-4)≦2γ′/256を満たす最小のγ′を求める。(1+2-4)において1=20,2-4=2-4であり、α′=0、β=-4、β′=0であるから、この値から前述した拡張桁数足し算表を参照し、γ′,差分の桁数(オフセット値)を求める。
拡張桁数足し算表の値(γ′=23)を使うと(1+2-4)≦223/256であり、実際に両辺をそれぞれ計算すると下記計算結果となる。
1+2-4=1.0625
223/256=1.0642549128844645497886112570016
1+2-4=1.0625
223/256=1.0642549128844645497886112570016
また、拡張桁数足し算表のオフセット値は10である。差分の計算結果は下記通りである。
223/256-(1+2-4)=0.00175491288446454978861125700158
223/256-(1+2-4)=0.00175491288446454978861125700158
これに210を掛けた計算結果は、下記の通りである。
1.7970307936916989835379271696181
1.7970307936916989835379271696181
2進数で表したときの小数点以下は、「.0000000001********」となり、「1********」以下は切り捨てることができる。これは、2進数で-53桁目から10桁以下を切り捨ててもよいことを示している。これによって最小桁数lは、-55桁となっており、絶対有効桁数e(-53)以下となっている。2進数で-55桁以下がもともと0である。
図35は、10進数の「0.1×1.1」を浮動小数点で計算し、高精度コンピュータ数に変換した結果の一例を示す図である。高精度コンピュータ数に変換して計算した方が、精度が幾分向上していることが分かる。
図36は、10進数の「0.0000001」を高精度コンピュータ数によりビット表現した一例を示す図であり、図37は、10進数の「1.0」を高精度コンピュータ数によりビット表現した一例を示す図である。また、図38は、10進数の「0.0000001」及び「1.0」を高精度コンピュータ数に変換した後、高精度コンピュータ数を用いて「1.0」に「0.0000001」を100回加算した結果の一例を示す図である。絶対有効桁数e(-53)に変化はなく、小数桁数e′のみが100になっていることが分かる。第1の実施の形態のコンピュータ数の繰り返し計算では、一回ごとに絶対有効桁数eの値が3程度増えるため、100回たし算を行うと、有効桁数の意味がなくなっていたが、高精度コンピュータ数により改善することができる。
また、図39は、「1.0」に「0.0000001」を100回加算する計算を浮動小数点で行い、その結果を高精度コンピュータ数に変換した結果の一例を示す図である。有効桁数が10進で15桁になっている。
[掛け算]
図40は、10進数の「0.1」及び「1.1」を高精度コンピュータ数に変換し、高精度コンピュータ数を用いて「0.1×1.1」を計算した結果の一例を示す図である。
図40は、10進数の「0.1」及び「1.1」を高精度コンピュータ数に変換し、高精度コンピュータ数を用いて「0.1×1.1」を計算した結果の一例を示す図である。
図40に示す高精度コンピュータ数において、h(-4),h′(209)は、0.11≦2-4+209/256であること示している。実際に計算すると下記計算結果となり、2-4+208/256≦0.11≦2-4+209/256であることが分かる。
2-4+208/256=0.1097657600233312…
2-4+209/256=0.11006336518984898…
2-4+208/256=0.1097657600233312…
2-4+209/256=0.11006336518984898…
図40に示す高精度コンピュータ数において、e(-56),e′(112)は、257C′≦257(2-56+112/256)あることを示している。また、A,B共に正であるときの式(38)に示すC′の具体的な計算結果は、下記の通りである。
C′=20-57+36/256+0+2-4-53+174/256+0+2-57-53+0+0
C′=2-57+36/256+2-57+174/256+2-110
257C′=236/256+2174/256+2-53
実際に計算すると下記計算結果となり、257(2-56+111/256)≦257C′≦257(2-56+112/256)であることが分かる。また、e(-56),e′(112)は、C′≦Cγ+γ′を満たす最小の拡張桁数であり、拡張有効桁数(e+e′/256)であることが分かる。
257(2-56+112/256)=2.708511093873…
257C′=2.704175338990…
257(2-56+111/256)=2.701187431…
257(2-56+112/256)=2.708511093873…
257C′=2.704175338990…
257(2-56+111/256)=2.701187431…
また、オフセット値は9であるから、最小桁数がl(-63)であり、e(-56)よりも小さくなっている。この桁以下は0が2以上連続しているものと想定される。
図41は、10進数の「0.1×1.1」を浮動小数点で計算し、高精度コンピュータ数に変換した結果の一例を示す図である。高精度コンピュータ数による計算結果は、浮動小数点による計算結果と同様であることが分かる。
図42は、10進数の「0.0000001」を「1.1」に100回かける計算を高精度コンピュータ数で計算した結果の一例を示す図である。図42に示す計算結果と、図33に示す「1.1」の高精度コンピュータ数との、有効桁数を比較する。有効桁数は、logC|確定数|-拡張絶対有効桁数(γ+γ′)≦kとなる最小の整数である。
図33:(0+36/256)-(-53)=53+36/256
図42:(-2326+202/256)-(-2372+1/256)=43+203/256
図33:(0+36/256)-(-53)=53+36/256
図42:(-2326+202/256)-(-2372+1/256)=43+203/256
有効桁数が6+89/256ほど低下しているが、第1の実施形態におけるコンピュータ数と比較して改善されている。
[割り算]
図43は、10進数の「1」及び「3」を高精度コンピュータ数に変換し、高精度コンピュータ数を用いて「1÷3」を計算した結果の一例を示す図である。1と3は不確定数部分がないため(ea=-∞,eb=-∞)、拡張絶対有効桁数を-100に指定した。
図43は、10進数の「1」及び「3」を高精度コンピュータ数に変換し、高精度コンピュータ数を用いて「1÷3」を計算した結果の一例を示す図である。1と3は不確定数部分がないため(ea=-∞,eb=-∞)、拡張絶対有効桁数を-100に指定した。
図44は、分母である10進数の「0.1」を高精度コンピュータ数によりビット表現した一例を示す図であり、図45は、分子である10進数の「1」を高精度コンピュータ数によりビット表現した一例を示す図である。また、図46は、高精度コンピュータ数を用いて「1÷0.1」を計算した結果の一例を示す図である。1は不確定数部分がないため、分子の不確定数が0のケース(ea≠-∞,eb=-∞)で計算を行う。
上記式(75)において、ha+ha′-1/256,ea+ea′を計算すると下記の通りとなる。
ha+ha′-1/256=-4+173/256
ea+ea′=-57
ha+ha′-1/256=-4+173/256
ea+ea′=-57
そして、この数値を用い、前述した拡張桁数引き算表を参照してHa+Ha′を求める。haに対してeaが小さいため、ha+ha′-1/256から1/256を引いた値となる。
Ha+Ha′=-4+172/256
Ha+Ha′=-4+172/256
上記式(99)において、(hb+ea-Ha-ha)+(hb′+ea′-Ha′-ha′+1/256)は、-51+168/256となり、拡張絶対有効桁数e(-51),e′(169)の計算結果となる。オフセット値は8であるため、最小桁数l(-53)に対して拡張絶対有効桁数が大きくなっている。
図47は、分母である10進数の「0.1」を高精度コンピュータ数によりビット表現した一例を示す図であり、図48は、分子である10進数の「0.2」を高精度コンピュータ数によりビット表現した一例を示す図である。また、図49は、高精度コンピュータ数を用いて「0.2÷0.1」を計算した結果の一例を示す図である。分子及び分母の不確定数が0ではないケース(ea≠-∞,eb≠-∞)で計算を行う。
上記式(75)において、ha+ha′-1/256,ea+ea′を計算すると下記の通りとなる。
ha+ha′-1/256=-4+173/256
ea+ea′=-57
ha+ha′-1/256=-4+173/256
ea+ea′=-57
そして、この数値を用い、前述した拡張桁数引き算表を参照してHa+Ha′を求める。haに対してeaが小さいため、ha+ha′-1/256から1/256を引いた値となる。
Ha+Ha′=-4+172/256
Ha+Ha′=-4+172/256
上記式(89)において、指数部の下記2つの値を算出する。
(eb-Ha)+(eb′-Ha′+1/256)=-53+85/256
(hb+ea-Ha-ha)+(hb′+ea′-Ha′-ha′+1/256)=-53+85/256
(eb-Ha)+(eb′-Ha′+1/256)=-53+85/256
(hb+ea-Ha-ha)+(hb′+ea′-Ha′-ha′+1/256)=-53+85/256
これらの2つの値は、差分が存在しないため、オフセット値が∞のときの方法で、計算結果の拡張絶対有効桁数は、-52+85/256に1/256をプラスした値になる(e(-52),e′(86))。
11 入力部、12 格納部、13 演算部、14 制御部、21 CPU、22 GPU、23 ROM、24 RAM、25 操作入力部、26 ストレージ、27 入出力インターフェース、31 入力部、32 格納部、33 演算部、34 制御部、
Claims (10)
- 下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力部と、
前記高精度コンピュータ数を格納する格納部と、
前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算部と
を備える情報処理装置。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′,γ+γ′は拡張桁数である拡張絶対有効桁数を示し、ea,eb,γは整数である絶対有効桁数を示し、ea′,eb′,r′はそれぞれ0≦ea′<1,0≦eb′<1,0≦r′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。 - 前記高精度コンピュータ数の基数Cが、2、8、又は16のいずれかである請求項1記載の情報処理装置。
- 前記小数桁数ha′,hb′,ea′,eb′,r′が、それぞれha′/2n(0≦ha<2n)、hb′/2n(0≦hb′<2n)、ea′/2n(0≦ea′<2n)、eb′/2n(0≦eb′<2n)、r′/2n(0≦r′<2n)、nは自然数で表される請求項2記載の情報処理装置。
- 前記高精度コンピュータ数の基数Cが、2であり、
前記小数桁数のnが、8である請求項3記載の情報処理装置。 - 下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力ステップと、
前記高精度コンピュータ数を格納部に格納する格納ステップと、
前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算ステップと
を有する処理をコンピュータに実行させるプログラム。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′,γ+γ′は拡張桁数である拡張絶対有効桁数を示し、ea,eb,γは整数である絶対有効桁数を示し、ea′,eb′,r′はそれぞれ0≦ea′<1,0≦eb′<1,0≦r′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。 - 請求項8に記載のプログラムを記録した記録媒体。
- 下記式(11)及び式(12)にて実数A及び実数Bがそれぞれ定義された高精度コンピュータ数を入力する入力ステップと、
前記高精度コンピュータ数を格納部に格納する格納ステップと、
前記格納部に格納された高精度コンピュータ数の確定数a1,b1を用いて演算し、下記(13)式を満たすように拡張絶対有効桁数(γ+γ′)を決定し、該演算結果の高精度コンピュータ数を前記格納部に格納する演算ステップと
を有する情報処理方法。
ここで、a1,b1は数値が確定した確定数であり、a2,b2は数値が確定していない不確定数である。Cは基数を示す。ha+ha′,hb+hb′はそれぞれ|a1|≦Cha+ha′,|b1|≦Chb+hb′を満たす最小の拡張桁数である拡張最大桁数を示し、ha,hbは整数である最大桁数を示し、ha′,hb′はそれぞれ0≦ha′<1,0≦hb′<1の小数である小数桁数を示す。ea+ea′,eb+eb′,γ+γ′は拡張桁数である拡張絶対有効桁数を示し、ea,eb,γは整数である絶対有効桁数を示し、ea′,eb′,r′はそれぞれ0≦ea′<1,0≦eb′<1,0≦r′<1の小数である小数桁数を示す。(A,B)は実数A及び実数Bの演算結果であり、(a,b)1は確定数a1,b1の演算結果であり、(a,b)2は不確定数a2,b2の演算結果である。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20891904.3A EP4068080A4 (en) | 2019-11-27 | 2020-06-19 | INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING PROGRAM AND METHOD |
US17/056,367 US11334317B2 (en) | 2019-11-27 | 2020-06-19 | Information processing apparatus, program, and information processing method configured to handle a high-precision computer number |
JP2020542917A JP6810437B1 (ja) | 2019-11-27 | 2020-06-19 | 情報処理装置、プログラム、及び情報処理方法 |
TW109141100A TWI753668B (zh) | 2019-11-27 | 2020-11-24 | 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-214678 | 2019-11-27 | ||
JP2019214678 | 2019-11-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021106253A1 true WO2021106253A1 (ja) | 2021-06-03 |
Family
ID=76130447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/024260 WO2021106253A1 (ja) | 2019-11-27 | 2020-06-19 | 情報処理装置、プログラム、及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2021089737A (ja) |
WO (1) | WO2021106253A1 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004005395A (ja) | 2002-04-16 | 2004-01-08 | Sony Computer Entertainment Inc | 演算処理装置、半導体デバイス |
JP2006323710A (ja) * | 2005-05-20 | 2006-11-30 | Renesas Technology Corp | データプロセッサ、データ処理方法及び演算制御プログラム |
JP2015232833A (ja) * | 2014-06-10 | 2015-12-24 | 本田技研工業株式会社 | 浮動小数点演算装置、プログラム、及び演算装置 |
JP2017538197A (ja) * | 2014-11-03 | 2017-12-21 | エイアールエム リミテッド | 有効度整合 |
JP2019214678A (ja) | 2018-06-13 | 2019-12-19 | 上野製薬株式会社 | ポリプロピレン樹脂組成物 |
-
2020
- 2020-06-19 WO PCT/JP2020/024260 patent/WO2021106253A1/ja unknown
- 2020-12-03 JP JP2020201317A patent/JP2021089737A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004005395A (ja) | 2002-04-16 | 2004-01-08 | Sony Computer Entertainment Inc | 演算処理装置、半導体デバイス |
JP2006323710A (ja) * | 2005-05-20 | 2006-11-30 | Renesas Technology Corp | データプロセッサ、データ処理方法及び演算制御プログラム |
JP2015232833A (ja) * | 2014-06-10 | 2015-12-24 | 本田技研工業株式会社 | 浮動小数点演算装置、プログラム、及び演算装置 |
JP2017538197A (ja) * | 2014-11-03 | 2017-12-21 | エイアールエム リミテッド | 有効度整合 |
JP2019214678A (ja) | 2018-06-13 | 2019-12-19 | 上野製薬株式会社 | ポリプロピレン樹脂組成物 |
Also Published As
Publication number | Publication date |
---|---|
JP2021089737A (ja) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077415B (zh) | 用于执行转换运算的装置和方法 | |
Schulte et al. | Approximating elementary functions with symmetric bipartite tables | |
Ackleh et al. | Classical and modern numerical analysis: Theory, methods and practice | |
US10019231B2 (en) | Apparatus and method for fixed point to floating point conversion and negative power of two detector | |
JPH07182143A (ja) | コンピュータにおいて除算および平方根計算を実施するための方法および装置 | |
JP7096828B2 (ja) | 入力オペランド値を処理するための装置及び方法 | |
US5463574A (en) | Apparatus for argument reduction in exponential computations of IEEE standard floating-point numbers | |
EP3769208B1 (en) | Stochastic rounding logic | |
Lim et al. | One polynomial approximation to produce correctly rounded results of an elementary function for multiple representations and rounding modes | |
WO2021106253A1 (ja) | 情報処理装置、プログラム、及び情報処理方法 | |
JP6810437B1 (ja) | 情報処理装置、プログラム、及び情報処理方法 | |
Matoussi et al. | Error analysis of the square root operation for the purpose of precision tuning: A case study on k-means | |
Chung | Provably correct posit arithmetic with fixed-point big integer | |
Gil et al. | On the computation and inversion of the cumulative noncentral beta distribution function | |
US10915385B2 (en) | Residue prediction of packed data | |
US20050289208A1 (en) | Methods and apparatus for determining quotients | |
Ruiz et al. | Algebraic circuits | |
US20140164463A1 (en) | Exponent flow checking | |
Graillat et al. | Numerical validation in quadruple precision using stochastic arithmetic | |
Rump | IEEE-754 precision-p base-β arithmetic implemented in binary | |
Bruguera | Radix-64 floating-point division and square root: Iterative and pipelined units | |
JP3541086B2 (ja) | 除算結果、及び開平算結果に正確な丸め処理を行う方法、及び装置 | |
Lefevre | The generic multiple-precision floating-point addition with exact rounding (as in the MPFR library) | |
JP2005208327A (ja) | 剰余装置、剰余方法、プログラム及び記録媒体 | |
Khoury et al. | Numerical Representation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2020542917 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20891904 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2020891904 Country of ref document: EP Effective date: 20220627 |