Completly static Laurent's polynomials

matovitch camille.brugel at laposte.net
Mon Jan 27 05:52:02 PST 2014


On Monday, 27 January 2014 at 13:18:06 UTC, Meta wrote:
> On Monday, 27 January 2014 at 11:15:36 UTC, matovitch wrote:
>> Hello !
>>
>> Yesterday, I started a project to implement completly static 
>> Laurent's polynomials (i.e. polynomials formed by z^n and z^-n 
>> monomials).
>> I thought I could represent these polynomials with an 
>> immutable range of Tuple!(numeric_type, int).
>>
>> I've tried (and failed) to implement the addition here :
>>
>>    https://github.com/matovitch/StaticLaurent
>>
>> Is my goal achivable ? How would you do it ?
>>
>> ps : I am a *total beginner* waiting for any advice(s).
>
> Immutable and ranges do not mix very well. Can you include some 
> information on what the exact problem is?

I noticed ! ^^

filter try to perform a memcpy :

/usr/include/dmd/phobos/std/conv.d(3993): Error: memcpy cannot be 
interpreted at compile time, because it has no available source 
code
/usr/include/dmd/phobos/std/range.d(4227):        called from 
here: emplace(addr, front(this._ranges_field_0))
/usr/include/dmd/phobos/std/algorithm.d(3171):        called from 
here: this._current.front()
/usr/include/dmd/phobos/std/algorithm.d(1381):        called from 
here: this._input.front()
/usr/include/dmd/phobos/std/algorithm.d(1381):        called from 
here: __lambda3(this._input.front())
/usr/include/dmd/phobos/std/algorithm.d(1369):        called from 
here: (FilterResult!(__lambda3, Result) __ctmp1478 = 
FilterResult(Result);
  , __ctmp1478).this(rs)
laurent.d(53):        called from here: 
filter(myCartesianProduct([Tuple(1.00000, 0), Tuple(1.00000, 1)], 
[Tuple(2.00000, 0), Tuple(0.5, 1)]))
laurent.d(51):        called from here: 
map(filter(myCartesianProduct([Tuple(1.00000, 0), Tuple(1.00000, 
1)], [Tuple(2.00000, 0), Tuple(0.5, 1)])))
laurent_test.d(19): Error: template instance 
laurent_test.main.add!(p1, p2) error instantiating


More information about the Digitalmars-d-learn mailing list