Subject: - DocOz Ep - Even Oprah's trying

From: Lose Weight <[email-masked]>
Date: Fri, 23 May 2014 10:06:29 -0700

A new Cutting Edge -Loss Tool, without cutting into You...

DocOz has the way to Transform Your Body in 4 Weeks

Forget the Germy Gym, Expensive lasers and Surgery
And most importantly, no Starving _________________

What's DocOz the cutting edge tool DocOz cant Shut-Up about?

View Here -> / http://www.elldreamy.com/droz/episode/clip/view.video

- Remember Memorial Day is a few days away, and you could be lbs lighter by then. 

-DocOz Show
Episode Recap 
http://www.elldreamy.com/droz/episode/clip/view.video

,,,, modify message settings,,,,, Alert System Notifications
one one zero seven 1107-Valeria Dr.
Marion, -Texas- 78124 or http://www.elldreamy.com/khjef.sgnvr

I am sure the tool is great and the commentator on the demo video is a great guy, but the voiceover creeps me out for some reason. At first I wondered if it was a play on the name 'GhostDoc' as if the demo was emulating a creepy movie. lol too much.   Sky Sanders May 3 '10 at 12:5027	 I think this tool is horrible. It generates useless comments that are really useless. It might seem nice togenerate automatic xml comments but "set or get a value indicating wether this instance is dirty" Is this really useful on a property named "IsDirty" ? It's adding useless lines in your code in my opinion. If you have to make an Xml comment that is useful, then this won't help you because you'll have to write it yourself anyway.   Stephane May 3 '10 at 16:25@Stephane: The comments aren't meant to be used as-is. They're designed to be a template for a human being to flesh out. As such I find it very useful.   TrueWill May 3 '10 at 17:01@Stephane TrueWill is right this is a template for gene nice doc
 umentations, besides if you look at NET framework comments, you can see that all of them have a certain language template, I do that in my own component via gostDoc. This is very important when deploying a public API, the documentation has to be consistent, lexically.   BartoszAdamczewski May 3 '10 at 20:12Ok, you probably make a good point when it comes to a public API that needs a consistent wording. I still dont believe in a documentation that just describe each function one by one. any developer will ask for examples : "show me the code". Unit tests fits much better. Maybe an add-in that would generate documentation including the corresponding unit-test for each API call would be more useful :).   Stephane May 4 '10 at 8:20Have a look at nload.php as an alternative to Ghostdoc. Paid but it's only 10   CAD bloke Sep 4 '10 at 4:44As a "template for a human being to flesh out", the tool makes no sense. All you have to do is type /// (or ''' in VB) to get a template to flesh out. Th
 e only thing GhostDoc adds is text that it makes up from the name of the member...text which is therefore useless to any human being with half a brain.   Kyralessa Sep 25 '10 at 4:18GhostDoc is excellent. The documentation comments are always supposed to be widely different from what the API exposes. They are there to add confidence for the users of that API rather than leave them to interpret the method or property alone. If we only documented the things that required more explanation, it would be very strange indeed. GhostDoc removes the mundanity of adding the obvious ones so that we can concentrate on the not-so-obvious.   Jeff Yates Jan 26 '11 at 16:3 	
