GNU bug report logs - #69725
Incorrect comapration between exact and inexact numbers

Previous Next

Package: guile;

Reported by: Maciej <m.kalandyk <at> outlook.com>

Date: Mon, 11 Mar 2024 07:53:02 UTC

Severity: normal

Done: lloda <lloda <at> sarc.name>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: lloda <lloda <at> sarc.name>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#69725: closed (Incorrect comapration between exact and
 inexact numbers)
Date: Tue, 19 Mar 2024 17:31:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 19 Mar 2024 18:29:48 +0100
with message-id <85EFDB9B-A4A5-4FD8-A7B2-19E81C1AA302 <at> sarc.name>
and subject line Re: bug#69725: Incorrect comapration between exact and inexact numbers
has caused the debbugs.gnu.org bug report #69725,
regarding Incorrect comapration between exact and inexact numbers
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
69725: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69725
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Maciej <m.kalandyk <at> outlook.com>
To: bug-guile <at> gnu.org
Subject: Incorrect comapration between exact and inexact numbers
Date: Mon, 11 Mar 2024 08:46:16 +0100
description:

script(named main.scm):
(use-modules (srfi srfi-11))

(define* (newton-sqrt x #:optional (tolerance 0.001) (guess 1))
  (if (< (abs (- x (* guess guess)))
	 tolerance)
      (values guess (abs (- x (* guess guess))) tolerance)
      (newton-sqrt x tolerance (/ (+ guess (/ x guess)) 2))))

(let-values ([(root diff tolerance)
	      (newton-sqrt 1000)])
  (display (exact->inexact diff)) ;; 1.217168231948292
  (newline)
  (display tolerance) ;; 0.001
  (newline)
  ;; bug here 1.217 in exact form apparently is smaller than 0.001
  (display (< diff tolerance)) ;; #t
  (newline)
  (display (< diff (inexact->exact tolerance))) ;; #f
  (newline)
  (display (< (exact->inexact diff) tolerance)) ;; #f
  (newline))

guile version:
guile --version
guile (GNU Guile) 3.0.9

machine-type:
./config.guess
x86_64-pc-linux-gnu

system package:
guix package -V guile
guix package (GNU Guix) f18d13b5f89c161c6ee88d15ecdaa8d973ee4503

additional system info:
guix channels.scm
(list (channel
        (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (branch "master")
        (commit
          "aeb494322ca9dec4a4d66a7d063239c8536bd538")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))

what i ran to run the script:
guix time-machine -C channels.scm -- shell --pure guile -- ./main.scm
1.217168231948292
0.001
#t
#f
#f


[Message part 3 (message/rfc822, inline)]
From: lloda <lloda <at> sarc.name>
To: Maciej <m.kalandyk <at> outlook.com>
Cc: 69725-done <at> debbugs.gnu.org
Subject: Re: bug#69725: Incorrect comapration between exact and inexact numbers
Date: Tue, 19 Mar 2024 18:29:48 +0100
Patch committed to 54c4753dd3f7506bee2778b36d7263b613ffd579, with a couple extra tests.

Thanks

	Daniel



This bug report was last modified 1 year and 63 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.