åã ã¡ãããªãã®äŸ¿å®ã®ããã«ãèšäºã¯ãããªãã¬ãŒã³ããŒã·ã§ã³åœ¢åŒïŒçŽ34åïŒã§ãå©çšã§ããŸãããã®åœ¢åŒã¯ããã¬ãŒã³ããŒã·ã§ã³ã«å€ãã®èª¬æè³æããããããé ã®äžã§å¿ èŠãªæ°åŠçç»åãäœæããã®ãé£ããèªè ã«é©ããŠããŸãããããªã®æ å ±ã¯ãèšäºã®å 容ãšå®å šã«åãã§ãããéœåã®è¯ããšãã«è¡åããŠãã ããã
ããã¯ç§åŠçãªãã®ã§ã¯ãªãã人æ°ã®ããç§åŠçãªèšäºã§ããããšãç¹°ãè¿ããŸãããããèªãã åŸãç°¡åã«ãããç¥ãããšãã§ããŸãã
- æµ®åå°æ°ç¹æŒç®ã§æ©èœããè¶ è¶çãªåºæ¬é¢æ°ïŒexpãsinãlogãcoshãªã©ïŒã¯æ£ããäžžãããããæåŸã®ãããã§ãšã©ãŒãçºçããããšããããŸãã
- ãšã©ãŒã®çç±ã¯ãå¿ ãããéçºè ã®æ æ°ãè³æ Œã®äœãã«ãããšã¯éããŸããããçŸä»£ç§åŠããŸã å æã§ããŠããªã1ã€ã®åºæ¬çãªç¶æ³ã«ãããŸãã
- «», - .
- , , , , exp2(x) pow(2.0, x).
ãã®èšäºãç解ããã«ã¯ãIEEE-754ãããŒãã£ã³ã°ãã€ã³ã圢åŒã«ç²ŸéããŠããå¿ èŠããããŸããããšãã°ãããã次ã®ãšããã§ããããšãå°ãªããšãç解ããŠããã°ååã§ãã0x400921FB54442D18-2å粟床圢åŒïŒbinary64ããŸãã¯doubleïŒã®æ°å€piãã€ãŸãããã®ã¬ã³ãŒãã®æå³ãç解ããŠããã ãã§ããç§ã¯ãã®ãããªå€æããã®å Žã§è¡ãããšãã§ããããšãèŠæ±ããŸããããããŠããã®èšäºã®äžžãã¢ãŒãã«ã€ããŠæãåºãããŸããããã¯ã¹ããŒãªãŒã®éèŠãªéšåã§ãã西æŽã®æåŠããã®çšèªãåŒçšãããã®ã§ããããã°ã©ããŒãã®è±èªãç¥ã£ãŠããããšãæãŸããã§ãããããªãã¯ãªã³ã©ã€ã³ç¿»èš³è ãšäžç·ã«ãã£ãŠããããšãã§ããŸãã
æåã«äŸãæããŠãäŒè©±ã®äž»é¡ãäœã§ããããããã«ç解ã§ããããã«ããŸããããã§ã³ãŒããC ++ã§ç€ºããŸããããããããªãã®èšèªã§ãªãå Žåã§ããæžãããŠããããšãç°¡åã«ç解ã§ãããšç¢ºä¿¡ããŠããŸãããã®ã³ãŒããèŠãŠãã ããïŒ
#include <stdio.h>
#include <cmath>
int main() {
float x = 0.00296957581304013729095458984375f; // , .
float z;
z = exp2f(x); // z = 2**x .
printf ("%.8f\n", z); // 8 .
z = powf(2.0f, x); // z = 2**x
printf ("%.8f\n", z); // .
return 0;
}
æ°å€xã¯ãfloatã¿ã€ãã§æ£ç¢ºã«è¡šçŸã§ããããã«ãã€ãŸããã³ã³ãã€ã©ãŒãäžžããã«ãã€ããªã³ãŒãã«å€æããããã«ãæå³çã«ãã®ãããªæå¹æ¡æ°ã§èšè¿°ãããŠããŸããçµå±ã®ãšãããäžéšã®ã³ã³ãã€ã©ã¯ãšã©ãŒãªãã§äžžããããšãã§ããªãããšãããç¥ã£ãŠããŸãïŒããããªãå Žåã¯ãã³ã¡ã³ãã§ç€ºããŠãã ãããäŸãå«ãå¥ã®èšäºãäœæããŸãïŒã次ã«ããã°ã©ã ã§2xãèšç®ããå¿ èŠããããŸããã2ã€ã®æ¹æ³ã§èšç®ããŸããããé¢æ°exp2fïŒxïŒãšã2ã€ã®powfïŒ2.0fãxïŒã®æ瀺çãªææ°ã§ãããã¡ãããçµæã¯ç°ãªããŸããããã¯ãåºæ¬æ©èœããã¹ãŠã®å Žåã«æ£ããæ©èœãããšã¯éããªãããšãåè¿°ãããããããã瀺ãããã«ç¹å¥ã«äŸãéžæããŸãããåºåã¯æ¬¡ã®ãšããã§ãã
1.00206053
1.00206041
Microsoft C ++ïŒ19.00.23026ïŒãIntel C ++ 15.0ãGCCïŒ6.3.0ïŒãClangïŒ3.7.0ïŒã®4ã€ã®ã³ã³ãã€ã©ãŒãããããã®å€ãåŸãããŸããããããã¯1ã€ã®æäžäœããããç°ãªããŸãããããã®æ°å€ã®16é²ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
0x3F804385 //
0x3F804384 //
ãã®äŸãèŠããŠãããŠãã ãããå°ãåŸã§åé¡ã®æ¬è³ªãèŠãŠãããŸãããä»ã®ãšãããããæ確ãªå°è±¡ãåŸãããã«ãä»ã®ããã€ãã®åºæ¬é¢æ°ã䜿çšããå粟床ããŒã¿ã¿ã€ãïŒdoubleãbinary64ïŒã®äŸãåç §ããŠãã ãããçµæãè¡šã«ç€ºããŸããæ£è§£ïŒå©çšå¯èœãªå ŽåïŒã®æåŸã«*ãä»ããŠããŸãã
é¢æ° | åŒæ° | MS C ++ | Intel C ++ | Gcc | ã¯ã©ã³ |
---|---|---|---|---|---|
log10ïŒxïŒ | 2.60575359533670695e129 | 0x40602D4F53729E44 | 0x40602D4F53729E45 * | 0x40602D4F53729E44 | 0x40602D4F53729E44 |
expm1ïŒxïŒ | -1.31267823646623444e-7 | 0xBE819E53E96DFFA9 * | 0xBE819E53E96DFFA8 | 0xBE819E53E96DFFA8 | 0xBE819E53E96DFFA8 |
ããŠïŒ10.0ãxïŒ | 3.326929759608827789e-15 | 0x3FF0000000000022 | 0x3FF0000000000022 | 0x3FF0000000000022 | 0x3FF0000000000022 |
logp1ïŒxïŒ | -1.3969831951387235e-9 | 0xBE17FFFF4017FCFF * | 0xBE17FFFF4017FCFE | 0xBE17FFFF4017FCFE | 0xBE17FFFF4017FCFE |
ç§ããããšèŠã€ããããªããããªå®å šã«ãŠããŒã¯ãªãã¹ããè¡ã£ããšããå°è±¡ãåããªãã§ãã ããããããããªããfloatããŒã¿ã¿ã€ãã®2xé¢æ°ã®ãã¹ãŠã®å¯èœãªåæ°åŒæ°ã®å®å šãªåæãã²ããŸãããŠã¿ãŸããããä»ã®åŒæ°ã¯ææ°ãã£ãŒã«ãã®å€ã®ã¿ãç°ãªããé¢å¿ã®ãªãçµæãããããããã0ãã1ã®éã®xã®å€ã®ã¿ã«é¢å¿ãããããšã¯æããã§ããããªãèªèº«ãç解ããŠããŸãïŒ
ãã®ãããªããã°ã©ã ãæžããåŸïŒé衚瀺ã®ããã¹ãã¯ä»¥äžã«ãããŸãïŒãexp2fé¢æ°ãšã0ãã1ãŸã§ã®ééxã§çæããã誀ã£ãå€ã®æ°ã確èªããŸããã
MS C ++ | Intel C ++ | Gcc | ã¯ã©ã³ |
---|---|---|---|
1,910,726ïŒ0.97ïŒ ïŒ | 90231ïŒ0.05ïŒ ïŒ | 0 | 0 |
以äžã®ããã°ã©ã ããããã¹ããããåŒæ°xã®æ°ã197612997ã§ãã£ãããšãæããã§ããããšãã°ãMicrosoft C ++ã¯ããããã®ã»ãŒ1ããŒã»ã³ãã«ã€ããŠ2xé¢æ°ã誀ã£ãŠèšç®ããŠããããšãããããŸãããGCCãšClangã®ãã¡ã³ã®çãããåã°ãªãã§ãã ããããã®é¢æ°ããããã®ã³ã³ãã€ã©ã§æ£ããå®è£ ãããŠããã ãã§ãããä»ã®ã³ã³ãã€ã©ã§ã¯ãšã©ãŒããã£ã±ãã§ãã
ãã«ãŒããã©ãŒã¹ã³ãŒã
#include <stdio.h>
#include <cmath>
// float double
#define FAU(x) (*(unsigned int*)(&x))
#define DAU(x) (*(unsigned long long*)(&x))
// 2**x 0<=x<=1.
// , , ,
// 10- .
// double ( ).
// FMA-,
// , , ... .
float __fastcall pow2_minimax_poly_double (float x) {
double a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
DAU(a0) = 0x3ff0000000000001;
DAU(a1) = 0x3fe62e42fefa3763;
DAU(a2) = 0x3fcebfbdff845acb;
DAU(a3) = 0x3fac6b08d6a26a5b;
DAU(a4) = 0x3f83b2ab7bece641;
DAU(a5) = 0x3f55d87e23a1a122;
DAU(a6) = 0x3f2430b9e07cb06c;
DAU(a7) = 0x3eeff80ef154bd8b;
DAU(a8) = 0x3eb65836e5af42ac;
DAU(a9) = 0x3e7952f0d1e6fd6b;
DAU(a10)= 0x3e457d3d6f4e540e;
return (float)(a0+(a1+(a2+(a3+(a4+(a5+(a6+(a7+(a8+(a9+a10*x)*x)*x)*x)*x)*x)*x)*x)*x)*x);
}
int main() {
unsigned int n = 0; // .
// x (0,1)
// : 0x33B8AA3B = 0.00000008599132428344091749750077724456787109375
// , 2**x > 1.0f
// : 0x3F800000 = 1.0 .
for (unsigned int a=0x33B8AA3B; a<0x3F800000; ++a) {
float x;
FAU(x) = a;
float z1 = exp2f (x); // .
float z2 = pow2_minimax_poly_double (x); // .
if (FAU(z1) != FAU(z2)) { // .
// , ( ).
//fprintf (stderr, "2**(0x%08X) = 0x%08X, but correct is 0x%08X\n", a, FAU(z1), FAU(z2));
++n;
}
}
const unsigned int N = 0x3F800000-0x33B8AA3B; // .
printf ("%u wrong results of %u arguments (%.2lf%%)\n", n, N, (float)n/N*100.0f);
return 0;
}
ç§ã¯ãããã®äŸã§èªè ãéå±ãããŸãããããã§ã®äž»ãªããšã¯ãè¶ è¶é¢æ°ã®ææ°ã®å®è£ ãæåŸã®ãããã誀ã£ãŠäžžããããšãã§ããããŸããŸãªã³ã³ãã€ã©ãããŸããŸãªå Žæã§ééããç¯ãå¯èœæ§ãããããšã瀺ãããšã§ããããã©ããæ£ããæ©èœããŸãããã¡ãªã¿ã«ãIEEE-754æšæºã§ã¯æåŸã®ãããã§ãã®ãšã©ãŒãèš±å¯ãããŠããŸããïŒããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒãããã§ãç§ã«ã¯å¥åŠã«æããŸããããã¯å€§ããªããŒã¿ã¿ã€ãã§ããããããŒãã¯ãã«ãŒããã©ãŒã¹ã§ãã§ãã¯ã§ããŸãããããªã«å€§å€ã§ãããïŒãŸã£ããé£ããããšã§ã¯ãããŸããããããŠç§ã¯ãã§ã«äŸã瀺ããŸããã
ç§ãã¡ã®åæã³ãŒãã«ã¯ãæ£ããèšç®ã®ãèªå·±èšè¿°ãé¢æ°ãå«ãŸããŠããŸã2 x10次ââã®è¿äŒŒå€é åŒã䜿çšãããã®ãããªå€é åŒã¯ãããšãã°Mapleã³ã³ãã¥ãŒã¿ä»£æ°ã·ã¹ãã ã§èªåçã«å°åºããããããæ°åã§èšè¿°ãããŸãããå€é åŒã®æ¡ä»¶ãèšå®ããŠ54ãããã®ç²ŸåºŠãæäŸããã ãã§ååã§ãïŒãã®é¢æ°ã®å Žåã2 xïŒããªã54ïŒããããåé¡ã®æ¬è³ªã説æããçè«çã«ã¯ãã®åé¡ãæ»æããè©Šã¿ã¯ãã§ã«è¡ãããŠããŸãããååãšããŠã4å粟床ã®ããŒã¿ã¿ã€ãïŒbinary128ïŒã«å¯ŸããŠé«éã§æ£ç¢ºãªè¶ è¶é¢æ°ãäœæããããšãäžå¯èœã§ããçç±ã説æããçŽåŸã«ããã«ããããŸãã
ããã©ã«ãã®äžžããšãã®åé¡
æ°åŠã©ã€ãã©ãªã®éçºã«æ²¡é ããŠããªãå Žåã¯ãIEEE-754æšæºã«æºæ ããæµ®åå°æ°ç¹æ°ã®ããã©ã«ãã®äžžãèŠåãå¿ããŠãåé¡ã¯ãããŸããããããã£ãŠãç§ã¯ããªãã«ãããæãåºãããŸãããã¹ãŠãããèŠããŠãããªãããšã«ããå°ãªããšããã®ã»ã¯ã·ã§ã³ã®çµãããèŠãŠãã ãããããªãã¯é©ãã«æºã¡ãŠããŸãïŒç§ã¯ããªãã«æ°ãåãäžããããšãéåžžã«é£ãããããããªãç¶æ³ãããªãã«èŠããŸãã
ãåãäžããïŒãã©ã¹ã®ç¡é倧ãžïŒããåãäžããïŒãã€ãã¹ã®ç¡é倧ãžïŒãããŒããžã®äžžãããååã§ç°¡åã«æãåºãããšãã§ããŸãïŒã©ã¡ãããšããã°ããŠã£ãããã£ã¢ããããŸãïŒïŒãããã°ã©ããŒã«ãšã£ãŠã®äž»ãªåé¡ã¯ããæãè¿ããã®ã«äžžããããæãè¿ããã®ããçããè·é¢ã®å ŽåãæåŸã®æ¡ãå¶æ°ã§ãããã®ã«ãäžžããããšã§çºçããŸããã¯ããããã¯ãã®äžžãã¢ãŒããã©ã®ããã«å€æããããã§ããã西æŽã®æç®ã¯èŠããã«ãæãè¿ããã®ãå¶æ°ã«äžžããããšåŒãã§ããŸãã
ãã®äžžãã¢ãŒãã¯ããã©ã«ãã§äœ¿çšããã次ã®ããã«æ©èœããŸããèšç®ã®çµæããã³ãã£ããµã®é·ããçµæã®ããŒã¿ã¿ã€ãã«å¯Ÿå¿ã§ããé·ããããé·ãããšãå€æããå Žåã2ã€ã®å¯èœãªå€ã®æãè¿ãå€ã«äžžããå®è¡ãããŸãããã ããå ã®æ°å€ãæãè¿ã2ã€ã®æ°å€ã®ã¡ããã©äžéã«ããããšãå€æããå ŽåãæåŸã®ãããïŒäžžãåŸïŒãå¶æ°ãã€ãŸããŒãã«çããçµæãéžæãããå ŽåããããŸãããã€ããªå°æ°ç¹ã®åŸã«2ãããã«äžžããå¿ èŠããã4ã€ã®äŸãèããŠã¿ãŸãããã
- 1.00 1 001ãäžžããŸããå°æ°ç¹ä»¥äžã®3çªç®ã®ãããã¯1ã§ãããå¥ã®6çªç®ã®ãããã§ãã1ããããŸããããã¯ãå ã®æ°å€ã1.00ããã1.01ã«è¿ããããäžžããäžããããšãæå³ããŸãã
- 1,001000. , 1,00 1,01, .
- 1,011000. 1,01 1,10. , .
- 1,010111. , 1,01, 1,10.
ãããã®äŸããããã¹ãŠãåçŽã«èŠãããããããŸããããããã§ã¯ãããŸãããå®éã«ã¯ã2ã€ã®å€ã®äžéã«ãããã©ããã確å®ã«å€æã§ããªãå ŽåããããŸããäŸãåç §ããŠãã ãããæã ã¯åã³å°æ°ç¹ä»¥äž2ãããã«ã©ãŠã³ãããããšãïŒ
1.00 1 0000000000000000000000000000000000001
äžžããæ°1.01ã«ãããããšãã¢ããã§ããããšãä»ãããªãã«ã¯èªæã§ãããã ããå°æ°ç¹ä»¥äž40ãããã®æ°å€ãèŠãŠããŸããã¢ã«ãŽãªãºã ã40ãããã®ç²ŸåºŠãæäŸã§ããã30ãããããéæã§ããªãå Žåã¯ã©ããªããŸããïŒããããããã¯å¥ã®æ°ãäžããã§ãããïŒ
1.00 1 000000000000000000000000000
40çªç®ã®äœçœ®ïŒã¢ã«ãŽãªãºã ã§ã¯èšç®ã§ããŸããïŒã«å€§åãªãã®ãããããšã«æ°ã¥ããã«ããã®æ°å€ãåãæšãŠãŠ1.00ãååŸããŸãããããã¯ééã£ãŠããŸããããªãã¯æåŸã®ããããééã£ãŠåãäžããŸãã-ãããç§ãã¡ã®è°è«ã®äž»é¡ã§ããäžèšã®ããšããã2çªç®ã®ãããã ããæ£ããããããã«ã¯ãæ倧40ãããã®é¢æ°ãèšç®ããå¿ èŠãããããšãããããŸãããããŒïŒãããŠããŒãã®ãæ©é¢è»ããããã«é·ããªãããšãå€æããå Žåã¯ã©ããªããŸããïŒããã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
ã¡ãªã¿ã«ãããã¯å€ãã®ã³ã³ãã€ã©ãæµ®åå°æ°ç¹æ°ã®10é²è¡šèšãçµæã®ãã€ããªåœ¢åŒã«å€æãããšãã«ç¯ãééãã§ããããã°ã©ã ã³ãŒãã®å ã®10é²æ°ããæ£ç¢ºã«è¡šçŸã§ãã2ã€ã®ãã€ããªå€ã®äžéã«è¿ããããšãæ£ããäžžããããŸãããããããããã¯ãã®èšäºã®ãããã¯ã§ã¯ãªããå¥ã®è©±ã®çç±ã§ãã
æåŸã®éèŠãªããããäžžããåé¡ã®æ¬è³ª
ãã®åé¡ã¯2ã€ã®çç±ã§çŸããŸãã1ã€ç®ã¯ãæéã®ãããèšç®ãæå³çã«æåŠããé床ãåªå ããããšã§ãããã®å Žåãæå®ããã粟床ãå®ãããŠããéããå¿çã«ã©ã®ããããå«ãŸãããã¯äºæ¬¡çãªåé¡ã§ãã2çªç®ã®çç±ã¯ãç§ãã¡ã®äŒè©±ã®äž»èŠãªäž»é¡ã§ããããŒãã«ã¡ãŒã«ãŒã®ãžã¬ã³ãã§ããäž¡æ¹ã®çç±ãããã«è©³ããèããŠã¿ãŸãããã
æåã®çç±
ãã¡ãããè¶ è¶é¢æ°ã®èšç®ã¯ãããã€ãã®è¿äŒŒæ¹æ³ãããšãã°ãå€é åŒãè¿äŒŒããæ¹æ³ããŸãã¯ïŒãŸãã«ïŒç³»åå±éã«ãã£ãŠå®è£ ãããããšãç解ããŠããŸããèšç®ãã§ããã ãæ©ãè¡ãããã«ãéçºè ã¯ãã¢ã«ãŽãªãºã ããã³ãã£ããµã®æåŸã®ãããã®å€ã®ååãè¶ ããªããšã©ãŒãèš±å¯ããéããæ°å€ã¡ãœããã®å埩ãã§ããã ãå°ãªãå®è¡ããïŒãŸãã¯å¯èœãªéãæå°ã®å€é åŒãåãïŒããšã«åæããŸããæç®ã§ã¯ãããã¯0.5ulpãšæžãããŠããŸãïŒulp =æåŸã®åäœïŒã
ããšãã°ãééïŒ0.5; 1ïŒå ã®floatåã®æ°xã«ã€ããŠè©±ããŠããå Žåãå€ulp = 2-23ã§ããééïŒ1; 2ïŒã§ulp = 2-22ãèšãæãããšãxãééïŒ0; 1ïŒã«ããå Žåã2 xã¯ééïŒ1,2ïŒã«ããã0.5ulpã®ç²ŸåºŠã確ä¿ããã«ã¯ã倧ãŸãã«èšãã°ãEPS = 2 -23ãéžæããå¿ èŠããããŸãïŒãããã£ãŠãããšã©ãŒããŸãã¯ã粟床ããšåŒã°ããäžè¬ã®äººã ã§ã¯ãå®æ°ãã€ãã·ãã³ãã瀺ããŸããããªãã奜ããªããã«ãæ¬ ç¹ãèŠã€ããªãã§ãã ããïŒã
é©çšãããèšç®ã®å Žåãããã§ååã§ãããæåŸã®ãããã絶察çµæãšäžèŽããªãå¯èœæ§ããããšããäºå®ã¯ãã»ãšãã©ã®ããã°ã©ããŒã«ãšã£ãŠéèŠã§ã¯ãããŸãããããããäœã§ãããã§ã¯ãªãã粟床ãã©ããªãããéèŠã ããã§ãã
ããããªãæ¹ã®ããã«ã10é²æ°å¶ã®äŸããããŸãã 1.999999ãš2.0ã®2ã€ã®æ°å€ããããŸãã 1ã€ç®ã¯ããã°ã©ããŒãåãåã£ããã®ã§ããã2ã€ç®ã¯ç¡éã®å¯èœæ§ããã£ãå Žåã«åŸãããã¹ããã®ã®æšæºã§ãããšããŸãããããããã®éãã¯ããã100äžåã®1ã§ããã€ãŸããåçã¯EPS = 10-6ã§èšç®ãããŸããããã ãããã®åçã«ã¯æ£ããçªå·ã¯1ã€ã§ã¯ãããŸãããæªãã§ããïŒããããã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ã®èŠ³ç¹ããã¯ãããã¯çŽ«è²ã§ããããã°ã©ããŒã¯çããå°æ°ç¹ä»¥äž2æ¡ã«åãäžããŠã2.00ïŒããšãã°ãé貚ã«ã€ããŠã®$ 2.00ïŒãååŸããŸãããã以äžã¯å¿ èŠãããŸãããã圌ãç§ã®ããã°ã©ã ã«EPS = 10 -6ãå ¥ããŠãããã§ããŸããããäžéèšç®ã®ãšã©ãŒã®ããŒãžã³ãåããåé¡ãæ£ãã解決ããŸããã
èšãæããã°ãæ··åããªãã§ãã ãããæ£ãããããïŒãŸãã¯æ¡ïŒã®ç²ŸåºŠãšæ°ã¯2ã€ã®ç°ãªããã®ã§ããæ£ç¢ºããå¿ èŠãªäººïŒããã¯ã»ãŒ100ïŒ ã®ããã°ã©ããŒã§ãïŒãè°è«ãããåé¡ã¯ãããã«ã¯ãŸã£ããé¢ä¿ãããŸãããæ£ããäžžããããåç §ã«äžèŽããããã«ãããã·ãŒã±ã³ã¹ãå¿ èŠãšãã人ã¯èª°ã§ããããšãã°ãåºæ¬é¢æ°ã®ã©ã€ãã©ãªã®éçºè ãªã©ããã®åé¡ã«ã€ããŠéåžžã«å¿é ããŠããŸããããã«ãããããããäžè¬çãªéçºã®ããã«ããã«ã€ããŠç¥ã£ãŠããããšã¯èª°ã«ãšã£ãŠãæçšã§ãã
ãããåé¡ã®æåã®æ¹åã§ãã£ãããšãæãåºãããŠãã ãããããã¯æå³çãªè§£æ±ºçã§ãããããçãã®æåŸã®éšåãééã£ãŠããå¯èœæ§ããããŸããäž»ãªããšã¯ã0.5ulpïŒãŸãã¯ãã以äžïŒã®ç²ŸåºŠãç¶æããããšã§ãããããã£ãŠãæ°å€ã¢ã«ãŽãªãºã ã¯ããããéåžžã«é«éã«æ©èœããå Žåã«ã®ã¿ããã®æ¡ä»¶ããã®ã¿éžæãããŸããåæã«ããã®èŠæ Œã§ã¯ãæåŸã®ããããæ£ããäžžããããšãªããåºæ¬é¢æ°ãå®è£ ã§ããŸããç§ã¯[1ãã»ã¯ã·ã§ã³12.1]ïŒè±èªïŒãåŒçšããŸãïŒ
æµ®åå°æ°ç¹æŒç®ã«é¢ããIEEE754æšæºã®1985ããŒãžã§ã³ã§ã¯ãåºæ¬æ©èœã«é¢ããŠäœãæå®ãããŠããŸããã§ãããããã¯ãæ£ããäžžããããé¢æ°ã¯ãå°ãªããšãäžéšã®å ¥ååŒæ°ã«å¯ŸããŠã¯é ããããšé·å¹Žä¿¡ããããŠããããã§ãããã以æ¥ç¶æ³ã¯å€åãã2008幎çã®èŠæ Œã§ã¯ãäžéšã®é¢æ°ãæ£ããäžžããããšãæšå¥šããŠããŸãïŒãã ãå¿ é ã§ã¯ãããŸããïŒã
以äžã¯ãæšå¥šãããŠãããæ£ããäžžããå¿ èŠã®ãªãé¢æ°ã§ãã
2çªç®ã®çç±
æåŸã«ãäŒè©±ã®ãããã¯ã«å°éããŸããïŒããŒãã«ã¡ãŒã«ãŒã®ãžã¬ã³ãïŒTMDãšç¥ãããŸãïŒããã®ååããã·ã¢èªã«é©åã«ç¿»èš³ããããšã¯ã§ããŸããã§ãããããã¯WilliamKahanïŒIEEE-754ã®åµèšè ïŒã«ãã£ãŠèšäº[2]ã§çŽ¹ä»ãããŸãããããããèšäºãèªãã°ããã®ååããŸãã«ããã§ããçç±ãç解ããã§ããããèŠããã«ããžã¬ã³ãã®æ¬è³ªã¯ãå®å šã«èšç®ãããçµæzã®ç¡éãããã¬ã³ãŒããèªç±ã«äœ¿çšã§ãããã®ããã«ãé¢æ°z = fïŒxïŒãå®å šã«æ£ç¢ºã«äžžããå¿ èŠããããšããããšã§ããããããç¡éã®ã·ãŒã±ã³ã¹ãååŸã§ããªãããšã¯èª°ã«ãšã£ãŠãæããã§ããããã§ã¯äœãããããããŸããïŒäžèšã§ã¯ãäžžãåŸã«å°ãªããšã2ã€ã®æ£ããããããååŸããããã«ãçµæã®40ãããã確èªããå¿ èŠãããå Žåã®äŸã瀺ããŸããããããŠãTMDåé¡ã®æ¬è³ªã¯ãäºåã«ããããªããšããããšã§ãããå¿ èŠãªæ°ã®äžžãåŸã«æ£ãããããæ°ãååŸããããã«ãzã®å€ãèšç®ãããããæ°ãŸã§ãçŸãŸãã¯åãããå Žåã¯ã©ããªããŸããïŒäºåã«ã¯ããããŸããïŒ
ããšãã°ãåè¿°ããããã«ãé¢æ°2 xã®å Žåããã³ãã£ããµã®åæ°éšåã23ããããããªãããŒã¿åfloatã®å ŽåãäŸå€ãªããã¹ãŠã®å¯èœãªxåŒæ°ã«å¯ŸããŠæ£ããäžžããè¡ãããããã«ã2-54ã®ç²ŸåºŠã§èšç®ãå®è¡ããå¿ èŠããããŸãã培åºçãªæ€çŽ¢ã§ãã®æšå®å€ãååŸããããšã¯é£ãããããŸããããä»ã®ã»ãšãã©ã®é¢æ°ãç¹ã«ã¿ã€ãdoubleãŸãã¯long doubleïŒãããäœã§ããããç¥ã£ãŠããå Žåã¯ãã¯ã©ã¹ããšå ¥åïŒã®å Žåããã®ãããªæšå®å€ã¯äžæã§ãã
ãªããããèµ·ãã£ãŠããã®ãããã§ã«ç解ããŸãããããã®èšäºã®æåã®äŸãšããŠfloatããŒã¿ã¿ã€ããæå³çã«ç€ºããèŠããŠãããŠããããŸããããã®ã¿ã€ãã§ã¯32ããããããªããããèŠããããªããŸããä»ã®ããŒã¿ã¿ã€ãã§ãç¶æ³ã¯äŒŒãŠããŸãã
æ°å€x = 0.00296957581304013729095458984375ããå§ããŸãããããã¯ãfloatããŒã¿ã¿ã€ãã§æ£ç¢ºã«è¡šçŸã§ããæ°å€ã§ããã€ãŸããäžžããããšãªããã€ããªfloatã·ã¹ãã ã«å€æã§ããããã«èšè¿°ãããŠããŸãã 2 xãèšç®ããç¡éã®ç²ŸåºŠã®èšç®æ©ãããå Žåã¯ã次ã®ããã«ãªããŸãïŒç¢ºèªã§ããããã«ãèšç®ã¯ãªã³ã©ã€ã³ã®WolframAlphaã·ã¹ãã ã§è¡ãããŸãïŒïŒ
1.0020604729652405753669743044108123031635398201893943954577320057 .. ..
ïŒã¬ããã®64ãããã¯ååã§ãããèšãããŠããã€ããªã«ãã®çªå·ãå€æ
1.00000000100001110000100 1 000000000000000000000000000001101111101
äžžããããïŒå°æ°ç¹ä»¥äž24ãããïŒã¯äžç·ãåŒãããŠããŸãã質åïŒã©ããäžžããã®ã§ããïŒäžãäžïŒæããã«ãããªãã¯ååãªããããèŠãŠæ±ºå®ãäžãããšãã§ããã®ã§ããããç¥ã£ãŠããŸãããããã泚ææ·±ãèŠãŠãã ãã...
äžžããããã®åŸã29åã®ãŒãããããŸããããã¯ãæãè¿ã2ã€ã®æ°å€ã®äžéã«éåžžã«è¿ããäžžãã®æ¹åãå€ãããããå°ãäžã«ç§»åããã ãã§ååã§ããããšãæå³ããŸããããããåé¡ã¯ããã®ã·ããã¯ã©ãã«ããã®ããšããããšã§ããæ°å€ã¢ã«ãŽãªãºã ã¯ã段éçã«ãããŸããŸãªåŽé¢ããæ£ç¢ºãªå€ã«è¿ã¥ãããšãã§ããŸãããããã®29åã®ãŒãããã¹ãŠééãããã®ãæ©é¢è»ãã®æåŸã®ãŒãã®å€ãè¶ ãã粟床ã«éãããŸã§ãäžžãã®æ¹åã¯ããããŸããã ..ãå®éãæ£è§£ã次ã®ããã«ãªã£ãŠããå Žåã¯ã©ããªããŸããïŒ
1.00000000100001110000100 0 11111111111111111111111111111ïŒ
ãã®åŸãäžžããããŠã³ããŸãã
粟床ãå°æ°ç¹ä»¥äž54ãããã«éãããŸã§ããã¯ããããŸããã 54çªç®ã®ããããæ£ç¢ºã«ããã£ãŠããå Žåã2ã€ã®æãè¿ãæ°å€ã®ã©ã¡ããå®éã«è¿ãããæ£ç¢ºã«ç¥ãããšãã§ããŸãããã®ãããªçªå·ãåŒã³åºãããæãå°é£ãªããŒäžžç¹[1ãã»ã¯ã·ã§ã³12.3ïŒäžžãã®ããã®éèŠãªç¹ïŒãåã³æ°54ãåŒã³åºããã硬床察ã©ãŠã³ããããã³åŒçšããæžç±ã®æåMã§ç€ºãããŠããŸãã
äžžãã®è€éãïŒmïŒã¯ãç¹å®ã®é¢æ°fïŒxïŒã®ãã¹ãŠã®åŒæ°ã«ã€ããŠãããã³äºåã«éžæãããç¯å²ã«ã€ããŠãé¢æ°fïŒxïŒãæåŸã®ãããã«æ£ããäžžããããããã«ããããã«å¿ èŠãªæå°ãããæ°ã§ãïŒäžžãã¢ãŒããç°ãªããšãç°ãªãå ŽåããããŸãïŒå€mïŒãèšãæãããšãããŒã¿åfloatã®å Žåãããã³äžžãã¢ãŒãã®ç¯å²ïŒ0; 1ïŒãããæãè¿ãå¶æ°ãã®äžžãæém = 54ãŸã§ã®åŒæ°xã®å Žåãããã¯ãééïŒ0; 1ïŒããã®çµ¶å¯Ÿã«ãã¹ãŠã®xã«ã€ããŠãåã粟床ã®ESP = 2 -54ãã¢ã«ãŽãªãºã ã«å ¥ããããšãã§ãããã¹ãŠã®çµæã2é²å°æ°ç¹ä»¥äž23ãããã«æ£ããäžžããããããšãæå³ããŸãã
å®éãäžéšã®ã¢ã«ãŽãªãºã ã¯æ£ç¢ºãªçµæãæäŸã§ãã53ãããããã³52ãããã«åºã¥ããŠããã«ãŒããã©ãŒã¹ãããã瀺ããŸãããçè«çã«ã¯æ£ç¢ºã«54ãå¿ èŠã§ãããã«ãŒããã©ãŒã¹ãã¯ã©ã³ã¯ã¢ãŠãããå¯èœæ§ããªããã°ããããŒããããããšã¯ã§ããŸãããäžèšã®ãã«ãŒããã©ãŒã¹ããã°ã©ã ã§è¡ã£ãããã«ã2ã3ãããç¯çŽããŸããå¿ èŠä»¥äžã«äœã次æ°ã®å€é åŒãåããŸããããéãè¯ãã£ããšããçç±ã ãã§ãããã§ãæ©èœããŸãã
ãããã£ãŠãäžžãã¢ãŒãã«é¢ä¿ãªãã2ã€ã®ç¶æ³ãèããããŸããäžžãé åã§ãŒãã®ãèžæ°æ©é¢è»ããçºçãããã1ã®ãèžæ°æ©é¢è»ããçºçããŸããè¶ è¶é¢æ°fïŒxïŒãèšç®ããããã®æ£ããã¢ã«ãŽãªãºã ã®ã¿ã¹ã¯ã¯ã粟床ããã®ãèžæ°æ©é¢è»ãã®æåŸã®ãããã®å€ãè¶ ãããŸã§ããããŠfãèšç®ããããã®æ°å€ã¢ã«ãŽãªãºã ã®ãã®åŸã®å€åã®çµæãšããŠæ£ç¢ºã«æããã«ãªããŸã§ããã®é¢æ°ã®å€ãæ¹è¯ããããšã§ãã ïŒxïŒãŒãã¯1ã«ãªããŸããããŸãã¯ãã®éã§ãããã¹ãŠãå®å®ããã¢ã«ãŽãªãºã ããèžæ°æ©é¢è»ãã®éçãè¶ ãã粟床ã«éãããšããã«ããããæ°ãç¡éã§ãããã®ããã«äžžããããšãã§ããŸãããããŠããã®äžžãã¯æ£ããæåŸã®ãããã§è¡ãããŸããããããããã¯ã©ã®ããã«éæã§ããŸããïŒ
ãã¯ã©ããã
åè¿°ã®ããã«ãäž»ãªåé¡ã¯ãäžžããããã®çŽåŸã«æ¥ã0ãŸãã¯1ã®æ©é¢è»ãå æããããã®ã¢ã«ãŽãªãºã ãååŸããããšã§ããæ©é¢è»ãå æãããå šäœãšããŠèŠããšãããã¯ããããã®0ãŸãã¯1ããã§ã«æ£ç¢ºã«èšç®ãããŠãããäžžããã©ã®æ¹åã§çºçããããæ£ç¢ºã«ç¥ã£ãŠãããšããäºå®ãšåçã§ããããããæ©é¢è»ã®é·ããããããªãå Žåãã©ã®ããã«ã¢ã«ãŽãªãºã ãèšèšã§ããŸããïŒ
æåã®ãã¯ã©ããã
çãã¯æçœã§ããããã«èªè ã«ã¯æããããããããŸãããç¡éã®ç²ŸåºŠã§ç®è¡ãåããæå³çã«éå°ãªãããæ°ãå ¥ãããããååã§ãªãå Žåã¯ãå¥ã®ããããå ¥ããŠåèšç®ããŸããäžè¬çã«ãããã¯æ£ããã§ããããã¯ãã³ã³ãã¥ãŒã¿ãŒã®é床ãšãªãœãŒã¹ãç¹å¥ãªåœ¹å²ãæãããªãå Žåã«è¡ãããŸãããã®ã¢ãããŒãã«ã¯ååããããŸãïŒZivã®ãã«ãã¬ãã«æŠç¥[1ãã»ã¯ã·ã§ã³12.3]ããã®æ¬è³ªã¯éåžžã«åçŽã§ããã¢ã«ãŽãªãºã ã¯ãããã€ãã®ã¬ãã«ã§ã®èšç®ããµããŒãããå¿ èŠããããŸããè¿ éãªäºåèšç®ïŒã»ãšãã©ã®å Žåãæçµçãªãã®ã§ããããšãå€æïŒãäœéã§ããããæ£ç¢ºãªèšç®ïŒæãéèŠãªå Žåã«ä¿åïŒãããã«äœéã§ãããããã«æ£ç¢ºãªèšç®ïŒçµ¶å¯Ÿã«ãæªãå ŽåãïŒ ãããªããã°ãªããªãã£ãïŒãªã©ã
å§åçå€æ°ã®å Žåã0.5ulpããå°ãé«ã粟床ã§ååã§ããããæ©é¢è»ããåºãŠãããäžããŸãã ãèžæ°æ©é¢è»ããæ®ã£ãŠããéããæ°å€æ³ã®ãããªãå€åããã®ãèžæ°æ©é¢è»ãã«åœ±é¿ãäžããªãããšãå³å¯ã«æããã«ãªããŸã§ã粟床ãäžããŸãããããã£ãŠãããšãã°ããã®å ŽåãESP = 2 -54ã«éããå Žåã54çªç®ã®äœçœ®ã«ãŠãããã衚瀺ãããŸããããã¯ãããã°ãæ©é¢è»ããŒããããä¿è·ããã2-53以äžã®å€ã®æžç®ãçºçããªãããšãä¿èšŒããŸãããŒãã¯1ã«ãªãããäžžããããããŒãã«ãã©ãã°ããŸãã
ããã¯äººæ°ã®ããç§åŠãã¬ãŒã³ããŒã·ã§ã³ã§ãããZivã®äžžããã¹ããšåãã§ãããã®ãã¹ãã§ã¯ã[1ã第12ç« ]ããŸãã¯[3ãã»ã¯ã·ã§ã³]ã§ãå¿ èŠãªç²ŸåºŠãéæãããã©ããã1ã€ã®ã¹ãããã§ç¢ºèªããé床ã瀺ãããŠããŸãã 10.5]ã
ãã®ã¢ãããŒãã®åé¡ã¯æããã§ããåè¶ è¶é¢æ°fïŒxïŒãèšç®ããããã®ã¢ã«ãŽãªãºã ãèšèšããå¿ èŠããããŸããããã«ãããããŒã¹ã®éçšã§èšç®ã®ç²ŸåºŠãé«ããããšãã§ããŸãããœãããŠã§ã¢ã®å®è£ ã®å Žåãããã¯ãŸã ããã»ã©æããã®ã§ã¯ãããŸãããããšãã°ããã¥ãŒãã³ã®æ¹æ³ã§ã¯ã倧ãŸãã«èšãã°ãåå埩ã§å°æ°ç¹ä»¥äžã®æ£ç¢ºãªãããæ°ã2åã«ããããšãã§ããŸãã ãååãã«ãªããŸã§2åã«ããããšãã§ããŸãããããã¯ããªãæéã®ãããããã»ã¹ã§ãããéé¢æ°f -1ãèšç®ããå¿ èŠãããããããã¥ãŒãã³ã®æ¹æ³ãåžžã«æ£åœåããããšã¯éããªãããšãèªããªããã°ãªããŸãããïŒxïŒãå Žåã«ãã£ãŠã¯ãfïŒxïŒèªäœãèšç®ãããããç°¡åã§ã¯ãªãå ŽåããããŸããããŒããŠã§ã¢ã®å®è£ ã§ã¯ããZivaæŠç¥ãã¯å®å šã«äžé©åã§ããããã»ããµã«çµã¿èŸŒãŸããã¢ã«ãŽãªãºã ã¯ããã§ã«äºåèšå®ããããããæ°ã§äžé£ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããŸãããã®æ°ãäºåã«ããããªãå Žåããããå®è£ ããã®ã¯éåžžã«åé¡ããããŸããæ ªåŒãåããŸãïŒãããïŒ
åé¡ã解決ããããã®ç¢ºçè«çã¢ãããŒã[1ãã»ã¯ã·ã§ã³12.6]ã«ãããmã®å€ãæšå®ããããšãã§ããŸãïŒããã¯ãããæ°ã§ãããæ£ããäžžãã«ååã§ããããšãå¿ããªãã§ãã ããïŒã確ççãªæå³ã§ã®ãæ©é¢è»ãã®é·ãã¯ãæ°ã®ãã³ãã£ããµã®é·ããããããã«é·ãããšãããããŸãããããã£ãŠãã»ãšãã©ã®å Žåãmã¯ãã³ãã£ããµã®å€ã®2å匷ãåãã ãã§ååã§ããããããŸããªã±ãŒã¹ã§ã®ã¿ãããã«å€ãåãå¿ èŠããããŸããç§ã¯ãã®äœåã®äœè ãåŒçšããŸãïŒãå®éã«ã¯ãmã¯2pãããããã«å€§ãããªããã°ãªããªããïŒåœŒãã¯pãæã£ãŠããŸã-æŽæ°éšåãšäžç·ã«ãã³ãã£ããµã®é·ããã€ãŸããããŒãã®å Žåã¯p = 24ïŒãããã«æ¬æã§ã¯ããã®ãããªæŠç¥ã§ã®ãšã©ãŒã®ç¢ºçã¯ãŒãã«è¿ãããããã§ãæ£ã§ããããšã瀺ãããããã¯å®éšã«ãã£ãŠç¢ºèªãããŠããŸãã
ããã§ããªããmã®å€ãããã«ãšããªããã°ãªããªãå Žåããããææªã®å Žåã¯äºåã«ããã£ãŠããŸãããææªã®å Žåã®çè«çãªæšå®å€ã¯ååšããŸãã[1ãã»ã¯ã·ã§ã³12.7.2]ããããã¯èããããªãæ°çŸäžã®ããããçæããŸããããã¯è¯ããããŸãããããã¯åŒçšãããäœæ¥ããã®è¡šã§ãïŒããã¯-lnïŒ2ïŒããlnïŒ2ïŒãŸã§ã®ééã§ã®é¢æ°expïŒxïŒçšã§ãïŒïŒ
p | m |
---|---|
24ïŒbinary32ïŒ | 1865828 |
53ïŒbinary64ïŒ | 6017142 |
113ïŒbinary128ïŒ | 17570144 |
2çªç®ã®ãã¯ã©ããã
å®éã«ã¯ãmã¯ããã»ã©å€§ããã¯ãããŸããããããŠãææªã®ã±ãŒã¹ã決å®ããããã«ãã培åºçãªäºåèšç®ããšåŒã°ãã2çªç®ã®ãã¯ã©ããããé©çšãããŸããããŒã¿ã¿ã€ãfloatïŒ32ãããïŒã®å Žåãé¢æ°fã«1ã€ã®åŒæ°ïŒxïŒããããšãxã®ãã¹ãŠã®å¯èœãªå€ãç°¡åã«ãå®è¡ãã§ããŸãããã®åé¡ã¯ãè€æ°ã®åŒæ°ïŒpowïŒxãyïŒã®äžã§ïŒãæã€é¢æ°ã§ã®ã¿çºçããŸãããã®ããããã®ãããªããšã¯èããããŸããã§ããã xã®ãã¹ãŠã®å¯èœãªå€ã確èªããåŸãåé¢æ°fïŒxïŒããã³åäžžãã¢ãŒãã®å®æ°mãèšç®ããŸãã次ã«ãããŒããŠã§ã¢ã«å®è£ ããå¿ èŠã®ããèšç®ã¢ã«ãŽãªãºã ã¯ã2- mã®ç²ŸåºŠãæäŸããããã«èšèšãããŠããŸããããããã°ãfïŒxïŒã®äžžãã¯ãã¹ãŠã®å Žåã«æ£ããããšãä¿èšŒãããŸãã
ããã«ã¿ã€ãïŒ64ãããïŒã®å ŽåãåçŽãªåæã¯ã»ãšãã©äžå¯èœã§ãããããã圌ãã¯æŽçããŠããŸãïŒããããã©ã®ããã«ïŒçãã¯[4]ã«ãããŸããããã«ã€ããŠç°¡åã«èª¬æããŸãã
é¢æ°fïŒxïŒã®ãã¡ã€ã³ã¯éåžžã«å°ããªã»ã°ã¡ã³ãã«åå²ãããŠãããããåã»ã°ã¡ã³ãå ã§fïŒxïŒãb-ax圢åŒã®ç·åœ¢é¢æ°ã«çœ®ãæããããšãã§ããŸãïŒãã¡ãããä¿æ°aãšbã¯ã»ã°ã¡ã³ãããšã«ç°ãªããŸãïŒããããã®ã»ã°ã¡ã³ãã®ãµã€ãºã¯åæçã«èšç®ãããããããã®ãããªç·åœ¢é¢æ°ã¯å®éã«ã¯åã»ã°ã¡ã³ãã®å ã®é¢æ°ãšã»ãšãã©åºå¥ã§ããŸããã
次ã«ãã¹ã±ãŒãªã³ã°ãšã·ããã®æäœãè¡ã£ãåŸã次ã®åé¡ãçºçããŸããçŽç·ã®b-axãæŽæ°ç¹ã«ãååã«è¿ã¥ãããããšãã§ããã§ããããã
ã¯ããŸãã¯ãããã®çããåºãã®ã¯æ¯èŒçç°¡åã§ããããšãããããŸããã€ãŸããæœåšçã«å±éºãªãã€ã³ããçŽç·ã«è¿ãå Žåã¯ãã¯ãããååãšããŠãã®ãããªãã€ã³ããçŽç·ã«è¿ã¥ããªãå Žåã¯ãããããã§ãããã®æ¹æ³ã®å©ç¹ã¯ãå®éã«ã¯å§åçå€æ°ã®ã±ãŒã¹ã§ãããããã®åçãåŸããããã£ãã«åŸãããªããã¯ããã®åçããã©ã®ç¹å®ã®ãã€ã³ããéèŠã§ããããå€æããããã«åŸ¹åºçãªæ€çŽ¢ã§ã»ã°ã¡ã³ããééããããšã匷å¶ããããšã§ãã
ããã§ããfïŒxïŒã®åŒæ°ã®ç¹°ãè¿ãã¯äœåºŠãåæžãããdoubleïŒbinary64ïŒãlong doubleïŒ80ãããïŒïŒãªã©ã®æ°å€ã®ãã¬ãŒã¯ãã€ã³ããæ€åºã§ããŸããããã¯ãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒããããŠãã¡ãããããªã«ãŒãã§è¡ãããŸã...ãã€ãã³ã°ããã®èªç±ãªæéã«ããã ããbinary128ããŒã¿ã¿ã€ããã©ããããã¯ãŸã 誰ã«ãããããŸããããã®ãããªæ°ã®ãã³ãã£ããµã®åæ°éšåã¯112ãããã§ããããšãæãåºãããŠãã ããããããã£ãŠããã®äž»é¡ã«é¢ããå€åœã®æç®ã§ã¯ããç§ãã¡ã¯åžæãã...ãïŒãç§ãã¡ã¯åžæãã...ãïŒã§å§ãŸãåå²åŠçãªæšè«ããèŠã€ããããšãã§ããŸããã
æŽæ°ç¹ã®è¿ãã®ç·ã®ééããã°ãã決å®ã§ããæ¹æ³ã®è©³çŽ°ã¯ãããã§ã¯äžé©åã§ããããã»ã¹ãåŠã³ããæ¹ã®ããã«ãç§ã¯çŽç·ãšZã®éã®è·é¢èŠã€ããåé¡ã«åããŠãããæ éã«æ¢ããŠãå§ã2ãèšäºã«ãäŸãã°ã[5]ãæ¹è¯ãããã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŸããããã¯ãæ§ç¯ã®éçšã§ãæ倧ã®å ±éé€æ°ãèŠã€ããããã®æåãªãŠãŒã¯ãªããã®ã¢ã«ãŽãªãºã ã«äŒŒãŠããŸãã [4]ãš[5]ããåãå³ã瀺ããŸãã
ããã¯ãåé¡ã®ãããªãå€æã瀺ããŠããŸããè¶ è¶é¢æ°ããšã«ç°ãªãééã§äžžããææªã®ã±ãŒã¹ãå«ãåºç¯ãªããŒãã«ããããŸãããããã¯[1ã»ã¯ã·ã§ã³12.8.4]ãš[3ãã»ã¯ã·ã§ã³10.5.3.2]ãããã³å¥ã®èšäºãããšãã°[6]ã«ãããŸãã
ãã®ãããªããŒãã«ããã©ã³ãã ãªè¡ãååŸããŠãããã€ãã®äŸã瀺ããŸãããããã¯ãã¹ãŠã®xã«ãšã£ãŠææªã®ã±ãŒã¹ã§ã¯ãªãããšã匷調ããŸãããããäžéšã®ééã§ã®ã¿ã§ããèå³ãããå Žåã¯ãœãŒã¹ãåç §ããŠãã ããã
é¢æ° | ãã | fïŒxïŒïŒããªãã³ã°ïŒ | 53ãããç®ä»¥é |
---|---|---|---|
log2ïŒxïŒ | 1.B4EBE40C95A01P0 | 1.8ADEAC981E00DP-1 | 10 53 1011..ã |
ã³ãã·ã¥ïŒxïŒ | 1.7FFFFFFFFFFF7P-23 | 1.0000000000047P0 | 11 89 0010..ã |
lnïŒ1 + xïŒ | 1.8000000000003P-50 | 1.7FFFFFFFFFFFEP-50 | 10 99 1000..ã |
è¡šã®èªã¿æ¹ã¯ïŒå€xã¯ã16é²æµ®åå°æ°ç¹ã®äºéè¡šèšã§æå®ãããŸããæåã«ãäºæ³ã©ãããå é ã«1ã€ããã次ã«ãã³ãã£ããµã®å°æ°éšåã®52ããããšæåPããããŸãããã®æåã¯ãã2ã®çŽ¯ä¹ãã®åŸã«åºŠãç¶ãããšãæå³ããŸããããšãã°ãP-23ã¯ãæå®ããããã³ãã£ããµã«2-23ãæããå¿ èŠãããããšãæå³ããŸãã
ããã«ãé¢æ°fïŒxïŒãç¡éã®ç²ŸåºŠã§èšç®ãããæåã®53ããããïŒäžžããªãã§ïŒåãåããããšæ³åããŠãã ããã fïŒxïŒåã«ç€ºãããŠããã®ã¯ããããã®53ãããïŒãã®ãã¡ã®1ã€ã¯ã³ã³ããŸã§ïŒã§ããåŸç¶ã®ãããã¯æåŸã®åã«ç€ºãããŠããŸããæåŸã®åã®ãããã·ãŒã±ã³ã¹ã®ã次æ°ãèšå·ã¯ããããã®ç¹°ãè¿ãåæ°ãæå³ããŸããã€ãŸããããšãã°10 531011ã¯ãæåã«1ã«çãããããã次ã«53åã®ãŒãã次ã«1011ã«ãªãããšãæå³ããŸãã次ã«ãçç¥åœ¢ãããã¯ãäžè¬ã«ãæ®ãã®ãããããŸã£ããå¿ èŠãšããªãããšãæå³ããŸãã
ããã«ãããã¯æè¡ã®åé¡ã§ã-å¥ã ã«åãããé¢æ°ã®åééã®ææªã®ã±ãŒã¹ãç¥ã£ãŠããããã®ééã«å¯ŸããŠãææªã®ã±ãŒã¹ãæ£ç¢ºã«ã«ããŒãããããªè¿äŒŒãéžæã§ããŸãããããæ°å¹Žã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã³ã³ãã¥ãŒãã£ã³ã°ã§ãåºæ¬æ©èœã®é«éã§æ£ç¢ºãªããŒããŠã§ã¢å®è£ ãäœæããããšãå¯èœã§ããåé¡ã¯å°ããã§ããå°ãªããšãã³ã³ãã€ã©éçºè ã«ãããã®ããŒãã«ã䜿çšããããã«æããããšã¯æ®ã£ãŠããŸãã
ãªããããå¿ èŠãªã®ã§ããïŒ
çŽ æŽããã質åã§ãïŒçµå±ã®ãšãããããã°ã©ããŒã®ã»ãŒ100ïŒ ã¯ãæ£ããäžžããããæåŸã®ãããå ã§åºæ¬é¢æ°ãç¥ãå¿ èŠããªãïŒå€ãã®å Žåããããã®ååãå¿ èŠãªãïŒãšç¹°ãè¿ã話ããŸãããããªãç§åŠè ã¯ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãé§åããããŒãã«ãã³ã³ãã€ã«ããŠã圹ã«ç«ããªããåé¡ã解決ããã®ã§ããïŒ
ãŸãã課é¡ã¯åºæ¬ã§ããæ£ç¢ºãªäžžãã®ããã«æ£ç¢ºãªäžžããååŸããªãããšã¯ããªãèå³æ·±ãã§ãããååãšããŠããã®èå³æ·±ãåé¡ãã©ã®ããã«è§£æ±ºã§ããããç解ããããã«ããã®è§£æ±ºçãç§ãã¡ã«æããã«ããèšç®æ°åŠã®ç§å¯ã¯äœã§ããïŒãããã®ç§å¯ãä»ã®ã¿ã¹ã¯ã§ã©ã®ããã«äœ¿çšã§ããŸããïŒåºç€ç§åŠ-ãã®ãããªãã®ã§ããäœå幎ãã®éãããçš®ã®ããã³ã»ã³ã¹ããè¡ãããšãã§ããŸãããã®åŸã100幎åŸããã®ããã³ã»ã³ã¹ãã®ãããã§ãä»ã®åéã§ç§åŠçãªé²æ©ãèµ·ãããŸãã
第äºã«ãã³ãŒãã®ç§»æ€æ§ã®åé¡ãé¢æ°ãçµæã®æåŸã®ããããå¿ èŠãªæ¹æ³ã§åŠçã§ããå Žåãããã¯ãç°ãªããã©ãããã©ãŒã ããã³ç°ãªãã³ã³ãã€ã©ãŒã§ããããã«ç°ãªãçµæãåŸãããå¯èœæ§ãããããšãæå³ããŸãïŒæå®ããããšã©ãŒå ã§ãã£ãŠãïŒãããã¯éèŠã§ãªãå ŽåããããŸãããç¹ã«ããã°ã©ã ã«1ã€ã®ãã©ãããã©ãŒã ã«è¡šç€ºããããšã©ãŒãå«ãŸããŠããããçµæã®ããããç°ãªãããã«å¥ã®ãã©ãããã©ãŒã ã«ã¯è¡šç€ºãããªãå Žåã¯ãéèŠãªå ŽåããããŸãããããããªãç§ã¯ããªãã«ç°ãªãããã°ã©ã ã®æ¯ãèãã«é¢é£ããããç¥ãããé çã説æããŠããã®ã§ããïŒããªãã¯ç§ãªãã§ããããã¹ãŠç¥ã£ãŠããŸããã©ã®ããã«ã³ã³ãã€ã«ãããŠããŠãããã¹ãŠã®ãã©ãããã©ãŒã ã§ãŸã£ããåãããã«æ©èœããæ°åŠã·ã¹ãã ãããã°çŽ æŽããããšæããŸãããã®ããã«ããªãã¯æ£ããããå¿ èŠããããŸã æåŸã®ããããäžžããŸãã
ãœãŒã¹ã®ãªã¹ã
[1] Jean-Michel Mullerããåºæ¬é¢æ°ïŒã¢ã«ãŽãªãºã ãšå®è£ ãã2016幎
[2] William Kahanãã察æ°ãååè³¢ããããã2004幎
[3] Jean-Michel Mullerããæµ®åå°æ°ç¹æŒç®ã®ãã³ãããã¯ã ã2018
[4]VincentLefÚvreãJean-Michel Mullerããæ£ããäžžããããè¶ è¶ã«åããŠããIEEE TRANSACTIONS ON COMPUTERSãVOLã47ããããã1998幎11æ11æ¥ãppã1235-1243
[5] VincentLefÚvre ããã»ã°ã¡ã³ããšZãšã®éã®è·é¢ã«æ°ããçµæ2ããæ£ç¢ºãªäžžããžã®é©çšãã³ã³ãã¥ãŒã¿ç®è¡ã«é¢ãã第17åIEEEã·ã³ããžãŠã -Arith'17ã2005幎6æãã±ãŒãã³ãããããµãã¥ãŒã»ããå·ã
ã¢ã¡ãªã«åè¡åœãpp.68-75
[6]VincentLefÚvreãJean-Michel Mullerããå粟床ã§ã®åºæ¬é¢æ°ã®æ£ããäžžãã®ææªã®ã±ãŒã¹ããRapport de rechercheïŒINSTITUT NA TIONAL DE RECHERCHE EN INFORMA TIQUE ET EN AUTOMA TIQUEïŒnË4044-2000幎11æ- 19ããŒãžã