The goal is to produce the smallest and/or fastest sigmoid function. The rules (updated) are:
1. The input is a 0.0f terminated array of double's between negative and positive infinity inclusive.
2. The output is a 0.0f terminated array of doubles between -1.0 and +1.0 and must exhibit the classic properties of a sigmoid. Specifically it must have an S shaped curve and approach +- 1.0 as the input approaches +- infinity.
3. You can use C, C++ or ASM. You can use any combination of those three.
4. The result must be deterministic, i.e. it must produce the same output for the same input every time.
5. For the purposes of testing all code must compile under VC++ 6.0
6. Points will be given for the fastest (most iterations per unit of time). Score will be equal to the number of iterations per second.
7. ASM only solutions will also recieve bonus points for smallest total bytes.
8. For testing the specific processor is -
Intel Xeon 3.20GHz Family F Model 4 Stepping 3 Revision N0
MMX SSE SSE2 SSE3 EM64T
Irwindale Socket 604 mPGA
90 nm technology @ 2.048v
9. No weasel code. This means you Rashakil.
The test itself will be multiple runs testing 1 billion iterations of the routine with random inputs. If the top two or more entries have run times closer than 5% in duration, an extended test will be run on those entries only.