Next: , Previous: Predicates on Numbers, Up: Numbers   [Contents][Index]


3.4 ¿ô¤ÎÈæ³Ó

2¤Ä¤Î¿ô¤¬¿ôÃÍŪ¤ËÅù¤·¤¤¤«¤É¤¦¤«Ä´¤Ù¤ë¤Ë¤Ï¡¢ÉáÄÌ¡¢ eq¤Ç¤Ï¤Ê¤¯=¤ò»È¤¦¤Ù¤­¤Ç¤¹¡£ ¿ôÃÍŪ¤Ë¤ÏÅù¤·¤¤Â¿¤¯¤Î°Û¤Ê¤ëÉâÆ°¾®¿ôÅÀ¿ô¤¬Â¸ºß¤·¤¨¤Þ¤¹¡£ ¤½¤ì¤é¤ÎÈæ³Ó¤Ëeq¤ò»È¤¦¤È¡¢ 2¤Ä¤ÎÃͤ¬Æ±°ì¥ª¥Ö¥¸¥§¥¯¥È¤«¤É¤¦¤«Ä´¤Ù¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ÂоÈŪ¤Ë¡¢=¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤Î¿ôÃͤÀ¤±¤òÈæ³Ó¤·¤Þ¤¹¡£

¸½»þÅÀ¤Ç¤Ï¡¢Emacs Lisp¤Ë¤ª¤¤¤Æ¡¢³ÆÀ°¿ôÃͤϰì°Õ¤ÊLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢À°¿ô¤Ë¸Â¤ì¤Ðeq¤Ï=¤ÈÅù²Á¤Ç¤¹¡£ ̤ÃΤÎÃͤÈÀ°¿ô¤òÈæ³Ó¤¹¤ë¤¿¤á¤Ëeq¤ò»È¤¦¤ÈÊØÍø¤Ê¾ìÌ̤¬¤¢¤ê¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢eq¤ÏǤ°Õ¤Î·¿¤Î°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë¤Î¤Ç¡¢ eq¤Ï̤ÃΤÎÃͤ¬¿ô¤Ç¤Ê¤¯¤Æ¤â¥¨¥é¡¼¤òÊó¹ð¤·¤Ê¤¤¤«¤é¤Ç¤¹¡£ ÂоÈŪ¤Ë¡¢=¤Ï¡¢°ú¿ô¤¬¿ô¤ä¥Þ¡¼¥«¤Ç¤Ê¤¤¤È¡¢¥¨¥é¡¼¤òÄÌÃΤ·¤Þ¤¹¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢Emacs¤Î¾­Íè¤ÎÈǤÇÀ°¿ô¤Îɽ¸½ÊýË¡¤òÊѹ¹¤¹¤ë¾ì¹ç¤ËÈ÷¤¨¤Æ¡¢ À°¿ô¤òÈæ³Ó¤¹¤ë¤È¤­¤Ç¤¢¤Ã¤Æ¤â¡¢²Äǽ¤Ê¤é¤Ð¡¢=¤ò»È¤¦¤Û¤¦¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£

equal¤Ç¿ô¤òÈæ³Ó¤·¤¿¤Û¤¦¤¬ÊØÍø¤Ê¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ equal¤Ï¡¢2¤Ä¤Î¿ô¤¬Æ±¤¸¥Ç¡¼¥¿·¿ ¡Ê¤É¤Á¤é¤âÀ°¿ô¤Ç¤¢¤ë¤«¡¢¤É¤Á¤é¤âÉâÆ°¾®¿ôÅÀ¿ô¤Ç¤¢¤ë¡Ë¤Ç¡¢ Ʊ¤¸ÃͤǤ¢¤ì¤Ð¡¢2¤Ä¤Î¿ô¤òÅù¤·¤¤¤È°·¤¤¤Þ¤¹¡£ °ìÊý¡¢=¤Ï¡¢À°¿ô¤ÈÉâÆ°¾®¿ôÅÀ¿ô¤¬Åù¤·¤¤¤³¤È¤ò°·¤¨¤Þ¤¹¡£

