Skip to content

The Mandebrot set code does not compile correctly. #1

Description

@typesanitizer

Description

As it says in the title.

Furthermore, the code generated (with optimisations on) is actually relatively small (~30k x 40) compared to other programs (Towers of Hanoi ~130k x 40).

I've also built in an IR interpreter and that seems to be working fine with the Mandelbrot code (after optimisations are completed). So the optimisations are sound. Some other plausible causes for failure -

  • The code uses underflow/overflow somewhere and those semantics aren't being matched: We could check for underflow/overflow by putting this check in our own Brainfuck interpreter.
  • Triggering some edge case in the linear painting logic: Seems unlikely (because larger programs work). This can be checked if we get the Mondrian painting style working and running its output under fpiet.
  • Triggering some edge case in camlimages: Seems unlikely, it is a fairly well-tested library.
  • Triggering some edge case in both fpiet and npiet - this seems very unlikely.

Version

44112a2

Compilation details

Minimum stack size needed = 308.

Mandebrot source: Mandelbrot.bf

Notes

It might also be worth trying to improve the code generator in the test cases and use a larger time-to-fail (and possibly leave the test suite running overnight) to find a smaller, easier-to-handle counterexample. So far, the tests seem to pass every time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions