Fortran 95 ¶è´Ö±é»»¥×¥í¥°¥é¥ß¥ó¥°¥ê¥Õ¥¡¥ì¥ó¥¹ ¥Û¡¼¥àÌܼ¡Á°¥Ú¡¼¥¸¤Ø¼¡¥Ú¡¼¥¸¤Øº÷°ú


Âè 2 ¾Ï

f95 ¶è´Ö¥ê¥Õ¥¡¥ì¥ó¥¹

¤³¤Î¾Ï¤Ï¡¢Sun WorkShop 6 ¤Î Fortran 95 ¤Ë¼ÂÁõ¤µ¤ì¤¿ÁȤ߹þ¤ß¤Î INTERVAL ·¿¤Î¹½Ê¸¤È°ÕÌ£ÏÀ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£³ÆÀá¤ÏǤ°Õ¤Î½ç½ø¤ÇÆɤळ¤È¤¬¤Ç¤­¤Þ¤¹¡£

ÊÌÅÓÌÀ¼¨Åª¤Êµ­½Ò¤¬¤Ê¤¤¸Â¤ê¡¢INTERVAL ¥Ç¡¼¥¿·¿¤Ï¾¤ÎÁȤ߹þ¤ß¤Î¿ôÃÍ·¿¤ÈƱ¤¸ÆÃÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¾Ï¤Ç¤Ï REAL ·¿¤ÈINTERVAL ·¿¤ÎÁê°ãÅÀ¤Ë¾ÇÅÀ¤ò¤¢¤Æ¤Þ¤¹¡£

¥³¡¼¥ÉÎã¤ÎÃæ¤Ë¤Ï´°Á´¤Ç¤Ê¤¤¥×¥í¥°¥é¥à¤â¸ºß¤·¤Þ¤¹¡£¤³¤ì¤é¤ÎÎã¤Ï¡¢-xia ¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤¬°ÅÌÛ¤ËÁÛÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£

Fortran ³ÈÄ¥

INTERVAL ¥Ç¡¼¥¿·¿¤Ï Fortran ¤ËÂФ¹¤ëÈóɸ½à¤Î³ÈÄ¥¤Ç¤¹¡£¤·¤«¤·¡¢¼Â¸½²Äǽ¤Ê²Õ½ê¤Ç¤Ï¡¢¼ÂÁõ¹½Ê¸¤È°ÕÌ£ÏÀ¤Ï Fortran ·Á¼°¤Ë½àµò¤·¤Æ¤¤¤Þ¤¹¡£

ʸ»ú¥»¥Ã¥È¤Îɽµ­

Fortran ʸ»ú¥»¥Ã¥È¤Ë¤Ï¡¢¶è´Öʸ»úÄê¿ô¤ò¶èÀڤ뤿¤á¡¢º¸±¦¤Î³Ñ³ç¸Ì¡Ö[...]¡×¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£

¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ÎÁ´ÂΤòÄ̤¸¤Æ¡¢ÊÌÅÓÌÀ¼¨Åª¤Êµ­½Ò¤¬¤Ê¤¤¸Â¤ê¡¢INTEGER¡¢REAL¡¢INTERVAL ¤Î³ÆÄê¿ô¤Ïʸ»úÄê¿ô¤ò°ÕÌ£¤·¤Þ¤¹¡£Äê¿ô¼°¤È̾Á°ÉÕ¤­Äê¿ô (PARAMETERS) ¤Ï¾ï¤ËÌÀ¼¨Åª¤Ë¶èÊ̤µ¤ì¤Þ¤¹¡£

ɽ 2-1 ¤Ï¥³¡¼¥É¤È»»½Ñ¤ËÍѤ¤¤é¤ì¤ëʸ»ú¥»¥Ã¥È¤Îɽµ­¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-1   ½ñÂΤÎÊÑ´¹
ʸ»ú¥»¥Ã¥È ɽµ­
Fortran ¥³¡¼¥É
INTERVAL :: X=[0.1,0.2]
¥×¥í¥°¥é¥à¤È¥³¥Þ¥ó¥É¤Ø¤ÎÆþÎÏ
Enter X: ? [2.3,2.4]
¥³¡¼¥ÉÆâÉô¤ÎÄê¿ôÍѤβÄÊÑÉôʬ
[a,b]
¥¹¥«¥é¡¼±é»» x(a + b) = xa + xb
¶è´Ö±é»» X(A + B) XA + XB



Ãí - ¥Õ¥©¥ó¥È¤Î»ÈÍѤˤϤ褯Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£°Û¤Ê¤ë¥Õ¥©¥ó¥È¤Ï¶è´Ö¤ÎÀµ³Î¤Ê³°Éô¿ô³ØÃͤȶè´Ö¤Î¥Þ¥·¥óɽ¸½²Äǽ¤ÊÆâÉôŪ¤Ê¶á»÷Ãͤòɽ¤·¤Þ¤¹¡£

¶è´ÖÄê¿ô

f95 ¤Ç¤Ï¡¢¶è´ÖÄê¿ô¤Ï¡¢Ã±°ì¤ÎÀ°¿ô¤Þ¤¿¤Ï³Ñ³ç¸Ì¤Ç°Ï¤ó¤À¼Â 10 ¿Ê¿ô [3.5] ¤Î¤¤¤º¤ì¤«¡¢¤¢¤ë¤¤¤Ï¡¢°ìÂФÎÀ°¿ô¤Þ¤¿¤Ï¥³¥ó¥Þ¤Ç¶èÀÚ¤ê³Ñ³ç¸Ì¤Ç°Ï¤ó¤À¼Â 10 ¿Ê¿ô
[3.5 E-10, 3.6 E-10] ¤Î¤¤¤º¤ì¤«¤Ç¤¹¡£½ÌÂष¤¿¶è´Ö¤¬¥Þ¥·¥ó¤Çɽ¸½¤Ç¤­¤Ê¤¤¾ì¹ç¡¢Àµ³Î¤Ê»»½ÑÃͤϻØÄꤵ¤ì¤¿´Ý¤á¤ò»È¤Ã¤Æ¡¢ÆâÉôŪ¤ÊÀ©Ìó¤òËþ¤¿¤¹¤³¤È¤¬ÌÀ¤é¤«¤ÊÆâÉôŪ¤Ê¥Þ¥·¥óɽ¸½²Äǽ¤Ê¶è´Ö¤Ë´Ý¤á¤é¤ì¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥ÈINTEGER¡¢¥Ç¥Õ¥©¥ë¥È REAL ¤Þ¤¿¤Ï REAL(8) ¤Îξ½ªÎ»ÅÀ¤ò»ý¤Ä ¶è´ÖÄê¿ô¤Ï¥Ç¥Õ¥©¥ë¥È·¿¶è´Ö¤ò»ý¤Á¤Þ¤¹¡£

½ªÎ»ÅÀ¤Î·¿¤¬¥Ç¥Õ¥©¥ë¥È INTEGER¡¢¥Ç¥Õ¥©¥ë¥È REAL ¤Þ¤¿¤Ï REAL(8) ¤Ç¤¢¤ë¾ì¹ç¡¢¤½¤Î½ªÎ»ÅÀ¤ÏÆâÉôŪ¤Ë REAL(8) ·¿¤ÎÃͤؤÈÊÑ´¹¤µ¤ì¤Þ¤¹¡£

½ªÎ»ÅÀ¤Î·¿¤¬ INTEGER(8) ¤Ç¤¢¤ë¾ì¹ç¡¢¤½¤Î½ªÎ»ÅÀ¤ÏÆâÉôŪ¤Ë REAL(16) ·¿¤ÎÃͤؤÈÊÑ´¹¤µ¤ì¤Þ¤¹¡£

½ªÎ»ÅÀ¤Î·¿¤¬INTEGER(4)¤Ç¤¢¤ë¾ì¹ç¡¢¤½¤Î½ªÎ»ÅÀ¤ÏÆâÉôŪ¤Ë REAL(8)·¿¤ÎÃͤؤÈÊÑ´¹¤µ¤ì¤Þ¤¹¡£

½ªÎ»ÅÀ¤Î·¿¤¬ INTEGER(1) ¤Þ¤¿¤Ï INTEGER(2) ¤Ç¤¢¤ë¾ì¹ç¡¢¤½¤Î½ªÎ»ÅÀ¤ÏÆâÉôŪ¤Ë REAL(4) ·¿¤ÎÃͤؤÈÊÑ´¹¤µ¤ì¤Þ¤¹¡£

ξÊý¤Î½ªÎ»ÅÀ¤¬ REAL·¿¤Ç¤¢¤ê¡¢°Û¤Ê¤ë KTPV ¤ò»ý¤Ä¾ì¹ç¡¢¤½¤ì¤é¤Ï¤è¤êÂ礭¤¤¾®¿ôÅÀÀºÅÙ¤ò»ý¤Ä½ªÎ»ÅÀ¤Î¶á»÷ÃͼêË¡¤òÍѤ¤¤ÆÆâÉôŪ¤Ëɽ¸½¤µ¤ì¤Þ¤¹¡£

¶è´ÖÄê¿ô¤Î KTPV ¤Ï¡¢ºÇÂç¾®¿ôÅÀÀºÅÙ¤ò»ý¤ÄÉôʬ¤Î KTPV ¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-1 ¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê ¶è´ÖÄê¿ô¤Î KTPV ¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-1   ¶è´ÖÄê¿ô¤Î KTPV

math% cat ce2-1.f95
IF(KIND([9_8, 9.0])      == 16 .AND. &
   KIND([9_8, 9_8])      == 16 .AND. & 
   KIND([9_4, 9_4])      == 8  .AND. & 
   KIND([9_2, 9_2])      == 4  .AND. &
   KIND([9, 9.0_16])     == 16 .AND. & 
   KIND([9, 9.0])        == 8  .AND. & 
   KIND([9, 9])          == 8  .AND. & 
   KIND([9.0_4, 9.0_4])  == 4  .AND. & 
   KIND([1.0Q0, 1.0_16]) == 16 .AND. & 
   KIND([1.0_8, 1.0_4])  == 8  .AND. & 
   KIND([1.0E0, 1.0Q0])  == 16 .AND. & 
   KIND([1.0E0, 1])      == 8  .AND. & 
   KIND([1.0Q0, 1])      == 16 ) PRINT *, 'Check'
END
math% f95 -xia ce2-1.f95

0.1 ¤Þ¤¿¤Ï [0.1,0.2] ¤Î¤è¤¦¤Ê Fortran Äê¿ô¤Ï¡¢Äê¿ô¤¬É½¤¹³°ÉôÃͤÈÆâÉôŪ¤Ê¶á»÷ÃͤΠ2 ¤Ä¤ÎÃͤ˴ØÏ¢ÉÕ¤±¤é¤ì¤Þ¤¹¡£Fortran ¤Ç¤Ï¡¢Äê¿ô¤ÎÃͤϤ½¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤǤ¹¡£Äê¿ô¤Î³°ÉôÃͤÈÄê¿ô¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤȤò¶èÊ̤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¶è´Ö¤Ç¤Ï¤³¤ì¤ò¶èÊ̤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Fortran Äê¿ô¤Î³°ÉôÃͤòɽ¤¹¤Ë¤Ï¡¢¼¡¤Îɽµ­¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£

ev(0.1) = 0.1¡¢¤Þ¤¿¤Ï¡¢ev([0.1,0.2])= [0.1, 0.2]

ev ¤Îɽµ­¤Ï³°ÉôÃͤòɽ¤·¤Þ¤¹¡£

Fortran µ¬³Ê¤Ë½¾¤¨¤Ð¡¢¶è´ÖÄê¿ô¤Î¿ôÃͤϡ¢¤½¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤȤʤê¤Þ¤¹¡£¶è´ÖÄê¿ô¤Î³°ÉôÃͤϾï¤ËÌÀ¼¨Åª¤Ë¤½¤Î¤è¤¦¤Ëɸ¼±ÉÕ¤±¤é¤ì¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢¶è´ÖÄê¿ô [1, 2] ¤È¤½¤Î³°ÉôÃÍ ev ([1, 2]) ¤Ï¡¢¿ô³ØÃÍ [1, 2] ¤ÈƱ¤¸¤Ç¤¹¡£¤·¤«¤·¡¢ev ( [0.1, 0.2] ) = [0.1, 0.2] ¤Ç¤¹¤¬¡¢¿ô 0.1 ¤È 0.2 ¤Ï¥Þ¥·¥ó¤Çɽ¸½¤Ç¤­¤Ê¤¤¤Î¤Ç¡¢[0.1, 0.2] ¤Ïñ¤Ê¤ë¥Þ¥·¥ó¤ÎÆâÉôŪ¤Ê¶á»÷Ãͤˤ¹¤®¤Þ¤»¤ó¡£¤³¤Î¤¿¤á¡¢¶è´ÖÄê¿ô¤ÎÃÍ [0.1, 0.2] ¤Ï¡¢¥Þ¥·¥óÆâÉô¤Î¶á»÷ÃͤʤΤǤ¹¡£¤³¤Î³°ÉôÃÍ¤Ï ev
( [0.1, 0.2] ) ¤Çɽ¤µ¤ì¤Þ¤¹¡£

¸·Ì©¶è´Ö¼°½èÍý¤Î¤â¤È¤Ç¤Ï¡¢Â¾¤Î Fortran ¿ôÃÍÄê¿ô¤Î¾ì¹ç¤ÈƱÍͤˡ¢¶è´ÖÄê¿ô¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤϸÇÄꤵ¤ì¤Þ¤¹¡£REAL Äê¿ô¤ÎÃͤϤ½¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤǤ¹¡£Æ±Íͤˡ¢¶è´ÖÄê¿ô¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤÎÃͤÏÄê¿ô¤ÎÃͤȤ·¤Æ»²¾È¤µ¤ì¤Þ¤¹¡£Äê¿ô¤Î³°ÉôÃÍ (ɸ½à Fortran ¤ÎÄêµÁ³µÇ°¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó) ¤Ï¡¢¤½¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤȰۤʤ뤳¤È¤â¤¢¤ê¤Þ¤¹¡£ºÇÂçÉýÍ׵ἰ½èÍý¤Î¤â¤È¤Ç¤Ï¡¢¶è´ÖÄê¿ô¤ÎÃͤÏʸ̮¤Ë°Í¸¤·¤Þ¤¹¡£¤·¤«¤·¤½¤Î¾ì¹ç¤Ç¤â¡¢strict ¤ÈºÇÂçÉýÍ׵ἰ½èÍý¤ÎξÊý¤Ç¡¢¶è´ÖÄê¿ô¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤϤ½¤Î³°ÉôÃͤò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

Ǥ°Õ¤Î¿ô³ØÄê¿ô¤ÈƱÍͤˡ¢¶è´ÖÄê¿ô¤Î³°ÉôÃͤÏÉÔÊѤǤ¹¡£Ì¾Á°ÉÕ¤­¶è´ÖÄê¿ô (PARAMETER) ¤Î³°ÉôÃÍ¤Ï 1 ¤Ä¤Î¥×¥í¥°¥é¥àñ°Ì¤ÎÃæ¤Ç¤ÏÊѹ¹¤Ç¤­¤Þ¤»¤ó¡£¤·¤«¤·¡¢Ç¤°Õ¤Î̾Á°ÉÕ¤­Äê¿ô¤Î¾ì¹ç¤ÈƱÍͤˡ¢°Û¤Ê¤ë¥×¥í¥°¥é¥àñ°Ì´Ö¤Ç¤ÏƱ¤¸Ì¾Á°ÉÕ¤­Äê¿ô¤Ë°Û¤Ê¤ëÃͤò´Ø·¸ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¶è´Ö¤ÏÉÔÆ©ÌÀ¤Ç¤¹¤«¤é¡¢¶è´Ö¤òÆâÉôŪ¤Ëɽ¸½¤¹¤ë¤Î¤ËɬÍפʾðÊó¤ò³ÊǼ¤¹¤ë¸À¸ìÍ×·ï¤Ï¸ºß¤·¤Þ¤»¤ó¡£¶è´Ö¤ÎºÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ËÁȤ߹þ¤ß´Ø¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¶è´ÖÄê¿ô¤Ï½ç°ÌÉÕ¤±¤é¤ì¤¿ 1 ÂФΠREAL ¤Þ¤¿¤Ï¶è´ÖÄê¿ô¤Ë¤è¤êÄêµÁ¤µ¤ì¤Þ¤¹¡£Äê¿ô¤Ï¥«¥ó¥Þ¤Ë¤è¤ê¶èÀÚ¤é¤ì¡¢1 ÂФξðÊó¤Ï³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¤Þ¤¹¡£Âè 1 Äê¿ô¤ÏºÇÂç²¼¸Â (infimum) ¤Ç¤¢¤ê¡¢Âè 2 Äê¿ô¤ÏºÇ¾®¾å¸Â (supremum) ¤Ç¤¹¡£

³Ñ³ç¸Ì¤ÎÃæ¤Ë 1 ¤Ä¤ÎÄê¿ô¤¬¸½¤ì¤ë¾ì¹ç¤Ë¸Â¤ê¡¢É½¸½¤µ¤ì¤ë¶è´Ö¤Ï½ÌÂष¤Æ¡¢Æ±¤¸ºÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢Ã±°ì¤Î¾®¿ôʸ»úÄê¿ô¤Î³°ÉôÃͤò´Þ¤à¤³¤È¤¬Êݾڤµ¤ì¤¿¶è´Ö¤ÎÆâÉôŪ¤Ê¶á»÷Ãͤ¬¹½ÃÛ¤µ¤ì¤Þ¤¹¡£

Í­¸ú¤Ê¶è´Ö¤Ï¡¢ºÇ¾®¾å¸Â¤è¤ê¾®¤µ¤¤¤«¤Þ¤¿¤ÏÅù¤·¤¤ 1 ¤Ä¤ÎºÇÂç²¼¸Â¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Æ±Íͤˡ¢¶è´ÖÄê¿ô¤â¤Þ¤¿¡¢¤½¤ÎºÇ¾®¾å¸Â¤è¤ê¾®¤µ¤¤¤«¤Þ¤¿¤ÏÅù¤·¤¤ 1 ¤Ä¤ÎºÇÂç²¼¸Â¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÉôʬ¥³¡¼¥É¤Ï true ¤Èɾ²Á¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

INF([0.1]) .LE. SUP([0.1])

¥³¡¼¥ÉÎã 2-2 ¤Ï¡¢Í­¸ú¤Ê¶è´ÖÄê¿ô¤È̵¸ú¤Ê¶è´ÖÄê¿ô¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

¶è´ÖÄê¿ô¤Ë´Ø¤¹¤ëÄɲþðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤Æ¤¤¤ëÊ᪠[4] ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥³¡¼¥ÉÎã 2-2   Í­¸ú¤Ê¶è´ÖÄê¿ô¤È̵¸ú¤Ê¶è´ÖÄê¿ô

X=[2,3]
X=[0.1] 	 ! 2 ¹ÔÌÜ: ¾®¿ô 1/10 ¤ò´Þ¤à¶è´Ö
X=[2, ] 	 ! 3 ¹ÔÌÜ: ̵¸ú - ºÇ¾®¾å¸Â¤¬¤Ê¤¤
X=[3_2,2_2] 	 ! 4 ¹ÔÌÜ: ̵¸ú - ºÇÂç²¼¸Â > ºÇ¾®¾å¸Â
X=[2_8,3_8]
X=[2,3_8]
X=[0.1E0_8]
X=[2_16,3_16]
X=[2,3_16]
X=[0.1E0_16]

ÆâÉôŪ¤Ê¶á»÷ÃÍ

REAL Äê¿ô¤ÎÆâÉôŪ¤Ê¶á»÷ÃͤÏÄê¿ô¤Î³°ÉôÃͤÈƱ¤¸¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢10 ¿Ê¾®¿ô 0.1 ¤Ï 2 ¿Ê¤ÎÉâÆ°¾®¿ôÅÀ¿ô½¸¹ç¤Î¥á¥ó¥Ð¡¼¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¤³¤ÎÃÍ¤Ï 0.1 ¤Ë¶á¤¤ 2 ¿Ê¤ÎÉâÆ°¾®¿ôÅÀ¿ô¤Ë¤è¤Ã¤Æ¶á»÷¤µ¤ì¤Þ¤¹¡£REAL ¥Ç¡¼¥¿¹àÌܤˤĤ¤¤Æ¡¢Fortran µ¬³Ê¤Ç¤Ï¶á»÷¤ÎÀµ³ÎÀ­¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¶è´Ö¥Ç¡¼¥¿¹àÌܤˤĤ¤¤Æ¤Ï¡¢¶è´ÖÄê¿ô¤òµ­¹æŪ¤Ëɽ¸½¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë 10 ¿Ê¾®¿ô¤ò»ÈÍѤ·¤ÆÄêµÁ¤µ¤ì¤¿ 1 ÁȤοô³ØÃͤò´Þ¤à¤³¤È¤ÇÃΤé¤ì¤¿¡¢°ìÂФÎÉâÆ°¾®¿ôÅÀ¿ôÃͤ¬ÍѤ¤¤é¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¿ô³Ø¶è´Ö [0.1, 0.2] ¤Ï¡¢¶è´ÖÄê¿ô [0.1,0.2] ¤Î³°ÉôÃͤǤ¹¡£

Fortran ¸À¸ì¤Ë REAL Äê¿ô¤ÎÀµ³Î¤Ê¶á»÷Ãͤòµá¤á¤ëÍ׷郎¸ºß¤·¤Ê¤¤¤Î¤ÈƱÍͤˡ¢¶¹¤¤Éý¤Î¶è´ÖÄê¿ô¤ò»È¤Ã¤Æ¶è´Ö¤Î³°ÉôÃͤζá»÷Ãͤòµá¤á¤ë¸À¸ìÍ×·ï¤â¸ºß¤·¤Þ¤»¤ó¡£¶è´ÖÄê¿ô¤Ë¤Ï¤½¤Î³°ÉôÃͤò´Þ¤à¤È¤¤¤¦Í׷郎¤¢¤ê¤Þ¤¹¡£

ev(INF([0.1,0.2])) inf(ev([0.1,0.2])) = inf([0.1, 0.2])

¤ª¤è¤Ó¡¢

sup([0.1, 0.2]) = sup(ev([0.1,0.2])) ev(SUP([0.1,0.2]))

¤Ç¤¹¡£

f95 ¤Î¶è´ÖÄê¿ô¤Ï±Ô¤¤ÃͤǤ¹¡£¤³¤ì¤Ï¡¢¼ÂÁõÉʼÁ¤ÎÆÃÀ­¤Ç¤¹¡£

¶è´Öʸ

¶è´ÖÀë¸Àʸ¤Ï¡¢f95 ¤Î Fortran ¸À¸ì¤ËÄɲ䵤줿ͣ°ì¤Î¶è´Ö¸ÇÍ­¤Îʸ¤Ç¤¹¡£¶è´Ö¥Ç¡¼¥¿¹àÌܤȤÎÂÐÏäò¹Ô¤¦ ¶è´ÖÀë¸Àʸ¤Èɸ½à Fortran ʸ¤Î¾ÜºÙ¤Ê²òÀâ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖINTERVAL¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥Ç¡¼¥¿·¿¤È¥Ç¡¼¥¿¹àÌÜ

f95 ¤Î¥³¥Þ¥ó¥É¹Ô¤Ë¡¢-xia¡¢¤Þ¤¿¤Ï¡¢-xinterval ¥ª¥×¥·¥ç¥ó¤¬ÆþÎϤµ¤ì¤ë¤«¡¢¤¢¤ë¤¤¤Ï¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤¬ widestweed ¤Èstrict ¤Î¤¤¤º¤ì¤«¤ËÀßÄꤵ¤ì¤ë¤È¡¢INTERVAL ¥Ç¡¼¥¿·¿¤Ï f95 ¤ÎÁȤ߹þ¤ß¤Î¿ôÃͥǡ¼¥¿·¿¤È¤·¤Æǧ¼±¤µ¤ì¤Þ¤¹¡£f95 ¤Î¥³¥Þ¥ó¥É¹Ô¤Ë¤¤¤º¤ì¤Î¥ª¥×¥·¥ç¥ó¤âÆþÎϤµ¤ì¤Ê¤¤¤«¡¢¤¢¤ë¤¤¤Ï¡¢»ÈÍѤ·¤Ê¤¤¤ÈÀßÄꤵ¤ì¤ë¤È¡¢INTERVAL ¥Ç¡¼¥¿·¿¤ÏÁȤ߹þ¤ß¤Î¥Ç¡¼¥¿·¿¤È¤Ïǧ¼±¤µ¤ì¤Þ¤»¤ó¡£¶è´Ö¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¶è´Ö¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

̾Á°¡§INTERVAL

6 ¸Ä¤ÎÁȤ߹þ¤ß¤Î Fortran ¥Ç¡¼¥¿·¿¤Ë¡¢ÁȤ߹þ¤ß·¿¤Î INTERVAL ¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£INTERVAL ·¿¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤÎÆâÉô·Á¼°¤¬ÌÀµ­¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤¤¦°ÕÌ£¤ÇÉÔÆ©ÌÀ¤Ç¤¹¡£¤·¤«¤·¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤγ°Éô·Á¼°¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤÈƱ¤¸¼ïÊÌ·¿¥Ñ¥é¥á¡¼¥¿ÃÍ (KTPV) ¤ò»ý¤Ä°ìÂФΠREAL ¥Ç¡¼¥¿¹àÌܤǤ¹¡£

¼ïÊÌ·¿¥Ñ¥é¥á¡¼¥¿ÃÍ (KTPV)

¶è´Ö¥Ç¡¼¥¿¹àÌܤϡ¢ºÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ç¹½À®¤µ¤ì¤ë»»½Ñ¶è´Ö¤Î¶á»÷ÃͤǤ¹¡£¶è´Ö¥Ç¡¼¥¿¹àÌܤϾ¤Î¿ôÃͥǡ¼¥¿¹àÌܤΤ¹¤Ù¤Æ¤ÎÆÃÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¶è´Ö¥Ç¡¼¥¿¹àÌܤΠKTPV ¤Ï 8 ¤Ç¤¹¡£KTPV ¤Î»ØÄê¤Î¤Ê¤¤¥Ç¥Õ¥©¥ë¥È¶è´Ö¥Ç¡¼¥¿¹àÌܤΥµ¥¤¥º¤Ï 16 ¥Ð¥¤¥È¤Ç¤¹¡£f95 ¤Î¥Ç¥Õ¥©¥ë¥È¶è´Ö¥Ç¡¼¥¿¹àÌܤΥµ¥¤¥º¤Ï¡¢-xtypemap¡¢¤Þ¤¿¤Ï¡¢-r8const ¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö-xtypemap ¤È -r8const ¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¤¿¤á¡¢-xtypemap ¤ò»È¤Ã¤Æ¥Ç¥Õ¥©¥ë¥È¤Î REAL ¤È INTEGER ¥Ç¡¼¥¿¹àÌܤΥµ¥¤¥º¤¬Êѹ¹¤µ¤ì¤Ê¤±¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

KIND([0])= 2*KIND(0) = KIND(0.0_8) = 8

¥µ¥¤¥º¤È¶­³¦À°Îó¤Î¤Þ¤È¤á

INTERVAL ·¿¤Î¥µ¥¤¥º¤È¶­³¦À°Îó¤Ï¡¢f95 ¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£É½ 2-2 ¤Ï¡¢INTERVAL ¤Î¥µ¥¤¥º¤È¶­³¦À°Îó¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

ɽ 2-2   INTERVAL ¤Î¥µ¥¤¥º¤ÈÀ°Îó
¥Ç¡¼¥¿·¿ ¥Ð¥¤¥È¥µ¥¤¥º ¶­³¦À°Îó
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTERVAL(16)
16
8
16
32
8
4
8
16



Ãí - ¶è´ÖÇÛÎó¤ÏÍ×ÁǤÈƱ¤¸Ê¤Ӥˤʤê¤Þ¤¹¡£

¶è´ÖÇÛÎó

¶è´ÖÇÛÎó¤Ï¡¢°Û¤Ê¤ë¿ôÃÍ·¿¤Î¤¹¤Ù¤Æ¤ÎÇÛÎóÆÃÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¶è´ÖÇÛÎó¤ÎÀë¸À¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥³¡¼¥ÉÎã 2-25 ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¼¡¤ÎÇÛÎóÁȤ߹þ¤ß´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¶è´Ö¥Ð¡¼¥¸¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ALLOCATED()¡¢ASSOCIATED()¡¢CSHIFT()¡¢DOT_PRODUCT()¡¢EOSHIFT()¡¢KIND()¡¢LBOUND()¡¢MATMUL()¡¢MAXVAL()¡¢MERGE()¡¢MINVAL()¡¢NULL()¡¢PACK()¡¢PRODUCT()¡¢RESHAPE()¡¢SHAPE()¡¢SIZE()¡¢SPREAD()¡¢SUM()¡¢TRANSPOSE()¡¢UBOUND()¡¢UNPACK()

MINVAL ¤È MAXVAL ÁȤ߹þ¤ß´Ø¿ô¤¬¶è´ÖÇÛÎó¤ËŬÍѤµ¤ì¤ë¤È¡¢ÇÛÎó¤ÎÍ×ÁǤˤè¤ê½èÍý¤µ¤ì¤Ê¤¤¶è´ÖÃͤòÊÖ¤¹²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¡¢¶è´ÖÇÛÎóÍѤΠMINLOC() ¤È MAXLOC() ÁȤ߹þ¤ß´Ø¿ô¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£MAX ¤È MIN ÁȤ߹þ¤ß´Ø¿ô¤Î²òÀâ¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼µ­¤ÎÀá¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Î㡧MINVAL((/[1,2],[3,4]/)) = [1,3]

MAXVAL(/[1,2],[3,4]/) = [2,4]

¼¡¤ÎÁȤ߹þ¤ß¶è´Ö¸ÄÊÌ´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÇÛÎó¥Ð¡¼¥¸¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ABS()¡¢INF()¡¢INT()¡¢MAG()¡¢MAX()¡¢MID()¡¢MIG()¡¢MIN()¡¢NDIGITS()¡¢SUP()¡¢WID()