Ê̤Τ³¤È¤¬¤é¤â¤¢¤ê¤Þ¤¹¡£ ÉâÆ°¾®¿ôÅÀ¿ô±é»»¤Ï¸·Ì©¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢ 2¤Ä¤ÎÉâÆ°¾®¿ôÅÀ¿ô¤¬Åù¤·¤¤¤«¤É¤¦¤«Ä´¤Ù¤ë¤Î¤ÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ ÉáÄÌ¡¢¶á»÷Ū¤ËÅù¤·¤¤¤³¤È¤òÄ´¤Ù¤ë¤Û¤¦¤¬¤è¤¤¤Î¤Ç¤¹¡£ ¤Ä¤®¤Î´Ø¿ô¤Ï¤½¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£

(defvar fuzz-factor 1.0e-6)
(defun approx-equal (x y)
  (or (and (= x 0) (= y 0))
      (< (/ (abs (- x y))
            (max (abs x) (abs y)))
         fuzz-factor)))

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ Common Lisp¤Ç¤Ï¡¢¿ô¤ÎÈæ³Ó¤Ë¤Ï¤Ä¤Í¤Ë=¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£ ¤È¤¤¤¦¤Î¤Ï¡¢Common Lisp¤Ç¤ÏÊ£¿ô¥ï¡¼¥É¤ÎÀ°¿ô¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤¿¤á¡¢ 2¤Ä¤Î°Û¤Ê¤ëÀ°¿ô¥ª¥Ö¥¸¥§¥¯¥È¤¬Æ±¤¸¿ôÃͤòɽ¤¹¤³¤È¤¬¤¢¤ê¤¨¤ë¡£ Emacs Lisp¤Ç¤Ï¡¢À°¿ôÃͤÎÈϰϤ¬À©¸Â¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ Ǥ°Õ¤ÎÃͤÎÀ°¿ô¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤½¤ì¤¾¤ì1¤Ä¤·¤«¤Ê¤¤¡£

Function: = number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤¬¿ôÃÍŪ¤ËÅù¤·¤¤¤«Ä´¤Ù¡¢ ¤½¤¦¤Ê¤é¤Ðt¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: /= number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤¬¿ôÃÍŪ¤ËÅù¤·¤¤¤«Ä´¤Ù¡¢ Åù¤·¤¯¤Ê¤±¤ì¤Ðt¤òÊÖ¤·¡¢Åù¤·¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: < number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢Âè1°ú¿ô¤¬Âè2°ú¿ô¤è¤ê¾®¤µ¤¤¤«Ä´¤Ù¡¢ ¤½¤¦¤Ê¤é¤Ðt¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: <= number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢Âè1°ú¿ô¤¬Âè2°ú¿ô¤è¤ê¾®¤µ¤¤¤«¡¢¤¢¤ë¤¤¤Ï¡¢Åù¤·¤¤¤«Ä´¤Ù¡¢ ¤½¤¦¤Ê¤é¤Ðt¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: > number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢Âè1°ú¿ô¤¬Âè2°ú¿ô¤è¤êÂ礭¤¤¤«Ä´¤Ù¡¢ ¤½¤¦¤Ê¤é¤Ðt¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: >= number-or-marker1 number-or-marker2

¤³¤Î´Ø¿ô¤Ï¡¢Âè1°ú¿ô¤¬Âè2°ú¿ô¤è¤êÂ礭¤¤¤«¡¢¤¢¤ë¤¤¤Ï¡¢Åù¤·¤¤¤«Ä´¤Ù¡¢ ¤½¤¦¤Ê¤é¤Ðt¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

Function: max number-or-marker &rest numbers-or-markers

¤³¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î¤òÊÖ¤¹¡£

(max 20)
     ⇒ 20
(max 1 2.5)
     ⇒ 2.5
(max 1 3 2.5)
     ⇒ 3
Function: min number-or-marker &rest numbers-or-markers

¤³¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î¤òÊÖ¤¹¡£

(min -4 1)
     ⇒ -4
Function: abs number

¤³¤Î´Ø¿ô¤Ï¡¢number¤ÎÀäÂÐÃͤòÊÖ¤¹¡£