Started writing on the paper detailing our lunar mission (as opposed to just the instrument). A bit amusing to write about what happens on the dark side of the moon; thermal situation in orbit and so on

It gets even better: some implementations (libavformat/wavdec.c) accept files which deviate from the specs in.. interesting ways.

Playing around with hammer, a parser combinator from the langsec.org folks (github.com/UpstandingHackers/h). In trying to write a RIFF WAVE parser it suddenly dawns on me why length fields are bad.

In RIFF there are chunks with length fields, and one special chunk is LIST. It has sub-chunks which also have length fields. Their total length can be different from that of the LIST. Determining if two RIFF parsers handles mismatched lengths the same way is undecidable.

Gah, found a bug in my code. Will have to restart everything :c
On the plus side I get to check off a whole bunch of other numbers, and build a nice little corpus to test against

Day 6 progress: 1.75%

Estimating to spend between 400-1400 kWh computing this

This also serves as a "3 is probably a primitive root mod 2^82589933-1" test

Started a computation on one of my machines today which will take an estimated 300 days to complete, and consume 80G disk space. Specifically, it is checking that repeatedly squaring 3 mod 2^82589933-1 ends up back at 3 (or 9) after 82589932 squarings

Might as well share a cool idea a friend of mine told me that's pretty low-tech: closed loop salt water dehumidifier + evaporative cooler. You use saturated salt water to soak up moisture inside, then boil the moisture off outside. The resulting dry air can then be used in a traditional evaporative cooler. Could probably be made to run off of solar heat.

Today I learned about wet-bulb vs dry-bulb temperature. As someone who lives in a cold part of the world it hadn't occurred to me the profound effect of humidity on survivability. While humans are clever enough to build devices to dehumidify and cool the air, fauna is not..

$$2^{34} \dots 2^{37}$$ even

Sadly there are no Mersenne primes beyond 7 that are also on this form, and no primes with popcount < 6 in the range $$2^34 \dots 2^37$$

Hooray for ! I've been scratching my head for the last few days how to find primes such that repeated squaring has the longest possible cycle, (p-3)/2. I decided to write a program to find such primes by brute force, starting from 5. The resulting sequence gave this match: oeis.org/A141305

I now have a much faster test: I only need to check that p is a safe prime, and that 2 is a primitive root of (p-1)/2 😎

So I've been seeing calls to a bunch of functions called *_itch() in gmplib, and it turns out they're for figuring out how much scratch space is needed :]

Wait this place supports LaTeX formulas? Let's see what syntax is supported:

Dollar signs:
$x + x^2$

Backslash parens:
$$x + x^2$$

Backslash square brackets:
$x + x^2$

Backslash begin equation:

Woop! Implemented parallel Toom-3 multiplication, which is on-par with my parallel schoolbook squaring implementation, but needs only 5 cores instead of 21. This means there's room for a four-fold speedup

Chungus²

Oh hey, someone has thought of a better way to apply Toom-Cook to squaring, namely J. Chung & M.A. Hasan: lirmm.fr/arith18/papers/Chung-

Doing nothing but squaring brings utilization up to 85%, and running times to somewhere between 6-13 years. But this is entirely CPU - there's a plethora of GPU type hardware to make use of as well

There we go: ran on an actual cluster machine. 21 cores nets a 173% speedup! Not the most efficient, but it brings the CPU time estimate down from 50 years to a mere 19 years. Core utilization is just 50%, so another halving seems feasible. Ideally every core would do nothing but modular squaring 100% of the time