¼¡¤ÎÁȤ߹þ¤ß¶è´Ö»»½Ñ´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÇÛÎó¥Ð¡¼¥¸¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ACOS()¡¢AINT()¡¢ANINT()¡¢ASIN()¡¢ATAN()¡¢ATAN2()¡¢CEILING()¡¢COS()¡¢COSH()¡¢EXP()¡¢FLOOR()¡¢LOG()¡¢LOG10()¡¢MOD()¡¢SIGN()¡¢SIN()¡¢SINH()¡¢SQRT()¡¢TAN()¡¢TANH()

¼¡¤Î¶è´Ö¹½À®»Ò¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÇÛÎó¥Ð¡¼¥¸¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

INTERVAL()¡¢DINTERVAL()¡¢SINTERVAL()¡¢QINTERVAL()

¶è´Ö±é»»¼°

¶è´Ö»»½Ñ¼°¤Ï¡¢Â¾¤Î¿ôÃͥǡ¼¥¿·¿¤ÈƱ¤¸»»½Ñ±é»»»Ò¤«¤é¹½ÃÛ¤µ¤ì¤Þ¤¹¡£¶è´Ö¼°¤ÈÈó¶è´Ö¼°´Ö¤Î´ðËÜŪ¤ÊÁê°ãÅÀ¤Ï¡¢Ç¤°Õ¤Î²Äǽ¤Ê¶è´Ö¼°¤Î·ë²Ì¤¬¶è´Ö±é»»¤ÎÊñ¹ç¤ÎÀ©Ìó¤òËþ¤¿¤¹Í­¸ú¤Ê¶è´Ö¤Ç¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤³¤ì¤ÈÂоÈŪ¤Ë¡¢Èó¶è´Ö¼°¤Î·ë²Ì¤ÏǤ°Õ¤Î¶á»÷ÃͤǤ¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£

º®¹ç¥â¡¼¥É¤Î¶è´Ö¼°

º®¹ç¥â¡¼¥É (¶è´Ö¤ÎÅÀ) ¼°¤ÏÊñ´Þ¤òÊݾڤ¹¤ë¤¿¤á¤Ë¡¢ºÇÂçÉýÍ׵ἰ½èÍý¤¬É¬ÍפȤʤê¤Þ¤¹¡£-xia ¥³¥Þ¥ó¥É¹Ô¥Þ¥¯¥í¡¢¤Þ¤¿¤Ï¡¢-xinterval ¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¶è´Ö¥µ¥Ý¡¼¥È¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç¤Î¼°½èÍý¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇºÇÂçÉýÍ×µá¤È¤Ê¤ê¤Þ¤¹¡£ºÇÂçÉýÍ×µá¤Îɾ²Á¤¬¹¥¤Þ¤·¤¯¤Ê¤¤¾ì¹ç¤Ï¡¢-xia=strict¡¢¤Þ¤¿¤Ï¡¢-xinterval=strict ¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¸·Ì©¼°½èÍý¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£¸·Ì©¼°½èÍý¤Î¤â¤È¤Ç¤Ï¡¢º®¹ç¥â¡¼¥É¤Î¶è´Ö¼°¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¡£¶è´Ö¤ÈCOMPLEX ¥ª¥Ú¥é¥ó¥É´Ö¤Îº®¹ç¥â¡¼¥É±é»»¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£

ºÇÂçÉýÍ׵ἰ½èÍý¤ò»È¤¦¤È¡¢¶è´Ö¼°Ãæ¤Î¤¹¤Ù¤Æ¤Î¥ª¥Ú¥é¥ó¥É¤Î KTPV ¤Ï¡¢Á´ÂΤòÄ̤¸¤ÆºÇÂç¤Î¶è´Ö KTPV¤Ç¤¢¤ë KTPVmax¤Ø¤È¾º³Ê¤µ¤ì¤Þ¤¹¡£


Ãí - KTPV ¾º³Ê¤Ï¼°¤Îɾ²ÁÁ°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

ºÇÂçÉýÍ׵ἰɾ²Á¤ÎÊݾڡ§

¼¡¤ÎÎã¤Ç¤ÏºÇÂçÉýÍ׵ἰ½èÍý¤ÎÆ°ºî¤È¸ú²Ì¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£³ÆÎã¤Ë¤Ï¡¢¼¡¤Î 3 ¤Ä¤Î¥³¡¼¥É¥Ö¥í¥Ã¥¯¤¬Â¸ºß¤·¤Þ¤¹¡£

Îã¤Ï¡¢¼¡¤Î 3 ¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤òÅÁ¤¨¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£

ÃͤÎÂåÆþ

¶è´Ö¤ÎÂåÆþʸ¤Ï¡¢¶è´Ö¤Î¥¹¥«¥é¡¼¡¢ÇÛÎóÍ×ÁǤޤ¿¤ÏÇÛÎó¼°¤ÎÃͤò¶è´ÖÊÑ¿ô¡¢ÇÛÎóÍ×ÁǤޤ¿¤ÏÇÛÎó¤ËÂåÆþ¤·¤Þ¤¹¡£¤³¤Î¹½Ê¸¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

V = expr

expr ¤Ï¶è´Ö±é»»¤Þ¤¿¤ÏÇÛÎ󼰤βÄÊÑÉôʬ¤Ç¤¢¤ê¡¢V ¤Ï¶è´ÖÊÑ¿ô¡¢ÇÛÎóÍ×ÁǤޤ¿¤ÏÇÛÎó¤Ç¤¹¡£

¶è´Ö¤ÎÂåÆþ¤ò¼Â¹Ô¤¹¤ë¤È¡¢ºÇÂçÉýÍ×µá¤Þ¤¿¤Ï¸·Ì©¼°½èÍý¤ò»ÈÍѤ·¤Æ¼°¤¬É¾²Á¤µ¤ì¤Þ¤¹¡£¤³¤Î¸å¤Ç¡¢·ë²Ì¤ÎÃͤ¬ V ¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£ºÇÂçÉýÍ׵ἰ½èÍý¤òÍѤ¤¤¿¼°¤Îɾ²Á¤Ç¤Ï¼¡¤Î¼ê½ç¤¬È¯À¸¤·¤Þ¤¹¡£

1. ¤¹¤Ù¤Æ¤ÎÅÀ (Èó¶è´Ö) ¥Ç¡¼¥¿¹àÌܤζè´Ö KTPV ¤¬·×»»¤µ¤ì¤Þ¤¹¡£

ÅÀ¹àÌܤ¬À°¿ô¤Ç¤¢¤ì¤Ð¡¢·ë²Ì¤È¤·¤Æ¤Î¶è´Ö¤Î KTPV ¤ÏÀ°¿ô¤Î KTPV ¤Î 2 ÇܤȤʤê¤Þ¤¹¡£¤½¤Î¾¤Î¾ì¹ç¡¢¶è´Ö¤Î KTPV ¤ÏÅÀ¹àÌܤΠKTPV ¤ÈƱ¤¸¤Ç¤¹¡£

2. ÂåÆþʸ¤Îº¸Â¦¤ò´Þ¤à¼°¤¬Áöºº¤µ¤ì¡¢KTPVmax ¤Çɽ¤µ¤ì¤ëºÇÂç¶è´Ö KTPV ¤¬µá¤á¤é¤ì¤Þ¤¹¡£

3. ¼°¤Îɾ²Á¤ËÀèΩ¤Á¡¢¶è´Ö¼°¤ÎÃæ¤Î¤¹¤Ù¤Æ¤ÎÅÀ¤È¶è´Ö¥Ç¡¼¥¿¹àÌܤ¬¼°¤Îɾ²Á¤ËÀèΩ¤Á¡¢KTPVmax ¤Ø¤È¾º³Ê¤µ¤ì¤Þ¤¹¡£

4. KIND(V) < KTPVmax ¤Ç¤¢¤ì¤Ð¡¢¼°¤Î·ë²Ì¤Ï KTPV = KIND(V) ¤ò»ý¤Ä¶è´Ö¤ò´Þ¤à¤â¤Î¤Ø¤ÈÊÑ´¹¤µ¤ì¡¢¤½¤Î·ë²Ì¤È¤·¤Æ¤ÎÃͤ¬ V ¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-3   KIND (º¸Â¦) ¤Ë°Í¸¤¹¤ëKTPVmax

math% cat ce2-3.f95
INTERVAL(4)  :: X1, Y1
INTERVAL     :: X2, Y2          ! INTERVAL (8) :: X2, Y2 ¤ÈƱ¤¸ 
INTERVAL(16) :: X3, Y3

 
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
 X1 = 0.1                                            
 X2 = 0.1                                
 X3 = 0.1

 
! ƱÅù¤Î¸·Ì©¥³¡¼¥É
Y1 = [0.1_4]
Y2 = [0.1_8]
Y3 = [0.1_16]

 
IF(X1 .SEQ. Y1)  PRINT *, "Check 1"
IF(X2 .SEQ. Y2)  PRINT *, "Check 2"
IF(X3 .SEQ. Y3)  PRINT *, "Check 3"
END 
 
math% f95 -xia ce2-3.f95
math% a.out
 Check 1
 Check 2
 Check 3


Ãí - ºÇÂçÉýÍ×µá¤Î¤â¤È¤Ç¤Ï¡¢ÂåÆþÀèÊÑ¿ô (º¸Â¦) ¤Î KTPV ¤Ï¡¢¶è´Öʸ¤Î¤¹¤Ù¤Æ¤Î¹àÌܤ¬¾º³Ê¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡¢KTPVmax ÃͤηèÄêÍ×ÁǤ˴ޤޤì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-4   º®¹ç¥â¡¼¥É¤ÎÂåÆþʸ

math% cat ce2-4.f95
INTERVAL(4) :: X1, Y1
INTERVAL(8) :: X2, Y2
REAL(8)     :: R = 0.1

 
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
 X1 = R*R 	 ! 4¹ÔÌÜ
 X2 = X1*R 	 ! 5¹ÔÌÜ

 
! ¸·Ì©¤ÈÅù²Á¤Ê¥³¡¼¥É
 Y1 = INTERVAL((INTERVAL(R, KIND=8)*INTERVAL(R, KIND=8)), KIND=4	 )! 6¹ÔÌÜ
 Y2 = INTERVAL(X1, KIND=8)*INTERVAL(R, KIND=8) 	 ! 7¹ÔÌÜ

 
IF((X1 == Y1)) PRINT *, "Check 1" 	 ! 8¹ÔÌÜ
IF((X2 == Y2)) PRINT *, "Check 2" 	 ! 9¹ÔÌÜ
END
 
math% f95 -xia ce2-4.f95
math% a.out
 Check 1
 Check 2

¥³¡¼¥ÉÎã 2-4 Ãíµ­¡§

¶è´Ö¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó

f95 ¥³¥ó¥Ñ¥¤¥é¤Ç¤Î¶è´Öµ¡Ç½¤Ï¼¡¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Ë¤è¤êµ¯Æ°¤µ¤ì¤Þ¤¹¡£

¥³¥Þ¥ó¥É¹Ô½èÍý¤ÎËöÈø¤Ë¡¢xinterval=(widestneed|strict) ¤¬ÀßÄꤵ¤ì¡¢¤µ¤é¤Ë -fsimple ¤Þ¤¿¤Ï -fns ¤¬ -fsimple=0¡¢-fns=no °Ê³°¤ÎÃͤËÀßÄꤵ¤ì¤ë¤ÈÃ×̿Ū¤Ê¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£

¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑ»þ¡§

INTERVAL ·¿¤òǧ¼±¤¹¤ë¤è¤¦µ¯Æ°¤·¤¿¾ì¹ç¡§

-xtypemap ¤È -r8const ¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó

¶è´Ö¥­¡¼¥ï¡¼¥É¤À¤±¤ò»È¤Ã¤ÆÀë¸À¤µ¤ì¤¿¥Ç¥Õ¥©¥ë¥È¶è´ÖÊÑ¿ô¤Î¥µ¥¤¥º¤Ï¡¢-xtypemap ¤È -r8const ¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤ÆÊѹ¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

¤³¤ì¤é¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Ï¥Ç¥Õ¥©¥ë¥È¤Î INTERVAL ·¿¤Ë¤Ï±Æ¶Á¤òÍ¿¤¨¤Þ¤»¤ó¤¬¡¢¥³¡¼¥ÉÎã 2-5 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢º®¹ç¥â¡¼¥É¤Î¶è´Ö¼°¤Î·ë²Ì¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-5   º®¹ç¥â¡¼¥É¤Î¼°

math% cat ce2-5.f95
REAL     :: R 
INTERVAL :: X
R = 1.0E0 - 1.0E-15
PRINT *, 'R = ', R
X = 1.0E0 - R
PRINT *, 'X = ', X
IF (  0.0 .IN. X  ) THEN 
    PRINT *, 'X contains zero'
ELSE 
    PRINT *, 'X does not contain zero'
ENDIF    
PRINT *, 'WID(X) = ', WID(X)
END
math% f95 -xia ce2-5.f95
math% a.out
 R =  1.0
 X =  [0.0E+0,0.0E+0]
 X contains zero
 WID(X) =  0.0E+0
math% f95 -xia -xtypemap=real:64,double:64,integer:64 ce2-5.f95 
math% a.out
 R =  0.999999999999999
 X =  [9.9920072216264088E-16,9.9920072216264089E-16]
 X does not contain zero
 WID(X) =  0.0E+0


Ãí - -xtypemap ¤Ï X ¤Î KTPV ¤Ë±Æ¶Á¤òµÚ¤Ü¤·¤Þ¤»¤ó¤¬¡¢X ¤ÎÃͤˤϱƶÁ¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

Äê¿ô¼°

¶è´Ö¤ÎÄê¿ô¼°¤Ï¡¢Ç¤°Õ¤ÎÅÀÄê¿ô¼°¹½À®Í×ÁǤÀ¤±¤Ç¤Ê¤¯¡¢¶è´Ö¤Î¥ê¥Æ¥é¥ë¤È̾Á°ÉÕ¤­Äê¿ô¤ò´Þ¤à¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢³Æ¥ª¥Ú¥é¥ó¥É¤Þ¤¿¤Ï°ú¿ô¤Ï¤½¤ì¼«ÂΤ¬¡¢Â¾¤ÎÄê¿ô¼°¡¢Äê¿ô¡¢Ì¾Á°ÉÕ¤­Äê¿ô¡¢¤¢¤ë¤¤¤Ï¡¢Äê¿ô°ú¿ô¤ò»È¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¤¿ÁȤ߹þ¤ß´Ø¿ô¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-6   Äê¿ô¼°

math% cat ce2-6.f95
INTERVAL :: P, Q
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
P = SIN([1.23])+[3.45]/[9, 11.12]

 
! Åù²Á¤Ê¸·Ì©¥³¡¼¥É
Q = SIN([1.23_8])+[3.45_8]/[9.0_8, 11.12_8]
IF(P .SEQ. Q) PRINT *, 'Check'
END
math% f95 -xia ce2-6.f95
math% a.out
 Check


Ãí - ºÇÂçÉýÍ׵ἰ¤Î¤â¤È¤Ç¤Ï¡¢¶è´ÖÄê¿ô¤Î KTPV ¤Ï¶è´Ö¤Îʸ̮¤Ë´ð¤Å¤­·èÄꤵ¤ì¤Þ¤¹¡£¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥Ç¥Õ¥©¥ë¥È¤Î¼ïÊÌ·¿¥Ñ¥é¥á¡¼¥¿ÃÍ (KTPV)¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¶è´ÖÄê¿ô¤Î»ÈÍѤ¬µö²Ä¤µ¤ì¤ë¾ì¹ç¤Ï¡¢¾ï¤Ë¶è´ÖÄê¿ô¼°¤¬»ÈÍѤǤ­¤Þ¤¹¡£

ÁȤ߹þ¤ß±é»»»Ò

ɽ 2-3 ¤Ï¡¢¶è´Ö±é»»¤Ç»ÈÍѤǤ­¤ëÁȤ߹þ¤ß±é»»»Ò¤ò°ìÍ÷¤Ë¤·¤¿¤â¤Î¤Ç¤¹¡£É½ 2-3 ¤Ç¤Ï¡¢X ¤È Y ¤Ï¶è´Ö¤òɽ¤·¤Þ¤¹¡£

ɽ 2-3   ÁȤ߹þ¤ß±é»»»Ò
±é»»»Ò ±é»» ¼° °ÕÌ£
** ¤Ù¤­¾è X**Y X ¤òINTERVAL Y ¾è¤¹¤ë


X**N X ¤òINTEGER N ¾è¤¹¤ë (Ãíµ­1¤ò»²¾È)
* ¾è»» X*Y X ¤È Y ¤ò¾è¤º¤ë
/ ½ü»» X/Y X ¤ò Y ¤Ç½ü¤¹¤ë
+ ²Ã»» X+Y X ¤È Y ¤ò²Ã»»¤¹¤ë
+ Ʊ°ì +X (Éä¹æ¤Ê¤·) X ¤ÈƱ¤¸
- ¸º»» X-Y X ¤«¤é Y ¤ò¸º¤º¤ë
- ¿ôÃÍÈÝÄê -X X ¤òÈÝÄꤹ¤ë
.IH. INTERVALÊñ X.IH.Y X ¤È Y ¤Î¶è´ÖÊñ
.IX. Àѽ¸¹ç X.IX.Y X ¤È Y ¤ÎÀѽ¸¹ç
(1) N ¤¬À°¿ô¼°¤Ç¤¢¤ì¤Ð¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Ë¤è¤êÊñ´Þ¤Î¥¨¥é¡¼½¤Àµ¤¬È¯À¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï f95 ¤Î¶è´Ö¥µ¥Ý¡¼¥È¤ÎºÇ½é¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¥¨¥é¡¼½¤Àµ¤Ç¤­¤Ê¤¤´ûÃΤΥ¨¥é¡¼¤Ç¤¹¡£¤³¤Î¥¨¥é¡¼¤¬½¤Àµ¤µ¤ì¤ë¤Þ¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤ÎÀÕǤ¤ÇÀ°¿ô¤Î¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤òËɻߤ·¤Æ¤¯¤À¤µ¤¤¡£¤µ¤é¤Ë¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÀ°¿ô¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


±é»»»Ò¤ÎÍ¥Àè½ç°Ì¡§

¶è´Ö ** ±é»»»Ò¤ÈÀ°¿ô»Ø¿ô¤òÊ̤ˤ¹¤ì¤Ð¡¢¶è´Ö±é»»»Ò¤ÏƱ¤¸ KIND ·¿¤Î¥Ñ¥é¥á¡¼¥¿Ãͤò»ý¤Ä 2 ¤Ä¤Î¶è´Ö¥ª¥Ú¥é¥ó¥É¤Ë¤À¤±Å¬ÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¶è´Ö±é»»»Ò¤Î·ë²Ì¤Î·¿¤È KTPV ¤Ï¤½¤Î¥ª¥Ú¥é¥ó¥É¤Î·¿ KTPV ¤ÈƱ¤¸¤Ç¤¹¡£

¶è´Ö ** ±é»»»Ò¤ÎÂè 2 ¥ª¥Ú¥é¥ó¥É¤¬À°¿ô¤Ç¤¢¤ì¤Ð¡¢Âè 1 ¥ª¥Ú¥é¥ó¥É¤ÏǤ°Õ¤Î¶è´Ö KTPV ¤È¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢·ë²Ì¤ÏÂè 1 ¥ª¥Ú¥é¥ó¥É¤Î·¿¤È KTPV ¤ò»ý¤Á¤Þ¤¹¡£

¤¤¤¯¤Ä¤«¤Î¶è´Ö¸ÄÊ̱黻»Ò¤ÏÅÀ (Èó¶è´Ö) Íѱ黻»Ò¤¬¤¢¤ê¤Þ¤»¤ó¡£É½ 2-4 ¤Ç¼¨¤¹¤è¤¦¤Ë¡¢¤³¤ì¤é¤Î±é»»»Ò¤Ï¡Öset¡×¡¢¡Öcertainly¡×¡¢¡Öpossibly¡×¤Î 3 ¤Ä¤Î¥°¥ë¡¼¥×¤Ë¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Î¸ÇÍ­¤Î½¸¹ç±é»»»Ò¤Ï¡Öcertainly¡×¤Þ¤¿¤Ï¡Öpossibly¡×¤ÎÁêÅö¤¹¤ë±é»»»Ò¤¬¤¢¤ê¤Þ¤»¤ó¡£

ɽ 2-4   ÁȤ߹þ¤ß¶è´Ö´Ø·¸±é»»»Ò
set ´Ø·¸±é»»»Ò
.SP.
.PSP
.SB.
.PSB.
.IN.
.DJ.

.EQ.
(== ¤ÈƱÍÍ)
.NEQ.
(/= ¤ÈƱÍÍ)





.SEQ.
.SNE.
.SLT.
.SLE.
.SGT.
.SGE.
certainly ´Ø·¸±é»»»Ò
.CEQ.
.CNE.
.CLT.
.CLE.
.CGT.
.CGE.
possibly ´Ø·¸±é»»»Ò
.PEQ.
.PNE.
.PLT.
.PLE.
.PGT.
.PGE.


ÁȤ߹þ¤ß¶è´Ö´Ø·¸±é»»»Ò¤ÎÀè¹Ô¥ª¥Ú¥é¥ó¥É¤Ï REAL ´Ø·¸±é»»»Ò¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£

.IN. ±é»»»Ò¤ò½ü¤­¡¢ÁȤ߹þ¤ß¶è´Ö´Ø·¸±é»»»Ò¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä 2 ¤Ä¤Î¶è´Ö¥ª¥Ú¥é¥ó¥É¤Ë¤À¤±Å¬ÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

.IN. ±é»»»Ò¤ÎÂè 1 ¥ª¥Ú¥é¥ó¥É¤ÏǤ°Õ¤Î INTEGER ·¿¤Þ¤¿¤Ï REAL ·¿¤Ç¤¹¡£Âè 2 ¥ª¥Ú¥é¥ó¥É¤Ë¤ÏǤ°Õ¤Î¶è´Ö KTPV ¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¶è´Ö´Ø·¸¼°¤Î·ë²Ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Î LOGICAL ¼ïÎà·¿¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Á¤Þ¤¹¡£

»»½Ñ±é»»»Ò +¡¢-¡¢*¡¢/

Í­¸Â¤Î REAL ¶è´Ö¤Ë´Ø¤¹¤ë¶è´Ö±é»»¤Î½ªÎ»ÅÀ¤Î·×»»¸ø¼°¤Ï¡¢¤¹¤Ù¤Æ¤Î²ÄǽÀ­¤Î¤¢¤ëÅÀ·ë²Ì¤Î½¸¹ç¤ò´Þ¤à¤³¤È¤¬Êݾڤµ¤ì¤¿ºÇ¤â¶¹¤¤¶è´Ö¤òÀ¸À®¤¹¤ëɬÍ×À­¤«¤é¤â¤¿¤é¤µ¤ì¤Þ¤·¤¿¡£Ramon Moore ¤Ï¡¢¤³¤ì¤é¤Î¸ø¼°¤ò¤è¤ê½ÅÍפʰÕÌ£¤ÇÆȼ«¤Ë³«È¯¤·¡¢¤Þ¤¿¶è´Ö±é»»¤Ø¤ÎŬÍѤËɬÍפÊʬÀϤò¤Ï¤¸¤á¤Æ³«È¯¤·¤Þ¤·¤¿¡£¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢R. Moore Ãø¡ØInterval Analysis¡Ù¡¢Prentice-Hall (1966ǯ) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¤¹¤Ù¤Æ¤Î²Äǽ¤ÊÃͤν¸¹ç¤Ï¡¢¥ª¥Ú¥é¥ó¥É¶è´Ö¤ÎǤ°Õ¤ÎÍ×ÁǤ˴ؤ¹¤ë±é»»²ÝÂê¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤è¤êÆȼ«¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢ ¤ò»ý¤Ä½êÍ¿¤ÎÍ­¸Â¶è´Ö [a,b] ¤È [c,d] ¤Ï¡¢¥¼¥í¤Ë¤è¤ë½ü»»¤ò½ü³°¤¹¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¤³¤Î¸ø¼°¤Þ¤¿¤ÏÏÀÍýŪ¤ËƱ¤¸¤â¤Î¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

À¸À®¤µ¤ì¤ë¶è´Ö¤Ë¤¹¤Ù¤Æ¤Î²Äǽ¤ÊÃͤν¸¹ç¤¬´Þ¤Þ¤ì¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤Ë¡¢Í­¸ÂÀºÅ٤λ»½Ñ¤ò»È¤Ã¤¿·×»»¤Ç¤ÏÍ­¸þ¤Î´Ý¤á¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£

Ǥ°Õ¤Î¶è´Ö¤Î·ë²Ì¤¬´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤Ãͤν¸¹ç¤Ï¡¢·ë²Ì¤òÀ¸À®¤¹¤ë±é»»¤Þ¤¿¤Ï¼°¤ÎÊñ´Þ½¸¹ç¤È¸Æ¤Ð¤ì¤Þ¤¹¡£

Êñ´Þ½¸¹ç¤Ï¡¢(̵¸Â¤Î½ªÎ»ÅÀ¤ò»ý¤Ä) ³ÈÄ¥¶è´Ö¤È¥¼¥í¤Ë¤è¤ë½ü»»¤ò´Þ¤à¤¿¤á¤Ë¡¢¼ÂÃͤ˴ؤ¹¤ë»»½Ñ±é»»¤ÎÃͤˡ¢Ä¾Àܰ͸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£³ÈÄ¥¶è´ÖÍѤÎÊñ´Þ½¸¹ç¤Ë¤Ï¡¢Ä̾ï¤Ê¤é̤ÄêµÁ¤ÎÅÀ¤Ë´Ø¤¹¤ë±é»»Í׷郎²Ý¤»¤é¤ì¤Þ¤¹¡£Ì¤ÄêµÁ¤Î±é»»¤Ë¤ÏÉÔÄê·Á¼° ¡¢ ¡¢ ¡¢ ¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

Êñ´Þ½¸¹ç¤ÎÊÄÊññ°Ì¤Ï¡¢Æðۤʤޤ¿¤ÏÉÔÄê¤ÊÅÀ¤Ç¤Î¼°¤ÎÊñ´Þ½¸¹ç¤ÎÃͤμ±Ê̤ÎÌäÂê¤ò²ò·è¤·¤Þ¤¹¡£¤³¤Îñ°Ì¤ÏÊñ´Þ½¸¹ç¤¬ÊÄÊñ¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ÊÑ°è¤Î¶­³¦¾å¤ÎÅÀ¤Ç¤Î´Ø¿ô¤ÎÊÄÊñ¤Ï¡¢¤¹¤Ù¤Æ¤Î½¸ÀÑÅÀ (limit point ¤Þ¤¿¤Ï accumulation point) ¤ò´Þ¤ß¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÍѸì¡×¤È ¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤¿Êä­ʸ¸¥ [1]¡¢[3]¡¢[10]¡¢[11] ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

µ­¹æɽ¸½¤Ç¤Ï¡¢cset(x op y, {(x0, y0)}) = ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢ ¤Ï op ±é»»¤ÎÊÄÊñ¤òɽ¤·¡¢{x0} ¤Ï 1 ¤Ä¤ÎÍ×ÁÇ x0 ¤À¤±¤ò»ý¤Äñ½¸¹ç¤òɽ¤·¤Þ¤¹¡£²¼ÉÕ¤­Ê¸»ú¤Î 0 ¤Ï¡¢ÊÑ¿ô x ¤ÎÆðۤÊÃÍ x0 ¤ÈÊÑ¿ô¼«ÂΤòµ­¹æŪ¤Ë¶èÊ̤¹¤ë¤Î¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢x0 = 1¡¢op =3 ÷¡¢y0 = 0¤ò»È¤¦¤È¡¢x0³3 ÷ y0 ¤Ï̤ÄêµÁ¤È¤Ê¤ê¤Þ¤¹¤¬¡¢ÊÄÊñ¤Ï¡¢ ¤È¤Ê¤ê¤Þ¤¹¡£

¤³¤Î·ë²Ì¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¸Â³¦¤ò»ý¤Ä¡¢

¼¡¤Î¤É¤Á¤é¤«¤Î¥·¡¼¥±¥ó¥¹¤ò»È¤Ã¤Æ¼èÆÀ¤Ç¤­¤Þ¤¹¡£

¡¢¤Þ¤¿¤Ï¡¢

¤³¤Î 2 ¤Ä¤Î¥·¡¼¥±¥ó¥¹¤ò»È¤¦¤È¡¢x0 = 1¡¢y0 = 0 ¤Ç¤Î½ü»»±é»»»Ò¤ÎÊÄÊñ¤Ç¤¢¤ë¾åµ­{yj}¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

°Ê²¼¤Îɽ 2-5 ¤«¤éɽ 2-9 ¤Þ¤Ç¤Îɽ¤Ï 4 ¤Ä¤Î´ðËÜ»»½Ñ±é»»»ÒÍѤÎÊñ´Þ½¸¹ç¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-5   ²Ã»»ÍѤÎÊñ´Þ½¸¹ç¡§cset(x +y, {(x0, y0)})
cset(x + y, {(x0, y0)}) {-} {real: y0} {+}
{-} {-} {-}
{real: x0} {-} {x0 + y0} {+}
{+} {+} {+}


ɽ 2-6   ¸º»»ÍѤÎÊñ´Þ½¸¹ç¡§cset(x - y, {(x0, y0)})
cset(x - y, {(x0, y0)}) {-} {real: y0} {+}
{-} {-} {-}
{real: x0} {+} {x0 - y0} {-}
{+} {+} {+}


ɽ 2-7   ¾è»»ÍѤÎÊñ´Þ½¸¹ç¡§cset(x × y, {(x0, y0)})
cset(x × y, {(x0, y0)}) {-} {real: y0 < 0} {0} {real: y0 > 0} {+}
{-} {+} {+} {-} {-}
{real: x0 < 0} {+} {x × y} {0} {x × y} {-}
{0} {0} {0} {0}
{real: x0 > 0} {-} x × y {0} x × y {+}
{+} {-} {-} {+} {+}


ɽ 2-8   ½ü»»ÍѤÎÊñ´Þ½¸¹ç¡§cset(x ÷ y, {(x0, y0)})
cset(x ÷ y, {(x0, y0)}) {-} {real: y0 < 0} {0} {real: y0 > 0} {+}
{-} [0, +] {+} {-, +} {-} [-, 0]
{real: x0 0} {0} {x ÷ y} {-, +} {x ÷ y} {0}
{0} {0} {0} {0} {0}
{+} [-, 0] {-} {-, +} {+} [0, +]


