Talk:Roots of a quadratic function

From Rosetta Code
(Redirected from Talk:Quadratic Equation)

obscure algorithm ?

I don't like being pushed to use obscure (but more stable) algorithm over algorithm everyone instantly recognises. Said that, I could live with it. But I want to point that:

  • - link for "What Every Scientist Should Know About Floating-Point Arithmetic" is dead;
  • - one can google for it, but formatting is different, so how to find what "page 9" actually is?
  • - quoted in the text, "Suggested by Middlebrook (D-OA), a better numerical method: to define two parameters q=sqr(ac)/b (...)" naturally fails over if a>0 and c<0.

"do it better" ?

I clearly see come some of programs (Ada, and some marked as "translation of Ada") use (b^2-4ac)/2*a, there correct way is (b^2-4ac)/(2*a). I wonder why noone spotted this earlier!

Forsythe, Michael Malcolm and Cleve Moler suggest to try it on a=1, b=-105, c=1, but Ada sample code uses -10e5, which is indeed -1e6 (-106), if I was not wrong since I knew the "e" notation... --ShinTakezou 21:24, 22 June 2009 (UTC)

Basically all the test cases had a = 1, :-) So I added some test cases especially where a ≠ 1, hence 2*a ≠ 2/a.... NevilleDNZ 14:28, 16 September 2010 (UTC)

In the example above (2nd line) (-106) isn't the same as -1e6. The former is -1,000,000 and the latter is +1,000,000. --Gerard Schildberger 18:11, 25 June 2011 (UTC)
Other way round surely: will always be positive when n is even. --Laurie Alvey 10:45, 19 May 2015 (UTC)
Nope. -1e6 = -1000000. And -10^6=-1000000 as well, except in some insane languages. Eoraptor (talk) 17:35, 13 August 2020 (UTC)
It all depends if the infix (negative) operator has more or less priority then the exponent operator.     -- Gerard Schildberger (talk) 09:14, 13 November 2020 (UTC)
See:   Exponentiation with infix operators in (or operating on) the base.

J example

Dumontier, hope you don't mind me replacing your example code. I understood that you were trying to illustrate the generality of p. however your example used a quadratic, that had already been shown above. If you were trying to illustrate some other point I apologise! --Tikkanz 23:14, 14 October 2009 (UTC)


C examples

I just provided a (more) correct C version, and am now tempted to remove other C examples, because the task specifically mentioned the shortcoming of the naive method, yet they went on that route anyway. Opinions? --Ledrug 09:08, 25 June 2011 (UTC)

Wait, what? The existing C and C++ code gives 10^20 and 10^-20 as roots to equation x^2 - 10^-20 x + 1 == 0? What the? --Ledrug 09:22, 25 June 2011 (UTC)

Eh never mind that, and sorry about making a mess on the incorrect tags--I need sleep... --Ledrug 09:40, 25 June 2011 (UTC)


Clojure example

Why are there 4 functions for clojure?

What I mean is that all of that can be simplified into: <lang clojure>(defn quadratic

 "Compute the roots of a quadratic in the form ax^2 + bx + c = 0
  Returns any of nil, a float, or a vector."
 [a b c]
 (let [sq-d (Math/sqrt (- (* b b) (* 4 a c)))
       f    #(/ (% b sq-d) (* 2 a))]
   (cond
      (neg? sq-d)  nil
      (zero? sq-d) (f +)
      (pos? sq-d)  [(f +) (f -)]
      :else nil))) ; maybe our number ended up as NaN</lang>

I find it ridiculous to have that much verbiage on 1 example.