NewRPL has found its first real-world application: it will be tasked to calculate the constants needed to implement transcendental functions. The fast method that will be used requires a table of constants depending on the maximum precision of the system. The constants are in the form:

ATAN(5*10^-k)

ATAN(2*10^-k)

ATAN(1*10^-k)

with k=1 .. prec
and prec= desired precision digits.
 
Through a series expansion for ATAN:
 
 
newRPL will iterate to determine all the constants needed.
 
In order to do that, the real numbers implementation in newRPL was modified to become "malloc" free. It now uses a small pool of statically allocated storage for temporary storage of digits.
It's fast and simple: there's 8 "buckets" with enough storage for the maximum amount of digits in the system. Since this is only used for intermediate calculations and never for final results, that's all it's needed. In the future, the number of buckets might be reduced once we prove they are not required (so far, a maximum of 2 are required for simple operations but as more complex routines are added, more might be needed.
Replacing the (slow) dynamic memory allocation model with all its problems of memory fragmentation, leaks and its associated slowdown over time was a requirement if we want newRPL to run smoothly over long periods of time.
 
Goodbye "malloc".

Real numbers are now implemented, including comparisons and the four basic operations. There are still a few memory management issues to iron out. The decimal arithmetic library makes use of dynamic memory allocation (standard malloc/free), and that doesn't play nicely with our Object memory model. Dynamic allocation needs to be replaced with static allocation for speed and to eliminate any possibility of memory leaks or heap fragmentation during long execution periods.

Error traps were also implemented (IFERR), and the first chapter of the documentation is published. Code is still undergoing a thorough cleanup and the first aplha version will be released in due time.

 

The newRPL core finally ran on the 50g hardware for the first time!

It was compiled and executed under HPGCC3, as we don't have yet the code needed to make it boot as a separate firmware.

The first RPL program executed was the N-Queens benchmark from this link:

http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=700

The code executed was the userRPL version listed for the 48/49/50g. No modifications were needed to run it on newRPL (we want to stay true to our promise of source code compatibility).

The results are encouraging:

At 6 MHz (slow mode): 5.620 seconds

At 75 MHz (normal speed): 0.450 seconds

At 192 MHz: 0.178 seconds

These timings might vary as the code matures (hopefully faster!), but it's a very good start, and a good comparison to see where the new RPL core falls with respect to other calculators. At 75 MHz the original userRPL result was 90 seconds, that's almost exactly a 200x speed improvement.

 

The newRPL website is being developed. It will show the current project status and display news about the progress made by the team. Stay tuned and come often as more and more content is added!