ɽ¤ÎÃæ¤Î¤¹¤Ù¤Æ¤ÎÆþÎϤÏñ½¸¹ç¤È¤·¤Æ¼¨¤·¤Æ¤¤¤Þ¤¹¡£·ë²Ì¤Ï¡¢Ã±½¸¹ç¡¢½¸¹ç¡¢¤Þ¤¿¤Ï¡¢¶è´Ö¤È¤·¤Æ¼¨¤·¤Æ¤¤¤Þ¤¹¡£¤¢¤¤¤Þ¤¤¤µ¤òÈò¤±¤ë¤¿¤á¡¢¤¿¤È¤¨¤Ð¡¢ ¡¢ ¡¢ ¤Î¤è¤¦¤Ê´·¹Ô¤Îɽµ­¤òÍѤ¤¤Æ¤¤¤Þ¤»¤ó¡£¤³¤ì¤é¤Îɽ¤Ï¡¢³Æ±é»»¤Ø¤Îñ½¸¹çÆþÎϤËÂФ¹¤ë·ë²Ì¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£°ìÈ̽¸¹ç (¤Þ¤¿¤Ï¶è´Ö) ¤ÎÆþÎϤËÂФ¹¤ë·ë²Ì¤Ï¡¢ÆþÎϽ¸¹ç (¤Þ¤¿¤Ï¶è´Ö) ¤ÎÈϰϤˤޤ¿¤¬¤ëñ°ìÅÀ·ë²Ì¤Î¹çƱ¤Ç¤¹¡£

1 ¤Ä¤Î¥±¡¼¥¹¤È¤·¤Æ¡¢¥¼¥í¤Ë¤è¤ë½ü»»¤Ç¤Ï¡¢·ë²Ì¤Ï¶è´Ö¤Ç¤Ê¤¯¡¢½¸¹ç ¤Ç¤¹¡£¤³¤Î¾ì¹ç¡¢¶è´Ö»»½Ñ¤ÎÊñ´Þ¤ÎÀ©Ìó¤ËÈ¿¤·¤Ê¤¤¸½ºß¤Î¥·¥¹¥Æ¥à¤Ç¤ÎºÇ¤â¶¹¤¤¶è´Ö¤Ï¡¢¶è´Ö ¤È¤Ê¤ê¤Þ¤¹¡£

Éä¹æ¤ÎÊѹ¹¤Ï´üÂԤȤª¤ê¤Î·ë²Ì¤òÀ¸À®¤·¤Þ¤¹¡£

¤³¤ì¤é¤Î·ë²Ì¤ò¶è´Ö½ªÎ»ÅÀ¤Î·×»»ÍѤθø¼°¤ËÁȤ߹þ¤à¤¿¤á¤ËɬÍפʤΤϡ¢Æ±Íͤ˴ݤáÊý¸þ¤ËÉä¹æ²½¤µ¤ì¤ëɬÍפʽªÎ»ÅÀ¤ò¼±Ê̤¹¤ë¤³¤È¤À¤±¤Ç¤¹¡£ ¤ò»È¤Ã¤Æ (- ¤ËÂФ¹¤ë) ´Ý¤áÀڤ겼¤²¤òɽ¤·¡¢ ¤ò»È¤Ã¤Æ (+¤ËÂФ¹¤ë) ´Ý¤áÀÚ¤ê¾å¤²¤òɽ¤¹¤È¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

and
and

ƱÍͤˡ¢ ¤Ê¤Î¤Ç¡¢

and

¤È¤Ê¤ê¤Þ¤¹¡£

ºÇ¸å¤Ë¡¢Fortran ¤Ç¤Ï¶õ¤Î¶è´Ö¤Ïʸ»úÎó [empty] ¤Çɽ¤µ¤ì¡¢½¸¹çÂå¿ô¤Î ¤Çɽ¤µ¤ì¤ë¶õ¤Î½¸¹ç¤ÈƱ¤¸ÆÃÀ­¤ò»ý¤Á¤Þ¤¹¡£¶õ¤Î¶è´Ö¤Ë´Ø¤¹¤ëǤ°Õ¤Î»»½Ñ±é»»¤Ï¶õ¤Î¶è´Ö·ë²Ì¤òÀ¸À®¤·¤Þ¤¹¡£¶õ¤Î¶è´ÖÍÑË¡¤ÎÄɲþðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤¿Êä­ʸ¸¥ [6]¡¢[7] ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

f95 ¤Ï¡¢¤³¤ì¤é¤Î·ë²Ì¤òÍѤ¤¤Æ¡¢ÊĤ¸¤¿¶è´Ö¥·¥¹¥Æ¥à¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î»»½Ñ±é»»¤È´Ø¿ô¤Ï¾ï¤ËÍ­¸ú¤Ê¶è´Ö·ë²Ì¤òÀ¸À®¤·¤Þ¤¹¤«¤é¡¢¥·¥¹¥Æ¥à¤ÏÊĤ¸¤Æ¤¤¤Þ¤¹¡£¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤¿Êä­ʸ¸¥ [2]¡¢[8] ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¤Ù¤­¾è±é»»»Ò X**N ¤È X**Y

¤Ù¤­¾è±é»»»Ò¤ÏÀ°¿ô»Ø¿ô (X**N) ¤È¶¦¤Ë»È¤¦¤³¤È¤â¡¢Ï¢Â³¤¹¤ë»Ø¿ô (X**Y) ¤È¶¦¤Ë»È¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤Ù¤­¾è±é»»»Ò¤ÏϢ³¤¹¤ë»Ø¿ô¤È¶¦¤ËÍѤ¤¤ë¤È¡¢4 ¤Ä¤Î»»½Ñ±é»»»Ò¤ËÎà»÷¤·¤¿ÉÔÄê¤Î·Á¼°¤ò»ý¤Á¤Þ¤¹¡£

À°¿ô»Ø¿ô¤Î¥±¡¼¥¹¤Ç¤Ï¡¢ ¤Î°Ï¤ß¤¬´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤¹¤Ù¤Æ¤ÎÃͤν¸¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

ñĴÀ­¤Ï¡¢À°¿ô¤Ù¤­¾è´Ø¿ô¤Î±Ô¤¤¶è´Ö¤Î°Ï¤ß¤ò¹½ÃÛ¤¹¤ë¤Î¤Ë»ÈÍѤǤ­¤Þ¤¹¡£n = 0 ¤Ç¤¢¤ì¤Ð¡¢¤¹¤Ù¤Æ¤Î ¤Ë¤Ä¤¤¤Æ¡¢cset(xn, {x0}) = 1 ¤Ç¤¢¤ê¡¢¤Þ¤¿¡¢¤¹¤Ù¤Æ¤Î N ¤Ë¤Ä¤¤¤Æ¡¢[empty]**N = [empty]¤È¤Ê¤ê¤Þ¤¹¡£

Ϣ³¤¹¤ë»Ø¿ô¤Î¥±¡¼¥¹¤Ç¤Ï¡¢ ¤Î¶è´Ö¤Î°Ï¤ß¤¬´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤¹¤Ù¤Æ¤ÎÃͤν¸¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¤³¤³¤Ç¤Ï¡¢ ¤Ï¡¢¼° ¤ÎÊñ´Þ½¸¹ç¤Ç¤¹¡£´Ø¿ô ¤Ï¡¢ ¤ÎÃͤÀ¤±¤ò¹Íθ¤¹¤ëɬÍפΤ¢¤ë¤³¤È¤òÌÀ¼¨¤·¡¢¤³¤ì¤Ï¡¢Fortran ¤Ç¤Î REAL °ú¿ô¤ò»ý¤Ä X**Y ¤ÎÄêµÁ¤È°ì´ÓÀ­¤¬¤¢¤ê¤Þ¤¹¡£

¶è´Ö°ú¿ô¤¬¶õ¤Ç¤¢¤ë¤«¡¢¤Þ¤¿¤Ï¡¢x < 0¤Ç¤¢¤ì¤Ð¡¢¤³¤Î·ë²Ì¤Ï¶õ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢Fortran ¤Ç¤Î X**Y ¤ÎÅÀ¥Ð¡¼¥¸¥ç¥ó¤È°ì´ÓÀ­¤¬¤¢¤ê¤Þ¤¹¡£

ɽ 2-9 ¤Ï¡¢cset(exp(yln (x)), {(y0, x0)}) ¤Î¤¹¤Ù¤Æ¤ÎÆðÛÅÀ¤ÈÉÔÄê·Á¼°¤Ë¤Ä¤¤¤Æ¤ÎÆâÉôŪ¤Ê½¸¹ç¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-9   cset(exp(yln(x)), {(y0, x0)})
x0 y0 cset(exp(yln(x)), {(y0, x0))}
0 y0 < 0 +
1 - [0,+]
1 + [0,+]
+ 0 [0,+]
0 0 [0,+]


ɽ 2-9 ¤Î·ë²Ì¤Ï¡¢°Ê²¼¤Î 2 ¤Ä¤ÎÊýË¡¤Çµá¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤Û¤È¤ó¤É¤Î¹çÀ®¤Ç¤Ï¡¢2 ¤ÄÌܤΥª¥×¥·¥ç¥ó¤ò»È¤¦Êý¤¬´Êñ¤Ç¤¹¡£½½Ê¬¤Ê¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤Ê¤¤¾ì¹ç¡¢¹çÀ®¤Î°Ï¤ß¤Ï¤½¤ÎÊñÊĤιçÀ®¤«¤é·×»»¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢³Æ²¼°Ì¼°¤ÎÊñÊĤò»È¤Ã¤Æ¼°Á´ÂΤÎÊñÊĤò·×»»¤·¤Þ¤¹¡£Â¸ºß¤¹¤ë¥±¡¼¥¹¤Ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

cset(exp(yln(x)), {x0, y0}) =

¾ï¤Ë¤¢¤Æ¤Ï¤Þ¤ë¥±¡¼¥¹¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

cset(exp(yln(x)), {x0, y0})

¤³¤ì¤Ï¶è´Ö±é»»¤¬¶è´Ö¤Ë¤É¤Î¤è¤¦¤Ëµ¡Ç½¤¹¤ë¤«Àµ³Î¤Ëɽ¤·¤Æ¤¤¤ë¤È¤¤¤¦ÅÀ¤Ëα°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ln ¤Èexp ´Ø¿ô¤ËɬÍפÊÊñÊĤϰʲ¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

ÊñÊĹçÀ®¤ÎÅù¼°¤ËɬÍפʾò·ï¤Ï¡¢¼°¤¬Ã±°ìÍÑÅÓ¼° (SUE = single-use expression) ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢³ÆÆÈΩÊÑ¿ô¤Ï¼°¤ÎÃæ¤Ç 1 ²ó¤À¤±¸½¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

¸ºß¤¹¤ë¥±¡¼¥¹¤Ç¤Ï¡¢¼°¤ÏÌÀ¤é¤«¤Ë 1 ¤Ä¤Î SUE ¤È¤Ê¤ê¤Þ¤¹¡£

ɽ 2-9 ¤Î¹àÌܤϡ¢ln ¤Èexp ´Ø¿ô¤ÎÊñÊĤ˴ؤ¹¤ëɽ 2-7 ¤Ç¤Î´ðËܾ軻¤ÎÊñ´Þ½¸¹çÍÑË¡¤ÎľÀܤηë²Ì¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢x0 = 1 ¤È y0 = - ¤ò»È¤¦¤È¡¢ln(x0) = 0 ¤È¤Ê¤ê¤Þ¤¹¡£É½ 2-7 ¤Ç¤ÎÃÍ - ¤È0 ¤Ë´Ø¤¹¤ë¾è»»¤ÎÊñÊĤˤĤ¤¤Æ¡¢·ë²Ì¤Ï [-, +] ¤È¤Ê¤ê¤Þ¤¹¡£ºÇ¸å¤Ë¡¢É½ 2-9 ¤Ç¤Î 2 ÈÖÌܤιàÌܤϡ¢exp([-, +])= [0, +] ¤È¤Ê¤ê¤Þ¤¹¡£»Ä¤ê¤Î¹àÌܤâƱ¤¸¥¹¥Æ¥Ã¥×¤ò»È¤Ã¤Æ¼èÆÀ¤Ç¤­¤Þ¤¹¡£exp(y ln(x)) ¤ÎÊñ´Þ½¸¹ç¤«¤éľÀÜƳ¤¯¤³¤È¤Ç¡¢¤³¤ì¤é¤ÈƱ¤¸·ë²Ì¤¬ÆÀ¤é¤ì¤Þ¤¹¡£º£Å٤ϡ¢Ç¤°Õ¤Î¼°¤ÎÊñÊĹçÀ®Åù¼°¤Î½½Ê¬¤Ê¾ò·ï¤¬ÌÀ¤é¤«¤Ë¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤·¤«¤·¡¢¤½¤ì¤Ç¤â°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

½¸¹çÍýÏÀ±é»»»Ò

f95 ¤Ï°Ê²¼¤Î¤è¤¦¤Ê¡¢2 ¤Ä¤Î¶è´Ö¤Î¶è´ÖÊñ¤ÈÀѽ¸¹ç¤òȽÄꤹ¤ë¤¿¤á¤Î½¸¹çÍýÏÀ±é»»»Ò¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£

Êñ¡§ X Y¡¢¤Þ¤¿¤Ï (X.IH.Y)

²òÀ⡧ 2 ¤Ä¤Î¶è´Ö¤Î¶è´ÖÊñ¤Ç¤¹¡£¶è´ÖÊñ¤Ï¥ª¥Ú¥é¥ó¥É¶è´Ö¤Î¤¹¤Ù¤Æ¤ÎÍ×ÁǤò´Þ¤àºÇ¾®¤Î¶è´Ö¤Ç¤¹¡£

¿ô³ØÄêµÁ¡§


°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ X ¤ÈƱ¤¸¤Ç¤¹¡£

Àѽ¸¹ç¡§ X Y¡¢¤Þ¤¿¤Ï (X.IX.Y)

²òÀ⡧ 2 ¤Ä¤Î¶è´Ö¤ÎÀѽ¸¹ç¤Ç¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§


°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸KTPV¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ X ¤ÈƱ¤¸¤Ç¤¹¡£

½¸¹ç¤Î´Ø·¸

f95 ¤Ï¶è´Ö¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë³ÈÄ¥¤µ¤ì¤¿²¼µ­¤Î¤è¤¦¤Ê½¸¹ç´Ø·¸±é»»»Ò¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£

ÁÇ¡§ X Y = ¡¢¤Þ¤¿¤Ï (X.DJ.Y)

²òÀ⡧ 2 ¤Ä¤Î¶è´Ö¤¬ÁǤǤ¢¤ë¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§


°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

Í×ÁÇ¡§ r Y¡¢¤Þ¤¿¤Ï (R.IN.Y)

²òÀ⡧ ¿ô R ¤¬¶è´Ö Y ¤ÎÍ×ÁǤǤ¢¤ë¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§

°ú¿ô¡§ R ¤Î·¿¤Ï INTEGER ¤Þ¤¿¤Ï REAL ¤Ç¤¢¤ê¡¢Y ¤Î·¿¤Ï INTERVAL ¤Ç¤¹¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

¼¡¤ÎÃí¼á¤Ï ½¸¹ç´Ø·¸¤Ë´Ø¤¹¤ë¤â¤Î¤Ç¤¹¡£

ÆâÉô¡§(X .INT. Y)

²òÀ⡧ X ¤¬ Y ¤ÎÆâÉô¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£

°ÌÁê¶õ´Ö¤Ç¤Î½¸¹ç¤ÎÆâÉô¤Ï¡¢¤¹¤Ù¤Æ¤Î³«¤¤¤¿Éôʬ½¸¹ç¤ÎϽ¸¹ç¤Ç¤¹¡£

¶è´Ö¤Ë¤Ä¤¤¤Æ¡¢X .INT. Y (Y ¤ÎÆâÉô¤Ë¤ª¤±¤ë X) ¤Ï X ¤¬ Y ¤Î 1 ¤Ä¤ÎÉôʬ½¸¹ç¤Ç¤¢¤ê¡¢²¼µ­¤ÎξÊý¤Î´Ø·¸¤¬ false ¤È¤Ê¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

¤Ç¤¹¤¬¡¢[empty] .INT. [empty] = true ¤Ç¤¢¤ëÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

¶õ¤Î½¸¹ç¤Ï³«¤¤¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤ì¼«ÂΤΠ1 ¤Ä¤ÎÉôʬ½¸¹ç¤È¤Ê¤ê¤Þ¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§

°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

¿¿Éôʬ½¸¹ç¡§ X Y ¤Þ¤¿¤Ï (X.PSB.Y)

²òÀ⡧ X ¤¬ Y ¤Î¿¿Éôʬ½¸¹ç¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§

°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

¿¿Ä¶½¸¹ç¡§ X Y¡¢¤Þ¤¿¤Ï (X.PSP.Y)

²òÀ⡧ ¤ò»ý¤Ä¿¿Ä¶½¸¹ç¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Éôʬ½¸¹ç¡§ X Y¡¢¤Þ¤¿¤Ï (X.SB.Y)

²òÀ⡧ X ¤¬ Y ¤ÎÉôʬ½¸¹ç¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£

»»½Ñ¤È±é»»¤ÎÄêµÁ¡§



°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

Ķ½¸¹ç¡§ X Y¡¢¤Þ¤¿¤Ï (X.SP.Y)

²òÀ⡧ ¤ò»ý¤ÄĶ½¸¹ç¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

´Ø·¸±é»»»Ò

.qop.¤Çɽ¤µ¤ì¤ëÁȤ߹þ¤ß¤Î¶è´Ö´Ø·¸±é»»»Ò¤Ï¡¢¼¡¤ÎÏ¢·ë¤Ë¤è¤ê¹½À®¤µ¤ì¤Þ¤¹¡£

.SEQ. ¤È.SNE. ¤ÎÂå¤ï¤ê¤Ë¡¢¥Ç¥Õ¥©¥ë¥È±é»»»Ò¤Î.EQ.(¤Þ¤¿¤Ï¡¢==) ¤È.NE. (¤Þ¤¿¤Ï¡¢/=) ¤¬¼õ¤±Æþ¤ì¤é¤ì¤Þ¤¹¡£¥³¡¼¥É¤Î¤¢¤¤¤Þ¤¤¤µ¤ò¼è¤ê½ü¤¯¤¿¤á¤Ë¡¢Â¾¤Î¤¹¤Ù¤Æ¤Î¶è´Ö´Ø·¸±é»»»Ò¤Ï¡¢ÀÜƬ¼­¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¤¹¤Ù¤Æ¤Î¶è´Ö´Ø·¸±é»»»Ò¤ÏƱ¤¸Í¥Àè½ç°Ì¤ò»ý¤Á¤Þ¤¹¡£»»½Ñ±é»»»Ò¤Ï´Ø·¸±é»»»Ò¤è¤ê¤â¹â¤¤Í¥Àè½ç°Ì¤ò»ý¤Á¤Þ¤¹¡£

¶è´Ö´Ø·¸¼°¤Ï 2 ¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤¬ºÇ½é¤Ëɾ²Á¤µ¤ì¡¢¤½¤Î¸å¤Ç¡¢2 ¤Ä¤Î¼°¤ÎÃͤ¬Èæ³Ó¤µ¤ì¤ë¤³¤È¤Ë¤è¤êɾ²Á¤µ¤ì¤Þ¤¹¡£»ØÄꤵ¤ì¤¿´Ø·¸¤ò»ý¤Ä¾ì¹ç¤Ï·ë²Ì¤¬ true ¤È¤Ê¤ê¡¢¤½¤ì°Ê³°¤Ï false ¤È¤Ê¤ê¤Þ¤¹¡£

ºÇÂçÉýÍ׵ἰ½èÍý¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢¶è´Ö´Ø·¸±é»»»Ò¤ÎξÊý¤Î¶è´Ö¥ª¥Ú¥é¥ó¥É¼°¤ËŬÍѤµ¤ì¤Þ¤¹¡£

¡Önop¡×¤ò±é»»»Ò op ¤ÎÊä¿ô¤È¤·¤¿¾ì¹ç¡¢¡Öcertainly¡×¤È¡Öpossibly¡×±é»»»Ò¤Ï¼¡¤Î¤è¤¦¤Ë´Ø·¸ÉÕ¤±¤é¤ì¤Þ¤¹¡£

.Cop. ¢á .NOT.(.Pnop.)
.Pop. ¢á .NOT.(.Cnop.)


Ãí°Õ - ¤³¤Î¡Öcertainly¡×¤È¡Öpossibly¡×±é»»»Ò¤Î´Ö¤ÎƱ°ìÀ­¤Ï op ¢º {EQ, NE} ¤Ç¤¢¤ì¤Ð̵¾ò·ï¤Ë¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤ÏξÊý¤Î¥ª¥Ú¥é¥ó¥É¤¬¶õ¤Î¾ì¹ç¤Ë¤À¤±À®¤êΩ¤Á¤Þ¤¹¡£µÕ¤Ë¡¢op ¢º {LT, LE, GT, GE} ¤Ç¤¢¤ê¡¢¤É¤Á¤é¤«¤Î¥ª¥Ú¥é¥ó¥É¤¬¶õ¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢Æ±°ìÀ­¤ÏÀ®¤êΩ¤Á¤Þ¤»¤ó¡£

2 ¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤Î¤É¤Á¤é¤â¶õ¤Ç¤Ê¤¤¾ì¹ç¤òÁ°Äó¤Ë¡¢É½ 2-10 ¤Ï¡¢¼¡¤Î·Á¼°¤Î¤¹¤Ù¤Æ¤Î¶è´Ö´Ø·¸±é»»»Ò¤Î Fortran ±é»»ÄêµÁ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

[x,x].qop.[y,y]

ºÇ½é¤Î·å¤ÏÀÜƬ¼­¤ÎÃͤò´Þ¤ß¡¢ºÇ½é¤Î¹Ô¤Ï±é»»»ÒÀÜÈø¼­¤ÎÃͤò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£É½¤Ë¼¨¤·¤¿¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤ë¤È·ë²Ì¤Ï true ¤È¤Ê¤ê¤Þ¤¹¡£

ɽ 2-10   ¶è´Ö½ç°Ì´Ø·¸¤Î±é»»ÄêµÁ

LT. LE. EQ. GE. GT. NE.

 
.
S
x < y
and
x < y
x  y
and
x  y
x = y
and
x = y
x  y 
and
x  y
x > y 
and
x > y
x  y
or
x  y

 
.
C

 
x < y

 
x  y
y  x
and
x  y

 
x  y

 
x > y
x > y
or
y > x

 
.
P

 
x < y

 
x  y
x  y
and
y  x

 
x  y

 
x > y
 y > x
or
x > y


¥³¡¼¥ÉÎã 2-7   ´Ø·¸±é»»»Ò

math% cat ce2-7.f95
INTERVAL :: X = [1.0, 3.0], Y = [2.0, 4.0], Z 
INTEGER  :: V = 4, W = 5
LOGICAL  :: L1, L2, L3, L4
REAL :: R

 
L1 = (X == X) .AND. (Y .SEQ. Y)
L2 = X .SLT. Y

 
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
Z  = W
L3 = W .CEQ. Z
L4 = X-Y .PLT. V-W
IF( L1 .AND. L2 .AND. L3 .AND. L4) PRINT *, 'Check1'

 
! ƱÅù¤Î¸·Ì©¥³¡¼¥É (L3 ¤È L4 ¤Ø¤ÎÂåÆþÍÑ)
L3 = INTERVAL(W, KIND=8) .CEQ. Z
L4 = X-Y  .PLT. INTERVAL(V, KIND=8)-INTERVAL(W, KIND=8)
IF(L3 .AND. L4) PRINT *, 'Check2'
END
math% f95 -xia ce2-7.f95
math% a.out
 Check1
 Check2

¥³¡¼¥ÉÎã 2-7 Ãíµ­¡§

½¸¹ç´Ø·¸±é»»»Ò

¼¡¤Î¤è¤¦¤Ê´Ø·¸¤ò»ý¤Ä¡¢2 ¤Ä¤ÎÅÀ x ¤È y ´Ö¤Î¡ÖÃÇÄêŪ¤Ê¡×½ç°Ì´Ø·¸¤Ë¤Ä¤¤¤Æ¡¢

op Î {LT, LE, EQ, GE, GT} and

Âбþ¤¹¤ë 2 ¤Ä¤Î¶õ¤Ç¤Ê¤¤¶è´Ö X ¤È Y ´Ö¤Î¡Ö½¸¹ç¤Î´Ø·¸¡×.Sop.¤Î¿ô³ØÄêµÁ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

x ¤È y ¤Î 2 ÅÀ´Ö¤Î´Ø·¸ ¤Ë¤Ä¤¤¤Æ¡¢Âбþ¤¹¤ë 2 ¤Ä¤Î¶õ¤Ç¤Ê¤¤¶è´Ö X ¤È Y ´Ö¤Î¡Ö½¸¹ç¤Î´Ø·¸¡×.SNE.¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¶õ¤Î¶è´Ö¤Ï¡¢¸å³¤Î³Æ´Ø·¸¤ÎÃæ¤ÇÌÀ¼¨Åª¤Ë¹Í褵¤ì¤Þ¤¹¡£¤É¤Î¾ì¹ç¤â¼¡¤Î·¿µ¬Â§¤Ë½¾¤¤¤Þ¤¹¡£

°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

¡ÖCertainly¡×(ÃÇÄêŪ¤Ê) ´Ø·¸±é»»»Ò

¡ÖÃÇÄêŪ¤Ê¡×´Ø·¸±é»»»Ò¤Ï¡¢¥ª¥Ú¥é¥ó¥É¶è´Ö¤Î¤¹¤Ù¤Æ¤ÎÍ×ÁǤˤĤ¤¤ÆÁ°Äó¤È¤Ê¤ë´Ø·¸¤¬ true ¤Ç¤¢¤ì¤Ð¡¢true ¤È¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤¹¤Ù¤Æ¤Î ¤È ¤Ë¤Ä¤¤¤Æ¡¢x < y ¤Ç¤¢¤ì¤Ð¡¢[a,b] .CLT. [c,d]¤Ï true ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢b < c ¤ÈƱ¤¸¤Ç¤¹¡£

¼¡¤Î¤è¤¦¤Ê´Ø·¸¤ò»ý¤Ä¡¢2 ¤Ä¤ÎÅÀ x ¤È y ´Ö¤Î¡ÖÃÇÄêŪ¤Ê¡×½ç°Ì´Ø·¸¤Ë¤Ä¤¤¤Æ¡¢

op Î {LT, LE, EQ, GE, GT} and

Âбþ¤¹¤ë 2 ¤Ä¤Î¶è´Ö X ¤È Y ´Ö¤Î¡ÖÃÇÄêŪ¤Ê¡×true ¤Î´Ø·¸.Cop.¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

ÈÝÄêŪ¤Ê¡¢¡ÖÃÇÄêŪ¤Ë¡×Åù¤·¤¯¤Ê¤¤´Ø·¸¤ò½ü¤¤¤Æ¡¢¡ÖÃÇÄêŪ¤Ê¡×´Ø·¸¤Î¤É¤Á¤é¤«¤Î¥ª¥Ú¥é¥ó¥É¤¬¶õ¤Ç¤¢¤ì¤Ð¡¢¤½¤Î·ë²Ì¤Ï false ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î 1 ¤Ä¤ÎÎã³°¤Ç¤¢¤ë¡ÖÃÇÄêŪ¤Ë¡×Åù¤·¤¯¤Ê¤¤´Ø·¸ .CNE. ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë true ¤È¤Ê¤ê¤Þ¤¹¡£

¤½¤ì¤¾¤ì¤Î¡ÖÃÇÄêŪ¤Ê¡×´Ø·¸±é»»»Ò¤Ç¤Ï¡¢¼¡¤Î·¿µ¬Â§¤Ë½¾¤¤¤Þ¤¹¡£

°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

¡ÖPossibly¡×(²ÄǽÀ­¤Î¤¢¤ë) ´Ø·¸±é»»»Ò

¡Ö²ÄǽÀ­¤Î¤¢¤ë¡×´Ø·¸±é»»»Ò¤Ï¡¢¥ª¥Ú¥é¥ó¥É¶è´Ö¤ÎǤ°Õ¤ÎÍ×ÁǤ¬Á°Äó¤È¤Ê¤ë´Ø·¸¤òËþ¤¿¤»¤Ð¡¢true ¤È¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢x < y ¤Ç¤¢¤ë¤è¤¦¤Ê¡¢ ¤È ¤¬Â¸ºß¤¹¤ì¤Ð¡¢[a,b] .PLT. [c,d]¤Ï true ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢a < d ¤ÈƱ¤¸¤Ç¤¹¡£

¼¡¤Î¤è¤¦¤Ê´Ø·¸¤ò»ý¤Ä¡¢2 ¤Ä¤ÎÅÀ x ¤È y ´Ö¤Î¡Ö¹ÎÄêŪ¤Ê¡×½ç°Ì´Ø·¸¤Ë¤Ä¤¤¤Æ¡¢

op Î {LT, LE, EQ, GE, GT} and

Âбþ¤¹¤ë 2 ¤Ä¤Î¶è´Ö X ¤È Y ´Ö¤Î¡Ö²ÄǽÀ­¤Î¤¢¤ë¡×true ¤Î´Ø·¸ .Pop. ¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£

¶õ¤Î¶è´Ö¤¬¡Ö²ÄǽÀ­¤Î¤¢¤ë¡×´Ø·¸¤Î¥ª¥Ú¥é¥ó¥É¤Ç¤¢¤ì¤Ð¡¢·ë²Ì¤Ï false ¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î 1 ¤Ä¤ÎÎã³°¤Ç¤¢¤ë¡¢ÈÝÄêŪ¤Ê¡Ö²ÄǽÀ­¤Î¤¢¤ë¡×Åù¤·¤¯¤Ê¤¤´Ø·¸ .PNE. ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë true ¤È¤Ê¤ê¤Þ¤¹¡£

¤½¤ì¤¾¤ì¤Î¡Ö²ÄǽÀ­¤Î¤¢¤ë¡×´Ø·¸±é»»»Ò¤Ç¤Ï¡¢°Ê²¼¤Î·¿µ¬Â§¤Ë½¾¤¤¤Þ¤¹¡£

°ú¿ô¡§ X ¤È Y ¤Ï¡¢Æ±¤¸ KTPV ¤ò»ý¤Ä¶è´Ö¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

·ë²Ì·¿¡§ ¥Ç¥Õ¥©¥ë¥È¤ÎÏÀÍý¥¹¥«¥é¡¼¤Ç¤¹¡£

ÁȤ߹þ¤ß¶è´Ö±é»»»Ò¤Î³ÈÄ¥

¥æ¡¼¥¶¡¼¤ÎÄ󶡤¹¤ë±é»»»Ò¥¤¥ó¥¿¥Õ¥§¡¼¥¹¥Ö¥í¥Ã¥¯¤Î INTERFACE ʸ¤ÎÃæ¤Ç»ØÄꤵ¤ì¤¿±é»»»Ò¤¬ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò (¤¿¤È¤¨¤Ð .IH.) ¤Ç¤¢¤ë¾ì¹ç¡¢ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò¤Î 1 ¤Ä¤Î³ÈÄ¥¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£

ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò¤ò³ÈÄ¥¤¹¤ë¥æ¡¼¥¶¡¼¤¬Ä󶡤¹¤ë±é»»»Ò´Ø¿ô¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤Î¥Ç¡¼¥¿·¿¤Ë¤Ä¤¤¤Æ¤½¤Î±é»»»Ò¤¬»öÁ°ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢³ÈÄ¥¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

°Ê²¼¤Î¥ê¥¹¥È¤Î¤è¤¦¤Ê°ú¿ô¤ÎÁȤ߹ç¤ï¤»¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò +¡¢-¡¢*¡¢/¡¢.IH.¡¢.IX.¡¢** ¤¬»öÁ°ÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢¥æ¡¼¥¶¡¼¤¬³ÈÄ¥¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

(Ǥ°Õ¤Î INTERVAL ·¿¡¢Ç¤°Õ¤Î INTERVAL ·¿)
(Ǥ°Õ¤Î INTERVAL ·¿¡¢Ç¤°Õ¤Î REAL ¤Þ¤¿¤Ï INTEGER ·¿)
(Ǥ°Õ¤Î REAL ¤Þ¤¿¤Ï INTEGER ·¿¡¢Ç¤°Õ¤Î INTERVAL ·¿)

À°¿ô»Ø¿ô¤ò»ý¤Ä¶è´Ö±é»»»Ò ** ¤Ï»öÁ°ÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢¼¡¤Î¤è¤¦¤Ê°ú¿ô¤ÎÁȤ߹ç¤ï¤»¤È¤·¤Æ¥æ¡¼¥¶¡¼¤¬³ÈÄ¥¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

(Ǥ°Õ¤Î INTERVAL ·¿¡¢Ç¤°Õ¤Î INTEGER ·¿)

.IN. ¤ò½ü¤­¡¢¶è´Ö´Ø·¸±é»»»Ò¤Ï°Ê²¼¤Î¥ê¥¹¥È¤Î¤è¤¦¤Ê°ú¿ô¤ÎÁȤ߹ç¤ï¤»¤È¤·¤Æ»öÁ°ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤«¤é¡¢¥æ¡¼¥¶¡¼¤¬³ÈÄ¥¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

(Ǥ°Õ¤Î INTERVAL ·¿¡¢Ç¤°Õ¤Î INTERVAL ·¿)
(Ǥ°Õ¤Î INTERVAL ·¿¡¢Ç¤°Õ¤Î REAL ¤Þ¤¿¤Ï INTEGER ·¿)
(Ǥ°Õ¤Î REAL ¤Þ¤¿¤Ï INTEGER ·¿¡¢Ç¤°Õ¤Î INTERVAL ·¿)

¶è´Ö´Ø·¸±é»»»Ò .IN. ¤Ï»öÁ°ÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢¼¡¤Î¤è¤¦¤Ê°ú¿ô¤ÎÁȤ߹ç¤ï¤»¤È¤·¤Æ¡¢¥æ¡¼¥¶¡¼¤¬³ÈÄ¥¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

(Ǥ°Õ¤Î REAL ¤Þ¤¿¤Ï INTEGER ·¿¡¢Ç¤°Õ¤Î INTERVAL ·¿)

¥³¡¼¥ÉÎã 2-8 ¤ÎÄêµÁ¤Ç¤Ï¡¢.IH.¤¬ (LOGICAL, INTERVAL(16)) ¥ª¥Ú¥é¥ó¥ÉÍѤˤϻöÁ°ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢S1 ¤È S2 ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÏÀµ¤·¤¤µ­½Ò¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-8   ¶è´Ö¤Î.IH. ±é»»»Ò¤Î³ÈÄ¥

math% cat ce2-8.f95
MODULE M
INTERFACE OPERATOR (.IH.)
    MODULE PROCEDURE S1
    MODULE PROCEDURE S2
END INTERFACE
CONTAINS
REAL FUNCTION S1(L, Y)
LOGICAL, INTENT(IN)      ::  L 
INTERVAL(16), INTENT(IN) ::  Y
    S1 = 1.0
END FUNCTION S1

INTERVAL FUNCTION S2(R1, R2)
REAL, INTENT(IN) ::  R1 
REAL, INTENT(IN) ::  R2
    S2 = [2.0]
END FUNCTION S2
END MODULE M

PROGRAM TEST
USE M
INTERVAL(16) :: X = [1, 2]
LOGICAL      :: L = .TRUE.
REAL         :: R = 0.1
PRINT *, 'L  .IH. X  = ', L  .IH. X
PRINT *, 'R1 .IH. R2 =', R1 .IH. R2
END PROGRAM TEST
 
math% f95 -xia ce2-8.f95
math% a.out
 L  .IH. X  =  1.0
 R1 .IH. R2 = [2.0,2.0]

¥³¡¼¥ÉÎã 2-9 ¤Î + ±é»»»Ò¤Î³ÈÄ¥¤Ï¡¢(INTERVAL, INTERVAL) ·¿¤Î¥ª¥Ú¥é¥ó¥ÉÍѤ˻öÁ°ÄêµÁ¤µ¤ì¤Æ¤¤¤ëÁȤ߹þ¤ß¤Î¶è´Ö (+) ±é»»»Ò¤ÎÄêµÁ¤òÊѹ¹¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤Î¤ÇÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-9   ÁȤ߹þ¤ß¤Î¶è´Ö¤Î (+) ±é»»»ÒÍÑË¡¤È¾×Æͤ¹¤ë¥æ¡¼¥¶¡¼ÄêµÁ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹

math% cat ce2-9.f95
MODULE M1
INTERFACE OPERATOR (+)
    MODULE PROCEDURE S4
END INTERFACE
CONTAINS
REAL FUNCTION S4(X, Y)
INTERVAL, INTENT(IN) ::  X
INTERVAL, INTENT(IN) ::  Y  
    S4 = 4.0
END FUNCTION S4
END MODULE M1

PROGRAM TEST
USE M1
INTERVAL :: X = [1.0], Y = [2.0]
PRINT *, 'X + Y = ', X + Y
END PROGRAM TEST
 
math% f95 -xia ce2-9.f95

MODULE M1
       ^  
"ce2-9.f95", Line = 1, Column = 8: ¥¨¥é¡¼¡§¥³¥ó¥Ñ¥¤¥é¤¬¥â¥¸¥å¡¼¥ë "M" 
¤Ç¥¨¥é¡¼¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥â¥¸¥å¡¼¥ë¾ðÊó¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤µ¤ì¤Þ
¤»¤ó¡£

    MODULE PROCEDURE S4
                     ^  
"ce2-9.f95", Line = 3, Column = 22: ¥¨¥é¡¼¡§¤³¤Î¸ÄÊÌ°úÍÑ»ÅÍÍ "S1" 
¤Ï¡¢"ih" ¤ÎÁȤ߹þ¤ß»ÈÍѤȾ×Æͤ·¤Æ¤¤¤Þ¤¹¡£

USE M1
    ^  
"ce2-9.f95", Line = 14, Column = 5: ¥¨¥é¡¼¡§¥â¥¸¥å¡¼¥ë "M" ¤Ë¤Ï¥³¥ó¥Ñ
¥¤¥é¥¨¥é¡¼¤¬¤¢¤ë¤¿¤á¡¢USE ʸ¤òÄ̤·¤Æ¤³¤Î¥â¥¸¥å¡¼¥ë¤«¤é³ÍÆÀ¤µ¤ì¤¿Àë¸À¤ÏÉÔ½½Ê¬
¤Ê²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

f90: ¥³¥ó¥Ñ¥¤¥ë»þ´Ö 0.820000 SECONDS
f90: ºÇÂç¥Õ¥£¡¼¥ë¥ÉĹ 5518744 10 ¿Ê¥ï¡¼¥É
f90: 17 ¥½¡¼¥¹¹Ô

¥³¡¼¥ÉÎã 2-10 ¤Ç¤Ï¡¢.IH. ¤Ï (INTERVAL(4), INTERVAL(8)) ¤Î¥ª¥Ú¥é¥ó¥ÉÍѤ˻öÁ°ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢°Ê²¼¤Î S1 ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-10   ÁȤ߹þ¤ß¤Î.IH.ÍÑË¡¤È¾×Æͤ¹¤ë¥æ¡¼¥¶¡¼ÄêµÁ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹

math% cat ce2-10.f95
MODULE M
INTERFACE OPERATOR (.IH.)
    MODULE PROCEDURE S1
END INTERFACE
CONTAINS
INTERVAL FUNCTION S1(X, Y)
INTERVAL(4), INTENT(IN) ::  X
INTERVAL(8), INTENT(IN) ::  Y 
    S1 = [1.0]
END FUNCTION S1
END MODULE M

 
PROGRAM TEST
USE M
INTERVAL(4) :: X = [1.0]
INTERVAL(8) :: Y = [2.0]
PRINT *, 'X .IH. Y = ', X .IH. Y
END PROGRAM TEST
math% f95 -xia ce2-10.f95

 
MODULE M
       ^ 
"ce2-10.f95", Line = 1, Column = 8: ¥¨¥é¡¼¡§¥³¥ó¥Ñ¥¤¥é¤¬¥â¥¸¥å¡¼¥ë "M" 
¤Ç¥¨¥é¡¼¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥â¥¸¥å¡¼¥ë¾ðÊó¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤µ¤ì¤Þ
¤»¤ó¡£

 
    MODULE PROCEDURE S1
                     ^  
"ce2-10.f95", Line = 3, Column = 22: ¥¨¥é¡¼¡§¤³¤Î¸ÄÊÌ°úÍÑ»ÅÍÍ "S1" 
¤Ï¡¢"ih" ¤ÎÁȤ߹þ¤ß»ÈÍѤȾ×Æͤ·¤Æ¤¤¤Þ¤¹¡£

 
USE M
    ^ 
"ce2-10.f95", Line = 14, Column = 5:  ¥¨¥é¡¼¡§¥â¥¸¥å¡¼¥ë "M" ¤Ë¤Ï¥³¥ó
¥Ñ¥¤¥é¥¨¥é¡¼¤¬¤¢¤ë¤¿¤á¡¢USE ʸ¤òÄ̤·¤Æ¤³¤Î¥â¥¸¥å¡¼¥ë¤«¤é³ÍÆÀ¤µ¤ì¤¿Àë¸À¤ÏÉÔ½½
ʬ¤Ê²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

 
f90: ¥³¥ó¥Ñ¥¤¥ë»þ´Ö 0.190000 SECONDS
f90: ºÇÂç¥Õ¥£¡¼¥ë¥É 4135778 10 ¿Ê¥ï¡¼¥É
f90: 18 ¥½¡¼¥¹¹Ô
f90: 3 ¸Ä¤Î¥¨¥é¡¼, 0 ¸Ä¤Î·Ù¹ð, 0 ¸Ä¤Î¾¤Î¥á¥Ã¥»¡¼¥¸, 0 ¸Ä¤Î ANSI

ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò¤ò³ÈÄ¥¤¹¤ë±é»»»Ò´Ø¿ô¤Î°ú¿ô¤Î¿ô¤Ï¡¢¥³¡¼¥ÉÎã 2-11 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢ÁȤ߹þ¤ß¤Î±é»»»Ò¤ËɬÍפʥª¥Ú¥é¥ó¥É¿ô¤È°ìÃפ·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-11   »öÁ°ÄêµÁ¤µ¤ì¤¿¶è´Ö±é»»»Ò¤Î°ú¿ô¤Î¿ô¤Î´Ö°ã¤Ã¤¿Êѹ¹

math% cat ce2-11.f95
MODULE M
INTERFACE OPERATOR (.IH.)
    MODULE PROCEDURE S1
END INTERFACE
CONTAINS
REAL FUNCTION S1(R)
REAL, INTENT(IN) :: R 
    S1 = 1.0
END FUNCTION S1
END MODULE M

PROGRAM TEST
USE M
REAL :: R = 0.1
PRINT *, ' .IH. R = ', .IH. R
END PROGRAM TEST
math% f95 -xia ce2-11.f95

MODULE M
       ^ 
"ce2-11.f95", Line = 1, Column = 8: ¥¨¥é¡¼¡§¥³¥ó¥Ñ¥¤¥é¤¬¥â¥¸¥å¡¼¥ë "M" 
¤Ç¥¨¥é¡¼¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥â¥¸¥å¡¼¥ë¾ðÊó¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤µ¤ì¤Þ
¤»¤ó¡£

    MODULE PROCEDURE S1
                     ^  
"ce2-11.f95", Line = 3, Column = 22: ¥¨¥é¡¼¡§¸ÄÊÌ°úÍÑ»ÅÍÍ "S1" ¤ÏÍøÍÑ
¼ÔÄêµÁ 2 ¹à±é»»»Ò¤Î°úÍÑ»ÅÍÍÀë¸À¤ÎÆâÉô¤Ë¤¢¤ë¤È¤­¤Ï¡¢¤Á¤ç¤¦¤É 2 ¸Ä¤Î²¾°ú¿ô¤ò¤â
¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

USE M
    ^ 
"ce2-11.f95", Line = 13, Column = 5: ¥¨¥é¡¼¡§¥â¥¸¥å¡¼¥ë "M" ¤Ë¤Ï¥³¥ó¥Ñ
¥¤¥é¥¨¥é¡¼¤¬¤¢¤ë¤¿¤á¡¢USE ʸ¤òÄ̤·¤Æ¤³¤Î¥â¥¸¥å¡¼¥ë¤«¤é³ÍÆÀ¤µ¤ì¤¿Àë¸À¤ÏÉÔ½½Ê¬
¤Ê²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

PRINT *, ' .IH. R = ', .IH. R
                       ^      
"ce2-11.f95", Line = 15, Column = 24: ¥¨¥é¡¼¡§Í½´ü¤·¤Ê¤¤¹½Ê¸¡§ 
"operand" ¤¬Í½´ü¤µ¤ì¤ë¤È¤³¤í¤Ë "." ¤¬¤¢¤ê¤Þ¤·¤¿¡£

f90: ¥³¥ó¥Ñ¥¤¥ë»þ´Ö 0.200000 SECONDS
f90: ºÇÂç¥Õ¥£¡¼¥ë¥ÉĹ 4135778 10 ¿Ê¥ï¡¼¥É
f90: 16 ¥½¡¼¥¹¹Ô
f90: 4 ¸Ä¤Î¥¨¥é¡¼, 0 ¸Ä¤Î·Ù¹ð, 0 ¸Ä¤Î¾¤Î¥á¥Ã¥»¡¼¥¸, 0 ¸Ä¤Î ANSI

ÁȤ߹þ¤ß¤Î¶è´ÖÆó¹à±é»»»Ò¤Ï¡¢1 ¤Ä¤Î INTERVAL °ú¿ô¤ò¤È¤ëñ¹à±é»»»Ò´Ø¿ô¤ò»ÈÍѤ·¤Æ³ÈÄ¥¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-12 ¤Ç¤Ï¡¢¡Ö+¡×¤Ï¶è´Ö¥ª¥Ú¥é¥ó¥ÉÍѤËÄêµÁºÑ¤ß¤Ê¤Î¤Ç¡¢S1 ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-12   ÁȤ߹þ¤ß¤Îñ¹à¡Ö+¡×ÍÑË¡¤È¾×Æͤ¹¤ë¥æ¡¼¥¶¡¼ÄêµÁ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹

math% cat ce2-12.f95
MODULE M
INTERFACE OPERATOR (+)
    MODULE PROCEDURE S1
END INTERFACE
CONTAINS
REAL FUNCTION S1(X)
    INTERVAL, INTENT(IN) :: X 
    S1 = 1.0
END FUNCTION S1
END MODULE M

PROGRAM TEST
USE M
INTERVAL :: X = 0.1
PRINT *, ' + X = ', + X
END PROGRAM TEST

math% f95 -xia ce2-12.f95

MODULE M
       ^ 
"ce2-12.f95", Line = 1, Column = 8: ¥¨¥é¡¼¡§¥³¥ó¥Ñ¥¤¥é¤¬¥â¥¸¥å¡¼¥ë "M" 
¤Ç¥¨¥é¡¼¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥â¥¸¥å¡¼¥ë¾ðÊó¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤µ¤ì¤Þ
¤»¤ó¡£

    MODULE PROCEDURE S1
                     ^  
"ce2-12.f95", Line = 3, Column = 22: ¥¨¥é¡¼¡§¤³¤Î¸ÄÊÌ°úÍÑ»ÅÍÍ "S1" 
¤Ï¡¢"+" ¤ÎÁȤ߹þ¤ß»ÈÍѤȾ×Æͤ·¤Æ¤¤¤Þ¤¹¡£

USE M
    ^ 
"ce2-12.f95", Line = 13, Column = 5: ¥¨¥é¡¼¡§¥â¥¸¥å¡¼¥ë "M" ¤Ë¤Ï¥³¥ó¥Ñ
¥¤¥é¥¨¥é¡¼¤¬¤¢¤ë¤¿¤á¡¢USE ʸ¤òÄ̤·¤Æ¤³¤Î¥â¥¸¥å¡¼¥ë¤«¤é³ÍÆÀ¤µ¤ì¤¿Àë¸À¤ÏÉÔ½½Ê¬
¤Ê²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

f90: ¥³¥ó¥Ñ¥¤¥ë»þ´Ö 0.290000 SECONDS
f90: ºÇÂç¥Õ¥£¡¼¥ë¥ÉĹ 4146432 10 ¿Ê¥ï¡¼¥É
f90: 16 ¥½¡¼¥¹¹Ô
f90: 3 ¸Ä¤Î¥¨¥é¡¼, 0 ¸Ä¤Î·Ù¹ð, 0 ¸Ä¤Î¾¤Î¥á¥Ã¥»¡¼¥¸, 0 ¸Ä¤Î ANSI

°ìÈÌŪ¤Ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¤Ï¡¢INTERFACE ʸ¤ÎÃæ¤Ç»ØÄꤷ¤¿°ìÈÌŪ¤Ê̾Á°¤¬ÁȤ߹þ¤ß¤Î¶è´Ö¥µ¥Ö¥×¥í¥°¥é¥à¤Î̾Á°¤Ç¤¢¤ì¤Ð¡¢ÆÃÄê¤Î¥æ¡¼¥¶¡¼ÄêµÁ¥µ¥Ö¥×¥í¥°¥é¥à¤ÏÁȤ߹þ¤ß¥µ¥Ö¥×¥í¥°¥é¥à¤ÎÄêµÁºÑ¤ß¤Î°ÕÌ£¤ò³ÈÄ¥¤·¤Þ¤¹¡£

Ʊ¤¸°ìÈÌ̾¤ò»ý¤Ä¥µ¥Ö¥×¥í¥°¥é¥à¤Ø¤Î¤¹¤Ù¤Æ¤Î»²¾È¤Ï¡¢¤¢¤¤¤Þ¤¤¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£

ÁȤ߹þ¤ß¤Î¥µ¥Ö¥×¥í¥°¥é¥à¤Ï¡¢¤½¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹ÄêµÁ¤â¤Þ¤¿°ìÈÌŪ¤Ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¥Ö¥í¥Ã¥¯¤Ç»ØÄꤵ¤ì¤¿ÆÃÄê¤ÎÁȤ߹þ¤ß¥µ¥Ö¥×¥í¥°¥é¥à¤Î 1 ¤Ä¤Î½¸¤Þ¤ê¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-13   ÁȤ߹þ¤ß¶è´Ö´Ø¿ô WID ¤ÎÀµ¤·¤¤³ÈÄ¥

math% cat ce2-13.f95
MODULE M
INTERFACE WID
    MODULE PROCEDURE S1
    MODULE PROCEDURE S2
END INTERFACE
CONTAINS
REAL FUNCTION S1(X)
REAL, INTENT(IN) :: X 
    S1 = 1.0
END FUNCTION S1
INTERVAL FUNCTION S2(X, Y)
INTERVAL, INTENT(IN) :: X 
INTERVAL, INTENT(IN) :: Y 
    S2 = [2.0]
END FUNCTION S2
END MODULE M

PROGRAM TEST
USE M
INTERVAL :: X = [1, 2], Y = [3, 4]
REAL     :: R = 0.1
PRINT *, WID(R)
PRINT *, WID(X, Y)
  
END PROGRAM TEST
math% f95 -xia ce2-13.f95
math% a.out
 1.0
 [2.0,2.0]

¥³¡¼¥ÉÎã 2-14 ¤ÏÀµ¤·¤¤¥³¡¼¥É¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-14   ÁȤ߹þ¤ß¶è´Ö´Ø¿ô ABS ¤ÎÀµ¤·¤¤³ÈÄ¥

math% cat ce2-14.f95
MODULE M
INTERFACE ABS
    MODULE PROCEDURE S1
END INTERFACE
CONTAINS
INTERVAL FUNCTION S1(X)
INTERVAL, INTENT(IN) :: X 
    S1 = [-1.0]
END FUNCTION S1
END MODULE M
PROGRAM TEST
USE M
INTERVAL :: X = [1, 2]
PRINT *, ABS(X)
  
END PROGRAM TEST
math% f95 -xia ce2-14.f95
math% a.out
 [-1.0,-1.0]

¥³¡¼¥ÉÎã 2-15 ¤ÏÀµ¤·¤¤¥³¡¼¥É¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-15   ÁȤ߹þ¤ß¶è´Ö´Ø¿ô MIN ¤ÎÀµ¤·¤¤³ÈÄ¥

math% cat ce2-15.f95
MODULE M
INTERFACE MIN
    MODULE PROCEDURE S1
END INTERFACE
CONTAINS
INTERVAL FUNCTION S1(X, Y)
    INTERVAL(4), INTENT(IN) :: X
    INTERVAL(8), INTENT(IN) :: Y 
    S1 = [-1.0]
END FUNCTION S1
END MODULE M

 
PROGRAM TEST
USE M
INTERVAL(4) :: X = [1, 2]
INTERVAL(8) :: Y = [3, 4]
REAL        :: R = 0.1
PRINT *, MIN(X, Y)
END PROGRAM TEST
math% f95 -xia ce2-15.f95
math% a.out
 [-1.0,-1.0]

ºÇÂçÉýÍ×µá¤Îɾ²Á¤ò»ý¤Ä³ÈÄ¥±é»»»Ò

¥³¡¼¥ÉÎã 2-16 ¤Ï¡¢ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò¤Î»öÁ°ÄêµÁ¥Ð¡¼¥¸¥ç¥ó¤È³ÈÄ¥¥Ð¡¼¥¸¥ç¥ó¤ò¸Æ¤Ó½Ð¤¹¾ì¹ç¤Î¡¢ºÇÂçÉýÍ׵ἰ½èÍý¤¬¤É¤Î¤è¤¦¤ËȯÀ¸¤¹¤ë¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-16   ÁȤ߹þ¤ß¶è´Ö±é»»»Ò¤Î»öÁ°ÄêµÁ¥Ð¡¼¥¸¥ç¥ó¤ò¸Æ¤Ó½Ð¤¹¾ì¹ç¤ÎºÇÂçÉýÍ׵ἰ¤Î½èÍý

math% cat ce2-16.f95
MODULE M
INTERFACE OPERATOR (.IH.)
    MODULE PROCEDURE S4 
END INTERFACE
CONTAINS 
INTERVAL FUNCTION S4(X, Y) 
    COMPLEX, INTENT(IN) :: X 
    COMPLEX, INTENT(IN) :: Y
    S4 = [0]
END FUNCTION S4
END MODULE M
USE M
INTERVAL :: X = [1.0]
REAL     :: R = 1.0
COMPLEX  :: C = (1.0, 0.0)
X = (R-0.1).IH.(R-0.2)   ! ξÊý¤Î°ú¿ô¤¬ºÇÂçÉýÍ×µá¤Ç¡¢
                         ! ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò.IH.¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
                         
X = X .IH. (R+R)         ! ξÊý¤Î°ú¿ô¤¬ºÇÂçÉýÍ×µá¤Ç¡¢
                         ! ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò.IH.¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
                         
X = X .IH. (R+R+X)       ! Âè2°ú¿ô¤¬ºÇÂçÉýÍ×µá¤Ç¡¢  
                         ! ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò.IH.¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
                         
X = (R+R) .IH. (R+R+X)   ! ξÊý¤Î°ú¿ô¤¬ºÇÂçÉýÍ×µá¤Ç¡¢
                         ! ÁȤ߹þ¤ß¤Î¶è´Ö±é»»»Ò.IH.¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
                         
X = C .IH. (C+R)         ! ºÇÂçÉýÍ×µá¤Ê¤·¤Ç¡¢s4¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
END

 
math% f95 -xia ce2-16.f95
math% a.out

¥³¡¼¥ÉÎã 2-17 ¤Ï¡¢¥æ¡¼¥¶¡¼ÄêµÁ¤Î±é»»»Ò¤ò¸Æ¤Ó½Ð¤¹¾ì¹ç¤ËºÇÂçÉýÍ׵ἰ¤Î½èÍý¤¬¤É¤Î¤è¤¦¤ËȯÀ¸¤¹¤ë¤«¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-17   ¥æ¡¼¥¶¡¼ÄêµÁ±é»»»Ò¤ò¸Æ¤Ó½Ð¤¹¾ì¹ç¤ÎºÇÂçÉýÍ׵ἰ¤Î½èÍý

math% cat ce2-17.f95
MODULE M
INTERFACE OPERATOR (.AA.)
    MODULE PROCEDURE S1
    MODULE PROCEDURE S2
END INTERFACE
CONTAINS 
INTERVAL FUNCTION S1(X, Y)
INTERVAL, INTENT(IN) :: X 
REAL, INTENT(IN)     :: Y
    PRINT *, 'S1 is invoked.'
    S1 = [1.0]
END FUNCTION S1
INTERVAL FUNCTION S2(X, Y)
INTERVAL, INTENT(IN) :: X 
INTERVAL, INTENT(IN) :: Y
    PRINT *, 'S2 is invoked.'
    S2 = [2.0]
END FUNCTION S2
END MODULE M
USE M
INTERVAL :: X = [1.0]
REAL     :: R = 1.0
X = X .AA. R+R     ! S1 is invoked
X = X .AA. X       ! S2 is invoked
END

 
math% f95 -xia ce2-17.f95

    MODULE PROCEDURE S1
                     ^  
"ce2-17.f95", Line = 3, Column = 22: ·Ù¹ð¡§ºÇÂçÉýÍ×µá¤Îɾ²Á¤Ï¡¢¥æ¡¼¥¶¡¼
ÄêµÁ¤Î°ú¿ô¤ËŬÍѤµ¤ì¤Þ¤»¤ó¡£

USE M
    ^ 
"ce2-17.f95", Line = 20, Column = 5: ·Ù¹ð¡§ºÇÂçÉýÍ×µá¤Îɾ²Á¤Ï¡¢¥æ¡¼¥¶¡¼
ÄêµÁ¤Î°ú¿ô¤ËŬÍѤµ¤ì¤Þ¤»¤ó¡£

f90: ¥³¥ó¥Ñ¥¤¥ë»þ´Ö 0.700000 SECONDS
f90: ºÇÂç¥Õ¥£¡¼¥ë¥ÉĹ 5605590 DECIMAL WORDS
f90: 26 ¥½¡¼¥¹¹Ô
f90: 0 ¸Ä¤Î¥¨¥é¡¼, 2 ¸Ä¤Î·Ù¹ð, 0 ¸Ä¤Î¾¤Î¥á¥Ã¥»¡¼¥¸, 0 ¸Ä¤Î ANSI
math% a.out
 S1¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤·¤¿¡£
 S2¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤·¤¿¡£

INTERVAL (X [,Y, KIND])

²òÀ⡧ INTERVAL ·¿¤Ø¤ÈÊÑ´¹¤·¤Þ¤¹¡£

¥¯¥é¥¹¡§ Í×ÁÇÊ̽èÍý´Ø¿ô

°ú¿ô¡§

X ¤Ï¡¢INTEGER¡¢REAL¡¢¤Þ¤¿¤Ï¡¢INTERVAL ·¿¤Ç¤¹¡£

Y (¥ª¥×¥·¥ç¥ó) ¤Ï INTEGER ¤Þ¤¿¤Ï REAL ·¿¤Ç¤¹¡£X ¤¬ INTERVAL ·¿¤Ç¤¢¤ì¤Ð¡¢Y ¤Ï»ØÄꤷ¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

KIND (¥ª¥×¥·¥ç¥ó) ¤Ï¥¹¥«¥é¡¼ INTEGER ¤Î½é´üÃͼ°¤Ç¤¹¡£

·ë²Ì¤ÎÆÃÀ­¡§ INTERVAL

KIND ¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢·ë²Ì¤Î KTPV ¤Î·èÄê¤Ë¤½¤ÎÃͤ¬»È¤ï¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Ï¡¢·ë²Ì¤Î KTPV ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç»È¤ï¤ì¤ë¶è´Ö¤Î KTPV ¤ÈƱ¤¸¤Ç¤¹¡£

Êñ´Þ¡§

X ¤¬¶è´Ö¤Î¾ì¹ç¤ÏÊñ´Þ¤¬Êݾڤµ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¾ì¹ç¡¢

INTERVAL(16):: X

INTERVAL (X, KIND=4) ¤Î·ë²Ì¤Ë¤Ï INTERVAL X ¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

