# Newmat C++ matrix library

**URL:** <https://discourse.slicer.org/t/newmat-c-matrix-library/8532>\
**Category:** Support\
**Created:** [September 23, 2019, 7:43am UTC](https://discourse.slicer.org/t/newmat-c-matrix-library/8532 "2019-09-23T07:43:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![danial](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/danial/32/4888_2.png) [@danial](https://discourse.slicer.org/u/danial)\
**Post date:** [September 23, 2019, 7:43am UTC](https://discourse.slicer.org/t/newmat-c-matrix-library/8532/1 "2019-09-23T07:43:21Z")

</div>

Operating system: MacOS-10.14  
Slicer version: 4.10.2

Hello,

I’m trying to use newmat11 ([Newmat C++ matrix library](http://www.robertnz.net/nm_intro.htm)) library in my module, but a syntax error is found 🙂

> controlw.h:49:4: error: unknown type name ‘FREE\_CHECK’

```
/// \ingroup newmat
///@{

/// \file controlw.h
/// Control word class.
/// Manipulate bits used for setting options.

#ifndef CONTROL_WORD_LIB
#define CONTROL_WORD_LIB 0

/// Organise an int as a series of bits to set options.
/// \internal
class ControlWord
{
protected:
   int cw; // the control word
public:
   ControlWord() : cw(0) {} // do nothing
   ControlWord(int i) : cw(i) {} // load an integer

      // select specific bits (for testing at least one set)
   ControlWord operator*(ControlWord i) const
      { return ControlWord(cw & i.cw); }
   void operator*=(ControlWord i) { cw &= i.cw; }

      // set bits
   ControlWord operator+(ControlWord i) const
      { return ControlWord(cw | i.cw); }
   void operator+=(ControlWord i) { cw |= i.cw; }

      // reset bits
   ControlWord operator-(ControlWord i) const
      { return ControlWord(cw - (cw & i.cw)); }
   void operator-=(ControlWord i) { cw -= (cw & i.cw); }

      // check if all of selected bits set or reset
   bool operator>=(ControlWord i) const { return (cw & i.cw) == i.cw; }
   bool operator<=(ControlWord i) const { return (cw & i.cw) == cw; }

      // flip selected bits
   ControlWord operator^(ControlWord i) const
      { return ControlWord(cw ^ i.cw); }
   ControlWord operator~() const { return ControlWord(~cw); }

      // convert to integer
   int operator+() const { return cw; }
   int operator!() const { return cw==0; }
   FREE_CHECK(ControlWord)
};

#endif

///@}

```

Any ideas on what’s going on and how to fix it?

Thanks for your help.

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [September 23, 2019, 11:17am UTC](https://discourse.slicer.org/t/newmat-c-matrix-library/8532/2 "2019-09-23T11:17:22Z")

</div>

I don’t know much about the newmat library, but from a quick look at the homepage it looks pretty old and could be hard to support. Can’t you do what you need with numpy or [vnl](https://vxl.github.io/) in itk? Those are already compiled on all platforms.

---

<div class="post-metadata">

**Author:** ![danial](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/danial/32/4888_2.png) [@danial](https://discourse.slicer.org/u/danial)\
**Post date:** [September 25, 2019, 4:48am UTC](https://discourse.slicer.org/t/newmat-c-matrix-library/8532/3 "2019-09-25T04:48:49Z")

</div>

Thank you for your answer. I will try replace it with bumpy or vnl.
