<div class="__aliyun_email_body_block"><div  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun"><div  style="clear: both;"><span ></span><pre  class=""><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">As described in Page 37 of R7RS:</span></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(floor 3.5) =&gt; 3.5</span></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">But in S7 Scheme:</div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">(floor 3.5) =&gt; 3</div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">Tested on Debian 12, the floor routine in GNU Guile 3.0.8 conforms to R7RS.</div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p"><br ></span></div><div  class="line" id="LC124"><span  class="p"><font  face="Tahoma, Arial, STHeitiSC-Light, SimSun">The following code snippets (Re-define and unit tests) are used to make them conform to R7RS in Goldfish Scheme:</font></span></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p"><br ></span></div><div  class="line" id="LC124" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="nv">s7-floor</span> <span  class="nv">floor</span><span  class="p">)</span></div><div  class="line" id="LC126" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC127" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">if</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC128" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-floor</span> <span  class="nv">x</span><span  class="p">))</span></div><div  class="line" id="LC129" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">s7-floor</span> <span  class="nv">x</span><span  class="p">)))</span></div><div  class="line" id="LC131" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="nv">s7-ceiling</span> <span  class="nv">ceiling</span><span  class="p">)</span></div><div  class="line" id="LC133" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC134" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">if</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC135" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-ceiling</span> <span  class="nv">x</span><span  class="p">))</span></div><div  class="line" id="LC136" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">s7-ceiling</span> <span  class="nv">x</span><span  class="p">)))</span></div><div  class="line" id="LC138" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="nv">s7-truncate</span> <span  class="nv">truncate</span><span  class="p">)</span></div><div  class="line" id="LC140" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC141" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">if</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC142" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-truncate</span> <span  class="nv">x</span><span  class="p">))</span></div><div  class="line" id="LC143" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">s7-truncate</span> <span  class="nv">x</span><span  class="p">)))</span></div><div  class="line" id="LC145" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="nv">s7-round</span> <span  class="nv">round</span><span  class="p">)</span></div><div  class="line" id="LC147" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC148" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">if</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span></div><div  class="line" id="LC149" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-round</span> <span  class="nv">x</span><span  class="p">))</span></div><div  class="line" id="LC150" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">      <span  class="p">(</span><span  class="nf">s7-round</span> <span  class="nv">x</span><span  class="p">)))</span></div><div  class="line" id="LC152" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nf">floor-quotient</span> <span  class="nv">x</span> <span  class="nv">y</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="p">(</span><span  class="nb">/</span> <span  class="nv">x</span> <span  class="nv">y</span><span  class="p">)))</span></div><div  class="line" id="LC154" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="nv">s7-lcm</span> <span  class="nv">lcm</span><span  class="p">)</span></div><div  class="line" id="LC156" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nf">lcm2</span> <span  class="nv">x</span> <span  class="nv">y</span><span  class="p">)</span></div><div  class="line" id="LC157" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">cond</span> <span  class="p">((</span><span  class="k">and</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">exact?</span> <span  class="nv">y</span><span  class="p">))</span></div><div  class="line" id="LC158" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">         <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-lcm</span> <span  class="p">(</span><span  class="nf">exact</span> <span  class="nv">x</span><span  class="p">)</span> <span  class="nv">y</span><span  class="p">)))</span></div><div  class="line" id="LC159" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">((</span><span  class="k">and</span> <span  class="p">(</span><span  class="nb">exact?</span> <span  class="nv">x</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">y</span><span  class="p">))</span></div><div  class="line" id="LC160" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">         <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-lcm</span> <span  class="nv">x</span> <span  class="p">(</span><span  class="nf">exact</span> <span  class="nv">y</span><span  class="p">))))</span></div><div  class="line" id="LC161" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">((</span><span  class="k">and</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">x</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">inexact?</span> <span  class="nv">y</span><span  class="p">))</span></div><div  class="line" id="LC162" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">         <span  class="p">(</span><span  class="nf">inexact</span> <span  class="p">(</span><span  class="nf">s7-lcm</span> <span  class="p">(</span><span  class="nf">exact</span> <span  class="nv">x</span><span  class="p">)</span> <span  class="p">(</span><span  class="nf">exact</span> <span  class="nv">y</span><span  class="p">))))</span></div><div  class="line" id="LC163" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">(</span><span  class="k">else</span> <span  class="p">(</span><span  class="nf">s7-lcm</span> <span  class="nv">x</span> <span  class="nv">y</span><span  class="p">))))</span></div><div  class="line" id="LC165" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">(</span><span  class="k">define</span> <span  class="p">(</span><span  class="nb">lcm</span> <span  class="o">.</span> <span  class="nv">args</span><span  class="p">)</span></div><div  class="line" id="LC166" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">  <span  class="p">(</span><span  class="k">cond</span> <span  class="p">((</span><span  class="nb">null?</span> <span  class="nv">args</span><span  class="p">)</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC167" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">((</span><span  class="nb">null?</span> <span  class="p">(</span><span  class="nb">cdr</span> <span  class="nv">args</span><span  class="p">))</span></div><div  class="line" id="LC168" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">         <span  class="p">(</span><span  class="nb">car</span> <span  class="nv">args</span><span  class="p">))</span></div><div  class="line" id="LC169" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">((</span><span  class="nb">null?</span> <span  class="p">(</span><span  class="nb">cddr</span> <span  class="nv">args</span><span  class="p">))</span></div><div  class="line" id="LC170" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">         <span  class="p">(</span><span  class="nf">lcm2</span> <span  class="p">(</span><span  class="nb">car</span> <span  class="nv">args</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">cadr</span> <span  class="nv">args</span><span  class="p">)))</span></div><div  class="line" id="LC171" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">        <span  class="p">(</span><span  class="k">else</span> <span  class="p">(</span><span  class="nb">apply</span> <span  class="nv">lcm</span> <span  class="p">(</span><span  class="nb">cons</span> <span  class="p">(</span><span  class="nb">lcm</span> <span  class="p">(</span><span  class="nb">car</span> <span  class="nv">args</span><span  class="p">)</span> <span  class="p">(</span><span  class="nb">cadr</span> <span  class="nv">args</span><span  class="p">))</span></div><div  class="line" id="LC172" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">                               <span  class="p">(</span><span  class="nb">cddr</span> <span  class="nv">args</span><span  class="p">))))))</span></div><div  class="line" id="LC172" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p"><br ></span></div><div  class="line" id="LC172" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p"><br ></span></div><div  class="line" id="LC172" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p">Unit tests:</span></div><div  class="line" id="LC172" style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  class="p"></span><pre  class=""><div  class="line" id="LC236"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">1.0</span><span  class="p">)</span></div><div  class="line" id="LC237"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mi">1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC238"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mi">1</span><span  class="nv">/2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC239"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mi">0</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC240"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mi">-1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC241"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">floor</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">-2.0</span><span  class="p">)</span></div><div  class="line" id="LC243"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-floor</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC244"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-floor</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-2</span><span  class="p">)</span></div><div  class="line" id="LC246"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">2.0</span><span  class="p">)</span></div><div  class="line" id="LC247"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mi">1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC248"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mi">1</span><span  class="nv">/2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC249"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mi">0</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC250"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mi">-1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC251"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">ceiling</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">-1.0</span><span  class="p">)</span></div><div  class="line" id="LC253"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-ceiling</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">2</span><span  class="p">)</span></div><div  class="line" id="LC254"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-ceiling</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC256"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">1.0</span><span  class="p">)</span></div><div  class="line" id="LC257"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mi">1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC258"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mi">1</span><span  class="nv">/2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC259"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mi">0</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC260"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mi">-1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC261"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">truncate</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">-1.0</span><span  class="p">)</span></div><div  class="line" id="LC263"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-truncate</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC264"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nf">s7-truncate</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC266"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mf">1.1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">1.0</span><span  class="p">)</span></div><div  class="line" id="LC267"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mf">1.5</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">2.0</span><span  class="p">)</span></div><div  class="line" id="LC268"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mi">1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">1</span><span  class="p">)</span></div><div  class="line" id="LC269"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mi">1</span><span  class="nv">/2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC270"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mi">0</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">0</span><span  class="p">)</span></div><div  class="line" id="LC271"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mi">-1</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mi">-1</span><span  class="p">)</span></div><div  class="line" id="LC272"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mf">-1.2</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">-1.0</span><span  class="p">)</span></div><div  class="line" id="LC273"><span  class="p">(</span><span  class="nf">check</span> <span  class="p">(</span><span  class="nb">round</span> <span  class="mf">-1.5</span><span  class="p">)</span> <span  class="nv">=&gt;</span> <span  class="mf">-2.0</span><span  class="p">)</span></div></pre><div ></div><span  class="p"><br ></span></div></pre><div  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"></div><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></span></div></div></div>