Mathematica 7 compares to other languages

the.brown.dragon.blog at gmail.com the.brown.dragon.blog at gmail.com
Thu Dec 11 16:24:00 CET 2008


On Dec 11, 7:50 pm, the.brown.dragon.b... at gmail.com wrote:
> On Dec 11, 4:53 pm, "William James" <w_a_x_... at yahoo.com> wrote:
>
>
>
> > William James wrote:
> > > John W Kennedy wrote:
>
> > > > Xah Lee wrote:
> > > > > In lisp, python, perl, etc, you'll have 10 or so lines. In C or
> > > > > Java, you'll have 50 or hundreds lines.
>
> > > > Java:
>
> > > > static float[] normal(final float[] x) {
> > > >    float sum = 0.0f;
> > > >    for (int i = 0; i < x.length; ++i) sum += x[i] * x[i];
> > > >    final float divisor = (float) Math.sqrt(sum);
> > > >    float[] a = new float[x.length];
> > > >    for (int i = 0; i < x.length; ++i) a[i] = x[i]/divisor;
> > > >    return a;
> > > > }
>
> > > "We don't need no stinkin' loops!"
>
> > > SpiderMonkey Javascript:
>
> > > function normal( ary )
> > > { div=Math.sqrt(ary.map(function(x) x*x).reduce(function(a,b) a+b))
> > >   return ary.map(function(x) x/div)
> > > }
>
> > The variable "div" shouldn't be global.
>
> > function normal( ary )
> > { var div = Math.sqrt(
> >     ary.map(function(x) x*x).reduce(function(a,b) a+b) )
> >   return ary.map(function(x) x/div)
>
> > }
>
> Chicken Scheme:
>
> (require 'srfi-1)
> (define (norm vec)
>   (map (cute / <> (sqrt (reduce + 0 (map (cute expt <> 2) vec))))
> vec))
>
> Cute huh? ;-)

Haskell looks the best though:

norm v = map (/ (sqrt (sum (map (^2) v)))) v



More information about the Python-list mailing list