Sunday, November 18, 2007

SpeedCrunch 0.9 Released

Download it and read the changes at the usual place. The application is now available in 17 languages and a Windows installer is provided as always.
Thank you so much to all the translators, bug reporters, packagers, contributors and developers (in particular Wolf Lammen for this release).


d said...

how to use the modulo operator?
i try "10 mod 3" and it doesn't work. how to use modulo?
And how to use bitwise logical operators(and, or, not, xor)?

Helder Correia said...

Those operations are supported by the math engine but unfortunately not yet available in the application. Maybe for next version.

d said...

there is code for modulo in the parser (evaluator.cpp). isn't this code complete?
another question: is it possible to add manually a modulo function (instead of operator)?

Helder Correia said...

There is indeed, but it was not working last time it got some attention. Since the application is going to be very much restructured for the next version (and hopefully the parser as well), I hope things will work by then (and probably a built-in function would avoid more complexity to the parser). BTW, you're very welcome to contribute to the project. Developers are pretty much needed for the project to progress faster.

Wolf Lammen said...

OK Helder, I'm a bit late, but congratulation to the new version from me as well.
And just to push the project, I implemented a logic unit in trunk, following the idea of d and bypassing parser problems by introducing functions instead of operators. See the logic-unit.pdf in /trunk/doc for usage.

kudos from Wolf

Lacko said...

Congratulations! SpeedCrunch is fast, accurate, easy to use...

Have you considered adding macros (function definitions)? If I could write mod(x,y)=x-floor(x/y)*y and subsequently use it as mod(10,3), we could have a powerful tool.

With functions If(condition, true_value, false_value) could prove valuable. Maybe as a ternary operator: condition ? true_value : false_value. For this to work, conditional operators would be nice, but not necessary. Instead of true/false conditions one could use positive/0_or_negative branches.

If you ever add bitwise operations (XOR, OR, AND, Shift, SetBit, ClearBit), the precision settings should include 8-16-32-64-128 bits.

I also miss the Gaussian distribution functions (erf()...). If it was possible to call external functions, like the ones in the GNU Scientific library, SpeedCrunch would become unbeatable.

(Unfortunately, I don’t speak C++. If you have a well defined task in pure C, I could give it a try.)

Helder Correia said...

Hi Lacko, thx for your comment. Regarding a mod function and bitwise operators, it is already available in the current development version (please read
svn/trunk/doc/logic-unit.pdf ).
About function definitions, I have already filled and enhancement issue myself some time ago (see
p/speedcrunch/issues/detail?id=38 ). On the Gaussian distribution, are you talking about probability? I thought about implementing as many distributions as I could in SpeedCrunch, but always thought nobody uses it. If you can provide me math support, it would be great (just contact me privately or through our mailing list). If you talk C only, then you should be able to help Wolf Lammen with our new math engine which is completely done in C (see
svn/trunk/doc/new_engine.pdf and the code here

Wolf Lammen said...

The erf function is defined as the integral from 0 to x of f(z) = c*exp(-z*z), c being a constant (1/pi if I remember right).
erf is probably an abbreviation of 'error function'. The function f(z) describes a common probability distribution, the normal distribution. It is widely used in statistics.
The use of the glibc, unfortunately, is not sufficient, because of its limited precision.
It takes some time to find an efficient way to evaluate erf (and erfc) to Speedcrunch's default precision.

Wolf Lammen said...

erf and erfc are now available in the development version