X-Git-Url: https://git.llucax.com/z.facultad/75.29/dale.git/blobdiff_plain/6b51b97d7cab99f7809deee2601ebba53f24e334..71d12266635fa7e878d0282dcb27daec542228bd:/src/number.h diff --git a/src/number.h b/src/number.h index 5b0b71e..99eec8c 100644 --- a/src/number.h +++ b/src/number.h @@ -229,19 +229,17 @@ std::ostream& operator<< (std::ostream& os, const number< N, E >& n) 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 > @@ -358,7 +356,7 @@ number < N, E > naif(const number< N, E > &u, const number< N, E > &v) */ E tmp; tmp = static_cast< E >(u.chunk[0]) * static_cast< E >(v.chunk[0]); - num_type tnum = num_type(static_cast< N* >(&tmp), 2, sign); + 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;