From 315200ab8326d7a79787a937d05a853d379f2b3e Mon Sep 17 00:00:00 2001 From: C R Onjob Date: Thu, 25 Sep 2014 01:00:01 +0800 Subject: [PATCH] Automatic commit of irc logs So you're back... about time... --- irc/#ipdf.log | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/irc/#ipdf.log b/irc/#ipdf.log index 7c4fda2..ba3bd79 100644 --- a/irc/#ipdf.log +++ b/irc/#ipdf.log @@ -5082,3 +5082,136 @@ 23:34 <@matches> I'm pretty sure it just means we need a better tester 23:38 <@matches> Or 23:38 <@matches> We lie +--- Day changed Wed Sep 24 2014 +12:33 <@matches> Ok, sulix do you want to help design these comparisons that we were going to use +12:35 <@matches> We've got the "qualitative" comparisons pretty well... +12:36 <@matches> It's the other 4 things +12:36 <@matches> Performance vs number of primitives +12:36 <@matches> Like +12:36 <@matches> Do we add N primitives randomly? +12:36 <@matches> Are our "test" documents just going to be Humphrey The Rabbit and Shady the Fox +12:36 <@matches> Not that I have any objection to using them +12:36 < sulix> I think so. +12:36 <@matches> I'll add Emma the Cat and Mitch the Panda +12:37 < sulix> Number of primitives should just be number of curves/objects. +12:37 < sulix> I could do with some panda-monium. :P +12:37 <@matches> Pommers beat you to that one +12:37 <@matches> That's the name of the club's panda +12:38 <@matches> I don't think I'll add Sam the Girraffe +12:38 <@matches> It's embarrassing +12:38 <@matches> Oh also did you read the wall of text? +12:39 <@matches> Because I think we need a new way to demonstrate how much better the quad tree is than regular floats other than just zooming forever +12:39 <@matches> Regular floats do quite well now +12:39 <@matches> I should probably commit this +12:39 < sulix> What about adding objects? +12:39 <@matches> I also tried to get it to run without X for bus purposes +12:39 <@matches> Well +12:40 <@matches> Basically I threw out the idea of the view and just applied the transforms directly to all the object bounds +12:40 <@matches> It will still print the equivelant view coordinates +12:40 < sulix> Can you zoom out and then back in again? +12:41 <@matches> I suspect if you go far enough there will be issues +12:41 <@matches> The problem is going far enough takes a long time +12:41 <@matches> We need to make ipdf take input so we can automate it? +12:41 * sulix will do that this afternoon. +12:41 <@matches> Or implement a "tester" that does it +12:42 <@matches> HFP has a chapter on reducing error which boils down to rearranging the operands +12:43 <@matches> Although they don't have anything as insanely dumb as ParanoidNumber +12:43 < sulix> Isn't that what ParanoidNumber does? +12:43 <@matches> Yeah +12:43 <@matches> But ParanoidNumber doesn't assume any knowledge over what you are trying to do +12:43 <@matches> Hence it is horribly inefficient +12:44 < sulix> I suspect we need to sit down with Kahan and work out what the exact mathematical properties of floating-point error. +12:44 <@matches> Their examples are like "If you know you are going to sum all these numbers, you sort them" +12:44 <@matches> HFP goes through them +12:45 <@matches> Sometimes you can represent the error as another float but with twice the precision? +12:45 <@matches> It might be worth looking at whether MPFR includes the "Inexact" exception +12:45 <@matches> Then you could just double the precision every time it occured? +12:46 * sulix will be back shortly. +12:47 <@matches> It's going to be a fun study break :S +12:54 <@matches> Also PN manages to pass realops but somehow give totally whack behaviour when you actually use it +12:54 <@matches> ... +12:54 <@matches> And this is enforcing a size limit of "0" (which means it should just be equivelant to doubles!) +12:55 <@matches> Also I should probably also write a draft thesis +12:55 <@matches> Also other units suck, why can't the project count as 4 units +12:56 <@matches> I'm finally starting to understand this properly, as we are running out of time at an alarming rate +12:56 <@matches> I guess there probably won't be any experts on floating point arithmetic at my conference so I can probably pretend I know things +13:02 <@matches> http://szmoore.net/ipdf/i-think-there-might-be-a-slight-maths-error-rabbit.png +13:03 <@matches> I strongly suspect Copy/Paste errors +14:07 < Pommers> Yeah. We have a club Panda +14:10 -!- matches changed the topic of #ipdf to: IPDF: Infinite Panda Document Format +14:13 <@matches> Um +14:13 <@matches> cat.svg causes a segfault +14:23 <@matches> It has an empty path? +14:23 <@matches> I regret somewhat making the path be from m_start to m_end *inclusive* +14:37 <@matches> Have a git push +14:37 <@matches> Possibly with a correct timestamp +14:47 <@matches> Ok, things still go whack when you apply transforms to objects instead of the view +14:48 <@matches> But because you can add objects in screen space rather than converting to view space and back, you don't get the precision issues adding a new object +14:48 <@matches> I suspect +14:48 <@matches> If you add a new object at say 1e-6 +14:48 <@matches> It looks fine +14:49 <@matches> Then you zoom back out to 0.5,0.5,1,1 or something +14:49 <@matches> Then zoom back in +14:49 <@matches> It *should* look all wierd again +14:49 <@matches> Then again it might not +14:49 <@matches> Because floating point errors are crazy +14:51 <@matches> It does! +14:51 <@matches> YES +14:52 <@matches> It looks totally screwed up in a different way +14:52 <@matches> So, I guess this just makes it more important that you can actually add elements to the quad tree +14:53 * sulix feels the pressure mounting. +14:54 <@matches> Is the quad tree kind of equivelant to applying the transformations to the objects but making sure you don't lose the original bounds +14:54 <@matches> When you zoom back out you get the original bounds back +14:54 < sulix> Yeah, largely. +14:54 <@matches> Cool +14:54 <@matches> I'm sure someone trained in maths can say smart stuff about that +14:55 <@matches> Applying transformations to the object bounds is probably the best way if you have an arbitrary precision number representation +14:55 <@matches> You can use a lower precision representation when you work in screen space then +14:55 <@matches> Although I'm not sure how I would actually implement that... +14:56 <@matches> With some kind of +14:56 <@matches> Quad tree... +14:56 <@matches> maybe +14:56 <@matches> I guess if two methods end up with the same pixels in the same spot then they are mathematically equivelant +14:58 <@matches> You could also speed things up +14:58 <@matches> If you exploited the Path bounds +14:58 <@matches> Express all the beziers within a path relative to {0,0,1,1} then just apply your transformation to the path +14:58 < sulix> This is a much better design. +14:59 <@matches> Well that's sort of a compromise between transforming the view or transforming all the bounds +14:59 < sulix> But it's sort-of too late to change it all now. +14:59 <@matches> I think I might have to though +14:59 <@matches> If I want to make GMPrat performant +15:00 <@matches> Lets face it, I'm doing a better job at redesigning the document structure to be less terrible than I am at actually implementing arbitrary precision number types :S +15:01 <@matches> I could probably redesign the CPU renderer, but the GPU renderer would be harder +15:01 <@matches> PathRenderer already does everything BezierRenderer does, but it adds shading +15:02 <@matches> I think right now I will try to stop PN from being quite so broken +15:02 <@matches> I am perplexed +15:03 <@matches> As there is basically an "assert(equivelant to double)" after every single operation +15:03 <@matches> None of them fail +15:03 <@matches> And it gives a totally wrong result +15:45 <@matches> It is rendering at 666 FPS +15:46 <@matches> :O +16:49 <@matches> Ok +16:49 <@matches> There should be postive paranoid numbers soon +16:49 <@matches> s/postive/negative +16:49 <@matches> That thing that happens when you put a '-' sign in front of a number +16:49 <@matches> Very important +16:50 < sulix> Negative _and_ paranoid? I'm waiting for the "Number Theropy" classes next... :P +16:50 <@matches> I've learned some valuable lessons about implementing number classes I guess +16:50 < sulix> At least it isn't complex? +16:50 <@matches> Make sure you test every single function against doubles +16:51 <@matches> (Including constructors) +16:51 <@matches> I'm really over bug fixing this class +16:51 <@matches> I just want to make it faster dammit +16:51 <@matches> I have ideas about how to make it faster +16:53 <@matches> Admittedly they are mostly not good ideas +16:53 <@matches> I'm expecting the arena may help more when I don't enforce a size limit of zero though +16:54 <@matches> YES +16:54 <@matches> I can render a paranoid rabbit +16:54 <@matches> Oh wait +16:54 <@matches> I didn't increase the size limit from zero +16:54 <@matches> That will be the real test... +17:02 <@matches> So are you going to implement a magical automated zoomer? :P +17:03 <@matches> We kind of need to be able to choose what point to zoom in on depending on the particular test svg though :S +17:04 <@matches> Right now it's hard to tell whether I am getting precision issues or I just accidentally moved the mouse a bit +21:02 < sulix> That's about the most terrifying email it's possible to get, I think. +21:59 < sulix> Very simple scripts for automating actions now exist. -- 2.20.1