You have chosen to sponsor your bid up to a maximum amount of .
The open source project denoted below has a deficiency when the following types expression, parser and symbol_table are specialised to "float" type then the generated expression is evaluated.
It seems that the computations are occurring as if the type was "double". This is seen on both 32-bit and 64-bit systems using a wide variety of compilers and systems.
The objective, is to take the stock exprtk_benchmark.cpp compile it and note the results for both ExprTk and native expression evaluations using the double type.
Then to recompile the benchmark using the float type, run it and note the results (Native and ExprTk), and then make any changes necessary to the file exprtk.hpp so as to improve the results seen in the benchmark.
The results seen in the benchmark are the indicators of success. The benchmark will be independently compiled with the changes and without and comparisons made, There is an expectation of demonstrable performance increase of at least 10-15% when using the float type.
The deliverable will undergo a final step of validation, using the benchmark suite denoted below (epsilon set to 1). It is expected that an increase in performance across the board for ExprTkFloat benchmark will be observed.
As such the outcome is very specific and unambiguous and payment will be made on any deliverable that matches ALL the criteria denoted and achieves the minimum increases as specified previously.
01. Any changes must only contain pure C++ syntax.
02. Only the exprtk.hpp file must be changed, not other files in the project can be modified.
02. No compiler specific syntax/capabilities/functions/builtins etc are allowed.
03. Only C++03 version of the language is allowed (no C++11 or C++98)
04. Using the stock/unmodified makefile found in the project, ALL changes once applied must compile error and warning free.
05. The changes must compile as per  on at least 3 of the following compilers GCC4.3+,Clang3.1+,Intel9.0+,MSVC
06. For an MSVC compilation the option  is not possible, so a solution with W4 set will be enough.
07. The results must work successfully and consistently on at least the x86 and x86-64 platforms (other platforms welcome)
08. The results must work successfully and consistently on Linux (kernel 2.6+) and Win32 (WinXP+) and Win64
09. The stock version of exprtk_test must compile and run successfully (No errors) with the changes made to exprtk.hpp
10. No 3rd party solutions, libraries or frameworks will be allowed. Only the standard C++ libraries will allowed.
11. All changes must be yours and yours alone, all rights to those changes will be handed over exclusively without further dependencies on any other entities.
01. Text file detailing each of the changes and why they were required and any other pertinent information, ALL the changes must be valid and none of them can be left unexplained.
02. In  there will also be a listing of the results from running the benchmark using the stock and use the patched versions of exprtk.hpp
03. A patch from the stock version of exprtk.hpp with the change as per that will achieve the desired results
04. The patch must fix the underlying issue.
05. The deliverable MUST meet all the requirements set above and in the description and constraints sections.
Additional Project Description:
04/24/2013 at 23:00 EDT
01. There will be no hand holding, or further explanations as the requirements are very straight forward.
02. Bidders must know C++ extremely well and must code C++ on a regular basis (daily)
03. Bidders must know C++ templates and general metaprogramming techniques well and must be able to demonstrate their abilities (a github et al sample) before anything is awarded
04. Bidders must know how to use their compiler's tool chain to compile and link the projects mentioned above, as no assistance will be provided in this area
05. Bidders must know how to debug C++ code using debuggers such as GDB or the MS debugger, as no assistance will be provided in this area
06. Bidders must be the actual bidders, and cannot be proxied by others.
**** NOTE ****
Before bidding contact me directly and give a 2 sentence brief on how you plan on solving this problem. Any bidders that do not do this will not be considered, Any bidders posting comments such as the following or similar will be rejected outright:
1. "Yes I have the skills and I can do it"
2. "I'll do it quickly"
3. "I'm the best person for this job"