CM2 Math1 /release 4.8.0

by | Dec 28, 2017

  • 4.8.0
  • December, 2017
  • CM2 MeshTools® 4.8.0 and CM2 FEM® Engines 4.3.0
  • Major release of the CM2 Math1 library
  • Due to changes in the API, client applications must be recompiled against the new headers


  • Lib names suffix is _48 for this series.
  • New Visual Studio 2017 builds (Win32, Win64, MD, MT).
  • GCC 5 and GCC 6 builds (Linux86, Linux64).
  • Visual Studio < 2010 and GCC < 4.8 are deprecated and will be no longer supported in future versions.
    In the long term, C++98 will be deprecated. C++11-compliant compilers (for instance Visual Studio >= 2015) will be required to compile the source code of CM2 but also to compile against its API.
  • Windows XP is deprecated and will be no longer supported in future versions.
  • macOS < 10.9 is deprecated and will be no longer supported in future versions (minimum deployment target will raise to 10.9 Mavericks).

/new features

  • New segment_iterators and const_segment_iterators for matrices (dynamic and fixed-size):
    operator*(), operator!= and postfix increment/decrement operators added.
    This makes these column iterators compatible with STL algorithms and enables writing for instance:

    DoubleMat M(3, 12, 0.);
    std::for_each(M.seg_begin(), M.seg_end(), [](DoubleMat::segment_type v){ vecscal::copy(v.index(), v); });
    std::for_each(M.seg_begin(), M.seg_end(), [](DoubleMat::segment_type v){ vecio::write(std::cout, v); });


  • matvec::mult and matvec::transpose_mult now parallelized.
  • matvec::Vt_A_V (formerly matvec::Bt_A_B) now parallelized and optimized for sparse matrices.


  • matvec::transpose_mult for matrices with separate diagonal storage.

/breaking changes

  • vector_fixed, matrix_fixed, symmetric_fixed:
    constructors with a single initializing value are now qualified explicit.
  • matvec::Bt_A_B renamed matvec::Vt_A_V.
  • matmat::diag_mult parameter cache_size removed.
  • Default alignment for dynamic arrays is now 8 bytes (instead of 32).

Computing Objects SARL - 25 rue du Maréchal Foch, 78000 Versailles, France.

Limited Liability Company with a capital of 100 000 €.

Registered at Versailles RCS under SIRET number 422 791 038 00033 - EU VAT registration FR59422791038.