Faster than radix sort: Kirkpatrick-Reisch sorting
Radix sort sorts n w-bit integers by splitting them up into chunks of logn\log nlogn bits each, and sorting each chunk in linear time. Thus it achieves O(nw/logn)O(nw/\log n)O(nw/logn) time.
Radix sort sorts n w-bit integers by splitting them up into chunks of logn\log nlogn bits each, and sorting each chunk in linear time. Thus it achieves O(nw/logn)O(nw/\log n)O(nw/logn) time.
How a Python function relates to a two thousand year old debate in philosophy
Clifford algebra gives a unified view of many things that otherwise would need to be understood separately.
I recently wanted to take a hierarchy of items and draw them in a nice tree structure. For example, a Family Tree. At the time, I thought “This will be easy, I’ll just Google for an alg…
A very late blog post announcing the readability contest winners, a new (very) annotated implementation, and a surprising sort-of security issue found along the way.
We’ve been writing a bit about some odd tail behavior in the Fivethirtyeight election forecast, for example that it was giving Joe Biden a 3% chance of winning Alabama (which seemed high), it was displaying Trump winning California as in “the range of scenarios our model thinks is possible” (which didn’t seem right)…
Bayesian statistics rely heavily on Monte-Carlo methods. A common question that arises is “isn’t there an easier, analytical solution?” This post explores a bit more why this is by breaking down the analysis of a Bayesian A/B test and showing how tricky the analytical path is and exploring more of t
I recently wrote a final paper on the history of written numerals. In the process, I discovered this fascinating tidbit that didn’t really fit in my paper, but I wanted to put it somewhere. So I’m writing about it here.
Before ‘cyber’ was a prefix for everything internet and computers, it was how mathematicians were going to conquer the world.
Science News, Physics, Science, Philosophy, Philosophy of Science
Robin Milner's type system with parametric polymorphism was a significant advance over the systems of Russell and Church. Arguably it is the ability to use type-variables that makes higher order logic a practical vehicle for proving non-trivial theorems. The Hindley-Milner algorithm is used to automatically infer…
The following table shows diagrams of identity, the booleans, some standard combinators, some Church numerals, the predecessor function on Church numerals, and Omega. term definition diagram alternative I/1 λx.x K/true λx.λy.x false/0 λx.λy.y S λx.λy.λz.(x z)(y z) Y λf.(λx.x x)(λx.f(x x)) 2 λf.λx.f(f x) 3 λf.λx.f(f(f…
The first thing I wanted to do with my Saab 96 was to establish a baseline weight.
Towards an API for the real numbers, Boehm, PLDI’20 Last time out we saw that even in scientific computing applications built by experts, problems with floating point numbers are commonplace. …
Lambdaclass's blog about distributed systems, machine learning, compilers, operating systems, security and cryptography.
Klein - Realtime Projective Geometric Algebra
I struggle with perfectionism. Well, not so much “struggle with” — I’m f*cking great at it. It comes naturally. There are some upsides, but perfectionism is also associated …
A core component of making great decisions is understanding previous decisions. If we don’t understand how we got “here,” we run the risk of making things much worse.
Using a SAT solver to find Game of Life states that turn into pictures.
Efficient elliptic curves tend not to have a prime order. This discusses the problems this causes, and the solutions.
Elo does not work when different skill levels must play against each other. Can we make a better system?
A few months ago, I decided to implement set operations on curved regions. I had the the canonical textbook on computational geometry , which described approaches for polygons comprised of straight lines, and it seemed like other projects had extended these techniques to parametric curves . I figured it would take a…
I know that floating-point arithmetic is a bit crazy on modern computers. For example, floating-point numbers are not associative: 0.1+(0.2+0.3) == 0.599999999999999978 (0.1+0.2)+0.3 == 0.600000000000000089 But, at least, this is fairly consistent in my experience. You should simply not assume fancy properties like…
As you all may know, I watched and posted my lecture notes of the whole MIT Introduction to Algorithms course. In this post I want to summarize all the topics that were covered in the lectures and point out some of the most interesting things in them. Actually, before I wrote this article, I had started writing an...
Deep dives into Cryptography and Privacy.
A blog about signals, programming, music, and other stuff.