¤·¤«¤·¡¢REAL(8) :: X, Y ¤Ç¤¢¤ì¤Ð¡¢INTERVAL(X,Y, KIND=4) ¤Î·ë²Ì¤ÏÆâÉôŪ¤Ê¶è´Ö X .IH. Y ¤ò´Þ¤à¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£¤³¤ÎÍýͳ¤Ï¡¢X ¤È Y ¤¬ REAL ¼°¤Ç¤â¤è¤¯¡¢¤½¤ì¤é¤ÎÃͤÏÊݾڤµ¤ì¤Ê¤¤¤«¤é¤Ç¤¹¡£

INTERVAL ¹½À®»Ò¤Ï¡¢É¬¤º¤·¤âƱ¤¸½ªÎ»ÅÀ¤ò»ý¤Ä INTERVAL ʸ»úÄê¿ô¤ÎÃͤò´Þ¤à¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢INTERVAL(1.1,1.3) ¤Ïɬ¤º¤·¤â³°ÉôÃÍ ev([1.1, 1.3]) = [1.1, 1.3] ¤ò´Þ¤à¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤½¤ÎÍýͳ¤Ï¡¢REAL Äê¿ô¤ÎÆâÉôÃͤ¬Ì¤ÃΤÎÀµ³Î¤µ¤ò»ý¤Ä¶á»÷ÃͤǤ¢¤ë¤«¤é¤Ç¤¹¡£

¾ï¤Ë 2 ¤Ä¤Î REAL Ãͤò´Þ¤à¶è´Ö¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥³¡¼¥ÉÎã 2-18 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¶è´ÖÊñ±é»»»Ò .IH. ¤ò»È¤¤¤Þ¤¹¡£

·ë²ÌÃÍ¡§ ¶è´Ö¤Î·ë²ÌÃÍ¤Ï 1 ¤Ä¤ÎÍ­¸ú¤Ê¶è´Ö¤Ç¤¹¡£

Y ¤¬Â¸ºß¤»¤º¡¢X ¤¬¶è´Ö¤Ç¤¢¤ë¾ì¹ç¡¢INTERVAL(X[,KIND]) ¤Ï X ¤ò´Þ¤à 1 ¤Ä¤Î¶è´Ö¤Ç¤¢¤ê¡¢INTERVAL(X[,KIND]) ¤Ïº¸±¦¤Î½ªÎ»ÅÀ [XL,XU] ¤ò»ý¤Ä 1 ¤Ä¤Î¶è´Ö¤È¤Ê¤ê¤Þ¤¹¡£

¤³¤Î¾ì¹ç¡¢

XL = REAL(INF(X) [,KIND]) ¤Ï´Ý¤áÀڤ겼¤²¤Ë¤è¤ê¡¢XL .LE. INF(X) ¤È¤Ê¤ê¡¢

¤Þ¤¿¡¢

XU = REAL(SUP(X) [,KIND]) ¤Ï´Ý¤áÀÚ¤ê¾å¤²¤Ë¤è¤ê¡¢XU .GE. SUP(X) ¤È¤Ê¤ê¤Þ¤¹¡£

X ¤È Y ¤¬¶¦¤Ë¸ºß¤¹¤ë (¤³¤Î¤¿¤á¡¢¶è´Ö¤Ç¤Ï¤Ê¤¤) ¾ì¹ç¡¢INTERVAL(X,Y[,KIND]) ¤Ïº¸±¦¤Î½ªÎ»ÅÀ¤¬¤½¤ì¤¾¤ì REAL(X[,KIND]) ¤È REAL(Y[,KIND]) ¤ËÅù¤·¤¤½ªÎ»ÅÀ¤ò»ý¤Ä¶è´Ö¤È¤Ê¤ê¤Þ¤¹¡£


Ãí - ¤³¤Î¥±¡¼¥¹¤Ç¤Ï¡¢Í­¸þ¤Î´Ý¤á¤Ï»ØÄꤵ¤ì¤Þ¤»¤ó¡£¤³¤Î¤¿¤á¡¢Êñ´Þ¤ÏÄ󶡤µ¤ì¤Þ¤»¤ó¡£

°Ê²¼¤Î 2 ¤Ä¤Î¥±¡¼¥¹¤Ç¤Ï [-inf,inf] ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£

ºÇÂçÉýÍ×µá¤Î¥¹¥³¡¼¥×À©¸Â

ÁȤ߹þ¤ß¤Î ¶è´Ö¹½À®»Ò´Ø¿ô¤Ï°Ê²¼¤Î 2 ¤Ä¤ÎÍÑÅÓ¤ÇÍѤ¤¤é¤ì¤Þ¤¹¡£

½êÍ¿¤ÎÈó¶è´Ö (REAL ¤Þ¤¿¤Ï INTEGER) ¼° EXP ¤Ë¤Ä¤¤¤Æ¡¢¼¡¤Î¥³¡¼¥É¤Ï¡¢

INTERVAL Y
REAL R
R =
EXP
Y = R

¼¡¤Î¥³¡¼¥É¤ÈƱ¤¸¤Ç¤¹¡£

INTERVAL Y
Y = INTERVAL(
EXP)

¤³¤ì¤Ï¡¢¼¡¤Î¥³¡¼¥É¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡£

INTERVAL Y
Y =
EXP

¸å¤Î¥³¡¼¥É¤Ï¡¢EXP ¤ò 1 ¤Ä¤Î¶è´Ö¼°¤È¤·¤Æɾ²Á¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ºÇ½é¤Î 2 ¤Ä¤ÎÉôʬ¥³¡¼¥É¤Ç¤Ï¡¢¼° EXP ¤ÏÈó¶è´Ö¼°¤È¤·¤Æɾ²Á¤µ¤ì¡¢¤½¤Î·ë²Ì¤¬½ÌÂà¶è´Ö¤Î¹½Ãۤ˻Ȥï¤ì¤Æ¤¤¤Þ¤¹¡£

2 ¤Ä¤Î°ú¿ô EXP1 ¤È EXP2 ¤ò»È¤¨¤Ð¡¢¶è´Ö(EXP1, EXP2)¤ÏξÊý¤Î¼°¤òºÇÂçÉýÍ׵ἰ½èÍý¤«¤é³ÖÎ¥¤·¡¢¤½¤Î¼°¤ÎÈó¶è´Öɾ²Á·ë²Ì¤ÈƱ¤¸½ªÎ»ÅÀ¤ò»ý¤Ä 1 ¤Ä¤Î¶è´Ö¤ò¹½ÃÛ¤·¤Þ¤¹¡£

KIND ¥Ñ¥é¥á¡¼¥¿¤ò´Þ¤á¤ë¤È¡¢·ë²Ì¤Î KTPV ¤òÀ©¸æ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï¿¤¯¤Î¾ì¹ç¡¢ÌÀ¼¨Åª¤Ê KTPV ÊÑ´¹¤¬É¬Í×¤Ê -strict ¼°½èÍý¤Î¤â¤È¤ÇɬÍפǤ¹¡£

Èó¶è´Ö°ú¿ô¤ò»ý¤ÄÁȤ߹þ¤ß¤Î¶è´Ö´Ø¿ô¤Î°·¤¤¤Ë¤ÏÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¶è´Ö¤ÎÊñ´Þ¤¬É¬Íפʾì¹ç¤Ï¡¢¥³¡¼¥ÉÎã 2-18 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¶è´ÖÊñ±é»»»Ò.IH.¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

¶è´Ö¹½À®»Ò¤Ï INTERVAL ¤È REAL ¤Þ¤¿¤Ï INTERGER ¼°´Ö¤Î¶­³¦¤È¤·¤ÆÆ°ºî¤·¤Þ¤¹¡£¤³¤Î¶­³¦¤ÎÈó INTERVAL ¦¤Ç¤ÏÀµ³ÎÀ­ (¤³¤Î¤¿¤á¡¢¤µ¤é¤ËÊñ´Þ¤â) ¤ÎÊݾڤò¶¯À©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-18   .IH. ±é»»»Ò¤ò»ÈÍѤ·¤¿Êñ´Þ

math% cat ce2-18.f95
REAL(16) :: A, B
INTERVAL :: X1, X2
PRINT *, "Press Control/D to terminate!"
WRITE(*, 1, ADVANCE='NO')
READ(*, *, IOSTAT=IOS) A, B
DO WHILE (IOS >= 0)
    PRINT *, " FOR A =", A, ", AND B =", B
    
    ! ºÇÂçÉýÍ׵ᥳ¡¼¥É
     X1 = A .IH. B                                    
    
    ! ƱÅù¤Î¸·Ì©¥³¡¼¥É
    X2 = INTERVAL(INTERVAL(A, KIND=16) .IH. INTERVAL(B, KIND=16))
    IF (X1 .SEQ. X2)  PRINT *, 'Check.'
    PRINT *, 'X1 = ', X1
    WRITE(*, 1, ADVANCE='NO')
    READ(*, *, IOSTAT=IOS)  A, B
END DO
1  FORMAT(" A, B = ")
END
math% f95 -xia ce2-18.f95
math% a.out
 Control/D to terminate!
 A, B = 1.3 1.7
 FOR A = 1.3 , AND B = 1.7
 X1 =  [1.2999999999999998,1.7000000000000002]
 A, B = 0.0  0.2
 FOR A = 0.0E+0 , AND B = 0.2
 X1 =  [0.0E+0,0.20000000000000002]
 A, B = <Control-D>

ÁȤ߹þ¤ß¤Î¶è´Ö¹½À®»Ò´Ø¿ô¤Î»È¤¤Êý¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖINTERVAL (X [,Y, KIND])¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

ÁȤ߹þ¤ß¤Î¶è´Ö¹½À®»Ò´Ø¿ô¤Î KTPV ¸ÄÊÌ̾

ɽ 2-11 ¤Ë¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢ÁȤ߹þ¤ß¤Î¶è´Ö¹½À®»Ò´Ø¿ô¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Î KIND ¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Ê¤¤ KTPV ¸ÄÊÌ̾¤ò»ÈÍѤ·¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

ɽ 2-11   ÁȤ߹þ¤ß¤Î¶è´Ö¹½À®»Ò´Ø¿ôÍѤΠKTPV ¸ÄÊ̼°
KTPV¸ÄÊÌ̾ ·ë²Ì
DINTERVAL(X[,Y])
INTERVAL(X[,Y], KIND = 8)¡¢¤Þ¤¿¤Ï¡¢INTERVAL(X[,Y])
SINTERVAL(X[,Y])
INTERVAL(X[,Y], KIND = 4)
QINTERVAL(X[,Y])
INTERVAL(X[,Y], KIND = 16)


ÁȤ߹þ¤ß¶è´Ö¹½À®»Ò´Ø¿ô¤ÎÊÑ´¹Îã

¤³¤ÎÀá¤Î 3 ¤Ä¤ÎÎã¤Ï¡¢ÁȤ߹þ¤ß¤Î¶è´Ö¹½ÃÛ»Ò¤ò»È¤Ã¤Æ¡¢REAL ¤«¤é INTERVAL ·¿¥Ç¡¼¥¿¹àÌܤËÊÑ´¹¤¹¤ëÊýË¡¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£¥³¡¼¥ÉÎã 2-19 ¤Ï¡¢¶è´Ö¹½ÃÛ»Ò¤ÎREAL ¼°°ú¿ô¤¬ REAL ±é»»¤ò»È¤Ã¤Æɾ²Á¤µ¤ì¤ë¤Î¤ÇºÇÂçÍ×µáÉý¼°¤Îɾ²Á¤«¤é³ÖÎ¥¤µ¤ì¤ë¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-19   ¶è´ÖÊÑ´¹

math% cat ce2-19.f95
REAL        :: R = 0.1, S = 0.2, T = 0.3
REAL(8)     :: R8 = 0.1D0, T1, T2
INTERVAL(4) :: X, Y
INTERVAL(8) :: DX, DY
R = 0.1
Y  = INTERVAL(R, R, KIND=4)
X  = INTERVAL(0.1, KIND=4) 	 ! 7¹ÔÌÜ 
IF ( X == Y ) PRINT *, 'Check1'
X  = INTERVAL(0.1, 0.1, KIND=4) 	 ! 10¹ÔÌÜ
IF ( X == Y ) PRINT *, 'Check2'
T1 = R+S
T2 = T+R8
DY = INTERVAL(T1, T2)         
DX = INTERVAL(R+S, T+R8) 	 ! 15¹ÔÌÜ
IF ( DX == DY ) PRINT *, 'Check3'
DX = INTERVAL(Y, KIND=8) 	 ! 17¹ÔÌÜ
IF (Y .CEQ. INTERVAL(0.1, 0.1, KIND=8)) PRINT *, 'Check4'
END
 
math% f95 -xia ce2-19.f95
math% a.out
 Check1
 Check2
 Check3
 Check4

¥³¡¼¥ÉÎã 2-19 Ãíµ­¡§

¥³¡¼¥ÉÎã 2-20 ¤Ï¡¢¶è´Ö¹½À®»Ò¤ò»È¤Ã¤Æ¡¢Y ¤Î½ªÎ»ÅÀ¤¬½êÍ¿¤Î¶è´Ö¡¢X ¤ÎÍ×ÁǤȤʤé¤Ê¤¤¡¢²Äǽ¤ÊºÇ¾®¶è´Ö Y ¤ò¹½ÃÛ¤¹¤ëÊýË¡¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-20   ½êÍ¿¤Î¼Â¿ô¤ò´Þ¤à¶¹¤¤¶è´Ö¤òºîÀ®¤¹¤ë

math% cat ce2-20.f95
INTERVAL :: X = [10.E-10,11.E+10]
INTERVAL :: Y
Y = INTERVAL(-TINY(INF(X)), TINY(INF(X))) + X
PRINT *, X .INT. Y
END
math% f95 -xia ce2-20
math% a.out
  T

½êÍ¿¤Î¶è´Ö X ¤Ë¤Ä¤¤¤Æ¡¢¾ò·ï X .INT. Y ¤òËþ¤¿¤¹±Ô¤¤¶è´Ö Y ¤¬¹½ÃÛ¤µ¤ì¤Þ¤¹¡£ÆâÉô½¸¹ç´Ø·¸¤Ë´Ø¤¹¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÆâÉô¡§(X .INT. Y)¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥³¡¼¥ÉÎã 2-21 ¤Ï¡¢¶è´Ö¹½À®»Ò¤¬¤É¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¶è´Ö [-INF,INF] ¤È[MAX_FLOAT,INF] ¤òÊÖ¤¹¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-21   INTERVAL(NaN)

math% cat ce2-21.f95
REAL :: R = 0., S = 0.
T = R/S                        ! 2¹ÔÌÜ  
PRINT *, T
PRINT *, INTERVAL(T, S)        ! 4¹ÔÌÜ 
PRINT *, INTERVAL(T, T)        ! 5¹ÔÌÜ 
PRINT *, INTERVAL(2., 1.)      ! 6¹ÔÌÜ 
PRINT *, INTERVAL(1./R)        ! 7¹ÔÌÜ 
END
 
math% f95 -xia ce2-21.f95
math% a.out
 NaN
 [-Inf,Inf]
 [-Inf,Inf]
 [-Inf,Inf]
 [1.7976931348623157E+308,Inf]

¥³¡¼¥ÉÎã 2-21 Ãíµ­¡§

ÁȤ߹þ¤ß¤Î°ìÈ̶è´Ö´Ø¿ôÍѤθÄÊÌ̾

ÁȤ߹þ¤ß¤Î°ìÈ̶è´Ö´Ø¿ôÍѤΠf95 ¸ÄÊÌ̾¤Ï¡¢ËöÈø¤¬ÁȤ߹þ¤ß´Ø¿ô¤Î°ìÈÌ̾¤È¤Ê¤ê¡¢V¤Ç»Ï¤Þ¤ê¡¢¤½¤Î¸å¤í¤Ë¡¢INTERVAL(4)¡¢INTERVAL(8)¡¢INTERVAL(16) ·¿¤Î°ú¿ôÍѤˤ½¤ì¤¾¤ì S¡¢D¡¢¤Þ¤¿¤Ï Q ¤¬Â³¤­¤Þ¤¹¡£

f95 ¤Ç¤Ï¡¢INTERVAL(16) ¥Ç¡¼¥¿·¿ÍѤˤϼ¡¤Î¸ÄÊÌ̾ÁȤ߹þ¤ß´Ø¿ô¤À¤±¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

VQABS¡¢VQAINT¡¢VQANINT¡¢VQINF¡¢VQSUP¡¢VQMID¡¢VQMAG¡¢VQMIG¡¢VQISEMPTY

Èó¶è´Ö¥×¥í¥°¥é¥à¤Ç¤Î̾Á°¶õ´Ö¤Î¾×Æͤò²óÈò¤¹¤ë¤¿¤á¤Ë¡¢¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Ë¤è¤ëÊýË¡¤Ç¤Î¤ß¸ÄÊÌ̾¤¬ÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¶è´Ö¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥µ¥Ý¡¼¥È¤µ¤ì¤ë¤¹¤Ù¤Æ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ï¸ÄÊÌ̾¤ò»ý¤Á¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢É½ 2-12 ¤Ç¤Ï¡¢ABS ÁȤ߹þ¤ß´Ø¿ô¤Î¶è´Ö¥Ð¡¼¥¸¥ç¥ó¤Î̾Á°¤ò°ìÍ÷ɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-12   ÁȤ߹þ¤ß¤Î¶è´Ö ABS ´Ø¿ôÍѤθÇÍ­¤Î̾Á°
¸ÄÊÌ̾ °ú¿ô ·ë²Ì
VSABS INTERVAL(4) INTERVAL(4)
VDABS INTERVAL(8) INTERVAL(8)
VQABS INTERVAL(16) INTERVAL(16)


¤³¤ì°Ê³°¤Î¸ÄÊÌ̾ÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¡ÖÁȤ߹þ¤ß´Ø¿ô¡×¤Ë°ìÍ÷ɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

INTERVAL

¤³¤ÎÀá¤Ç¤Ï f95 ¤Ë¤è¤êǧ¼±¤µ¤ì¤ë INTERVAL ʸ¤ò²òÀ⤷¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢¹Í¤¨¤é¤ì¤ëÀ©Ìó¤ÈÎã¤ò¸ò¤¨¤Æ¡¢³Æʸ¤Î¹½Ê¸¤È²òÀâ¤ò¼¨¤·¤Þ¤¹¡£

·¿¤ÎÀë¸À

INTERVAL ̾Á°ÉÕ¤­Äê¿ô¡¢ÊÑ¿ô¡¢´Ø¿ô¤Î·ë²Ì¤òÀë¸À¤¹¤ë¤Ë¤Ï¡¢INTERVAL ʸ¤ò»ÈÍѤ·¤Þ¤¹¡£INTERVAL ¤Ïɸ½à¤Î¿ôÃÍ·¿Àë¸Àʸ¤ÈƱ¤¸¹½Ê¸¤È°ÕÌ£ÏÀ¤ò»ý¤ÄÁȤ߹þ¤ß¤Î¿ôÃÍ·¿Àë¸Àʸ¤Ç¤¹¡£INTERVAL ʸ¤ò»È¤Ã¤¿ÍÑË¡¤Ç¤Ï¡¢Â¾¤Î¿ôÃÍ·¿Àë¸ÀÍÑË¡¤Ë¸ºß¤¹¤ë¤Î¤ÈƱ¤¸»ØÄ꤬ÍøÍѤǤ­¤Þ¤¹¡£

²òÀ⡧Àë¸À¤Ï¡¢INTERVAL¡¢INTERVAL(4)¡¢INTERVAL(8)¡¢INTERVAL(16)¤Î¤¤¤º¤ì¤«¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

INTERVAL

¼¡¤Î¤è¤¦¤ÊÀë¸À¤Ç¤Ï¡¢

INTERVAL :: W

ÊÑ¿ô W ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î 8 ¤Î¶è´Ö KTPV ¤ò»ý¤Á¡¢16 ¥Ð¥¤¥È¤ÎϢ³¤¹¤ë¥á¥â¥ê¡¼¤òÀêÍ­¤·¤Þ¤¹¡£Sun WorkShop 6 ¤Î Fortran 95 ¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¶è´Ö KTPV ¤Ï¡¢-xtypemap ¤Þ¤¿¤Ï -r8const ¤Î¤è¤¦¤ÊǤ°Õ¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Ë¤è¤êÊѹ¹¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

INTERVAL ¤Ï¹½Â¤·¿Ì¾¤È¤·¤Æ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¥³¡¼¥ÉÎã 2-22 ¤Î¥³¡¼¥É¤ÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-22   ´Ö°ã¤Ã¤¿¹½Â¤·¿¡§ INTERVAL

TYPE INTERVAL
	 REAL :: INF, SUP
END TYPE INTERVAL

n {4, 8, 16} ÍѤΠINTERVAL(n)

¼¡¤Î¤è¤¦¤ÊÀë¸À¤Ç¤Ï¡¢

INTERVAL(n) :: W

ÊÑ¿ô W ¤Ï¡¢KTPV = n ¤Î KTPV ¤ò»ý¤Á¡¢2n ¥Ð¥¤¥È¤ÎϢ³¤¹¤ë¥á¥â¥ê¡¼¤òÀêÍ­¤·¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-23 ¤Ï¡¢°Û¤Ê¤ë KTPV ¤ò»ý¤Ä¶è´ÖÊÑ¿ô¤ÎÀë¸À¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£ºÇÂçÉýÍ×µáÃͤȸ·Ì©ÃͤÎÀ°Îó¤â¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-23   °Û¤Ê¤ë KTPV ¤ò»ý¤Ä¶è´Ö¤ÎÀë¸À

math% cat ce2-23.f95
INTERVAL(4)  :: X1, X2 
INTERVAL(8)  :: Y1, Y2 
INTERVAL(16) :: Z1, Z2
REAL(8)      :: D = 1.2345 

 
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
 X1 = D
 Y1 = D
 Z1 = D

 

 
! ƱÅù¤Î¸·Ì©¥³¡¼¥É
X2 = INTERVAL(INTERVAL(D, KIND=8), KIND=4) 
Y2 = INTERVAL(D, KIND=8)
Z2 = INTERVAL(D, KIND=16)

 
IF (X1 == X2) PRINT *, 'Check1'
IF (Y1 == Y2) PRINT *, 'Check2'
IF (Z1 == Z2) PRINT *, 'Check3'
END 
 
math% f95 -xia ce2-23.f95
math% a.out
 Check1
 Check2
 Check3

¥³¡¼¥ÉÎã 2-24 ¤Ï¡¢¶è´ÖÊÑ¿ô¤ÎÀë¸À¤È½é´ü²½¤Ë¤Ä¤¤¤Æ¼¨¤·¤Æ¤¤¤Þ¤¹¡£¶è´ÖÄê¿ô¤òÊ̤ÎÊýË¡¤Çɽ¸½¤¹¤ë¤Ë¤Ï¡¢¡Ö¶è´ÖÄê¿ô¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥³¡¼¥ÉÎã 2-24   ¶è´ÖÊÑ¿ô¤ÎÀë¸À¤È½é´ü²½

math% cat ce2-24.f95
INTERVAL :: U = [1, 9.1_8], V = [4.1]

 
! ºÇÂçÉýÍ׵ᥳ¡¼¥É
INTERVAL :: W1 = 0.1_16

 
! ƱÅù¤Î¸·Ì©¥³¡¼¥É
INTERVAL :: W2 = [0.1_16]

 
PRINT *, U, V
IF (W1 .SEQ. W2) PRINT *, 'Check'
END 
 
math% f95 -xia ce2-24.f95
math% a.out
 [1.0,9.1000000000000015] [4.0999999999999996,4.1000000000000006]
 ¸¡¾Ú

Ǥ°Õ¤Î½é´ü²½¤òȼ¤¦Àë¸Àʸ¤ÎÃæ¤Ç¤Ï¡¢¥Ç¡¼¥¿¼°¤Î·¿¤¬µ­¹æ̾¤Î·¿¤È°ìÃפ·¤Ê¤¤¾ì¹ç¡¢·¿ÊÑ´¹¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-25   ¶è´ÖÇÛÎó¤ÎÀë¸À

INTERVAL(4) :: R(5), S(5) 
INTERVAL :: U(5), V(5) 
INTERVAL(16) :: X(5), Y(5) 

DATA ʸ

¹½Ê¸

¶è´ÖÊÑ¿ô¤ò´Þ¤à DATA ʸ¤Î¹½Ê¸¤Ï¡¢¶è´ÖÊÑ¿ô¤¬¶è´ÖÄê¿ô¤òÍѤ¤¤Æ½é´ü²½¤µ¤ì¤ëÅÀ¤ò½ü¤±¤Ð¡¢Â¾¤Î¿ôÃͥǡ¼¥¿·¿¤Î¤â¤Î¤ÈƱ¤¸¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-26   ¶è´ÖÊÑ¿ô¤ò´Þ¤à DATA ʸ

INTERVAL X
DATA X/[1,2]/

EQUIVALENCE ʸ

Ǥ°Õ¤Î¶è´ÖÊÑ¿ô¤Þ¤¿¤ÏÇÛÎó¤Ï¡¢¼¡¤ÎÀ©¸ÂÉÕ¤­¤Ç EQUIVALENCE ʸ¤ÎÃæ¤Ë¸½¤ì¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢·ë¹çÂбþ¤¬¶è´ÖÊÑ¿ô¤Þ¤¿¤ÏÇÛÎó¤ò´Þ¤à¾ì¹ç¡¢·ë¹çÂбþÆâÉô¤Î¤¹¤Ù¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥³¡¼¥ÉÎã 2-18 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢Æ±¤¸·¿¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¶è´Ö¸ÇÍ­¤ÎÀ©Ìó¤Ç¤Ï¤Ê¤¯¡¢Fortran µ¬³Ê¤ÎÀ©Ìó¤Ç¤¹¡£

FORMAT ʸ

¹½Ê¸

¶è´ÖÍѤÎÈ¿Éü²Äǽ¤ÊÊÔ½¸µ­½Ò»Ò¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

D ¢º {E, EN, ES, G}

¤Ç¤¢¤ë¾ì¹ç¡¢

Fw.d¡¢VFw.d¡¢Dw.d¡¢VDw.d¡¢Dw.dEe¡¢VDw.dEe¡¢Yw.d¡¢Yw.dEe
w ¤È e ¤Ï¡¢Èó¥¼¥í¤ÎÉä¹æ¤Ê¤·À°¿ôÄê¿ô¤ò¡¢d ¤ÏÉä¹æ¤Ê¤·À°¿ôÄê¿ô¤òɽ¤·¤Þ¤¹¡£

ÊÔ½¸µ­½Ò»Ò¤ò»È¤Ã¤Æ¶è´Ö¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë¤¿¤á¤Îµ­½Ò»Ò¤Î»ØÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÆþÎϤȽÐÎϡפò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢Èó¶è´Ö¥Ç¡¼¥¿¤òÍѤ¤¤¿É¸½àÊÔ½¸µ­½Ò»Ò¤ÎÆ°ºî¤Ë¤Ä¤¤¤Æ¤Ï¡¢Fortran ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¤¹¤Ù¤Æ¤Îɸ½à Fortran ¤ÎÊÔ½¸µ­½Ò»Ò¤Ï¶è´Ö¤ò¼õ¤±Æþ¤ì¤Þ¤¹¡£¶è´ÖÀìÍѥС¼¥¸¥ç¥ó¤Îɸ½à E¡¢F¡¢G ¤ÎÊÔ½¸µ­½Ò»Ò¤Ë¤ÏÀÜƬ¼­¤È¤·¤Æ V ¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-27 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¶è´Ö¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¿¤Ï½ñ¤­½Ð¤·¤¹¤ë¾ì¹ç¡¢È¿ÉüÉÔǽ¤ÎÊÔ½¸µ­½Ò»Ò¤òÊѹ¹¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-27   È¿ÉüÉÔǽ¤ÎÊÔ½¸µ­½Ò»Ò¤ÎÎã

math% cat ce2-27.f95
INTERVAL :: X = [-1.3, 1.3]
WRITE(*, '(SP, VF20.5)') X
WRITE(*, '(SS, VF20.5)') X
END
math% f95 -xia ce2-27.f95
math% a.out
 [-1.30001,+1.30001]
 [-1.30001, 1.30001]

²òÀâ

È¿Éü²ÄǽÊÔ½¸µ­½Ò»Ò

È¿Éü²Äǽ¤ÊÊÔ½¸µ­½Ò»Ò¡¢E¡¢F¡¢EN¡¢ES¡¢G¡¢VE¡¢VEN¡¢VES¡¢VF¡¢VG¡¢Y ¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¤ÎÊÔ½¸ÊýË¡¤ò»ØÄꤷ¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-28 ¤Ï¡¢¶è´Ö¸ÇÍ­¤ÎÊÔ½¸µ­½Ò»Ò¤ÎÎã¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-28   ¶è´Ö¸ÇÍ­¤ÎÊÔ½¸µ­½Ò»Ò¤ò»È¤Ã¤¿ FORMAT ʸ

FORMAT(VE22.4E4) 
FORMAT(VEN22.4) 
FORMAT(VES25.5) 
FORMAT(VF25.5) 
FORMAT(VG25.5) 
FORMAT(VG22.4E4) 
FORMAT(Y25.5) 

ÄɲÃŪ¤ÊÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÆþÎϤȽÐÎϡפò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

FUNCTION (³°Éô)

¥³¡¼¥ÉÎã 2-29 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¶è´Ö³°Éô´Ø¿ô¤ÈÈó¶è´Ö³°Éô´Ø¿ô¤È¤Î´Ö¤Ë¤Ï¡¢´Ø¿ô¤È°ú¿ô¤ÎÄêµÁ¤ÎÃæ¤Ç INTERVAL ·¿ (INTERVAL¡¢INTERVAL(4)¡¢INTERVAL(8)¡¢¤Þ¤¿¤Ï¡¢INTERVAL(16)) ¤ò»ÈÍѤ¹¤ëÅÀ¤ò½ü¤±¤Ð¡¢Â¾¤Ë°ã¤¤¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-29   ¥Ç¥Õ¥©¥ë¥È¤Î¶è´Ö´Ø¿ô

INTERVAL FUNCTION SQR (A)                    ! 1¹ÔÌÜ
INTERVAL :: A 
SQR = A**2 
RETURN 
END 

1 ¹ÔÌܤΥǥե©¥ë¥È¤Î INTERVAL ¤Ï¡¢¥³¡¼¥ÉÎã 2-30 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢ÌÀ¼¨Åª¤Êɽ¸½¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-30   ÌÀ¼¨Åª¤Ê INTERVAL(16) ´Ø¿ôÀë¸À

