aikathg.bsky.social
Humano semi-funcional. As vezes posto coisas sobre programação, matemática, xadrez, músicas japonesas, etc. Coshuler, curso técnico em Informática e estudante de CC 🏳️🌈🏳️⚧️
👤 Joined on 29 August 2024
Followers
Following
Total Posts
@lastarchimedes.bsky.social@lastarchimedes.bsky.social → @aikath.bsky.social@aikath.bsky.social → @aikathg.bsky.socialNot Found
Not Found
felipeneto.com.br
Not Found
Not Found
ousafadenha.bsky.social
bolhadev.com
Not Found
Not Found
Not Found
jet77.bsky.social
Not Found
handle.invalid
For the array search part, don't forget that vector instructions exist these days. With SSE2, for example, you can do four 32-bit float comparisons in parallel, _mm_movemask to put the result in an integer register, then bsr/bsf on that. ARM Neon has all this too.
Show PostIf you have a lot of floats and you need to binary search, you can use this variant: unsigned logl = ceil_log_2(y.size()); int i = 0; for (unsigned k = 1 << (logl-1); k > 4; k >>= 1) { int t = i + k; if (yt >= y[t]) i = t; // Conditional move instruction }
Show PostAfter this, i is now pointing at an aligned subsequence of four floats that you can do the vector comparison trick on. This is the fastest way I've found to do this kind of search on modern hardware, assuming that you can't exploit the distribution of y somehow (e.g. bucketing).
Show PostUnfortunately I guess there is none. Perhaps a binary search can help, but I can't think of a O(1) algorithm
Show PostI think this is a very sound approach. The rule of thumb I got from my friend who builds fuzzers is that for lists up to ~1000 elements, the fastest thing you can do is a linear search so a good initial guess plus that sounds optimal.
Show Post