Matrix Matrix::orthMatInv() const { Matrix mT = this->transpose(); Matrix temp = mT * (*this); Matrix scalars(temp.rows(), temp.cols()); for (size_t i = 0; i < temp.rows(); ++i) scalars(i,i) = 1.0/temp(i,i); return scalars * mT; }
int main() { int sa[2] = {9, 7}; std::vector<int> scalars(sa, sa + sizeof(sa)/sizeof(sa[0])); numstring in[2] = { "75415123591065981965009485944457939790477550112631613307953910218357656560185790391063809273661832958588846804708867683435301180538880000000000000000000000", // NOLINT "848420140399492297106356716875151822642872438767105649714481489956523636302090141899467854328695620784124526552974761438647138281062400000000000000000000000" // NOLINT }; std::vector< numstring > numeric_input(in, in + sizeof(in)/sizeof(in[0])); numstring out[2] = { "678736112319593837685085373500121458114297951013684519771585191965218909041672113519574283462956496627299621242379809150917710624849920000000000000000000000", // NOLINT "5938940982796446079744497018126062758500107071369739548001370429695665454114630993296274980300869345488871685870823330070529967967436800000000000000000000000" // NOLINT }; const std::vector< numstring > numeric_output(out, out + sizeof(out)/sizeof(out[0])); call_mul_digit_string(0, scalars, numeric_input, numeric_output); call_mul_digit_string(1, scalars, numeric_input, numeric_output); return(0); }
sge::projectile::shape::detail::scalar_container sge::projectile::impl::shape::triangle_scalars( fcppt::log::object &_log, sge::projectile::shape::triangle_sequence const &_triangles ) { sge::projectile::shape::detail::scalar_container scalars( _triangles.size() * 8u * 3u * 3u ); FCPPT_LOG_DEBUG( _log, fcppt::log::_ << FCPPT_TEXT("constructing triangle mesh with ") << _triangles.size() << FCPPT_TEXT(" triangles")); sge::projectile::shape::detail::scalar_container::iterator current_scalar = scalars.begin(); // TODO: Find a better way to express this for( sge::projectile::triangle const &triangle : _triangles ) { typedef std::array< btScalar, 2 > extrusion_array; extrusion_array const extrusion_depth{{ static_cast<btScalar>(-sge::projectile::impl::object_extrusion_depth()/2), static_cast<btScalar>(sge::projectile::impl::object_extrusion_depth()/2) }}; for( btScalar const current_z : extrusion_depth ) { FCPPT_LOG_VERBOSE( _log, fcppt::log::_ << FCPPT_TEXT("triangle begin")); for( auto const ¤t_triangle_point : triangle ) { FCPPT_LOG_VERBOSE( _log, fcppt::log::_ << FCPPT_TEXT("adding point ") << current_triangle_point[0] << FCPPT_TEXT(',') << current_triangle_point[1] << FCPPT_TEXT(',') << current_z); *current_scalar++ = current_triangle_point[0]; *current_scalar++ = current_triangle_point[1]; *current_scalar++ = current_z; } FCPPT_LOG_VERBOSE( _log, fcppt::log::_ << FCPPT_TEXT("triangle end")); } } return scalars; }