IEEE 754?にあるコードの細かい部分を取り上げて、C言語とLLPML?の比較をします。なお、LLPML?が冗長なのは仕様です。
printf("-0.1 => "); Float(-1, -1);
<call name="printf">-0.1 => </call> <call name="Float"><int>-1</int><int>-1</int></call>
printf("%d-%d-%p\n", sign, e2 + SIGN_DIGIT + EXP_MAX / 2, s & SIGN_MAX);
<call name="printfln"> <string>%d-%d-%p</string> <var name="sign" /> <add> <var name="e2" /> <int name="SIGN_DIGIT" /> <div><int name="EXP_MAX" />2</div> </add> <and> <var name="s" /> <int name="SIGN_MAX" /> </and> </call>
void Float(int s, int e10) { }
<function name="Float"> <arg name="s" /> <arg name="e10" /> </function>
int sign = 0, e2 = 0, ss;
<var-declare name="sign">0</var-declare> <var-declare name="e2">0</var-declare> <var-declare name="ss" />
if (s == 0) e10 = 0;
<if> <cond> <equal><var name="s" />0</equal> </cond> <block> <let><var name="e10" />0</let> </block> </if>
if (s < 0) sign = 1, s = -s;
<if> <cond> <less><var name="s" />0</less> </cond> <block> <let><var name="sign" />1</let> <let> <var name="s" /> <sub>0<var name="s" /></sub> </let> </block> </if>
if (e10 < 0) { } else if (e10 > 0) { }
<if> <cond> <less><var name="e10" />0</less> </cond> <block> </block> <cond> <greater><var name="e10" />0</greater> </cond> <block> </block> </if>
if (ss == 0 || s > INT_MAX / 2);
<if> <cond> <or> <equal><var name="ss" />0</equal> <greater> <var name="s" /> <div><int name="INT_MAX" />2</div> </greater> </or> </cond> <block> </block> </if>
if (s & 1 == 1 && s <= INT_MAX / 10) e10--, s *= 10;
<if> <cond> <and> <equal> <and><var name="s" />1</and> <int>1</int> </equal> <less-equal> <var name="s" /> <div><int name="INT_MAX" />10</div> </less-equal> </and> </cond> <block> <dec><var name="e10" /></dec> <var-mul><var name="s" />10</var-mul> </block> </if>
while (s % 10 == 0) e10++, s /= 10;
<while> <cond> <equal> <mod><var name="s" />10</mod> <int>0</int> </equal> </cond> <block> <inc><var name="e10" /></inc> <var-div><var name="s" />10</var-div> </block> </while>
while (e10 != 0) { }
<while> <cond> <not-equal><var name="e10" />0</not-equal> </cond> <block> </block> </while>
while (s > 0 && s <= SIGN_MAX) e2--, s *= 2;
<while> <cond> <and> <greater><var name="s" />0</greater> <less-equal> <var name="s" /> <int name="SIGN_MAX" /> </less-equal> </and> </cond> <block> <dec><var name="e2" /></dec> <var-mul><var name="s" />2</var-mul> </block> </while>
while (s > SIGN_MAX * 2 + 1) e2++, s = (s / 2) + (s & 1);
<while> <cond> <greater> <var name="s" /> <add> <mul><int name="SIGN_MAX" />2</mul> <int>1</int> </add> </greater> </cond> <block> <inc><var name="e2" /></inc> <let> <var name="s" /> <add> <div><var name="s" />2</div> <and><var name="s" />1</and> </add> </let> </block> </while>