decnum-dynpmcs: status report

A bit late, as Week 3 of the Summer of Code ended some days ago, but progress was made so I'll report it. This weeks the DecNum PMC got the last few VTABLEs and METHODs necessary to reach the feature level of the Parrot Big* PMCs. Some tests got written and the test conversion was starting to move forward when I went down with a case of acute bronchitis.

It was an epic struggle, I battled hard against the viruses and fever, only with the help of a levitating rainbow colored mountain yak I managed to survive the onslaught of microscopic invaders and infernal temperatures. The war continues, there remain further battles ahead, but now that the rainbow-yak has brought me allies from the far-away realm of pharmaceutical wonders, and the numbers of the invaders are dwindling I feel victory can be ours, and with an end to the war in sight I can now return to your regularly scheduled programming.

DecNum is basically feature-complete now, It implements all the VTABLEs that make sense for a big number to implement, and has METHODs for some additional operations, like logarithms (both in base 2 and base 10) or square roots. My favorite METHOD, so far, has to be multiply_add(), which if called as "$P0 = $P1.'multiply_add'($P2 ,$P3)" will store into $P0 the result of ($P1 * $P2 + $P3 ) but will perform no rounding in the (full-precision) multiplication, which means you get to calculate linear functions in one operation and without accumulating a rounding error.

And with DecNum 'done' testing is now bigger on the horizon, the PCT based converter is moving forward, the grammar is still a bit messy in places, but It parses all the decTest files I've thrown at it. Now it's time to get some actions in place and start doing useful stuff with the things we parse. The plan is to spit out pir to a file and then drop that file into the t/ directory where the harness will pick it up. I will probably ship the generated pir too, so that people don't have to build yet another tool in order to run the tests. Watch for commits on this area.