All of the things and none of the sleep
authorSam Moore <matches@ucc.asn.au>
Thu, 18 Sep 2014 17:11:37 +0000 (01:11 +0800)
committerSam Moore <matches@ucc.asn.au>
Thu, 18 Sep 2014 17:11:37 +0000 (01:11 +0800)
commitea748154f1bc7dbc81cb52611a52865e63109439
tree9597a3c8c937c698aa8ea62445183b5162818153
parentae6af9f5e166d675a7139ec6dffee4ccab4347bc
All of the things and none of the sleep

GMPrat is a type that works (un)surprisingly well, until you start changing the view.

ParanoidNumbers explode more dramatically but actually simplify for certain things.

Simplify seems to end up adding operations that don't cancel twice, eg:

debug: TestRandomisedOps (tests/paranoidtester.cpp:152) - Test 1000*1 randomised ops (max digits = 4)
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:208) - {7+(7/10)} *= {119}
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:209) - {7*119+(99127/10)}
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:210) - double Yields: 916.2999773025512695312500000000000000000000
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:211) - PN Yields: 10745.7001953125000000000000000000000000000000
FATAL: int)() (tests/paranoidtester.cpp:212) - Failed on case 102

Note 7*119 * 119 = 99127, so the *119 is being applied extra times
Probably because of reasons that hopefully the cold light of morning will reveal.
14 files changed:
src/Makefile
src/bezier.h
src/gmprat.h [new file with mode: 0644]
src/main.cpp
src/main.h
src/objectrenderer.cpp
src/paranoidnumber.cpp
src/paranoidnumber.h
src/rational.h
src/real.cpp
src/real.h
src/rect.h
src/tests/paranoidtester.cpp
tools/analysis.ipynb

UCC git Repository :: git.ucc.asn.au