// Devuelve referencia a 'átomo' i del chunk (no debería ser necesario
// si la multiplicación es un método de este objeto).
- native_type& operator[] (size_type i) {
+ native_type& operator[] (size_type i)
+ {
return chunk[i];
}
friend std::ostream& operator<< (std::ostream& os, const number< NN, EE>& n);
// Atributos
+ //private:
chunk_type chunk;
sign_type sign;
template < typename N, typename E >
number< N, E >& number< N, E >::operator*= (const number< N, E >& n)
{
- number < N, E > r_op = n;
- normalize_length(n);
- n.normalize_length(*this);
- *this = divide_n_conquer(*this, n);
+ //number < N, E > r_op = n;
+ //normalize_length(n);
+ //n.normalize_length(*this);
+ *this = naif(*this, n);
return *this;
}
template < typename N, typename E >
number< N, E > operator* (const number< N, E >& n1, const number< N, E >& n2)
{
- number< N, E > tmp = n1;
- tmp *= n2;
- return tmp;
+ return naif(n1, n2);
}
template < typename N, typename E >
* buffer. Si, es feo.
*/
E tmp;
- tmp = (E) u.chunk[0] * (E) v.chunk[0];
- num_type tnum = num_type((N *) &tmp, 2, sign);
+ tmp = static_cast< E >(u.chunk[0]) * static_cast< E >(v.chunk[0]);
+ num_type tnum = num_type(reinterpret_cast< N* >(&tmp), 2, sign);
//std::cout << "T:" << tnum << " " << tmp << "\n";
//printf("1: %lu %lu %llu\n", u.chunk[0], v.chunk[0], tmp);
return tnum;