INTERVAL(16) FUNCTION SQR (A)                ! 1¹ÔÌÜ

IMPLICIT °À­

¶è´Ö̾¤Î¥Ç¥Õ¥©¥ë¥È·¿¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢IMPLICIT °À­¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

IMPLICIT INTERVAL (8) (V)

INTRINSIC ʸ

¼ÂºÝ¤Î°ú¿ô¤È¤·¤Æ°ú¤­ÅϤ»¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤ËÁȤ߹þ¤ß¤Î´Ø¿ô¤òÀë¸À¤¹¤ë¤Ë¤Ï¡¢INTRINSIC ʸ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

¥³¡¼¥ÉÎã 2-31    ÁȤ߹þ¤ß¤Î´Ø¿ôÀë¸À

INTRINSIC VDSIN, VDCOS, VQSIN
X = CALC(VDSIN, VDCOS, VQSIN) 


Ãí - INTRINSIC ʸ¤Ç¤Ï¡¢°ìÈÌ´Ø¿ô¤Î¸ÄÊÌ̾¤¬»ÈÍѤµ¤ì¡¢¼ÂºÝ¤Î°ú¿ô¤È¤·¤Æ°ú¤­ÅϤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¡ÖÁȤ߹þ¤ß¤Î°ìÈ̶è´Ö´Ø¿ôÍѤθÄÊÌ̾¡×¤È¡ÖÁȤ߹þ¤ß´Ø¿ô¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¼¡¤ÎÁȤ߹þ¤ß¤Î¶è´Ö´Ø¿ô¤Ï¡¢°ìÈÌ´Ø¿ô¤Ç¤¹¤«¤é¡¢¼ÂºÝ¤Î°ú¿ô¤È¤·¤Æ°ú¤­ÅϤ¹¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

NDIGITS¡¢INTERVAL

NAMELIST ʸ

NAMELIST ʸ¤Ï¶è´Ö¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-32   NAMELIST ¤Ç¤Î INTERVAL

CHARACTER(8) :: NAME 
CHARACTER(4) :: COLOR 
INTEGER      :: AGE 
INTERVAL(4)  :: HEIGHT 
INTERVAL(4)  :: WEIGHT 
NAMELIST /DOG/ NAME, COLOR, AGE, WEIGHT, HEIGHT 

PARAMETER °À­

PARAMETER °À­¤Ï¡¢¶è´Ö¤Î½é´ü²½·ë²Ì¤ò̾Á°ÉÕ¤­Äê¿ô (PARAMETER) ¤ËÂåÆþ¤¹¤ë¤Î¤Ë»ÈÍѤ·¤Þ¤¹¡£

¹½Ê¸

PARAMETER (p = e [, p = expr]...)

p ¶è´Ö±Ñ»ú̾
expr ¶è´ÖÄê¿ô¼°
= e ¤ÎÃͤòµ­¹æ̾ p ¤ËÂåÆþ¤¹¤ë
²òÀâ

µ­¹æ̾ p ¤ÈÄê¿ô¼° expr ¤Ï¶¦¤Ë INTERVAL ·¿¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

Äê¿ô¼°¤Ç¤Ï¡¢À°¿ô¤ÎÎß¾è¤ËÂФ¹¤ëÎß¾èË¡¤Ïµö¤µ¤ì¤Þ¤¹¡£

ºÇÂçÉýÍ׵ἰ½èÍý¤Î¤â¤È¤Ç¤Ï¡¢¶è´Ö¤Î̾Á°ÉÕ¤­Äê¿ôÄêµÁ¤ÎÃæ¤Ç¡¢º®¹ç¥â¡¼¥É¤Î¶è´Ö¼°¤Îɾ²Á¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£Äê¿ô¼°¤Î·¿¤¬Ì¾Á°ÉÕ¤­Äê¿ô¤Î·¿¤È°ìÃפ·¤Ê¤¤¾ì¹ç¤Ï¡¢ºÇÂçÉýÍ׵ἰ½èÍý¤Î¤â¤È¤Ç·¿ÊÑ´¹¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£


Ãí°Õ - f95 ¤Ç¤Ï¡¢Èó¶è´ÖÄê¿ô¼°¤Ï¸å³¤Îº®¹ç¥â¡¼¥É¶è´Ö¼°¤ÎÃæ¤Ç¤Î»ÈÍѤò¹Í褻¤º¤Ë¥³¥ó¥Ñ¥¤¥ë»þ¤Ëɾ²Á¤µ¤ì¤Þ¤¹¡£¤³¤ì¤é¤Î¼°¤ÏºÇÂçÉýÍ׵ἰ½èÍý¤Î¥¹¥³¡¼¥×³°¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢Èó¶è´Ö¤Î̾Á°ÉÕ¤­Äê¿ô¤ÎÃͤÎÀßÄê¤ËÍѤ¤¤é¤ì¤ëÅÀ¼°¤ÎÃͤò´Þ¤à¤¿¤á¤ÎÍ×·ï¤Ï¸ºß¤·¤Þ¤»¤ó¡£º®¹ç¥â¡¼¥É¤Î¶è´Ö¼°¤ÎÃæ¤ÇÈó¶è´Ö¤Î̾Á°ÉÕ¤­Äê¿ô¤¬¸½¤ì¤ëÅ٤ˡ¢¥æ¡¼¥¶¡¼¤¬µ¤ÉÕ¤¯¤è¤¦¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£Fortran µ¬³Ê¤ÇÄêµÁ¤µ¤ì¤¿Ì¾Á°ÉÕ¤­Äê¿ô¤Ï¤è¤êŬÀڤˤϡ¢Æɤ߼è¤êÀìÍÑÊÑ¿ô¤È¸Æ¤Ð¤ì¤Þ¤¹¡£Æɤ߼è¤êÀìÍÑÊÑ¿ô¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿³°ÉôÃͤϸºß¤·¤Þ¤»¤ó¡£

ɸ½à Fortran 95 ¤Ç¤Ï¡¢Ì¾Á°ÉÕ¤­Äê¿ô¤Ï¡¢¶è´ÖÄê¿ô¤ÎºÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Îɽ¸½¤Ë¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£¤³¤ÎÀ©Ì󤬤³¤Î¥ê¥ê¡¼¥¹¤Ç¶¯À©¤µ¤ì¤Ê¤¤¤Î¤Ï¡¢´ûÃΤΥ¨¥é¡¼¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-33   Èó¶è´Ö¤Î PARAMETER °À­¤Ç¤ÎÄê¿ô¼°

math% cat ce2-33.f95
REAL(4), PARAMETER      :: R   = 0.1
INTERVAL(4), PARAMETER  :: I4  = 0.1
INTERVAL(16), PARAMETER :: I16 = 0.1
INTERVAL                :: XR, XI
XR = R4
XI = I4
IF ((.NOT.(XR.SP.I16)).AND. (XI.SP.I16)) PRINT *, 'Check'
END
math% f95 -xia ce2-33.f95
math% a.out
 ¸¡¾Ú


Ãí - XR ¤Ï¡¢1/10 ¤ò´Þ¤ß¤Þ¤»¤ó¤¬¡¢XI ¤Î¾ì¹ç¤Ï´Þ¤ß¤Þ¤¹¡£

Fortran 95 ·Á¼°¤Î POINTER

¥Ý¥¤¥ó¥¿¤ò»ÈÍѤ·¤Æ¶è´Ö¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-34   ¶è´Ö¥Ý¥¤¥ó¥¿

INTERVAL, POINTER :: PX
INTERVAL :: X
X => P

ʸ´Ø¿ô

¥Ñ¥é¥á¡¼¥¿ÉÕ¤­¶è´Ö¼°¤ÎÀë¸À¤Èɾ²Á¤Ë¤Ïʸ´Ø¿ô¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢Èó¶è´Öʸ´Ø¿ô¤ÎÀ©Ìó¤¬Å¬ÍѤµ¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-35   ¶è´Öʸ´Ø¿ô

math% cat ce2-35.f95
INTERVAL :: X, F
F(X) = SIN(X)**2 + COS(X)**2
IF(1 .IN. F([0.5])) PRINT *, 'Check'
END 
math% f95 -xia ce2-35.f95
math% a.out
 Check

·¿Àë¸Àʸ

·¿Àë¸Àʸ¤Ï¡¢ÊÑ¿ôʤӤÎÃæ¤ÎÊÑ¿ô¤Î¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤È¤·¤Æ¡¢·¿Àë¸Àʸ¤ÏÇÛÎó¤Î¼¡¸µ¤ò»ØÄꤷ¡¢Ãͤò»ÈÍѤ·¤Æ½é´ü²½¤·¤Þ¤¹¡£

¹½Ê¸

¹½Ê¸¤Ï¡¢·¿¤¬ INTERVAL¡¢INTERVAL(4)¡¢INTERVAL(8)¡¢INTERVAL(16)¤ÎINTERVAL ·¿»ØÄê»Ò¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ëÅÀ¤ò½ü¤±¤Ð¡¢Èó¶è´Ö¤Î¿ôÃͥǡ¼¥¿·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£

²òÀâ

·¿Àë¸Àʸ¤ÎÆÃÀ­¤Ï¡¢INTERVAL ·¿¤Ë¤Ä¤¤¤Æ¤â¡¢Â¾¤Î¿ôÃͥǡ¼¥¿·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£

À©Ìó

Èó INTERVAL ¤Î¿ôÃÍ·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-36   INTERVAL ¤Î·¿Àë¸Àʸ

INTERVAL     :: I, J = [0.0] 
INTERVAL(16) :: K = [0.1, 0.2_16] 
INTERVAL(16) :: L = [0.1] 

Îã¤ÎÃíµ­¡§

WRITE ʸ

WRITE ʸ¤Ï¡¢Èó INTERVAL ·¿¤ÎÊÑ¿ô¤¬½èÍý¤µ¤ì¤ë¤Î¤ÈƱ¤¸ÊýË¡¤Ç¡¢¶è´ÖÊÑ¿ô¤ò¼õ¤±Æþ¤ì¤ÆÆþÎÏ/½ÐÎϤÎʤӤò½èÍý¤·¤Þ¤¹¡£ÄêµÁºÑ¤ß¤Î¶è´ÖÊÔ½¸µ­½Ò»Ò¤ò»È¤¨¤Ð¡¢¶è´Ö¥Ç¡¼¥¿¤Î½ñ¼°²½µ­½Ò¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÊÑ¿ô·²Í×ÁÇʤӤΠWRITE ʸ¤Ï¶è´Ö¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

READ ʸ

READ ʸ¤Ï¡¢Èó INTERVAL ·¿¤ÎÊÑ¿ô¤¬½èÍý¤µ¤ì¤ë¤Î¤ÈƱ¤¸ÊýË¡¤Ç¡¢¶è´ÖÊÑ¿ô¤ò¼õ¤±Æþ¤ì¤ÆÆþÎÏ/½ÐÎϤÎʤӤò½èÍý¤·¤Þ¤¹¡£

ÆþÎϤȽÐÎÏ

¶è´ÖÆþÎÏ/½ÐÎϤò¼Â¹Ô¤¹¤ë¥×¥í¥»¥¹¤Ï¾¤ÎÈó¶è´Ö¥Ç¡¼¥¿·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£

³°Éôɽ¸½

x ¤¬¡¢Ê¤Ӥˤè¤ë¡¢¤Þ¤¿¤Ï¡¢½ñ¼°²½¤µ¤ì¤¿ÆþÎÏ/½ÐÎϤòÍѤ¤¤ÆÆɤ߽ñ¤­¤Ç¤­¤ë³°Éô (¾®¿ô) ¿ô¤Ç¤¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£ÆâÉôŪ¤Ê¶á»÷Ãͤȳ°ÉôÃͤȤζèÊ̤˴ؤ·¤Æ¤Ï¡¢¡ÖFortran ³ÈÄ¥¡×°Ê²¼¤Î³ÆÀá¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¤è¤¦¤Ê¿ô¤Ï³°Éô¶è´Ö¤Þ¤¿¤Ï½ªÎ»ÅÀ¤Î¤¤¤º¤ì¤«¤Îɽ¸½¤Ë»È¤¨¤Þ¤¹¡£³°Éô¶è´Ö¤Ë¤Ï¡¢¼¡¤Ë¼¨¤¹ 3 ¤Ä¤Îɽ¼¨²Äǽ¤Ê·Á¼°¤¬¤¢¤ê¤Þ¤¹¡£

Àµ¤Þ¤¿¤ÏÉé¤ÎÉÔÄê¶è´Ö½ªÎ»ÅÀ¤Ï¡¢¥Þ¥¤¥Ê¥¹¤Þ¤¿¤Ï¥ª¥×¥·¥ç¥ó¤Î¥×¥é¥¹µ­¹æ¤ÎÀÜƬ¼­¤ò»ý¤ÄÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤Ê¸»úÎó INF ¤Þ¤¿¤Ï INFINITY ¤È¤·¤Æ¤ÎÆþÎÏ/½ÐÎϤǤ¹¡£

¶õ¤Î¶è´Ö¤Ï¡¢³Ñ³ç¸Ì [...] ¤Ç°Ï¤Þ¤ì¤¿Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤Ê¸»úÎó EMPTY ¤È¤·¤Æ¤ÎÆþÎÏ/½ÐÎϤǤ¹¡£Ê¸»úÎó EMPTY ¤Ï¡¢¤½¤ÎÁ°¸å¤ò¶õÇò¤È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥³¡¼¥ÉÎã 1-6 ¤ò»È¤¨¤Ð¡¢³ÈÄ¥¶è´Ö¤ò»î¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤µ¤é¤Ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö»»½Ñ±é»»»Ò +¡¢-¡¢*¡¢/¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

ÆþÎÏ

ÆþÎÏ»þÅÀ¤Ç¤Ï¡¢Ç¤°Õ¤Î³°Éô¶è´Ö X ¤Þ¤¿¤Ï¤½¤Î¹½À®Í×ÁǤǤ¢¤ë X_inf ¤È X_sup ¤ò¡¢Dw.d ÊÔ½¸µ­½Ò»Ò¤¬¼õ¤±Æþ¤ì¤ëǤ°Õ¤ÎÊýË¡¤Ç½ñ¼°²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤³¤Ç¡¢input-field¡¢input-field1¡¢input-field2 ¤¬¡¢¤½¤ì¤¾¤ì¡¢Dw'.d¡¢Dw1.d¡¢Dw2.d ÊÔ½¸µ­½Ò»ÒÍѤÎÍ­¸ú¤ÊÆþÎÏ¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£

w ¤Ï¶è´ÖÆþÎÏ¥Õ¥£¡¼¥ë¥É¤ÎÉý¤Ç¤¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£ÆþÎÏ»þ¤Ë¡¢w ¤Ï¥¼¥í¤è¤êÂ礭¤¯¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó¡£¤¹¤Ù¤Æ¤Î¶è´ÖÊÔ½¸µ­½Ò»Ò¤Ï¡¢°Ê²¼¤Î 3 ¤Ä¤Î·Á¼°¤Î¤É¤ì¤« 1 ¤Ä¤Î·Á¼°¤Ç¶è´Ö¥Ç¡¼¥¿¤ÎÆþÎϤò¼õ¤±Æþ¤ì¤Þ¤¹¡£

ºÇ½é¤Î·Á¼° (³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¡¢¥³¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿ 2 ¤Ä¤Î¿ô) ¤Ï¡¢ÆëÀ÷¤ß¤Î¤¢¤ë [inf, sup] ɽ¸½¤Ç¤¹¡£

2 ÈÖÌܤηÁ¼° (³Ñ³ç¸Ì¤Ç°Ï¤Þ¤ì¤¿Ã±°ì¤Î¿ô) ¤ÏÅÀ¡¢¤Þ¤¿¤Ï½ÌÂष¤¿¶è´Ö¤òɽ¤·¤Þ¤¹¡£

3 ÈÖÌܤηÁ¼° (³Ñ³ç¸Ì¤Ê¤·) ¤Ï¶è´Ö¤Îñ¿ô·Á¼°¤Ç¤¢¤ê¡¢¤³¤³¤Ç¤Ï¶è´ÖÉý¤Î·èÄê¤ËºÇ½ªÉ½¼¨·å¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£¡ÖY ÊÔ½¸µ­½Ò»Ò¤òÍѤ¤¤¿Ã±¿ôÊÔ½¸¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤µ¤é¤Ë¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢M.Schulte¡¢V.Zelov¡¢G.W.Walster¡¢D.Chiriaev Ãø¡¢¡ÖSingle-Number Interval I/O¡×¡¢¡ØDevelopments in Reliable Computing¡Ù¡¢T. Schulte¾ (Kluwer 1999ǯ) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

ºÇÂç²¼¸Â¤¬ÆâÉôŪ¤Ëɽ¸½¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢Æ±¤¸¤â¤Î¤è¤ê¤â¾®¤µ¤¤¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ëÆâÉôŪ¤Ê¶á»÷ÃͤؤȴݤáÀڤ겼¤²¤¬¹Ô¤ï¤ì¤Þ¤¹¡£ºÇ¾®²¼¸Â¤¬ÆâÉôŪ¤Ëɽ¸½¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢ÆþÎÏÃͤÈƱ¤¸¤â¤Î¤è¤ê¤âÂ礭¤¤¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ëÆâÉôŪ¤Ê¶á»÷ÃͤؤȴݤáÀÚ¤ê¾å¤²¤¬¹Ô¤ï¤ì¤Þ¤¹¡£½ÌÂष¤¿¶è´Ö¤¬ÆâÉôŪ¤Ëɽ¸½¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢´Ý¤áÀڤ겼¤²¤Þ¤¿¤Ï´Ý¤áÀÚ¤ê¾å¤²¤Ë¤è¤ê¡¢ÆþÎÏÃͤÈƱ¤¸¤â¤Î¤ò´Þ¤à¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ëÆâÉôŪ¤ÊINTERVAL ¶á»÷Ãͤ¬·ÁÀ®¤µ¤ì¤Þ¤¹¡£

ʤӤˤè¤ëÆþÎÏ

ÆþÎϤÎʤӹàÌܤ¬¶è´Ö¤Ç¤¢¤ë¾ì¹ç¡¢ÆþÎϵ­Ï¿ÆâÉô¤ÎÂбþ¤¹¤ëÍ×ÁǤϳ°Éô¤Î¶è´Ö¤Þ¤¿¤Ï¥Ì¥ëÃͤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

³°Éô¤Î¶è´ÖÃͤϡ¢¶è´Ö¡¢REAL ¤Þ¤¿¤Ï INTEGER ʸ»úÄê¿ô¤ÈƱ¤¸·Á¼°¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¶è´Ö¤ÎÃͤ¬³Ñ³ç¸Ì [...] ¤Ç°Ï¤Þ¤ì¤Ê¤¤ REAL ¤Þ¤¿¤Ï INTEGER ʸ»úÄê¿ô¤Î·Á¼°¤ò»ý¤Ä¾ì¹ç¡¢³°Éô¤Î¶è´Ö¤Ïñ¿ô¶è´Öɽ¸½ ([x] + [-1,1]uld ¡ÝºÇ½ª·å¤Ç¤Îñ°Ì) ¤ò»È¤Ã¤ÆËÝÌõ¤µ¤ì¤Þ¤¹¡£

[inf, sup] ÆþÎÏ·Á¼°¤ò»È¤¦¾ì¹ç¤Ï¡¢ºÇÂç²¼¸Â (infimum) ¤È¥«¥ó¥Þ¤Î´Ö¡¢¤Þ¤¿¤Ï¡¢¥«¥ó¥Þ¤ÈºÇ¾®¾å¸Â (supremum) ¤Î´Ö¤Çµ­Ï¿½ªÎ»¤¬È¯À¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

2 ¤Ä¤ÎϢ³¤¹¤ë¥³¥ó¥Þ¤Ë¤è¤ê»ØÄꤵ¤ì¤¿¥Ì¥ëÃͤϡ¢Âбþ¤¹¤ë¶è´Ö¤ÎʤӹàÌܤ¬Êѹ¹¤µ¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£


Ãí - ¶è´Ö¤ÎºÇÂç²¼¸Â¤Þ¤¿¤ÏºÇ¾®¾å¸ÂÍѤ˥̥ëÃͤò»ÈÍѤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-37   Ê¤ÓÆþÎÏ/½ÐÎÏ¥³¡¼¥É

math% cat ce2-37.f95
INTERVAL, DIMENSION(6) :: X
INTEGER I
DO I = LBOUND(X, 1), UBOUND(X, 1)
    READ(*, *) X(I) 
    WRITE(*, *) X(I) 
END DO
END 
math% f95 -xia ce2-37.f95
math% a.out
1.234500
 [1.2344989999999997,1.2345010000000001]
[1.2345]
 [1.2344999999999999,1.2345000000000002]
[-inf,2]
 [-Inf,2.0]
[-inf]
 [-Inf,-1.7976931348623157E+308]
[EMPTY]
 [EMPTY]
[1.2345,1.23456]
 [1.2344999999999999,1.2345600000000002]

½ñ¼°ÉÕ¤­ÆþÎÏ/½ÐÎÏ

¼¡¤Ë¡¢¶è´ÖÊÔ½¸µ­½Ò»Ò¤ò¼¨¤·¤Þ¤¹¡£

¶è´ÖÊÔ½¸µ­½Ò»Ò¤Ï°Ê²¼¤Î¤è¤¦¤Ê»ØÄê¤ò¹Ô¤¤¤Þ¤¹¡£

w ¤È d ¥Ñ¥é¥á¡¼¥¿¤Ïɬ¤º»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Ee ¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£

w ¤È d »ØÄê»Ò¤Ïɬ¤ºÂ¸ºß¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢°Ê²¼¤ÎÀ©Ìó¤Ë½¾¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

ÆþÎÏÆ°ºî

½ñ¼°ÉÕ¤­¶è´ÖÆþÎϤÎÆþÎÏÆ°ºî¤Ï¡¢¤¹¤Ù¤Æ¤Î¾ì¹ç¤Ç³ÊǼ¤µ¤ì¤¿ÆâÉôŪ¤Ê¶á»÷Ãͤ¬ÆþÎÏʸ»úÎó¤Çɽ¤µ¤ì¤ë³°ÉôÃͤò´Þ¤à¤È¤¤¤¦ÅÀ¤ò½ü¤±¤Ð¡¢Â¾¤Î¿ôÃͥǡ¼¥¿·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£¤³¤Î¤¿¤á¡¢Êñ´Þ¤Ç¤Ï¡¢¶è´Ö½ªÎ»ÅÀ¤Î´Ý¤á¤¬É¬Íפˤʤ뤳¤È¤¬¤¢¤ê¤Þ¤¹¡£Ç¤°Õ¤ÎÆþÎ϶è´Öʸ»ú¤ò input_string¡¢¤³¤ì¤ËÂбþ¤¹¤ë³°ÉôÃÍ ev ¤ò (input_string)¡¢ÆþÎÏÊÑ´¹¸å¤Î·ë²Ì¤È¤·¤Æ¤ÎÆâÉôŪ¤Ê¶á»÷Ãͤò X ¤È¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

ev(input_string) ¢¼ X

ÆþÎϲáÄø¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¶è´ÖÊÔ½¸µ­½Ò»Ò¤ÏƱ¤¸°ÕÌ£ÏÀ¤ò»ý¤Á¤Þ¤¹¡£¥Ñ¥é¥á¡¼¥¿ w ¤ÎÃͤϡ¢³°Éô¤Î¶è´Ö¤ò´Þ¤à¥Õ¥£¡¼¥ë¥ÉÉý¤Ç¤¢¤ê¡¢e ¤ÎÃͤÏ̵»ë¤µ¤ì¤Þ¤¹¡£

½ÐÎÏÆ°ºî

½ñ¼°ÉÕ¤­¶è´Ö½ÐÎϤνÐÎÏÆ°ºî¤Ï¡¢¤¹¤Ù¤Æ¤Î¾ì¹ç¤Ç½ÐÎÏʸ»úÎó¤Î»»½ÑÃͤ¬½ÐÎÏʤӤÎÆâÉôŪ¤Ê¥Ç¡¼¥¿¹àÌÜ»»½ÑÃͤò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÅÀ¤ò½ü¤±¤Ð¡¢Â¾¤Î¥Ç¡¼¥¿·¿¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£¤³¤Î¤¿¤á¡¢Êñ´Þ¤Ç¤Ï¶è´Ö½ªÎ»ÅÀ¤Î´Ý¤á¤¬É¬Íפˤʤ뤳¤È¤â¤¢¤ê¤Þ¤¹¡£Ç¤°Õ¤ÎÆâÉôŪ¤Ê¶è´Ö X ¤¬Í¿¤¨¤é¤ì¤ë¤È¡¢¤³¤ì¤ËÂбþ¤¹¤ë½ÐÎÏʸ»ú output_string ¤È³°ÉôÃÍ ev(output_string) ¤Ï¡¢¼¡¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Þ¤¹¡£

X ev(output_string)

½ÐÎϲáÄø¤Ç¤Ï¡¢°Û¤Ê¤ëÊÔ½¸µ­½Ò»Ò¤òÍѤ¤¤ë¤È¡¢¶è´Ö½ÐÎÏʤӹàÌܤζè´ÖÃͤ¬°Û¤Ê¤ë·Á¼°¤ò»ÈÍѤ·¤Æɽ¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Êñ´Þ¤ÎÀ©Ìó¤Ï¼¡¤Î¤³¤È¤òÍ׵ᤷ¤Þ¤¹¡£

ev(input_string) X ev(output_string)

½ñ¼°ÉÕ¤­ÆþÎÏ

¡Ö½ñ¼°ÉÕ¤­ÆþÎÏ/½ÐÎϡפ˷Ǻܤ·¤¿¤¹¤Ù¤Æ¤Î¶è´ÖÊÔ½¸µ­½Ò»Ò¤Ë¤Ä¤¤¤Æ¡¢½ñ¼°²½½ÐÎϤÎÆ°ºî¤ÏƱ¤¸¤Ç¤¹¡£¡ÖÆþÎϡפDzòÀ⤷¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÆþÎϤ¬¼õ¤±Æþ¤ì¤é¤ì¤Þ¤¹¡£

ÆþÎÏ¥Õ¥£¡¼¥ë¥É¤¬¾®¿ôÅÀ¤ò´Þ¤à¾ì¹ç¡¢d ¤ÎÃͤÏ̵»ë¤µ¤ì¤Þ¤¹¡£ÆþÎÏ¥Õ¥£¡¼¥ë¥É¤Ç¾®¿ôÅÀ¤¬¾Êά¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢d ¤ÏÆþÎÏÃͤξ®¿ôÅÀ¤Î°ÌÃÖ¤òɽ¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÆþÎÏÃͤÏÀ°¿ô¤È¤·¤ÆÆɤ߼è¤é¤ì¤Æ¡¢10(-d) ¤¬¾è¤¼¤é¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-38   ÆþÎÏÃͤξ®¿ôÅÀ¤Ï½ñ¼°»ØÄê»Ò¤ËÍ¥À褹¤ë

math% cat ce2-38.f95
INTERVAL :: X, Y
READ(*, '(F10.4)') X
READ(*, '(F10.4)') Y
WRITE(*, *)'1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, E19.6)') X
WRITE(*, '(1X, E19.6)') Y
END
math% f95 -xia ce2-38.f95
math% a.out
[.1234]
[1234]
 1234567890123456789012345678901234567890-position
      0.123400E+000 
      0.123400E+000 

¥³¡¼¥ÉÎã 2-39   ¶è´Ö¤Î¤¹¤Ù¤Æ¤ÎÊÔ½¸µ­½Ò»Ò¤Ïñ¿ô¤ÎÆþÎϤò¼õ¤±Æþ¤ì¤ë

math% cat ce2-39.f95
INTERVAL, DIMENSION(9) :: X
INTEGER                :: I
READ(*, '(Y25.3)')   X(1)
READ(*, '(E25.3)')   X(2)
READ(*, '(F25.3)')   X(3) 
READ(*, '(G25.3) ')  X(4) 
READ(*, '(VE25.3)')  X(5) 
READ(*, '(VEN25.3)') X(6) 
READ(*, '(VES25.3)') X(7) 
READ(*, '(VF25.3)')  X(8) 
READ(*, '(VG25.3)')  X(9)
DO I = LBOUND(X, 1), UBOUND(X, 1) 
    PRINT *, X(I)
END DO
END 
%math f95 -xia ce2-39.f95
%math a.out
1.23    
1.23
1.23
1.23
1.23
1.23
1.23
1.23
1.23
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]
 [1.2199999999999999,1.2400000000000003]

¶õÇò¤ÎÊÔ½¸ (BZ)

¸å³¤Î¥¼¥í¤Ïñ¿ô¤Î¶è´ÖÆþÎϤǤϰÕÌ£¤ò»ý¤Ä¤Î¤Ç¡¢¶è´Ö¥ê¥¹¥È¹àÌܤÎÆþÎϤΤ¿¤á¤Ë¶õÇò¤ò½èÍý¤¹¤ë¤È¡¢BZ À©¸æÊÔ½¸µ­½Ò»Ò¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-40   BZ µ­½Ò»Ò

math% cat ce2-40.f95
INTERVAL :: X
REAL(4)  :: R
READ(*, '(BZ, F40.6 )') X
READ(*, '(BZ, F40.6 )') R
WRITE(*, '(VF40.3)')    X
WRITE(*, '(F40.3)')     R
END
math% f95 -xia ce2-40.f95
math% a.out
[.9998   ]
    .9998
 [             0.999,             1.000]
                                   1.000

·å°ÜÆ°¿ô (P)

Y¡¢VE¡¢VEN¡¢VES¡¢VF¡¢VG µ­½Ò»ÒÍѤηå°ÜÆ°¿ô¤È¡¢¶è´Ö¤ËŬÍѤµ¤ì¤¿¾ì¹ç¤Î F¡¢E¡¢EN¡¢ES¡¢G ÊÔ½¸µ­½Ò»ÒÍѤηå°ÜÆ°¿ô¤Ï P ÊÔ½¸µ­½Ò»Ò¤ÇÊѹ¹¤Ç¤­¤Þ¤¹¡£P ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¤Î½ªÎ»ÅÀ¤ò REAL Ãͤξì¹ç¤ÈƱÍͤÎÊýË¡¤Ç·å°ÜÆ°¤·¤Þ¤¹¡£

½ñ¼°ÉÕ¤­½ÐÎÏ

¶è´Ö¤ËŬÍѤµ¤ì¤¿¡¢F¡¢E¡¢G ÊÔ½¸µ­½Ò»Ò¤Ï¡¢F ¤Þ¤¿¤Ï G ÊÔ½¸µ­½Ò»Ò¤¬ÍѤ¤¤é¤ì¤ë¤È½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤¬ F ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤Æ½ñ¼°²½¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤±¤Ð¡¢Y ÊÔ½¸µ­½Ò»Ò¤ÈƱ¤¸°ÕÌ£¤ò»ý¤Á¤Þ¤¹¡£E ÊÔ½¸µ­½Ò»Ò¤¬»ÈÍѤµ¤ì¤ë¾ì¹ç¤Ï¡¢½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤Ï E ÊÔ½¸µ­½Ò»Ò¤Ë¤è¤êµ­½Ò¤µ¤ì¤¿·Á¼°¤ò¾ï¤Ë»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

½ñ¼°ÉÕ¤­¶è´Ö½ÐÎϤϼ¡¤Î¤è¤¦¤ÊÆÃÀ­¤ò»ý¤Á¤Þ¤¹¡£

ɽ 2-13 ¤Ï¡¢½ÐÎϤ˴ؤ¹¤ë»Ø¿ô¥Õ¥£¡¼¥ë¥É¡¢e ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-13   ½ÐÎÏÊÔ½¸µ­½Ò»Ò¤Î»Ø¿ô¥Õ¥£¡¼¥ë¥É¥Ç¥Õ¥©¥ë¥ÈÃÍ
ÊÔ½¸µ­½Ò»Ò INTERVAL(4) INTERVAL(8) INTERVAL(16)
Y, E, EN, ES, G 
3 3 3
VE, VEN, VES, VG 
2 2 3


Y ÊÔ½¸µ­½Ò»Ò¤òÍѤ¤¤¿Ã±¿ôÊÔ½¸

Y ÊÔ½¸µ­½Ò»Ò¤Ïñ¿ô·Á¼°¤Ç¤Î³ÈÄ¥¶è´ÖÃͤò½ñ¼°²½¤·¤Þ¤¹¡£

³°Éô¶è´ÖÃͤ¬½ÌÂष¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢½ÐÎÏ·Á¼°¤Ï REAL ¤Þ¤¿¤Ï INTEGER ¤Îʸ»úÄê¿ô (³Ñ³ç¸Ì [...] ¤Ç°Ï¤Þ¤Ê¤¤ X ) ¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£³°ÉôÃͤϽÌÂष¤Æ¤¤¤Ê¤¤»»½Ñ¶è´Ö
[x] + [-1,1]uld ¤ËËÝÌõ¤µ¤ì¤Þ¤¹¡£

Y ÊÔ½¸µ­½Ò»Ò¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

Yw.dEe

d »ØÄê»Ò¤Ï¡¢Í­¸ú·å¤Îɽ¼¨ÍѤ˳ä¤êÅö¤Æ¤é¤ì¤¿¾ì½ê¤Î¿ô¤òÀßÄꤷ¤Þ¤¹¡£¤·¤«¤·¡¢¼ÂºÝ¤Ëɽ¼¨¤µ¤ì¤ë·å¿ô¤Ï¡¢w ¤ÎÃͤȳ°Éô¶è´Ö¤ÎÉý¤Ë°Í¸¤·¤Æ¡¢d ¤è¤ê¿¤¤¤³¤È¤â¡¢¾¯¤Ê¤¤¤³¤È¤â¤¢¤ê¤Þ¤¹¡£

e »ØÄê»Ò (¸ºß¤¹¤ì¤Ð) ¤Ï¡¢»Ø¿ôÍѤ˳ÎÊݤµ¤ì¤¿½ÐÎϲ¼°Ì¥Õ¥£¡¼¥ë¥É¤Î¾ì½ê¤Î¿ô¤òÄêµÁ¤·¤Þ¤¹¡£

e »ØÄê»Ò¤¬Â¸ºß¤¹¤ë¤È¡¢½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤Ï (F ÊÔ½¸µ­½Ò»Ò¤È¤ÏÈ¿ÂФË) E ÊÔ½¸µ­½Ò»Ò¤Ë¤è¤êµ­½Ò¤µ¤ì¤¿·Á¼°¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

ñ¿ô¶è´Öɽ¸½¤Ï¡¢[inf, sup] ɽ¸½¤è¤ê¤âÀµ³ÎÀ­¤ËÎô¤ë¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢Æä˶è´Ö¤Þ¤¿¤Ï¶è´Ö¤Îñ¿ôɽ¸½¤¬¥¼¥í¤Þ¤¿¤Ï̵¸ÂÂç¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¤Ë¤¢¤Æ¤Ï¤Þ¤ê¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢[-15, +75] ¤Îñ¿ôɽ¸½¤Î³°ÉôÃͤϡ¢ev([0E2]) = [-100, +100]¤Ç¤¹¡£[1, ¡ç] ¤Îñ¿ôɽ¸½¤Î³°ÉôÃͤϡ¢ev([0E+inf]) = ¤Ç¤¹¡£

¤³¤ì¤é¤Î¾ì¹ç¡¢ÆâÉôŪ¤Ê¶á»÷ÃͤΤè¤ê¶¹¤¤³°Éôɽ¸½¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¡¢w ʸ»ú¤ÎÆþÎÏ¥Õ¥£¡¼¥ë¥ÉÆâÉô¤ÎºÇÂçɽ¼¨²Äǽ¤ÊÍ­¸ú·å¿ô¤òɽ¼¨¤¹¤ë d' ¡æ 1¤È¶¦¤Ë¡¢VGw.d'Ee ÊÔ½¸µ­½Ò»Ò¤¬»È¤ï¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-41   Y [inf, sup] ·Á¼°¤Î½ÐÎÏ

math% cat ce2-41.f95
INTERVAL :: X = [-1, 10]
INTERVAL :: Y = [1, 6]
WRITE(*, '(Y20.5)') X 
WRITE(*, '(Y20.5)') Y 
END
math% f95 -xia ce2-41.f95
math% a.out
 [-1.     ,0.1E+002]
 [1.0     ,6.0     ]

w ʸ»ú½ÐÎÏ¥Õ¥£¡¼¥ë¥ÉÆâÉô¤Î½ÌÂष¤¿¶è´Ö¤Îɽ¼¨¤¬²Äǽ¤Ç¤¢¤ì¤Ð¡¢Ã±¿ô¤Î½ÐÎÏʸ»úÎó¤ÏÄ̾ï¤Î³Ñ³ç¸Ì [...] ¤Ç°Ï¤Þ¤ì¡¢·ë²Ì¤¬ÅÀ¤Ç¤¢¤ë¤³¤È¼¨¤·¤Þ¤¹¡£

½½Ê¬¤Ê¥Õ¥£¡¼¥ë¥ÉÉý¤¬¤¢¤ì¤Ð¡¢¤è¤êÂ礭¤¤Í­¸ú·å¿ô¤òɽ¼¨¤Ç¤­¤ë¤«¤É¤¦¤«¤Ë±þ¤¸¤Æ¡¢E ¤Þ¤¿¤Ï F ÊÔ½¸µ­½Ò»Ò¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£E ¤È F ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤¿É½¼¨·å¿ô¤¬Æ±¤¸¤Ç¤¢¤ì¤Ð¡¢F ÊÔ½¸µ­½Ò»Ò¤¬»ÈÍѤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-42   Yw.d ½ÐÎÏ

cat math% cat ce2-42.f95
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1x, F20.6)') [1.2345678, 1.23456789]
WRITE(*, '(1x, F20.6)') [1.234567, 1.2345678]
WRITE(*, '(1x, F20.6)') [1.23456, 1.234567]
WRITE(*, '(1x, F20.6)') [1.2345, 1.23456]
WRITE(*, '(1x, F20.6)') [1.5111, 1.5112]
WRITE(*, '(1x, F20.6)') [1.511, 1.512]
WRITE(*, '(1x, F20.6)') [1.51, 1.52]
WRITE(*, '(1x, F20.6)') [1.5, 1.5]
END
math% f95 -xia ce2-42.f95
math% a.out
 1234567890123456789012345678901234567890-position
       1.2345679     
       1.234567      
       1.23456       
       1.2345        
       1.511         
       1.51          
       1.5           
 [     1.50000000000]

¶è´ÖÉý¤¬Áý¤¨¤ë¤È¡¢Ã±¿ôɽ¸½¤Çɽ¼¨¤µ¤ì¤ë·å¿ô¤Ï¸º¾¯¤·¤Þ¤¹¡£¶è´Ö¤¬½ÌÂष¤Æ¤¤¤ë¤È¡¢»Ä¤ê¤Î¤¹¤Ù¤Æ¤Î°ÌÃÖ¤¬¥¼¥í¤ÇËä¤á¤é¤ì¡¢½ÌÂष¤¿¶è´Ö¤ÎÃͤ¬Àµ³Î¤Ëɽ¤µ¤ì¤ë¾ì¹ç¤Ï³Ñ³ç¸Ì¤¬Äɲ䵤ì¤Þ¤¹¡£

ÁȤ߹þ¤ß¤Î´Ø¿ô NDIGITS (ɽ 2-21 ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤) ¤Ï¡¢Ã±¿ô·Á¼°¤ò»È¤Ã¤¿¶è´ÖÊÑ¿ô¤Þ¤¿¤ÏÇÛÎó¤Î½ñ¤­½Ð¤·¤ËɬÍפʺÇÂç¾å°Ì·å¿ô¤òÊÖ¤·¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-43   NDIGITS ÁȤ߹þ¤ß´Ø¿ô¤ò»ÈÍѤ·¤¿ Yw.d ½ÐÎÏ

math% cat ce2-43.f95
INTEGER :: I, ND, T, D, DIM
PARAMETER(D=5)      ! ¥Ç¥Õ¥©¥ë¥È¤Î·å¿ô
PARAMETER(DIM=8)
INTERVAL, DIMENSION(DIM) :: X
CHARACTER(20) :: FMT
X = (/ [1.2345678, 1.23456789], &
  [1.234567, 1.2345678], &
  [1.23456, 1.234567], &
  [1.2345, 1.23456], &
  [1.5111, 1.5112], &
  [1.511, 1.512], &
  [1.51, 1.52], &
  [1.5]/)
ND=0
DO I=1, DIM
    T = NDIGITS(X(I))
    IF(T == EPHUGE(T)) THEN ! ¶è´Ö¤Ï½ÌÂष¤Æ¤¤¤ë
        ND = MAX(ND, D)
    ELSE   
        ND = MAX( ND, T )
    ENDIF   
END DO
 
WRITE(FMT, '(A2, I2, A1, I1, A1)') '(E', 10+ND, '.', ND, ')'

DO I=1, DIM
    WRITE(*, FMT) X(I) 
END DO
END
math% f95 -xia ce2-43.f95
math% a.out
  0.12345679E+001 
  0.1234567 E+001 
  0.123456  E+001 
  0.12345   E+001 
  0.1511    E+001 
  0.151     E+001 
  0.15      E+001 
[ 0.15000000E+001]

Æɤߤ䤹¤¯¤¹¤ë¤¿¤á¡¢¾®¿ôÅÀ¤Ï¾ï¤Ë½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤Î±¦Â¦¤«¤é¿ô¤¨¤Æ¡¢p = e + d + 4¤Î°ÌÃÖ¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-44   {Y, F, E, G}w.d ½ÐÎϤǤϡ¢d ¤Ï¾å°Ì·å¤ÎºÇ¾®Ãͤòɽ¼¨ÀßÄꤹ¤ë

math% cat ce2-44.f95
INTERVAL :: X = [1.2345678, 1.23456789] 
INTERVAL :: Y = [1.5] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1X, F20.5)') X  
WRITE(*, '(1X, F20.5)') Y 
WRITE(*, '(1X, 1E20.5)') X 
WRITE(*, '(1X, 1E20.5)') Y 
WRITE(*, '(1X, G20.5)') X 
WRITE(*, '(1X, G20.5)') Y 
WRITE(*, '(1X, Y20.5)') X 
WRITE(*, '(1X, Y20.5)') Y 
END 
math% f95 -xia ce2-44.f95
math% a.out
 1234567890123456789012345678901234567890-position
        1.2345679    
 [      1.5000000000]
        0.12345E+001 
 [      0.15000E+001]
        1.2345679    
 [      1.5000000000]
        1.2345679    
 [      1.5000000000]

»Ø¿ôÉô¤Î¿ô»ú¤Î¿ô¤Ï¡¢¥ª¥×¥·¥ç¥ó¤Î e »ØÄê»Ò¤Ç»ØÄꤷ¤Þ¤¹¡£»Ø¿ôÉô¤Î¿ô¤¬»ØÄꤵ¤ì¤ë¾ì¹ç¡¢w ¤Ï¾¯¤Ê¤¯¤È¤â¡¢d + e + 7 ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¥³¡¼¥ÉÎã 2-45   Yw.dEe ½ÐÎÏ (e »ØÄê»Ò¤ÎÍÑË¡)

math% cat ce2-45.f95
INTERVAL :: X = [1.2345, 1.2346] 
INTERVAL :: Y = [3.4567, 3.4568] 
INTERVAL :: Z = [1.5] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1X, Y19.5E4)') X 
WRITE(*, '(1X, Y19.5E4)') Y 
WRITE(*, '(1X, Y19.5E4)') Z 
WRITE(*, '(1X, Y19.5E3)') X 
WRITE(*, '(1X, Y19.5E3)') Y 
WRITE(*, '(1X, Y19.5E3)') Z 
END 
math% f95 -xia ce2-45.f95
math% a.out
 1234567890123456789012345678901234567890-position
      0.1234 E+0001 
      0.3456 E+0001 
 [    0.15000E+0001]
       0.1234 E+001 
       0.3456 E+001 
 [     0.15000E+001]

E ÊÔ½¸µ­½Ò»Ò

E ÊÔ½¸µ­½Ò»Ò¤Ï¡¢Y ÊÔ½¸µ­½Ò»Ò¤Îñ¿ô E ·Á¼°¤ò»ÈÍѤ·¤Æ¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò½ñ¼°²½¤·¤Þ¤¹¡£

°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

Ew.dEe
¥³¡¼¥ÉÎã 2-46   Ew.dEe ÊÔ½¸µ­½Ò»Ò

math% cat ce2-46.f95
INTERVAL :: X = [1.2345678, 1.23456789] 
INTERVAL :: Y = [1.5]
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1X, E20.5)')   X 
WRITE(*, '(1X, E20.5E3)') X 
WRITE(*, '(1X, E20.5E3)') Y 
WRITE(*, '(1X, E20.5E4)') X 
WRITE(*, '(1X, E20.5E2)') X 
END 
math% f95 -xia ce2-46.f95
math% a.out
 1234567890123456789012345678901234567890-position
        0.12345E+001 
        0.12345E+001 
 [      0.15000E+001]
       0.12345E+0001 
         0.12345E+01 

F ÊÔ½¸µ­½Ò»Ò

F ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¤Î Y ÊÔ½¸µ­½Ò»Ò¤Î F ·Á¼°¤À¤±¤ò»È¤Ã¤Æ¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò½ñ¼°²½¤·¤Þ¤¹¡£¤³¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

Fw.d

F µ­½Ò»Ò¤ò»È¤¦¤È¡¢d ¤ò»ØÄꤹ¤ë¾ì¹ç¤è¤ê¤â¾å°Ì¤Î·å¤òɽ¼¨¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£É½¼¨¤µ¤ì¤Ê¤¤·å¤ËÂбþ¤¹¤ë°ÌÃ֤϶õÇò¤ÇËä¤á¤é¤ì¤Þ¤¹¡£

¥³¡¼¥ÉÎã 2-47   Fw.d ÊÔ½¸µ­½Ò»Ò

math% cat ce2-47.f95
INTERVAL :: X = [1.2345678, 1.23456789] 
INTERVAL :: Y = [2.0] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1X, F20.4)') X 
WRITE(*, '(1X, E20.4)') X 
WRITE(*, '(1X, F20.4)') Y 
WRITE(*, '(1X, E20.4)') Y 
END
math% f95 -xia ce2-47.f95
math% a.out
 1234567890123456789012345678901234567890-position
         1.2345679   
         0.1234E+001 
 [       2.000000000]
 [       0.2000E+001]

G ÊÔ½¸µ­½Ò»Ò

G ÊÔ½¸µ­½Ò»Ò¤Ï¡¢Ã±¿ô E ¤Þ¤¿¤Ï Y ÊÔ½¸µ­½Ò»Ò¤Î F ·Á¼°¤ò»È¤Ã¤Æ¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò½ñ¼°²½¤·¤Þ¤¹¡£¤³¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

Gw.dEe
¥³¡¼¥ÉÎã 2-48   Gw.dEe ÊÔ½¸µ­½Ò»Ò

math% cat ce2-48.f95
INTERVAL :: X = [1.2345678, 1.23456789] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'   
WRITE(*, '(1X, G20.4)')   X 
WRITE(*, '(1X, G20.4E3)') X 
END 
math% f95 -xia ce2-48.f95
math% a.out
 1234567890123456789012345678901234567890-position
         1.2345679   
         0.1234E+001


Ãí - F µ­½Ò»Ò¤Ë½¾¤Ã¤Æ¶è´Ö¤Î½ªÎ»ÅÀ¤¬½ÐÎϤǤ­¤Ê¤¤¾ì¹ç¡¢G ÊÔ½¸µ­½Ò»Ò¤Ï E µ­½Ò»Ò¤ò»ÈÍѤ·¤Þ¤¹¡£

VE ÊÔ½¸µ­½Ò»Ò

VE ÊÔ½¸µ­½Ò»Ò¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

VEw.dEe

Xd ¤¬¡¢Ew'.d ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤¿Í­¸ú¤Ê³°ÉôÃͤǤ¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£VE ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò¼¡¤Î·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£

[X_inf,X_sup]¡¢¤¿¤À¤·¡¢w' = (w-3)/2

³°ÉôÃÍ X_inf ¤È X_sup ¤Ï¡¢¤½¤ì¤¾¤ì¡¢¶è´Ö½ÐÎÏʤӹàÌܤκÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ë´Ø¤¹¤ë²¼¸Â¤È¾å¸Â¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-49   VE ¤Î½ÐÎÏ

math% cat ce2-49.f95
INTERVAL :: X = [1.2345Q45, 1.2346Q45] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, VE25.3)')   X
WRITE(*, '(1X, VE33.4E4)') X
END
math% f95 -xia ce2-49.f95
math% a.out
 1234567890123456789012345678901234567890-position
 [ 0.123E+046, 0.124E+046]
 [   0.1234E+0046,   0.1235E+0046]

VEN ÊÔ½¸µ­½Ò»Ò

VEN ÊÔ½¸µ­½Ò»Ò¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

VENw.dEe

X_inf ¤È X_sup ¤¬¡¢ENw'.d ÊÔ½¸µ­½Ò»Ò¤ò»È¤Ã¤Æɽ¼¨¤µ¤ì¤ëÍ­¸ú¤Ê³°ÉôÃͤǤ¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£VEN ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò¼¡¤Î·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£

[X_inf,X_sup]¡¢¤¿¤À¤·¡¢w' = (w-3)/2

³°ÉôÃÍ X_inf ¤È X_sup ¤Ï¡¢¤½¤ì¤¾¤ì¡¢¶è´Ö½ÐÎÏʤӹàÌܤκÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-50   VEN ¤Î½ÐÎÏ

math% cat ce2-50.f95
INTERVAL :: X = [1024.82] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, VEN25.3)') X
WRITE(*, '(1X, VEN33.4E4)') X
END
math% f95 -xia ce2-50.f95
math% a.out
 1234567890123456789012345678901234567890-position
 [ 1.024E+003, 1.025E+003]
 [   1.0248E+0003,   1.0249E+0003]

VES ÊÔ½¸µ­½Ò»Ò

VES ÊÔ½¸µ­½Ò»Ò¤Î°ìÈÌ·Á¼°¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

VESw.dEe

X_inf ¤È X_sup¤¬¡¢ESw'.d ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤¿Í­¸ú¤Ê³°ÉôÃͤǤ¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£VES ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò¼¡¤Î·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£

[X_inf,X_sup]¡¢¤¿¤À¤·¡¢w' = (w-3)/2

³°ÉôÃÍ X_inf ¤È X_sup ¤Ï¡¢¤½¤ì¤¾¤ì¡¢¶è´Ö½ÐÎÏʤӹàÌܤκÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-51   VES ¤Î½ÐÎÏ

math% cat ce2-51.f95
INTERVAL :: X = [21.234] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, VES25.3)')   X
WRITE(*, '(1X, VES33.4E4)') X
END
math% f95 -xia ce2-51.f95
math% a.out
 1234567890123456789012345678901234567890-position
 [ 2.123E+001, 2.124E+001]
 [   2.1233E+0001,   2.1235E+0001]

VF ÊÔ½¸µ­½Ò»Ò

X_inf ¤È X_sup¤¬¡¢Fw'.d ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤Æɽ¼¨¤µ¤ì¤ëÍ­¸ú¤Ê³°ÉôÃͤǤ¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£VF ÊÔ½¸µ­½Ò»Ò¤Ï¡¢¶è´Ö¥Ç¡¼¥¿¹àÌܤò¼¡¤Î·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£

[X_inf,X_sup]¡¢¤¿¤À¤·¡¢w' = (w-3)/2

³°ÉôÃÍ X_inf ¤È X_sup ¤Ï¡¢¤½¤ì¤¾¤ì¡¢¶è´Ö½ÐÎÏʤӹàÌܤκÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-52   VF ½ÐÎÏÊÔ½¸

math% cat ce2-52.f95
INTERVAL :: X = [1.2345, 1.2346], Y = [1.2345E11, 1.2346E11] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, VF25.3)') X
WRITE(*, '(1X, VF25.3)') Y
END
math% f95 -xia ce2-52.f95
math% a.out
 1234567890123456789012345678901234567890-position
 [      1.234,      1.235]
 [***********,***********]


Ãí - ½ñ¼°ÉÕ¤­Ê¸¤Ë½¾¤Ã¤Æ¶è´Ö¤¬½ÐÎϤǤ­¤Ê¤¤¾ì¹ç¤Ï¡¢¥¢¥¹¥¿¥ê¥¹¥¯ (¡Ö*¡×) ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

VG ÊÔ½¸µ­½Ò»Ò

¶è´Ö¤Î½ÐÎϤǤϡ¢G ÊÔ½¸µ­½Ò»Ò¤¬¶è´Ö¤Î½ªÎ»ÅÀ½ÐÎϤνñ¼°²½¤Ë»È¤ï¤ì¤ëÅÀ¤ò½ü¤±¤Ð¡¢VG ÊÔ½¸¤Ï VE ÊÔ½¸¤Þ¤¿¤Ï VF ÊÔ½¸¤ÈƱ¤¸¤Ç¤¹¡£

¥³¡¼¥ÉÎã 2-53   VG ¤Î½ÐÎÏ

math% cat ce2-53.f95
INTERVAL :: X = [1.2345, 1.2346], Y = [1.2345E11, 1.2346E11] 
WRITE(*, *) '1234567890123456789012345678901234567890-position'
WRITE(*, '(1X, VG25.3)') X
WRITE(*, '(1X, VG25.3)') Y
END 
math% f95 -xia ce2-53.f95
math% a.out
 1234567890123456789012345678901234567890-position
 [  1.23     ,  1.24     ]
 [ 0.123E+012, 0.124E+012]


Ãí - F µ­½Ò»Ò¤Ë½¾¤Ã¤Æ¶è´Ö¤Î½ªÎ»ÅÀ¤¬½ÐÎϤǤ­¤Ê¤¤¾ì¹ç¡¢VG ÊÔ½¸µ­½Ò»Ò¤Ï E µ­½Ò»Ò¤ò»ÈÍѤ·¤Þ¤¹¡£

½ñ¼°¤Ê¤·ÆþÎÏ/½ÐÎÏ

½ñ¼°¤Ê¤·ÆþÎÏ/½ÐÎϤϡ¢¥Ç¡¼¥¿¤ÎÆâÉôŪ¤Êɽ¸½¤òÊѹ¹¤»¤º¤Ë¡¢¥á¥â¥ê¡¼°ÌÃ֤Ȥδ֤ǥǡ¼¥¿¤ÎžÁ÷¤ËÍѤ¤¤Þ¤¹¡£¶è´Ö¤ò»È¤¦¾ì¹ç¤Ë¤Ï¡¢ÆþÎÏ/½ÐÎϤ˴ؤ¹¤ë³°Â¦¤Î´Ý¤á¤¬²óÈò¤Ç¤­¤ë¤Î¤Ç¡¢½ñ¼°¤Ê¤·ÆþÎÏ/½ÐÎϤÏÆä˽ÅÍפǤ¹¡£


Ãí - ½ñ¼°¤Ê¤·ÆþÎÏ/½ÐÎϤϽñ¼°¤Ê¤·¶è´Ö¥Ç¡¼¥¿¤ÎÆɤ߽ñ¤­¤Î¤¿¤á¤À¤±¤Ë»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£¾­Íè¤Î¥ê¥ê¡¼¥¹¤È¤Î¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤Î¸ß´¹À­¤ÏÊݾڤµ¤ì¤Þ¤»¤ó¡£
½ñ¼°¤Ê¤·ÆþÎÏ/½ÐÎϤ϶è´Ö¥Ç¡¼¥¿¹àÌܤ¬Æ©ÌÀ¤Ç¤¢¤ë¤È¤¤¤¦»ö¼Â¤Ë°Í¸¤·¤Æ¤¤¤Þ¤¹¡£

ʤӤˤè¤ë½ÐÎÏ

º¸±¦¤Î½ªÎ»ÅÀÍѤΠREAL Äê¿ô¤Ï¡¢F ¤Þ¤¿¤Ï E ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤ÆÀ¸À®¤µ¤ì¤Þ¤¹¡£|x|¤¬¡¢½ÐÎ϶è´Ö½ªÎ»ÅÀ¤ÎÀäÂÐÃͤǤ¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£¤¹¤ë¤È¡¢

¤Ç¤¢¤ì¤Ð¡¢0PFw.d ÊÔ½¸µ­½Ò»Ò¤ò»ÈÍѤ·¤Æ½ªÎ»ÅÀ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢1PEw.dEe µ­½Ò»Ò¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£f95 ¤Ç¤Ï¡¢d1 = -2¡¢¤«¤Ä¡¢d2 = +8 ¤Ç¤¹¡£

f95 ¤Ç¤Î¶è´Ö¥Ç¡¼¥¿¹àÌܤνÐÎϤˤĤ¤¤Æ¤Ï¡¢d ¤È e ÍѤÎÃͤϡ¢Æ±¤¸ KTPV ¤ò»ý¤Ä REAL ·¿ÍѤΤâ¤Î¤ÈƱ¤¸¤Ç¤¹¡£w ¤ÎÃͤϡ¢¥³¡¼¥ÉÎã 2-37 ¤¬¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢2 ¤Ä¤Î REAL ¤È³Ñ³ç¸Ì¡Ö [ ¡×¡¢¡Ö ] ¡×¤È¥³¥ó¥Þ¤Î 3 ¤Ä¤ÎÄɲÃʸ»ú¤ÎÄ´À°¤ò¹Ô¤¤¤Þ¤¹¡£

ñ¿ôÆþÎÏ/½ÐÎϤȴðËÜÊÑ´¹

ñ¿ô¶è´ÖÆþÎϤϤ½¤Îľ¸å¤Ë½ÐÎϤ¬Â³¤¯¤È¡¢¼ÂºÝ¤Ë´ð¿ôÊÑ´¹¤¬¡¢³ÊǼ¤µ¤ì¤¿ÆþÎ϶è´ÖÉý¤ò 1 ¤Þ¤¿¤Ï 2-ulp ¤À¤±Áý²Ã¤µ¤»¤ë¤¿¤á¡¢¾®¿ô·å¤ÎÀµ³ÎÀ­¤¬¼º¤ï¤ì¤¿·Á¤Ç¸½¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢1.37 ¤ÎÆþÎϤÎľ¸å¤Ëɽ¼¨¤ò¹Ô¤¦¤È¡¢1.3 ¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ö½ñ¼°ÉÕ¤­ÆþÎÏ/½ÐÎϡפò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥³¡¼¥ÉÎã 1-6 ¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥×¥í¥°¥é¥à¤Ï¡¢ÆþÎÏÃÍ¤È (ÆþÎÏʸ»úÎó¤òÍ­¸ú¤ÊÆâÉôŪ¤Ê¶á»÷ÃͤËÊÑ´¹¤¹¤ë¤¿¤á¤Î) ÆâÉôŪ¤ÊÆɤ߼è¤ê¤È¤òÀµ³Î¤ËÈ¿±Ç¤¹¤ë¤¿¤á¤Ë¡¢Ê¸»úÆþÎÏ/½ÐÎϤò»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

ÁȤ߹þ¤ß¶è´Ö´Ø¿ô

¤³¤ÎÀá¤Ë¤Ï f95 ¤ÎÁȤ߹þ¤ß¤Î¶è´Ö´Ø¿ô¤ÎÆÃÀ­ÄêµÁ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

Ê£¿ô¤Î KTPV ¤ò»ý¤Ä°ú¿ô¤ò¼õ¤±Æþ¤ì¤ë°ìÈÌŪ¤ÊÁȤ߹þ¤ß¤Î¶è´Ö´Ø¿ô¤Ï¡¢°ìÈÌŪ¤Ê̾Á°¤È KTPV ¸ÄÊÌ̾¤ÎξÊý¤ò»ý¤Á¤Þ¤¹¡£ÁȤ߹þ¤ß¤Î´Ø¿ô¤¬¤½¤Î KTPV ¸ÄÊÌ̾¤Î̾Á°¤ò»ÈÍѤ·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¾ì¹ç¡¢°ú¿ô¤Ï¤½¤ì¤Ë¸«¹ç¤Ã¤¿ KTPV ¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£


Ãí - f95 ¤Ç¤Ï¡¢¤¤¤¯¤Ä¤«¤Î KTPV-16 ¸ÄÊÌÁȤ߹þ¤ß´Ø¿ô¤ÏÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤ì¤Ï¡¢¼ÂÁõ¾å¤Î̤²ò·è¤ÎÌäÂê¤Ç¤¹¡£

