[#392128] negative grep — Matt Lawrence <matt@...>

A bit of syntax that I have never picked up. How do I use grep to exclude

14 messages 2012/01/12
[#392129] Re: negative grep — K Clair <kclair@...> 2012/01/12

biglist !~ /bar/

[#392135] Problem with "Exception" - suddenly stopped working — Panagiotis Atmatzidis <ml@...>

Hello,

16 messages 2012/01/12
[#392144] Re: Problem with "Exception" - suddenly stopped working — "Abinoam Jr." <abinoam@...> 2012/01/12

IMHO ~PERHAPS~ the begin rescue is not working because the exception

[#392146] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/12

On Thu, Jan 12, 2012 at 10:04 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392147] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/12

On Thu, Jan 12, 2012 at 10:33 PM, Peter Vandenabeele <peter@vandenabeele.com

[#392154] Re: Problem with "Exception" - suddenly stopped working — Panagiotis Atmatzidis <ml@...> 2012/01/12

Hello,

[#392161] Re: Problem with "Exception" - suddenly stopped working — "Abinoam Jr." <abinoam@...> 2012/01/13

On Thu, Jan 12, 2012 at 8:45 PM, Panagiotis Atmatzidis

[#392162] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/13

On Fri, Jan 13, 2012 at 12:23 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392242] The Better Code — Intransition <transfire@...>

Which would you judge to be the better code?

15 messages 2012/01/16

[#392252] Which library to write a parser — thomas carlier <carlier.thomas@...>

Hi,

16 messages 2012/01/16

[#392262] uniq with count; better way? — Ralph Shnelvar <ralphs@...32.com>

a = [4,5,6,4,5,6,6,7]

42 messages 2012/01/16
[#392266] Re: uniq with count; better way? — Sigurd <cu9ypd@...> 2012/01/16

The first that came to my mind.

[#392268] Re: uniq with count; better way? — Adam Prescott <adam@...> 2012/01/16

On Mon, Jan 16, 2012 at 16:00, Sigurd <cu9ypd@gmail.com> wrote:

[#392277] Re: uniq with count; better way? — Magnus Holm <judofyr@...> 2012/01/16

On Mon, Jan 16, 2012 at 17:04, Adam Prescott <adam@aprescott.com> wrote:

[#392287] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 1:48 PM, Magnus Holm <judofyr@gmail.com> wrote:

[#392289] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 9:22 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392291] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 10:05 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392303] Re: uniq with count; better way? — Peter Vandenabeele <peter@...> 2012/01/17

On Tue, Jan 17, 2012 at 2:44 AM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392351] Re: uniq with count; better way? — Robert Klemme <shortcutter@...> 2012/01/18

On Tue, Jan 17, 2012 at 12:08 PM, Peter Vandenabeele

[#392286] Parsing log with date time entry — Christopher Graves <gravescl@...>

The log file looks like this

24 messages 2012/01/16

[#392406] Name directory with a variable — Alex Sweps <alexszepes@...>

Hello again everyone.

14 messages 2012/01/20

[#392429] Getting an Object to Push or Register "Itself" With a Hash During Initialization — Frank Guerino <frank.guerino@...4it.com>

Hi,

11 messages 2012/01/20

[#392460] Microrant on Ruy's Math Skills — Intransition <transfire@...>

So simple...

116 messages 2012/01/21
[#392464] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/21

[#392469] Re: Microrant on Ruy's Math Skills — Yossef Mendelssohn <ymendel@...> 2012/01/21

On Jan 21, 2012 9:34 AM, "Gary Wright" <gwtmp01@mac.com> wrote:

[#392471] Re: Microrant on Ruy's Math Skills — Su Zhang <su.comp.lang.ruby@...> 2012/01/21

On 1/21/2012 12:08 PM, Yossef Mendelssohn wrote:

[#392499] Re: Microrant on Ruy's Math Skills — Intransition <transfire@...> 2012/01/22

So they can drop a billion transistors on a chip, have implemented 3D

[#392547] Re: Microrant on Ruy's Math Skills — Robert Klemme <shortcutter@...> 2012/01/23

On Sun, Jan 22, 2012 at 3:03 AM, Intransition <transfire@gmail.com> wrote:

[#392550] Re: Microrant on Ruy's Math Skills — Peter Vandenabeele <peter@...> 2012/01/23

On Mon, Jan 23, 2012 at 9:29 AM, Robert Klemme

[#392579] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Mon, Jan 23, 2012 at 07:33:20PM +0900, Peter Vandenabeele wrote:

[#392581] Re: Microrant on Ruy's Math Skills — Steve Klabnik <steve@...> 2012/01/23

> Even that and the '1.1'.to_dec option mentioned elsewhere seem pretty

[#392585] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Tue, Jan 24, 2012 at 03:14:27AM +0900, Steve Klabnik wrote:

[#392587] Re: Microrant on Ruy's Math Skills — Steve Klabnik <steve@...> 2012/01/23

No, it's not a terminology difference. That's why it won't work. You

[#392590] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Tue, Jan 24, 2012 at 05:45:18AM +0900, Steve Klabnik wrote:

[#392591] Re: Microrant on Ruy's Math Skills — Ryan Davis <ryand-ruby@...> 2012/01/23

[#392618] Re: Microrant on Ruy's Math Skills — Alex Chaffee <alexch@...> 2012/01/24

"Standard is better than better." -Anon.

[#392643] Re: Microrant on Ruy's Math Skills — Gavin Sinclair <gsinclair@...> 2012/01/25

On Wed, Jan 25, 2012 at 6:05 AM, Alex Chaffee <alexch@gmail.com> wrote:

[#392673] Re: Microrant on Ruy's Math Skills — Intransition <transfire@...> 2012/01/25

I have tried this, but recently discovered the same issues arise.

[#392743] Re: Microrant on Ruy's Math Skills — Garthy D <garthy_lmkltybr@...> 2012/01/27

[#392745] Re: Microrant on Ruy's Math Skills — Josh Cheek <josh.cheek@...> 2012/01/27

On Thu, Jan 26, 2012 at 6:05 PM, Garthy D <

[#392766] Re: Microrant on Ruy's Math Skills — Adam Prescott <adam@...> 2012/01/27

On Fri, Jan 27, 2012 at 03:05, Josh Cheek <josh.cheek@gmail.com> wrote:

[#392776] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/27

On Fri, Jan 27, 2012 at 11:02:52PM +0900, Adam Prescott wrote:

[#392781] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/27

[#392805] Re: Microrant on Ruy's Math Skills — "Jon Lambert" <jlambert@...> 2012/01/29

On Jan 27, 2012, at 3:26 PM, Gary Wright wrote:

[#392831] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/30

[#392835] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/30

On Mon, Jan 30, 2012 at 10:03:04AM +0900, Gary Wright wrote:

[#392837] Re: Microrant on Ruy's Math Skills — Robert Klemme <shortcutter@...> 2012/01/30

On Mon, Jan 30, 2012 at 6:56 AM, Chad Perrin <code@apotheon.net> wrote:

[#392847] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/30

On Mon, Jan 30, 2012 at 05:22:47PM +0900, Robert Klemme wrote:

[#392511] Building desktop application using Ruby and any GUI Framework — Rubyist Rohit <passionate_programmer@...>

I want to write a small desktop application on Ruby. I want the

12 messages 2012/01/22

[#392598] Web Application from Scratch - like PHP — "Gaurav C." <chande.gaurav@...>

Hi,

17 messages 2012/01/24

[#392635] A little assistance please :) — Paet Worlds II <paetilium@...>

So I'm still quite new to Ruby and so far I love it's simplicity, but I

21 messages 2012/01/25
[#392636] Re: A little assistance please :) — Hilco Wijbenga <hilco.wijbenga@...> 2012/01/25

On 24 January 2012 17:14, Paet Worlds II <paetilium@live.com> wrote:

[#392637] Re: A little assistance please :) — Paet Worlds II <paetilium@...> 2012/01/25

Hilco Wijbenga wrote in post #1042399:

[#392641] Re: A little assistance please :) — Chad Perrin <code@...> 2012/01/25

On Wed, Jan 25, 2012 at 10:41:10AM +0900, Paet Worlds II wrote:

[#392672] Re: A little assistance please :) — Dave Aronson <rubytalk2dave@...> 2012/01/25

On Tue, Jan 24, 2012 at 23:32, Chad Perrin <code@apotheon.net> wrote:

[#392711] Re: A little assistance please :) — Chad Perrin <code@...> 2012/01/26

On Thu, Jan 26, 2012 at 03:43:59AM +0900, Dave Aronson wrote:

[#392818] Help please Undefined Method error — "andres d." <andres.1996.1@...>

Hi and thank you for reading this

12 messages 2012/01/29

[#392867] Multiple assignment in conditional — Gavin Sinclair <gsinclair@...>

I find this a strange Ruby error.

28 messages 2012/01/31
[#392868] Re: Multiple assignment in conditional — Josh Cheek <josh.cheek@...> 2012/01/31

On Tue, Jan 31, 2012 at 12:46 AM, Gavin Sinclair <gsinclair@gmail.com>wrote:

[#392944] Re: Multiple assignment in conditional — Gavin Sinclair <gsinclair@...> 2012/02/01

On Tue, Jan 31, 2012 at 6:22 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

[#392914] Re: Multiple assignment in conditional — Robert Klemme <shortcutter@...> 2012/01/31

On Tue, Jan 31, 2012 at 7:46 AM, Gavin Sinclair <gsinclair@gmail.com> wrote=

[#392917] PHP vs Ruby is it worth it? — Samuel Mensah <sasogeek@...>

Hi, I've been searching around for what the best language there is out

14 messages 2012/01/31

Re: Microrant on Ruy's Math Skills

From: Chad Perrin <code@...>
Date: 2012-01-27 20:52:23 UTC
List: ruby-talk #392782
On Sat, Jan 28, 2012 at 05:26:01AM +0900, Gary Wright wrote:
> On Jan 27, 2012, at 1:39 PM, Chad Perrin wrote:
> >
> > If you think of 1.1 as notation for a much more complex floating point
> > number, which is not the same as 1.1, that doesn't mean the abstraction
> > doesn't exist: it means you're unravelling it in your head to accommodate
> > the implementation's divergence from decimal 1.1.  In essence, the fact
> > it looks like 1.1 (but isn't) is the abstraction itself.
> 
> I think you are right about the leakiness of the floating point internal
> representation vs. external representation.
> 
> What I do find surprising when this discussion pops up (and it pops up
> with frightening regularity on ruby-talk) is that there are so many
> programmers who are unaware of the issues surrounding floating point
> representation.  This is not a Ruby issue but is actually a very common
> situation across a huge number of programming languages.
> 
> I found <http://rosettacode.org/wiki/Literals/Floating_point> to be
> an interesting laundry list of floating point literals. Almost every
> language defaults to having decimal floating point literals.
> A couple variations:
> 
> -- ISO C99 has hexadecimal floats: 0x1.fp3  = ( (1 + 15/16) * 2^3 )
> -- PL1 has binary floats: 111.0101e7b = (111.0101 * 2^7) = (7.3125 * 2^7)
> 
> I'm sure there are still some gotcha's regarding the mapping of abstract
> hex or decimal floats into the reality of the underlying hardware
> representation.

There's always the matter of limited room for precision in memory.  The
question of what happens when you reach that limit then comes up (usually
resulting in truncation, I think).


> 
> A more common approach (but not universal) is support for fixed point
> decimal literals and arithmetic. For example, most SQL implementations
> have support for fixed point arithmetic and literals.
> 
> <http://en.wikipedia.org/wiki/Fixed-point_arithmetic#Implementations>

I'd be happy with a fixed point implementation that offers very
intuitive -- or at least succinct and expressive -- syntax.


> >
> > This is where the special comparison method
> > proposals make sense: if such a method can guarantee that it is accurate
> > up to a known, "standard" precision, it's easy to think "Floats are as
> > they appear up to precision X," and just move on with your life, because
> > it works; without them, we only have something like == as currently
> > implemented for Float, whose primary value (as far as I can see) is to
> > provide a tool for learning about the implementation of the Float type,
> > because there's no simple rule of thumb for "accuracy up to precision X".
> 
> Why the ill-will towards Float#==?  Despite the problems associated with
> floating point representation and computation I don't see how discarding
> or modifying the semantics of #== would help the situation.

It's not ill will toward Float#== (at least for me).  It's disappointment
that, when I want to do something that fits the common case, I have to
implement it myself or use something like BigDecimal (which is far from
succinct in how it is used).


> >
> > what we have is the need to implement a
> > comparison method of our own individual choosing every single time we
> > want to be able to rely on accuracy of decimal math.
> 
> Only if you insist on using floating point values as a substitute for
> real decimal values (e.g. BigDecimal or something similar). Even then
> you need to be aware of how the results of arithmetic computations
> are going to be stored.  What 'value' do you expect for this expression:
> 
> 	BigDecimal("1.0") / BigDecimal("3.0")
> 
> It can't be an exact representation of the arithmetic result within
> the context of BigDecimal.  So you can switch to Rational:
> 
> 	Rational(1) / Rational(3)

These things are much more cumbersome to use than something I might
implement myself as a comparison method for Float -- so for any cases
where the usage is nontrivial (that is, where the very verbose syntax
needs to be employed over and over and over again), they might actually
not be the best option.  The point I was make was that the situation is
far from ideal, or even just mildly inconvenient a lot of the time.


> 
> Fantastic.  You've now got 1/3 stored internally.  What are you going
> to do when you want to throw that up on a web page or export it to a
> CSV file to be imported into a spreadsheet?  Probably convert it to
> a decimal floating point value but how exact do you want to get:
> 
> "%.60f" % (Rational(1)/Rational(3)).to_f
> => "0.333333333333333314829616256247390992939472198486328125000000"
> 
> Hmm. That introduces the decimal/binary problem.  How about:
> 
> >> (Rational(1)/Rational(3)).to_d(20).to_s('f') #=> "0.33333333333333333333"
> >> (Rational(1)/Rational(3)).to_d(30).to_s('f') #=> "0.333333333333333333333333333333"
> >> (Rational(1)/Rational(3)).to_d(70).to_s('f') #=> "0.3333333333333333333333333333333333333333333333333333333333333333333333"

Can you not see how ugly and cumbersome that is?


> 
> Of course what happens when you want to compute something like square root
> with rational values?  The result can't be exactly represented as a rational
> so you are back to the representation problem:
> 
> >> Rational(2).to_d(20).sqrt(20).to_r
> => (5656854249492380195206754896838792313/4000000000000000000000000000000000000)
> 
> No magic bullets. You still have to think about what format/representation
> is appropriate for your use.

Thank you for making my point: it would be nice to have a "standard" way
of doing things where, for the majority of cases, the results are
unsurprising *without* having to consciously account for intermittently
weird results.


>  >
> > Note that a decimal "up to precision X" is also an abstraction, but at
> > least it is an abstraction that would leak far, far less often, because
> > of the case of things like rounding.  I think the only way around that,
> > given the fact there are limits to how much RAM we have available, would
> > be to store rational literals (e.g. 2/3 instead of 0.666 . . .) somewhere
> > to provide a back-up method for rounding numbers.
> 
> Sure, you can use Ruby's Rational class if you want like shown above. Still
> doesn't get rid of the problems.

Are you even reading what I'm writing?  My point is "Let's see if we can
minimize the problem for the common case, with very clear boundaries on
when things go astray, as an alternative to the way it is currently done
by default -- which is to have the abstraction leak past boundaries that
we can only really predict by doing binary math."


> >
> > Someone tell me if I'm mistaken about some part of that -- preferably
> > without invective.
> 
> I don't think you are mistaken, but I also don't have a handle on what you
> think should happen or what is missing in Ruby.  The issues surrounding numeric
> computation (representation, overflow, accuracy, precision, conversion) are
> inherent in the problem domain.  Programmers need to be aware of them and
> use appropriate tools as necessary: Fixnum, Bignum, Float, BigDecimal,
> Rational, Complex, etc.

Look back at the beginning of what I said.  It boils down to this:

One or two alternate comparison methods for Float that have known, clear,
easily reasoned boundaries between where it works and where it does not,
should be pretty easy to include in the Float implementation -- and to
make succinct so we don't have to deal with fugliness in our code at
every turn when dealing with decimal numbers.

-- 
Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]

In This Thread