Hacker News new | ask | show | jobs
by eljost 2983 days ago
Interesting article but just skimming through it some things stand out immediately: 1.) The first snippet isn't even valid python code as floats don't have a shape attribute.

  s = 0. 
  n = s.shape
2.) The inline latex math isn't rendered properly.
3 comments

The first snippet also doesn't balance the parenthesis

    s += 100. * x[i + 1] - x[i] ** 2.) ** 2. + (1 - x[i]) ** 2
It should be the shape of x (actually, the zero'th element of the shape), but this is also a tad odd because this would assume that x is a numpy array, which isn't introduced until after this 'naive pure python' code block (i.e., before numpy is even introduced in the text).
I believe the input should be a numpy array of floats which has a shape attribute
(shameful author here)

One should read

  def rosen_explicit_loop(x): 
    s = 0. 
    n = x.shape[0] 
    for i in range(0, n - 1): 
      s += 100. * (x[i + 1] - x[i] ** 2.) ** 2. + (1 - x[i]) ** 2 
    return s
(edited)
...

    n = x.shape[0]
Or just len(x). This works perfectly well on numpy arrays and has the bonus that it works on regular lists/tuples of floats, so the first snippet doesn't rely on numpy.