#1176: Configure-time check for whether to use powl() or pow(), since powl() is
an
optional posix extension
----------------------+-----------------------------------------------------
Reporter: dukeleto | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 1.8
Component: build | Version: 1.7.0
Severity: medium | Keywords: rtems
Lang: | Patch:
Platform: all |
----------------------+-----------------------------------------------------
Comment(by mikehh):
ref previous comment by NotFound
in the --optimize build with g++ 4.4.1 on Ubuntu 9.10 i386 it uses the
long double (80 bits) in the test t/op/comp.t - test 7 in setting the
string (i.e. powl is needed here) - it does not use it in the gcc 4.4.1
build with --optimize, or either without --optimize.
the test - t/op/comp-7.pasm
{{{
new P0, 'Float'
set P0, -1.2
new P1, 'String'
set P1, "-1.2"
eq_num P0, P1, OK
print "not "
OK: print "ok\n"
end
}}}
the test passes if the line set P1, "-1.2" is changed to set P1,
"-1.2000000000". fewer zeros do not work (more ok).
It also passes if POW is defined as powl.
The standard allows the use of higher precision in intermediate
calculations, which it appears the --optimize build with g++ 4.4.1 is
doing here.
ref --floatval
I haven't used this recently in builds but I can envisage circumstances
where I might need it. On the i386 platform double is 64 bits and long
double is 80 bits. On the amd64 platform double is again 64 bits but long
double is 128 bits, using different functionality in the x86_64 (intel or
amd) processors rather than the old x87 functionality. This might be
needed for higher precision calculations in certain circumstances which
should be quicker than using bignum or whatever.
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/1176#comment:10>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets