muzik wrote:So whats behind this?

Code: Select all

```
apgmera v4.01: Rule b05s is correctly configured.
Greetings, this is apgmera v4.01, configured for b05s/C1.
Peer-reviewing hauls:
Peer-review complete; proceeding search.
Using seed m_DsLPagXZcMM9
Running 1 soups per haul:
Fatal error: B0 rules only support even numbers of generations.
```

I suspect that powerlyse() or linearlyse() is attempting to run the linear-growth patterns in this rule by increments of 1 generation, which is impossible since you can only run a B0 rule an even number of generations*. Thanks for pointing this out; I'll need to alter these routines accordingly.

* Golly cheats by running 'iterate then reverse' at even timesteps and 'reverse then iterate' at odd timesteps; I suspect LifeViewer does something similar.

At the moment, I'm working on the LtL implementation. There's are wonderful functions called PADDB and PSUBB for performing 16 parallel 8-bit additions (resp. subtractions):

http://www.felixcloutier.com/x86/PADDB:PADDW:PADDD.html
http://www.felixcloutier.com/x86/PSUBB:PSUBW:PSUBD.html
There are also some parallel comparison instructions (unfortunately for signed integers, but I can skirt around that by adding 128 to everything), so it should be possible to SIMDify the entire LtL kernel. The result (which will already be about 10 times faster than Golly's LtL algorithm) could be slotted straight into lifelib/avxlife/uli.h, immediately giving LtL versions of HashLife and vlife (which will be even faster still, since they take advantage of repetition and empty space, respectively). Provided we also have a LtLHistory implementation -- straightforward to implement in the same way that we do GenerationsHistory -- then we get LtL-enabled apgsearch for free.

muzik wrote:Quite concerning: p1 photons are regarded as still lifes.

Oops. I must be doing something incredibly silly such as equating 'period=1' with 'still-life'. Again, thanks for noticing this.