From 4e663c0fc19a1a138a1ef0e23a2c5fbad3440b0b Mon Sep 17 00:00:00 2001 From: C R Onjob Date: Wed, 17 Sep 2014 01:00:02 +0800 Subject: [PATCH] Automatic commit of irc logs Wagner's music is better than it sounds. -- Mark Twain --- irc/#ipdf.log | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) diff --git a/irc/#ipdf.log b/irc/#ipdf.log index ada673d..0a655c9 100644 --- a/irc/#ipdf.log +++ b/irc/#ipdf.log @@ -4551,3 +4551,188 @@ 18:38 < matches> Panic mode is well and truly activated now --- Day changed Mon Sep 15 2014 14:00 < sulix> matches: You need to put the title in: "Keepin' it real: Staying afloat on the sea of document precision" +--- Day changed Tue Sep 16 2014 +12:25 < matches> I think I'm sinking +12:27 * sulix has failed to come up with a suitable sinking/syncing pun. +12:27 < sulix> Or, for that matter, a reason why the quadtree clipping sometimes breaks. +12:33 < matches> Hey, at least multiplication doesn't sometimes break +12:33 < matches> That's fairly major +12:34 < matches> My graph traversal for the paranoid number is somewhat flawed +12:34 < matches> Yeah it's a giant graph +12:34 < matches> Smell the memory cooking +12:34 < matches> I should do some performance tests +12:34 < matches> Even if I don't have anything to performance test... +12:34 < matches> We did promise graphs +12:35 < matches> (The other kind of graph) +12:35 < sulix> How are you traversing the graph? +12:35 < sulix> (The first kind) +12:36 < matches> Originally I was alternating between multipying and adding, but that doesn't work if the first term in a factor has factors of its own +12:36 < matches> I could probably still use that but I'd have to add zeroes or something +12:37 < matches> Thinking of it as a linked list is wrong anyway, as factors can have terms and terms can have factors and I'm not making any sense am I +12:37 < matches> Maths can be made up of maths +12:37 < matches> I kind of regret basically promising to have this done in my abstract... +12:37 < sulix> Hmmm... +12:40 < matches> Anyway, either I am creating the graph wrong and traversing it correctly, or creating it right and traversing it incorrectly, or they are just both totally wrong +12:41 < matches> Leaning towards the latter +12:43 < sulix> You need to traverse it from the bottom-up, I think. +12:50 < matches> Yeah, I need to change both the creation and traversal +12:50 < matches> Repeated divisions need to change into a division of a number multiplied by a number +12:51 < matches> Then the traversal is relatively trivial +12:55 < matches> Division is annoying +12:55 < matches> Why does maths need division +12:55 < matches> All the other operations make sense +12:56 < matches> Someone should reinvent mathematics without a concept of division +12:56 < matches> We'd all be happier +12:56 < sulix> I'm pretty certain there's a formal proof of that. +12:57 < sulix> Most number systems don't have the concept of division. +12:57 < matches> Haha +12:57 < sulix> (The integers, for example) +12:57 < matches> They have division with remainder though? +12:58 < matches> Ah +12:58 < matches> But you don't get a single number out +12:58 < matches> You get two +12:58 < matches> So it's not a proper operation? +13:00 < sulix> It's not a binary operation, and it's not the inverse of division. +13:00 < sulix> *multiplication +13:07 < Pommers> Guild debate. Pretty sure I have the best camera angle here +13:43 < matches> Guild debates are beyond the scope of this project +13:44 < matches> Urgh I'm regretting distinguishing between ADD and SUBTRACT now +13:44 < matches> Just ADD and MULTIPLY should be all the universe needs +13:51 < matches> You have to be doing something wrong when you are using a triple pointer +13:57 < matches> Delicious triple pointers +13:57 < matches> Now I feel like a triple chocolate milkshake +13:58 < matches> Ok, I have integers 0->9 adding and subtracting preeettty well now +14:13 < sulix> Ah, the power of modern technology! +14:29 < sulix> When in doubt, more debug output! +14:55 < sulix> Ah ha! I have solve (read: hacked horribly around) the quadtree bug. +14:56 < Pommers> http://xkcd.com/859/ +14:56 < sulix> Basically, adding a bunch of fake roots in fixes it. +14:56 < sulix> Details at 11. +14:56 < sulix> Pommers: You are a terrible person. +14:57 < Pommers> Oh wait. It's there. I should sit closer to my screen +15:32 < matches> Ok, I'm pretty sure Paranoid Numbers are the worst idea ever +15:32 < matches> Possibly worse than iRRAM +15:32 < matches> I mean, in theory you can simplify things +15:32 < matches> But when you can't, you just use ridiculous amounts of memory +15:33 < matches> I don't think you can simplify that many things either +15:33 < matches> If I get it working enough I can demonstrate that it is a terrible idea at least... +16:46 < matches> Oh my goodness it is kind of working +16:46 < matches> I've said this before... +16:47 < matches> But it's at least at the point where it gives suspiciously similar answers to the right answer +16:48 < matches> As opposed to suspiciously off by factors of a random number +17:31 < matches> So I think all I have to do now is simplify the damn things +17:31 < matches> There are all sorts of amazing optimisations like not using a std::vector for the terms and not using seperate std::vector for + and - +17:31 < matches> And I think you can probably optimise it even more if you just use doubles +17:31 < matches> But +17:31 < matches> It is better at repeated division/multiplications +17:32 < matches> See TestMulDivIntegers +17:32 < matches> By better I mean slower +18:50 < matches> I have pushed a thing +18:50 < matches> Try not to judge me too harshly +18:51 < matches> Also there's no way it will compile on Cabellera anymore +23:06 < matches> So +23:06 < matches> I just made SVGs load into the centre of the view... +23:06 < matches> And then I realised that is exactly the sort of thing that will break sulix's quad tree +23:06 < matches> Sorry sulix +23:07 < matches> My role in this project is basically to make sulix have to do more work... +23:21 < Pommers> Why'd you break cabellera? +23:30 < matches> I didn't break cabellera +23:30 < matches> I used C++11 auto range iterators +23:30 < matches> for (auto add : m_next[add]) +23:31 < matches> As opposed to: for (vector::iterator i = m_next[ADD].begin(); i != m_next[ADD].end(); ++i) ParanoidNumber * add = *i; ... +23:31 < matches> Cabellera's g++ is too old for such amazing things +23:32 < matches> But I was at a point where I needed to change like 50 things from iterating over linked lists to iterating over some kind of hideous graph of std::vectors +23:32 < matches> Stuff typing all that +23:32 < matches> I broke the quad tree because I thought it would be nice to have SVGs automagically appear in the middle of the screen +23:33 < matches> As opposed to the top left underneath all the debug output +23:49 < sulix> matches: You are too kind. +23:49 < sulix> The quadtrees are actually working fine at the moment, by virtue of me modifying SolveCubic to no longer solve cubics. +23:51 < Pommers> return null;? +--- Day changed Wed Sep 17 2014 +00:03 < matches> Wait what +00:04 < matches> Did you remove Cubic Beziers +00:04 < matches> Because I liked having Cubic Beziers +00:04 < sulix> I'm still trying to work out why it works myself. +00:04 < sulix> Nope, still cubic béziers, solvecubic now just returns some things which I'm pretty certain actually aren't roots as well. +00:05 < Pommers> Do either of you want to trade? I'll work on iPDF and you can fix my housemates computer +00:05 < matches> Hah +00:05 < matches> Set up that Jenkins server and we'll talk +00:06 < Pommers> The Container exists for Jenkins +00:06 < Pommers> So it's been started +00:06 < matches> I wish CS would stop thinking up names for things that are also names for other things +00:06 < matches> Container +00:06 < matches> Puppet +00:06 < matches> Orchestration +00:06 < matches> For god's sake +00:06 < matches> Paranoid Number is totally a legit name +00:07 < Pommers> Stop being paranoid about things matches +00:07 < matches> "Tree" is acceptable because it at least looks like a tree +00:07 < Pommers> Also, coming to dinner? +00:07 < matches> There is dinner? +00:07 < matches> When? +00:07 < matches> It's midnight... +00:07 < Pommers> Thursday +00:07 < matches> Oh +00:07 < matches> I suppose +00:08 < matches> Thursday is typically the post meeting freak the hell out day +00:08 < matches> Monday Tuesday and Wednesday being the pre meeting freak the hell out days +00:08 < matches> Friday is the I should really prepare for my Physics tute day +00:09 < Pommers> Saturday is "o god coderdojo day" +00:09 < matches> Yeah +00:09 < matches> Sunday is I should really not be playing computer games but I will anyway day +00:09 < matches> No wait last sunday was a freak the hell out day as well, until they made me play monopoly +00:09 < matches> Sorry, monotony +00:10 < matches> Anyway how do you get valgrind to print number of flops +00:10 < sulix> I'm just s/.*day/PANIC day/g at the moment. +00:10 < matches> Your thing works! +00:10 < matches> Sort of +00:11 < sulix> thing? +00:11 < matches> Quadtrees +00:11 < Pommers> "thing" +00:11 < sulix> Technically it works* +00:11 < Pommers> "it" +00:11 < matches> I have about 4 things I still haven't even tried yet +00:11 < matches> And a couple of things that will work if you wait the lifetime of the universe +00:12 < Pommers> Hmm... I should make my bed while this backup happens +00:12 < matches> Bed is tempting +00:12 < sulix> *The roots I'm using might not actually be roots, it doesn't work if you either pan, zoom out or anything other than zoom in on a single point forever. +00:12 < Pommers> But having too much fun coding? +00:13 < matches> I'm working towards actually making graphs of something +00:13 < matches> I'm still working out exactly what I will graph +00:13 < matches> flops seems important +00:13 < matches> I'm basically replacing a single inexact flop with a lot of usually but not always exact flops +00:14 < matches> And several hundred MB of memory... +00:18 < matches> Ok, this can't be right +00:18 < matches> To render one frame of an empty document takes 137,708 F64 operations +00:18 < matches> I assume that means double +00:19 < Pommers> That could use some optimizing... +00:19 < Pommers> Make all the functions return null and see how that speeds it up +00:19 < matches> -_- +00:19 < matches> This is using regular doubles +00:19 < matches> Not Paranoid Numbers +00:20 < matches> ParanoidNumbers takes about 5 minutes to do 20000 operations at the moment... +00:20 < sulix> I could believe it. +00:22 < Pommers> I'd be paranoid if it took that long +00:22 < matches> Don't make fun of the Paranoid Numbers +00:22 < matches> They are a work of art +00:23 < sulix> Part of me really wants to try compiling the quadtree with them, and part of me is terrified at the prospect. +00:23 < matches> There isn't a REALTYPE for them yet +00:25 < matches> They might work better if you had a giant Trie of them but I have no idea how to structure that +00:25 < matches> At the moment there is one tree per number and the tree can have a variable number of children for each node... :S +00:31 < matches> Anyway what performance metric do we want +00:31 * matches consults the proposal +00:32 < Pommers> What will be easier to do? Time or space? +00:32 < matches> Time +00:32 < matches> But Rowan was kind of keen on Space +00:32 < matches> Number of flops is probably the best +00:32 < Pommers> Just put some ascii art daleks in +00:34 < matches> Ok, so 1 frame = 30,897 F32, 129,042 F64 and 1000 frames = 4,364,459 F32, 6,933,526 F64 +00:35 < matches> 6800 doubles to render a blank document +00:35 < matches> Actually +00:35 < matches> ! +00:35 < matches> There is a rectangle in it! +00:35 < matches> Of width and height 0 +00:40 < Pommers> I almost have the container for jenkins fully set up now +00:43 < Pommers> I just need to give it an IP and then just set up jenkins +00:45 < matches> I was joking about Jenkins... +00:46 < Pommers> I actually have a use for it... -- 2.20.1