"Obvious" documentation is useless documentation. People don't look at documentation to learn the obvious. Look, go to your project properties under Build and in the Suppress warnings box, type 1591. There, now you won't get pinged about missing documentation. Now you can type real documentation where it's needed instead of using GhostDoc to generate undocumentation just to avoid a warning when you compile. If I sound a bit vehement here, it's because I've been a victim of GhostDoc-created "documentation" in the past. Don't waste your time creating undocumentation to waste my time.  Only difference in the generated code is fld qword ptr 0E8h)] for fast version and fldz at the start of the loop by the way, at least for my build in VS2010   Dervall Feb 16 '12 at 16:27
@Dervall That's correct. There's almost no difference in code. It's the value that affects whether or not the numbers go denormal.   Mysticial Feb 16 '12 at 16:304	  	t's particularly interesting, because the sequence which changes things is fundamentally x += 0.1; x -= 0.1, which can also be written (x + 0.1) - 0.1. One notes the lack of associativity. (Of course, rewriting like this could change the results, due to the fact that C++ allows keeping intermediate results in extended precision.)   James Kanze Feb 16 '12 at 17:5847	  I'm still finding it a little weird that the "+ 0" isn't completely optimized out by the compiler by default. Would this have happened if he had put "+ 0.0f"?   s73v3r Feb 16 '12 at 19:10@s73v3r That's a very good question. Now that I look at the assembly, not even + 0.0f gets optimized out. If I had to guess, it could be that + 0.0f would have side-effects if y[i] happened to be a signalling NaN or something... I could be wrong though.   Mysticial Feb 16 '
 12 at 19:31This is a common issue in audio signal processing. Signal followed by silence fed into recursive filters (common in "virtual analog" synthesizers, EQs, etc) yields exponentially decaying values within the filter's memory, and when they decay into the denormal realm, performance falls off a cliff. Different CPU architectures handle denormals differently, with Intel's Pentium 4 notorious for being about 250 times slower on denorms, while AMD takes more like a 10:1 hit.   Russell Borogove Feb 16 '12 at 19:35How is the performance if one takes the addition/substraction out? I wouldn't be surprised if it is still expensive, because the multiplication/division is more expensive for subnorms.   CodesInChaos Feb 16 '12 at 20:05@CodeInChaos Yes, it's still expensive, but only 13.3208 seconds as opposed to 26.7669. The numbers still go denormal. But I guess since there's only half as many operations, it's twice as fast. It's somewhat surprising to me that a denormal division seems 
 to run only just as slow as a denormal addition/subtraction.   Mysticial Feb 16 '12 at 20:21 So..... what should the performance-conscious programmer do when there are zero-valued floats involved?   Chriszuma Feb 16 '12 at 21:19@Chriszuma, it's not the zero values here that are the problem, it's the near-zero denormals. If you don't need to do arithmetic on super tiny numbers, then flush denormals to zero. If you do need to handle numbers that small, then it's probably faster to use doubles on most platforms.   user57368 Feb 16 '12 at 21:44
Doubles will still run into the same problem in many cases, just at a different numerical magnitude. Flush-to-zero is fine for audio applications (and others where you can afford to lose 1e-38 here and there), but I believe doesn't apply to x87. Without FTZ, the usual fix for audio applications is to inject a very low amplitude (not audible) DC or or square wave signal to jitter numbers away from denormality.   Russell Borogove Feb 17 '12 at 0:12@RussellBorogove: I wonder if any hardware designs include a mode to force LSB truncation of values near zero, so as to avoid a requirement to handle denormalized values weirdly?   supercat Feb 17 '12 at 4:13
Around 1998/1999 I used to play with plugins for Jeskola Buzz. I upgraded from Pentium 166MMX to Pentium 3 500MHz for that. Part of the lore then was that as values decayed very close to zero, "underflow exceptions" would cause severe slowdown - even with thedisabled, it would still cause a big slowdown. The fix was to force near-zero values to zero. Was this lore wrong? Was this actually a denormalized floats issue?   Steve314 Feb 17 '12 at 7:39Putting aside the performance, why y[i] = (y[i] + 0.1f) - 0.1f even leads to a different value than y[i] = (y[i] + 0) - 0 ?   Isaac Feb 17 '12 at 11:09 @Isaac because when y[i] is significantly smaller than 0.1 adding it results in a loss of precision because the most significant digit in the number becomes higher.   Dan Neely Feb 17 '12 at 13:282	  his brings a curiosity question: do you have examples of hardware vendors doing efficient denormal computation?   nraynaud Feb 17 '12 at 14:10@supercat, if I understand you rightly, that's essenti
 ally what flush-to-zero is.   Russell Borogove Feb 17 '12 at 18:27Steve314, the lore is, let's say, imprecise. IEEE754 defines an "underflow exception" for denormalized numbers; if the hardware isn't able to handle denorms accurately, it's supposed to raise an exception instead, but x87 does handle the denormals, slowly, without raising exception.   Russell Borogove Feb 17 '12 at 18:28
