From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 1CF525D5 for ; Thu, 16 Jun 2022 01:47:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:cc:message-id:references:mime-version: content-transfer-encoding:in-reply-to:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=JU4Va8OA835mvSEiET7nZ30rlEhTO9Ikk8v60WEIlsA=; b=az4LsV7kf3SuPJGfQSVbghRrCz/3Muez6ypNbVryGaDENq332fj0ZkY5 M6upFXjCFdq3SiUdZ/I1FgSsOei3f7lrPD4olEPwR5dKax1bwVsMWm8o6 9KIbLGy2xp89bOQrfoaOZUhmVyAbB/MR2Oha/1jGVfUCv3uT4ICl/lUf8 4=; Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:192.134.164.0/24 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="5.91,302,1647298800"; d="scan'208";a="41244598" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 16 Jun 2022 03:47:26 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 25F0EE00BA; Thu, 16 Jun 2022 03:47:26 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id D51ECE00BA for ; Thu, 16 Jun 2022 03:47:20 +0200 (CEST) IronPort-SDR: R6yNrRLjHsYKMJFcqybYdkdZwAFOF596oksIFBu3EvkNHhyHmdHW3E68V8bnNm8CD6oE4y4nrk gTzjs7lhJmeOoConGMwRaTIU2kj8te0ZPU4wfAauyQrZpNscirmgruRdCzuVY6Co/zbGUmzsJ3 oSvHFg8pI3HPudmI2Bg53olVwV1BTuShNctEFT+Hfv3E60ow9sgOaxkxRe9wEm9OUw0QOGhNi2 6nmfiHRb/fW/hGZlytFSfgwWHZaXYWfrZxRnWV71AReOOrmbFvssa7jZak4NIhRQUyM8deD9Co daNZhBxqsxxigRAbVAH36fve X-IPAS-Result: =?us-ascii?q?A0CDAQALi6pifwpAQYVaHAEBAQEBAQcBARIBAQQEAQFAg?= =?us-ascii?q?U+CJIFYLQQLhRKJAIduHgOeZwIJAQMBCwEBQAIEAQGFAwKFSQIdBwEENBMBA?= =?us-ascii?q?gQBAQEBAwIDAQEBAQEBAwEBBQEBAQIBAQIEBAETAQEPG3AGXgZkBIFLBIF0C?= =?us-ascii?q?0GCNSkBg2QBAQECARIRUAYFCwsaAiYCAhAkAQUBHAY1hVEjAgGiE4EEQosyg?= =?us-ascii?q?TGBAYddJk6BLRJ/LI51Q4INhA0yPoREg1aCZQSSOIZhOQNHNBKBIXEBCAYGB?= =?us-ascii?q?woFMgYCDBgUBAITElMdAhIMChwOVBkMDwMSAxEBBwILEggVLAgDAgMIAwIDI?= =?us-ascii?q?wsCAxcJBwoDHQgKHBIQFAIEEx4LCAMZHywJAgQOA0MICwoDEQQDExgLFggQB?= =?us-ascii?q?AYDCS8NKAsDFA0BBgMGAgUFAQMgAxQDBRsMBwMhBwsmDQ0EHAcdAwMFJgMCA?= =?us-ascii?q?hsHAgIDAgYXBgICbwomDQgECAQcHRsJEAUCBzEFBC8CHgQFBhEJAhYCBgQFA?= =?us-ascii?q?gQEFgICEggCCCcbBxY2GQEFXQYLCSEcKQsGBQYWAyNzBUgPKTU2PC8hGwqBJ?= =?us-ascii?q?iooAZoqeIF7AUUoDI59B4dIjR6eO4NYhBmbejGDdZJeDDiRSS2WP6IghGoCC?= =?us-ascii?q?gcGECMSgUOBfjMaCDA7gmlNAQIBAg0BAgIDAQIBAgkBAQKcfDNuAgYBCgEBA?= =?us-ascii?q?wmFRCYTiQQBAQ?= IronPort-PHdr: A9a23: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 MWdiMunjtaQYdY0EBFCXlzo3MiiI84ScTjVCQ== IronPort-Data: A9a23:MmNfTKAbtz2pYBVW/wLlw5YqxClBgxIJ4kV8jS/XYbTApG8q0DQHx zYeC2CHM/+MYWv3eYp+aIrlpBsDscXRmII3OVdlrnsFo1Bi+ZOUX4zBRqvTF3rPdZObFBoPA +E2MISowBUcFyeEzvuVGuG96yE6j8lkf5KkYAL+EnkZqTRMFWFw0HqPp8Zj2tQy2YbgXlvW0 T/Pi5S31GGNi2Yc3l08sPrrRCNH5JwebxtF1rCWTakjUG72zxH5PrpHTU2CByeQrr1vIwKPb 72rIIdVUY/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8A/+v5TCRYSVatYoyWRlO1bx 99Uibm1Szk5HL3pgdQ8CDANRkmSPYUekFPGCWeyu4qS1AvBeHvlhfxlSkMuVWEa0r8sWicQq LpGdHZUNnhvhMruqF6/YuB3j8ULLdKtO4gfszdpxnfbFZ7KRLiaHfWbuIAFhl/cgOhuXqzHf sFGVwMxUyzFeEBFfUU6ULAHybLAan7XKWQD9APO/8Lb+VP7xwV01P3pMcHJUsebQN1c2Eeev GPPuWrjaiz2L/SAxDDD82nqgeTPlGXyU8QQDNVU68KGnnWD3mcuIhIcTGeepPuHmmyufstvC hc9r39GQbcJyGSnSdz0XhudqXGCvwIBV9c4LwHcwFvQokYzy1zBblXoXgKte/R96ZBsFWZCO kuhxoi4WmY24NV5XFrErt+pQSWO1T89D1dqicUscQwe49jmqenfZTqWEY4mTvbt1LUZ9RnMx DObq0ADa1g7ksMBkaSgu1fMgzvqr5OPTBZdCuTrsoCNslgRiG2NPtLABb3nARBodtvxor6p5 iBspiRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiD+INsJv2EkexY1Y67onAMFh meO42u9A7cOYROXgVNfOt7vYyjX5fi/S461Bqi8giRmMscrJGdrAx2ClWbKhjuxwRN2+U3OE ZGSbcerC38eQaVh1ya3W/oB3PcsyGg/w23UX5Xy0xWsytKjiI29FN843K+1Rr1pvcus/VSKm +uzwuPQlH2zpsWiPXiHmWPSRHhWRUUG6Wfe+pYLJrbbfVA6cIzjYteIqY4cl0Vet/w9vo/1E ruVAye0EXLz2i/KLxukcHdmZO+9VJpztytgby03e1Gj23FlaI3p7r9GL8k7erwu9epCy/9oT qBfJJ7fU6kVEmzKq2YHcJ3wjI1+bxD11wiACCqSZmRtdZBXQQGUqMTveRHi9XVVAyfu7Zk+r rSs2xn1W50GQwg+Xs/aZOj2lAGwpj4ak+J7GULDZNtLIR2+/I9vIi33r/k2P8BVc0qYmWrHj V7ODE5B9+fXooIz/N3Yvoy+rt+kQ7lkA05XP2jH9rLoZyPUyWqUx9MSWui/ez2ABnj//7+vZ LkOwvzxbK8HkVJNv9YuGrpn1/thtcTirflb1UJjF3XCKV2gTLF4eyHU0c5Kv6xL57lYpQrvA B3UpYgHY+3RNZO3CkMVKSokcv+Hi6MelA7S2vJpck/00yl6oeicWkJIMhjQ0yFQcOlvPIU+z btzscIa8VXg2AUnOJCHlWZT/GSFaHULFac/78lIDIjugwst61dDfZ2FUHCtv8DSMY0UPxl4O CKQiYrDm69YmBjIfU0zIn6Rj+BTspID5UJRx1gYKlXVwdfIi5fbBvGKHejbk+iU8vlG7w63E ndmPQt0PuOJ9DdhwsFIGWK0c+2E6Nt15WSpo2blVkWAJ6VraoAJBGwmf+GG/Elf+mkafCAzE HSw1jP+STizFC3u9nJaZKOmwsAPifRw7UvFk8CuWc2OWZsiCdYgbmlCekJQwyba7QgNaIEra AWkECucqUE2CMLIn5AGNg== IronPort-HdrOrdr: A9a23:tYmHkazFnfEuSylYE5KcKrPwB71zdoMgy1knxilNoNJuA6ilfu SV7Y4mPHjP+UsssRAb6Ku90ca7MBDhHPJOkOss1PKZLXXbUQiTXflfBOnZslvd8kTFn4Y3v8 ddmupFeaTN5DNB/KHHCWeDYrMdKRq8nJxAR92y856gd29XgmhbgGZENjo= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.91,302,1647298800"; d="scan'208";a="16895752" X-MGA-submission: =?us-ascii?q?MDEqWOIQ7km+I0TCO8xSY8m3DZLNa+fdy8ScFr?= =?us-ascii?q?Xh3wiO3sVq1Zo+diBrSi+Txa8M9cP907W7GTpGQV+D768DRzvLXuxkHE?= =?us-ascii?q?/56q7RL2vVjybA8WgJX+vJviSYfWMepFHsrOzLuvk1tMX7PrVa6r1nVX?= =?us-ascii?q?wwzOsAt4GTlmnPtICpezUVqw=3D=3D?= Received: from web.is.ocha.ac.jp ([133.65.64.10]) by mail3-smtp-sop.national.inria.fr with ESMTP; 16 Jun 2022 03:47:18 +0200 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by web.is.ocha.ac.jp (Postfix) with ESMTP id 35CBE36019B for ; Thu, 16 Jun 2022 10:47:17 +0900 (JST) Received: by mail-pg1-f198.google.com with SMTP id g129-20020a636b87000000b00401b8392ac8so7337364pgc.4 for ; Wed, 15 Jun 2022 18:47:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=JU4Va8OA835mvSEiET7nZ30rlEhTO9Ikk8v60WEIlsA=; b=5s5ILc+7Ix7LiXxzolyXdZGwiKRciJjfW3XhRXjDgNhAbH0NskG0XwkmJpJoO4pzxl BDcEXj4XmvjPEjrLaZaFML3Ug5GyqTeU7P7Mk57CQmEUxL2rv42QuVz7y0X7EvQp0bAy Pnr3Ip3txdxulleAapAmJ0AGgkwMEmnFlZT1Qk8rQSi7IYnWGJDcvBesiFqwp6zOMM3h 5Ff3AI837fd8UE6y/yZocl2cRyWyWl10Plmn0KMHn6L1Ld+4Um/SwMln8yQ0q9Yf+yjG P8CMRo4iDdDSpHhh2UcMdltKSC5ILp1k4uiTG3SMM+hIkBoULZfqnFWKUIVlOrLQwuAY uTpA== X-Gm-Message-State: AJIora9K3JI4P+CwlBUG63kctXeR/MxhaiXFqTaVORUImrY/HEp1DEP9 Wa+PA+ndqciShJO0yM48pG+3JfKYpQQn8pzyFppZ25txpOaQfJlDT3DBcjjGgz5PYDXd+lGZDQJ ANCjJy191dxSj X-Received: by 2002:a63:7d2:0:b0:3fc:5c30:1d95 with SMTP id 201-20020a6307d2000000b003fc5c301d95mr2350846pgh.95.1655344036333; Wed, 15 Jun 2022 18:47:16 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vL6bdCvqxOvzgvM26qxrHTw2HAlbf5PEF5rRKFjXZLce3rpc+D0s+6U3X9RS6VlDdxa/J07A== X-Received: by 2002:a63:7d2:0:b0:3fc:5c30:1d95 with SMTP id 201-20020a6307d2000000b003fc5c301d95mr2350826pgh.95.1655344036057; Wed, 15 Jun 2022 18:47:16 -0700 (PDT) Received: from localhost (KHP222000164094.ppp-bb.dion.ne.jp. [222.0.164.94]) by smtp.gmail.com with ESMTPSA id w2-20020a62c702000000b0051b8e5d7260sm306224pfg.49.2022.06.15.18.47.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jun 2022 18:47:15 -0700 (PDT) Date: Thu, 16 Jun 2022 10:45:58 +0900 From: Kenichi Asai To: Daniel =?utf-8?Q?B=C3=BCnzli?= Cc: Gabriel Scherer , caml-list@inria.fr Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: Subject: Re: [Caml-list] string_of_float (0.1 +. 0.2) Reply-To: Kenichi Asai X-Loop: caml-list@inria.fr X-Sequence: 18801 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: Thank you all for the information. > Nathana=C3=ABlle Courant, with help from Julien Lepiller and myself, wrot= e a > rather complete interpreter/evaluator for OCaml parsetrees (in OCaml) as > part of the Camlboot project Yes, I read the programming paper. That's an interesting project. > Kenichi, I don't understand what your own constraints, but > in general I have the impression that "float" is better than "string" > to represent double values used for computation. I am developing an OCaml stepper that executes an OCaml program step by step. From the OCaml parsetree for let a =3D 0.1 +. 0.2 +. 0.4 I want an OCaml parsetree for let a =3D 0.3 +. 0.4 or let a =3D 0.300000000000000044 +. 0.4 if this is what OCaml uses internally. I want to produce an OCaml parsetree rather than my own parsetree that maintains float as is, because I could then reuse pretty printer of OCaml. =46rom Andreas' e-mail, I understand what's happening. (Thank you!) I thought I would use Printf.sprintf "%.18g" in place of string_of_float, but Daniel's e-mail made me think it could be insufficient, because even if I use .18 (or .24), it is still an approximation of the float. (Am I correct?) I tried to use `Format.sprintf "%h"` in place of string_of_float, but the OCaml pretty printer produces let a =3D 0x1.3333333333334p-2 +. 0.4 which is not suitable for a stepper used by novice programmers. For now, I think I will use Printf.sprintf "%.18g" and see if students see any difference between OCaml execution and stepper execution. I agree with Francois that it would be nice if the OCaml manual could mention a potential loss of information. I first thought that replacing "%.12g" with "%.18g" solves the problem, but "the" string representation of a float turned out to be more complicated than I thought. Thank you all for the discussion! Sincerely, --=20 Kenichi Asai