Very entertaining puzzle.
Hint to the frustrated, as I was:
This is a "noise" exclusion problem. The 1-sigma uncertainty in the time measurement is greater than the "true" time delta between foo and goo.
The test suite method is also vey well executed.
Regardless of noise, the function sign should not be faster than the gamma function. The function Gamma is a factorial/integral calculation, while the function Sign requires looking at just one bit. Unless there is a way to evaluate the gamma function looking at just one bit, sign should be faster. I am guessing that someone's computer has optimization issues.
PS: The other two cases make sense str2num should be slower since it is working with strings, and calling a function that uses a function B should be slower than just calling the function B.
The function timeit takes care of any noise that may be when evaluating a function by running it several times and extracting the median of them all (doc timeit). Even so, the function gamma obviously looses.
Indeed the solution is random...
since tic toc didn't give me results, I tried the cody size approach
I tried a lot of times this solution without sucess
As did I, even with 10,000 iterations in the loop. My problem was that gamma took longer than sign did, despite the test suite saying it shouldn't. After four or five tries, I had to add an ugly hack that checked if foo was gamma.
Good to know this method does occasionally work, though...
First non-zero element in each column
605 Solvers
96 Solvers
Getting the indices from a matrice
370 Solvers
151 Solvers
255 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!