@nraynaud, Intel's new Sandy Bridge microarchitecture handles denormals remarkably efficiently -- according to Agner Fog, at ful  Russell Borogove Feb 17 '12 at 18:29@RussellBorogove: In a flush-to-zero system, as I understand the term, the difference between the smallest and second-smallest positive numbers is a tiny fraction of the magnitude of the smallest number. Adding denormals to the system reduces the magnitude of the smallest number to match the smallest measurable dfference between numbers. What I'd suggest would be increasing the minimum difference between numbers to match the smallest normalized number. This would ensure that if x=y the difference between x+(y-x) and y would be of smaller magnitude than the difference between x and y.   supercat Feb 17 '12 at 19:27@RussellBorogove: Whereas handling of denormals requires adding complexity to all aspects of handling floats, limiting the precision of lower bits (should actually be done via rounding rather than truncation) wo
 uld only require extra logic in one place. Instead of always rounding to one mantissa-LSB, one would sometimes round off to a coarser level.   supercat Feb 17 '12 at 19:34Does this have any relevance for Obj-C. I'd guess the answer would be, "probably, benchmark it yourself?" Or could this not apply in Objective-C for some reason...?   Yar Feb 18 '12 at 7:18
@Yar: it is more of a CPU than a language issue, so it probably has relevance for Obj-C on x86. (iPhone's armv7 doesn't seem to support denormalized floats, at least with the default runtime/build settings)   mvds Feb 18 '12 at 11:56@RussellBorogove I've got a Sandy bridge CPU here (i7-2620M), and I can't observe that efficiency - I see a 22x slowdown with gcc 4.6.1 and g++ -O3 -march=corei7-avx 93145Similar results with all compiler options I've tried.   je4d Feb 23 '12 at 21:30 @je4d I noticed it on my 2600K as well. And it does go contrary to what Agner Fog says. I initially suspected that the perhaps the division was still sensitive to denormals. But removing the division (and multiplying by reciprocals of z[i] instead) yields a slowdown of 96x to denormals   Mysticial Feb 23 '12 at 21:47
@Mysticial all my google search results for snb and denormalized FP lead back to that one Agner Fog article. I've also been trying various compiler options (e.g. -mfpmath=..., -mfast-math) since my last comment and I can't find any where 1) -DFLOATING doesn't make it faster and 2) the results without -DFLOATING are correct. So AFAICS, the claim is just bogus.   je4d Feb 23 '12 at 22:03Interesting. Are you seeing this on x87, SSE, or both?   Russell Borogove Feb 23 '12 at 22:28
@RussellBorogove I tested x87 in 32-bit mode and SSE in 64-bit mode. Same results. Huge slowdowns to denormals both with and without the division. ~25x with the division and ~100x without the division.   Mysticial Feb 23 '12 at 22:34No clue what's up then. You might contact Fog if you want to sort it out.   Russell Borogove Feb 23 '12 at 22:39@RussellBorogove I'm doing 64bit only, and I see a slowdown for both 387 (50x) and sse (14.5x) with doubles - similar numbers for floats.   je4d Feb 23 '12 at 23:10Mar 12 '12 at 13:217	  	Downvoters care to comment?   Mysticial Mar 14 '12 at 20:49
@s73v3r: The +0.f cannot be optimized out because floating-point has a negative 0, and the result of adding +0.f to -.0f is +0.f. So adding 0.f is not an identity operation and cannot be optimized out.   Eric Postpischil Jul 6 '12 at 17:59Note to the QA: It is not the + 0 that slows down the program, but the + 0.1f is what makes it faster. You can check it by commenting out the lines with + 0 and - 0 and the result will be the same.   vsz Jul 18 '12 at 4:14