Ê£¿ô¤Î¶è´Ö¥Ç¡¼¥¿¹àÌÜ (¤¿¤È¤¨¤Ð¡¢SIGN(A,B)) ¤ò¼õ¤±Æþ¤ì¤ë´Ø¿ô¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿°ú¿ô¤ÏƱ¤¸ KTPV ¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ºÇÂçÉýÍ׵ἰ½èÍý¤Î¤â¤È¤Ç¤Ï¡¢¤³¤ÎÀ©Ìó¤Ø¤Î½àµò¤¬¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤Þ¤¹¡£¸·Ì©¼°½èÍý¤ò»È¤¦¾ì¹ç¤Ï¡¢ÁȤ߹þ¤ß´Ø¿ô¤Î°ú¿ô¤Ë´Ø¤¹¤ë·¿¤È KTPV ¤ÎÀ©¸Â¤ò³«È¯¼Ô¤ÎÀÕǤ¤Ç¼é¤é¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£°Û¤Ê¤ë KTPV ¤Î°ú¿ô¤ò»ÈÍѤ¹¤ë¤È¼Â¹Ô»þ¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£

¿ô³Ø´Ø¿ô

¤³¤ÎÀá¤Ç¤Ï¡¢¶è´Ö°ú¿ô¤ò¼õ¤±Æþ¤ì¤ë·¿ÊÑ´¹´Ø¿ô¡¢»°³Ñ´Ø¿ô¡¢¤½¤Î¾¤Î´Ø¿ô¤òÎóµó¤·¤Þ¤¹¡£¶è´Ö [ , ] ¤Ç¤Îµ­¹æ ¤È ¤Ï¡¢¤½¤ì¤¾¤ì¡¢½ç°ÌÉÕ¤±¤é¤ì¤¿Í×ÁǤȤ·¤Æ¡¢ºÇÂç²¼¸Â¤ÈºÇ¾®¾å¸Â¤òɽ¤¹¤¿¤á¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£ÅÀ (Èó¶è´Ö) ´Ø¿ôÄêµÁÆâÉô¤Ç¤Ï¡¢¾®Ê¸»ú¤Î x ¤È y ¤Ï¡¢REAL ¤Þ¤¿¤Ï INTEGER Ãͤòɽ¤¹¤¿¤á¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£

¶è´Ö°ú¿ô X ¤Î´Ø¿ô f ¤Îɾ²Á»þ¤Ë¤Ï¡¢¶è´Ö·ë²Ì f(X) ¤Ï¡¢¼¡¤Î¤è¤¦¤ËÊñ´Þ½¸¹ç¡¢cset(f,{x})¤Î°Ï¤ß¤ÎÃæ¤ËÆþ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

n ¸Ä¤ÎÊÑ¿ô¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤âƱÍͤηë²Ì¤¬Åö¤Æ¤Ï¤Þ¤ê¤Þ¤¹¡£¶è´Ö ¤¬ f ¤ÎÊÑ°è¤Î³°Â¦¤ÎÃͤò´Þ¤à¾ì¹ç¤Ë´Þ¤Þ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÃͤÎÊñ´Þ½¸¹ç¤Î·èÄê¤Î¤·¤«¤¿¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤¿Êä­ʸ¸¥ [1] ¤ÎÃæ¤Ç²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤³¤Ç¤Î·ë²Ì¤Ï¡¢ÄêµÁ¤Î¶­³¦¾å¤Ç¤¢¤ë¤¤¤ÏÄêµÁ¤ÎÊÑ°è¤Î³°Â¦¤Çɾ²Á¤µ¤ì¤ë¾ì¹ç¤Ë¡¢´Ø¿ô¤¬À¸À®¤Ç¤­¤ëÃͤν¸¹ç¤ò·èÄꤹ¤ë¤¿¤á¤ËɬÍפǤ¹¡£¤³¤ÎÊñ´Þ½¸¹ç¤È¸Æ¤Ð¤ì¤ëÃͤν¸¹ç¤Ï¡¢´Ø¿ô¤Î°ú¿ô¤Þ¤¿¤Ï±é»»»Ò¥ª¥Ú¥é¥ó¥É¤ÎÃͤΤ¬²¿¤Ç¤¢¤ë¤«¤Ë¤«¤«¤ï¤é¤ºÍ­¸ú¤Ê·ë²Ì¤òÊÖ¤¹¶è´Ö¥·¥¹¥Æ¥à¤òÄêµÁ¤¹¤ë¾å¤Ç¤Î¸°¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢f95 ¤ÎǤ°Õ¤ÎÁȤ߹þ¤ß¤Î INTERVAL ´Ø¿ô¤Ë´Ø¤·¡¢°ú¿ô¤ÎÀ©Ìó¤Ï¸ºß¤·¤Þ¤»¤ó¡£

µÕÀµÀܤÎÁȤ߹þ¤ß´Ø¿ô ATAN2(Y,X)

¤³¤ÎÀá¤Ç¤Ï¡¢µÕÀµÀÜÁȤ߹þ¤ß´Ø¿ô¤ÎÄɲÃŪ¤Ê¾ðÊó¤òÄ󶡤·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö»²¹Íʸ¸¥¡×¤Ç°úÍѤ·¤¿Êä­ʸ¸¥ [9] ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

²òÀ⡧ °ìÂФζè´Ö¤ËÂФ¹¤ëµÕÀµÀÜÁȤ߹þ¤ß´Ø¿ô¤Î¶è´Ö¤Î°Ï¤ß¤Ç¤¹¡£

¿ô³ØÄêµÁ¡§

¥¯¥é¥¹¡§ Í×ÁÇÊ̽èÍý´Ø¿ô¤Ç¤¹¡£

ÆÃÊ̤ÊÃÍ¡§ ɽ 2-14 ¤È¥³¡¼¥ÉÎã 2-24 ¤Ï ATAN2 ¤ÎÉÔÄê·Á¼°¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-14   ATAN2 ¤ÎÉÔÄê·Á¼°
y0 x0 cset(sin, {y0, x0}) cset(cos, {y0, x0}) cset(, {y0, x0})
0 0 [-1, 1] [-1, 1]
+ + [0, 1] [0, 1]
+ - [0, 1] [-1, 0]
- - [-1, 0] [-1, 0]
- + [-1, 0] [0, 1]


¥³¡¼¥ÉÎã 2-54   ATAN2 ¤ÎÉÔÄê·Á¼°

math% cat ce2-54.f95
   INTERVAL :: X, Y
   INTEGER  :: IOS = 0
   PRINT *, "Press Control/D to terminate!"
   WRITE(*, 1, ADVANCE='NO')
   READ(*, *, IOSTAT=IOS) Y, X
   DO WHILE (ios >= 0)
      PRINT *, "For X =", X, "For Y =", Y
      PRINT *, 'ATAN2(Y,X)= ', ATAN2(Y,X)
      WRITE(*, 1, ADVANCE='NO')
      READ(*, *, IOSTAT=IOS) Y, X
   END DO
1  FORMAT("Y, X = ?")
   END
math% f95 -xia ce2-54.f95
math% a.out
 Press Control/D to terminate!
Y, X = ? [0] [0]
For X = [0.0E+0,0.0E+0] For Y = [0.0E+0,0.0E+0]
ATAN2(Y,X)=  [-3.1415926535897936,3.1415926535897936]
 Y, X = ? inf inf
For X = [1.7976931348623157E+308,Inf] For Y = 
[1.7976931348623157E+308,Inf]
 ATAN2(Y,X)=  [0.0E+0,1.5707963267948968]
 Y, X = ?inf -inf
For X = [-Inf,-1.7976931348623157E+308] For Y =
 [1.7976931348623157E+308,Inf]
 ATAN2(Y,X)=  [1.5707963267948965,3.1415926535897936]
 Y, X = ?-inf +inf
For X = [1.7976931348623157E+308,Inf] For Y = 
[-Inf,-1.7976931348623157E+308]
 ATAN2(Y,X)=  [-1.5707963267948968,0.0E+0]
 Y, X = ?-inf -inf
For X = [-Inf,-1.7976931348623157E+308] For Y = 
[-Inf,-1.7976931348623157E+308]
 ATAN2(Y,X)=  [-3.1415926535897936,-1.5707963267948965]
 Y, X = ? <Control-D>

°ú¿ô¡§ Y ¤Ï INTERVAL ·¿¤Ç¤¹¡£X ¤Ï Y ¤ÈƱ¤¸·¿¤È KIND ¤Î¥Ñ¥é¥á¡¼¥¿¤Ç¤¹¡£

·ë²ÌÆÃÀ­¡§ °ú¿ô¤ËƱ¤¸¡£

·ë²ÌÃÍ¡§ ¶è´Ö¤Î·ë²ÌÃͤϡ¢»ØÄꤷ¤¿¶è´Ö¤ËÂФ¹¤ë 1 ¤Ä¤Î°Ï¤ß¤Ç¤¹¡£ÍýÁÛŪ¤Ê°Ï¤ß¤Ï¡¢µ­½Ò¤µ¤ì¤¿¤â¤Î¤ÈƱ¤¸¿ô³ØŪ¤Ê¶è´Ö¤ò´Þ¤àºÇ¾®Éý¤Î¶è´Ö¤Ç¤¹¡£

1 ¤Ä¤Þ¤¿¤ÏξÊý¤Î°ú¿ô¤¬¶õ¤Ç¤¢¤ì¤Ð¡¢·ë²Ì¤Ï¶õ¤Ë¤Ê¤ê¤Þ¤¹¡£

x < 0¡¢¤«¤Ä¡¢ ¤Î¾ì¹ç¤Ë¡¢±Ô¤¤¶è´Ö¤Î°Ï¤ß (¦¨¤Çɽ¤µ¤ì¤ë) ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¤¹¤Ù¤Æ¤ÎÊÖ¤µ¤ì¤ë²ÄǽÀ­¤Î¤¢¤ë¶è´Ö³ÑÅ٤ν¸¹ç¤ò°ì°Õ¤ËÄêµÁ¤¹¤ë¼¡¤ÎÊýË¡¤òÍѤ¤¤Æ¤¯¤À¤µ¤¤¡£

¤³¤ÎÁªÂò¤ò¼¡¤ÎÁªÂò¤È¹ç¤ï¤»¤ì¤Ð¡¢

ATAN2(Y, X)¤¬É¬¤º´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¶è´Ö³ÑÅÙ ¦¨ ¤Î°ì°Õ¤ÎÄêµÁ¤È¤Ê¤ê¤Þ¤¹¡£

ɽ 2-15 ¤Ï¡¢±Ô¤¤¶è´Ö³ÑÅÙ¤ÎÀ¸À®¤ËɬÍפÊÀ©¸Â¤òËþ¤¿¤¹¥¢¥ë¥´¥ê¥º¥à¤Ç¤Î ¦¨ ¤Î½ªÎ»ÅÀ¤Î·×»»¤Ë»ÈÍѤ¹¤ë REAL ATAN2 ´Ø¿ô¤Î¥Æ¥¹¥ÈÆâÍƤȰú¿ô¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£ºÇ½é¤Î 2 ¤Ä¤Î·å¤Ï¶èÊ̤¹¤ë¥±¡¼¥¹¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£3 ¤ÄÌܤηå¤Ï¶è´Ö ¦¨ ¤ÎÃæÅÀ m (¦¨)¤Î²Äǽ¤ÊÃͤÎÈϰϤò´Þ¤ß¤Þ¤¹¡£ºÇ¸å¤Î 2 ¤Ä¤Î·å¤Ï¡¢REAL ATAN2 ÁȤ߹þ¤ß´Ø¿ô¤ò»È¤Ã¤Æ¡¢¦¨ ¤Î½ªÎ»ÅÀ¤¬·×»»¤µ¤ì¤ëÊýË¡¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£Êñ´Þ¤òÊݾڤ¹¤ë¤¿¤á¤Ë¤ÏÍ­¸þ¤Î´Ý¤á¤¬»È¤ï¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

ɽ 2-15   REAL ATAN2 ´Ø¿ô¤Î¥Æ¥¹¥ÈÆâÍƤȰú¿ô
Y X m() q q
- < y x < 0 ATAN2(y, x) ATAN2( , x) + 2
- = y x < 0 ATAN2(y, x) 2 -
< - x < 0 ATAN2(y, x) - 2 ATAN2( , x)


ºÇÂ硧MAX(X1,X2,[X3, ...])

²òÀ⡧ ºÇÂçÈϰϤǤ¹¡£

max(X1, ..., Xn) ¤ËÂФ¹¤ëÊñ´Þ½¸¹ç¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

MAX ÁȤ߹þ¤ß´Ø¿ô¤Î¼ÂÁõ¤Ï¼¡¤Î¼°¤òËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

MAX(X1,X2,[X3, ...]) {max(X1, ..., Xn)}

¥¯¥é¥¹¡§ Í×ÁÇÊ̽èÍý´Ø¿ô¤Ç¤¹¡£

°ú¿ô¡§ °ú¿ô¤Ï INTERVAL ·¿¤Ç¤¢¤ê¡¢Æ±¤¸·¿¤È KIND ·¿¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Á¤Þ¤¹¡£

·ë²ÌÆÃÀ­¡§ ·ë²ÌÆÃÀ­¤Ï INTERVAL ·¿¤Ç¤¹¡£kind ·¿¥Ñ¥é¥á¡¼¥¿¤Ï°ú¿ô¤ÈƱ¤¸·¿¤Ç¤¹¡£

ºÇ¾®¡§MIN(X1,X2,[X3, ...])

²òÀ⡧ ºÇ¾®ÈϰϤǤ¹¡£

min(X1, ..., Xn) ¤ËÂФ¹¤ëÊñ´Þ½¸¹ç¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

MIN ÁȤ߹þ¤ß´Ø¿ô¤Î¼ÂÁõ¤Ï¼¡¤Î¼°¤òËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

MIN(X1,X2,[X3, ...]) ¢½ {min(X1, ..., Xn)}

¥¯¥é¥¹¡§ Í×ÁÇÊ̽èÍý´Ø¿ô¤Ç¤¹¡£

°ú¿ô¡§ °ú¿ô¤Ï INTERVAL ·¿¤Ç¤¢¤ê¡¢Æ±¤¸·¿¤È KIND ·¿¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Á¤Þ¤¹¡£

·ë²ÌÆÃÀ­¡§ ·ë²Ì¤Ï INTERVAL ·¿¤Ç¤¹¡£ kind ·¿¥Ñ¥é¥á¡¼¥¿¤Ï°ú¿ô¤ÈƱ¤¸·¿¤Ç¤¹¡£

ÁȤ߹þ¤ß´Ø¿ô

ɽ 2-17 ¤«¤éɽ 2-21 ¤Ç¤Ï¡¢¶è´Ö°ú¿ô¤ò¼õ¤±Æþ¤ì¤ëÁȤ߹þ¤ß´Ø¿ô¤ÎÆÃÀ­¤ò°ìÍ÷ɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£É½ 2-16 ¤Ç¤Ï¡¢¤³¤ì¤é¤Îɽ¤Î¶è´ÖÁȤ߹þ¤ß´Ø¿ô¤ÎÆÃÀ­¹àÌܤò°ìÍ÷ɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£

ɽ 2-16   ³Æ¶è´ÖÁȤ߹þ¤ß´Ø¿ô¤ÎÆÃÀ­¹àÌÜ
ÆÃÀ­¹àÌÜ ²òÀâ
ÁȤ߹þ¤ß´Ø¿ô ´Ø¿ô¤Î½èÍýÆâÍÆ
ÄêµÁ ¿ô³Ø¾å¤ÎÄêµÁ
°ú¿ô¤Î¿ô ´Ø¿ô¤¬¼õ¤±Æþ¤ì¤ë°ú¿ô¤Î¿ô
°ìÈÌ̾ ´Ø¿ô¤Î°ìÈÌ̾
¸ÄÊÌ̾ ´Ø¿ô¤Î¸ÄÊÌ̾
°ú¿ô¤Î·¿ ³Æ¸ÇÍ­¤Î̾Á°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Ç¡¼¥¿·¿
´Ø¿ô¤Î·¿ ¸ÄÊÌ°ú¿ô¥Ç¡¼¥¿·¿¤ËÂФ¹¤ëÌá¤êÃͤΥǡ¼¥¿·¿


¶è´ÖÁȤ߹þ¤ß´Ø¿ô¤Ë¤Ï¡¢KTPV4¡¢8¡¢16 ¤Î¥Ð¡¼¥¸¥ç¥ó¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Âбþ¤¹¤ë¸ÄÊÌÁȤ߹þ¤ß´Ø¿ô̾¤Ï VS¡¢VD¡¢VQ ¤Ç»Ï¤Þ¤ê¡¢¤½¤ì¤¾¤ì¡¢interVal Single¡¢interVal Double¡¢interVal Quad ¤òɽ¤·¤Þ¤¹¡£

³Æ¸ÄÊÌ REAL ÁȤ߹þ¤ß´Ø¿ô¤ËÂбþ¤¹¤ë¶è´ÖÁȤ߹þ¤ß´Ø¿ô¤¬Â¸ºß¤·¡¢VSSIN() ¤È VDSIN() ¤Î¤è¤¦¤Ë¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ë¤Ï¡¢VS¡¢VD¡¢VQ ¤ÎÀÜƬ¼­¤¬ÉÕ¤­¤Þ¤¹¡£

ÉÔÄê·Á¼°¤Ï²Äǽ¤Ç¤¹¤«¤é¡¢¡Ö¤Ù¤­¾è±é»»»Ò X**N ¤È X**Y¡×¤È ¡ÖµÕÀµÀܤÎÁȤ߹þ¤ß´Ø¿ô ATAN2(Y,X)¡×¤Ë¤Ï¡¢X**Y ¤È ATAN2 ´Ø¿ô¤ÎÆÃÊ̤ÊÃͤ¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤Î¾¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤Ï¤³¤Î¤è¤¦¤Ê¼è¤ê°·¤¤¤ÎɬÍפϤ¢¤ê¤Þ¤»¤ó¡£

ɽ 2-17   ÁȤ߹þ¤ß¤Î¶è´Ö±é»»´Ø¿ô
ÁȤ߹þ¤ß´Ø¿ô Èó¶è´Ö¤Ç¤Î
ÄêµÁ
°ú¿ô¤Î¿ô Áí¾Î̾ ¸ÄÊÌ̾ °ú¿ô¤Î·¿ ´Ø¿ô¤Î·¿
ÀäÂÐÃÍ |a| 1
ABS
VDABS
VSABS
VQABS
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
ÀÚ¤ê¾å¤² (Ãíµ­ 1 ¤ò»²¾È) int(a) 1
AINT
VDINT
VSINT
VQINT
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
ºÇ¶á»÷ÃÍÀ°¿ô a 0 ¤Î¾ì¹ç¤Ï int(a + .5) a < 0 ¤Î¾ì¹ç¤Ï int(a - .5) 1
ANINT
VDNINT
VSNINT
VQNINT
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
¾ê; a-b(int(a/b)) 2
MOD
VDMOD
VSMOD
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
Éä¹æžÁ÷ (Ãíµ­ 2 ¤ò»²¾È) |a| sgn(b) 2
SIGN
VDSIGN
VSSIGN
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
ºÇÂçÃͤÎÁªÂò (Ãíµ­ 3 ¤ò»²¾È) max(a,b,...) 2
MAX
MAX
INTERVAL
INTERVAL
ºÇ¾®ÃͤÎÁªÂò (Ãíµ­ 3 ¤ò»²¾È) min(a,b,...) 2
MIN
MIN
INTERVAL
INTERVAL
(1) a > 0 ¤Î¾ì¹ç¤Ï int(a) = floor(a)¡¢a < 0 ¤Î¾ì¹ç¤Ï ceiling(a)

(2) signum ´Ø¿ô¤Ï¡¢a < 0 ¤Î¾ì¹ç sgn(a) = -1¡¢a < 0¤Î¾ì¹ç +1¡¢a = 0 ¤Î¾ì¹ç 0 ¤È¤Ê¤ê¤Þ¤¹¡£

(3) MIN ¤È MAX ÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¤¹¤Ù¤Æ¤Î°ú¿ô¤¬¶õ¤Ç¤Ê¤±¤ì¤Ð¡¢¶õ¤Î¶è´Ö°ú¿ô¤ò̵»ë¤·¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î°ú¿ô¤¬¶õ¤Î¾ì¹ç¤Ï¶õ¤Î¶è´Ö¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£


ɽ 2-18   ÁȤ߹þ¤ß¤Î¶è´Ö·¿ÊÑ´¹´Ø¿ô
ÊÑ´¹Àè °ú¿ô¤Î¿ô Áí¾Î̾ °ú¿ô¤Î·¿ ´Ø¿ô¤Î·¿
INTERVAL 1¡¢2 ¤Þ¤¿¤Ï 3
INTERVAL
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTEGER
REAL
REAL(8)
REAL(16)
INTERVAL
INTERVAL
INTERVAL
INTERVAL
INTERVAL
INTERVAL
INTERVAL
INTERVAL(4) 1 ¤Þ¤¿¤Ï 2
SINTERVAL
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTEGER
REAL
REAL(8)
REAL(16)
INTERVAL(4)
INTERVAL(4)
INTERVAL(4)
INTERVAL(4)
INTERVAL(4)
INTERVAL(4)
INTERVAL(4)
INTERVAL(8) 1 ¤Þ¤¿¤Ï 2
DINTERVAL
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTEGER
REAL
REAL(8)
REAL(16)
INTERVAL(8)
INTERVAL(8)
INTERVAL(8)
INTERVAL(8)
INTERVAL(8)
INTERVAL(8)
INTERVAL(8)
INTERVAL(16) 1 ¤Þ¤¿¤Ï 2
QINTERVAL
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTERVAL(16)
INTEGER
REAL
REAL(8)
INTERVAL(16)
INTERVAL(16)
INTERVAL(16)
INTERVAL(16)
INTERVAL(16)
INTERVAL(16)
INTERVAL(16)


ɽ 2-19   ÁȤ߹þ¤ß¤Î¶è´Ö»°³Ñ´Ø¿ô
ÁȤ߹þ¤ß´Ø¿ô Èó¶è´Ö¤Ç¤ÎÄêµÁ °ú¿ô¤Î¿ô Áí¾Î̾ ¸ÄÊÌ̾ °ú¿ô¤Î·¿ ´Ø¿ô¤Î·¿
Àµ¸¹ sin(a) 1
SIN
VDSIN
VSSIN
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
;¸¹ cos(a) 1
COS
VDCOS
VSCOS
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
˵ˆ tan(a) 1
TAN
VDTAN
VSTAN
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
µÕÀµ¸¹ arcsin(a) 1
ASIN
VDASIN
VSASIN
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
µÕ;¸¹ arccos(a) 1
ACOS
VDACOS
VSACOS
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
µÕÀµÀÜ arctan(a) 1
ATAN
VDATAN
VSATAN
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
µÕÀµÀÜ (Ãíµ­ 1 ¤ò»²¾È) arctan(a/b) 2
ATAN2
VDATAN2
VSATAN2
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
ÁжÊÀµ¸¹ sinh(a) 1
SINH
VDSINH
VSSINH
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
ÁжÊ;¸¹ cosh(a) 1
COSH
VDCOSH
VSCOSH
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
ÁжÊÀµÀÜ tanh(a) 1
TANH
VDTANH
VSTANH
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
(1) a = h sin¡¢b = h cos¡¢¤«¤Ä¡¢h2 = a2 + b2 ¤Ç¤¢¤ì¤Ð¡¢arctan(a/b) = ¤È¤Ê¤ê¤Þ¤¹¡£


ɽ 2-20   ¤½¤Î¾¤ÎÁȤ߹þ¤ß¤Î¶è´Ö¿ô³Ø´Ø¿ô
ÁȤ߹þ¤ß´Ø¿ô Èó¶è´Ö¤Ç¤Î
ÄêµÁ
°ú¿ô¤Î¿ô Áí¾Î̾ ¸ÄÊÌ̾ °ú¿ô¤Î·¿ ´Ø¿ô¤Î·¿
Ê¿Êýº¬ (Ãíµ­ 1 ¤ò»²¾È) exp{ln(a)/2} 1
SQRT
VDSQRT
VSSQRT
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
»Ø¿ô exp(a) 1
EXP
VDEXP
VSEXP
INTERVAL
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
¼«Á³Âпô ln(a) 1
LOG
VDLOG
VSLOG
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
¾ïÍÑÂпô log(a) 1
LOG10
VDLOG10
VSLOG10
INTERVAL(8)
INTERVAL(4)
INTERVAL(8)
INTERVAL(4)
(1) sqrt(a) ¤ÏÊ£¿ô¤ÎÃͤò»ý¤Á¤Þ¤¹¡£Àµ¤ÈÉé¤ÎξÊý¤ÎÊ¿Êýº¬¤ò´Þ¤à¤¿¤á¤Ë¤Ï¡¢Å¬Àڤʶè´Ö¤Î°Ï¤ß¤¬É¬ÍפǤ¹¡£
SQRT ÁȤ߹þ¤ß´Ø¿ô¤ò¼¡¤Î¤è¤¦¤ËÄêµÁ¤¹¤ë¤È¤³¤ÎÌäÂê¤ò½üµî¤Ç¤­¤Þ¤¹¡£


ɽ 2-21   ¶è´ÖÁȤ߹þ¤ß´Ø¿ô 
ÁȤ߹þ¤ß´Ø¿ô ÄêµÁ °ú¿ô¤Î¿ô Áí¾Î̾ ¸ÄÊÌ̾ °ú¿ô¤Î·¿ ´Ø¿ô¤Î·¿
INF inf([a, b]) = a 1
INF
VDINF
VSINF
VQINF
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
SUP sup([a, b]) = b 1
SUP
VDSUP
VSSUP
VQSUP
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
Éý w([a, b]) = b - a 1
WID
VDWID
VSWID
VQWID
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
ÃæÅÀ mid([a, b]) = (a + b)/2
1
MID
VDMID
VSMID
VQMID
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
¥Þ¥°¥Ë¥Á¥å¡¼¥É (Ãíµ­ 1 ¤ò»²¾È) max(|a|) A 1
MAG
VDMAG
VSMAG
VQMAG
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
¥ß¥°¥Ë¥Á¥å¡¼¥É (Ãíµ­ 2 ¤ò»²¾È) min(|a|) A 1
MIG
VDMIG
VSMIG
VQMIG
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
REAL(8)
REAL(4)
REAL(16)
¶õ¶è´Ö¤Î¸¡ºº A ¤¬¶õ¤Ê¤é true 1
ISEMPTY
VDISEMPTY
VSISEMPTY
VQISEMPTY
INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
LOGICAL
LOGICAL
LOGICAL
²¼¸Â floor(A) 1
FLOOR

INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTEGER
INTEGER
INTEGER
¾å¸Â ceiling(A) 1
CEILING

INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTEGER
INTEGER
INTEGER
ÀºÅÙ precision(A) 1
PRECISION

INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTEGER
INTEGER
INTEGER
ÈÏ°Ï range(A) 1
RANGE

INTERVAL(8)
INTERVAL(4)
INTERVAL(16)
INTEGER
INTEGER
INTEGER
·å¿ô (Ãíµ­ 3 ¤ò»²¾È) Y ÊÔ½¸µ­½Ò»Ò¤ò»È¤Ã¤¿ºÇÂç·å¿ô 1
NDIGITS

INTERVAL
INTERVAL(4)
INTERVAL(16)
INTEGER
INTEGER
INTEGER
(1) mag([a, b]) = max(|a|,|b|)

(2) a > 0 ¤Þ¤¿¤Ï b < 0 ¤Ç¤¢¤ì¤Ð¡¢mig([a, b]) = min(|a|,|b|)¡¢¤½¤Î¾¤Î¾ì¹ç¤Ï¡¢0

(3) ÆÃÊ̤ʥ±¡¼¥¹¡§ NDIGITS([-inf, +inf]) = NDIGITS([EMPTY]) = 0


»²¹Íʸ¸¥

²¼µ­¤Îµ»½ÑÊó¹ð½ñ¤¬¥ª¥ó¥é¥¤¥ó¤ÇÍøÍѤǤ­¤Þ¤¹¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Î½êºß¤Ë¤Ä¤¤¤Æ¤Ï¡¢¶è´Ö±é»»¤Î README ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  1. G.W.Walster¡¢E.R.Hansen¡¢J.D.PryceÃø¡¢¡ØExtended Real Intervals and the Topological Closure of Extended Real Relations¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  2. G.William WalsterÃø¡¢¡ØEmpty Intervals¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems
    (1998 ǯ 4 ·î)¡£

  3. G.William WalsterÃø¡¢¡ØClosed Interval Systems¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (1999 ǯ 8 ·î)¡£

  4. G.William WalsterÃø¡¢¡ØLiteral Interval Constants¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (1999 ǯ 8 ·î)¡£

  5. G.William WalsterÃø¡¢¡ØWidest-need Interval Expression Evaluation¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (1999 ǯ 8 ·î)¡£

  6. G.William WalsterÃø¡¢¡ØCompiler Support of Interval Arithmetic With Inline Code Generation ans Nonstop Exception Handling¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  7. G.William WalsterÃø¡¢¡ØFinding Roots on the Edge of a Function's Domain¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  8. G.William WalsterÃø¡¢¡ØImplementing the 'Simple' Closed Interval System¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  9. G.William WalsterÃø¡¢¡ØInterval Angles and the Fortran ATAN2 Intrinsic Function¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  10. G.William WalsterÃø¡¢¡ØThe 'Simple' Closed Interval System¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£

  11. G.William Walster¡¢Margaret S. BiermanÃø¡¢¡ØInterval Arithmetic in Forte Developer Fortran¡Ù¡¢µ»½ÑÊó¹ð½ñ¡¢Sun Microsystems (2000 ǯ 2 ·î)¡£


¥µ¥ó¡¦¥Þ¥¤¥¯¥í¥·¥¹¥Æ¥à¥º³ô¼°²ñ¼Ò
Copyright information. All rights reserved.
¥Û¡¼¥à   |   Ìܼ¡   |   Á°¥Ú¡¼¥¸¤Ø   |   ¼¡¥Ú¡¼¥¸¤Ø   |   º÷°ú