http://d.puremagic.com/issues/show_bug.cgi?id=3661

## Advertising

--- Comment #3 from Witold Baryluk <bary...@smp.if.uj.edu.pl> 2010-01-31
09:58:12 PST ---
(In reply to comment #1)
> (In reply to comment #0)
> > This is agains 2.037.
> > btw. also this in opPow doesnt work
> >
> > float pi = 3.14;
> > float x = pi ^^ 2.0;
> >
> > one needs explicitly write 2.0f (this is because std.math.pow have only one
> > F
> > template parameter, and compiler doesn't know which to infer).
>
> This works in 2.038. Please ignore opPow in 2.037, it wasn't intended to be
> complete. Perform all tests on 2.038.
Yes, it works correctly. Also when exponent is int or uint. Very good.
> As for the other ones -- opPow for array operations, where the exponent is not
> a compile-time constant, will probably never be supported.
> We could manage things like z[] = x^^2 + y^^2.
Definitly this would be move in good direction, especially if such expressions
(with positive integer exponent) will be rewriten by compiler in optimal way
(ie. in case of x^^4 only two multiplications per term than 3).
But also float exponents are needed, thinks like z[] = x^^-2.5, are quite
common in many fields.
There are also few computational methods where exponents (floats) are variable
in time. They are especially popular in case of optimalisation, adaptative
ordinary differential equation solvers, and many others. Exponents are there
slowly varied from one end to another (exponents are uniformly varied over
whole array):
e = 3.0 - (1.0*i)/N;
z[] = x[]^^e
There are also some methods where it is completly variable:
z[] = x[]^^e[];
I don't know many methods which use them personally, but it doesn't mean that
they shouldn't be provided. Actually any formula which have exponent (ie.
Stirling's approximation) can be used to compute multiple values in parallel,
so it should be possible to "vectorize" them easly.
Having implementation with float expontents I don't see big obstacles to
implement also variable exponents. Actually any limitation in compiler of this
form can also limit people in using so expressive things like array operations.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------