text: #pragma line 1 "matrixmul.cpp"
  #pragma line 1 "matrixmul.cpp" 1
  #pragma line 1 "<built-in>" 1
  #pragma line 1 "<built-in>" 3
  #pragma line 152 "<built-in>" 3
  #pragma line 1 "<command line>" 1
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/common/technology/autopilot\\etc/autopilot_ssdm_op.h" 1
  /* autopilot_ssdm_op.h*/
  /*
  #-  (c) Copyright 2011-2015 Xilinx, Inc. All rights reserved.
  #-
  #-  This file contains confidential and proprietary information
  #-  of Xilinx, Inc. and is protected under U.S. and
  #-  international copyright and other intellectual property
  #-  laws.
  #-
  #-  DISCLAIMER
  #-  This disclaimer is not a license and does not grant any
  #-  rights to the materials distributed herewith. Except as
  #-  otherwise provided in a valid license issued to you by
  #-  Xilinx, and to the maximum extent permitted by applicable
  #-  law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
  #-  WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
  #-  AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
  #-  BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
  #-  INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
  #-  (2) Xilinx shall not be liable (whether in contract or tort,
  #-  including negligence, or under any other theory of
  #-  liability) for any loss or damage of any kind or nature
  #-  related to, arising under or in connection with these
  #-  materials, including for any direct, or any indirect,
  #-  special, incidental, or consequential loss or damage
  #-  (including loss of data, profits, goodwill, or any type of
  #-  loss or damage suffered as a result of any action brought
  #-  by a third party) even if such damage or loss was
  #-  reasonably foreseeable or Xilinx had been advised of the
  #-  possibility of the same.
  #-
  #-  CRITICAL APPLICATIONS
  #-  Xilinx products are not designed or intended to be fail-
  #-  safe, or for use in any application requiring fail-safe
  #-  performance, such as life-support or safety devices or
  #-  systems, Class III medical devices, nuclear facilities,
  #-  applications related to the deployment of airbags, or any
  #-  other applications that could lead to death, personal
  #-  injury, or severe property or environmental damage
  #-  (individually and collectively, "Critical
  #-  Applications"). Customer assumes the sole risk and
  #-  liability of any use of Xilinx products in Critical
  #-  Applications, subject only to applicable laws and
  #-  regulations governing limitations on product liability.
  #-
  #-  THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
  #-  PART OF THIS FILE AT ALL TIMES. 
  #- ************************************************************************
  #pragma empty_line
   *
   * $Id$
   */
  #pragma line 145 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/common/technology/autopilot\\etc/autopilot_ssdm_op.h"
  /*#define AP_SPEC_ATTR __attribute__ ((pure))*/
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  extern "C" {
  #pragma empty_line
      /****** SSDM Intrinsics: OPERATIONS ***/
      // Interface operations
  #pragma empty_line
      //typedef unsigned int __attribute__ ((bitwidth(1))) _uint1_;
      typedef bool _uint1_;
  #pragma empty_line
      void _ssdm_op_IfRead(...) __attribute__ ((nothrow));
      void _ssdm_op_IfWrite(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_op_IfNbRead(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_op_IfNbWrite(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_op_IfCanRead(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_op_IfCanWrite(...) __attribute__ ((nothrow));
  #pragma empty_line
      // Stream Intrinsics
      void _ssdm_StreamRead(...) __attribute__ ((nothrow));
      void _ssdm_StreamWrite(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_StreamNbRead(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_StreamNbWrite(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_StreamCanRead(...) __attribute__ ((nothrow));
      _uint1_ _ssdm_StreamCanWrite(...) __attribute__ ((nothrow));
      unsigned _ssdm_StreamSize(...) __attribute__ ((nothrow));
  #pragma empty_line
      // Misc
      void _ssdm_op_MemShiftRead(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_Wait(...) __attribute__ ((nothrow));
      void _ssdm_op_Poll(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_Return(...) __attribute__ ((nothrow));
  #pragma empty_line
      /* SSDM Intrinsics: SPECIFICATIONS */
      void _ssdm_op_SpecSynModule(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecTopModule(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecProcessDecl(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecProcessDef(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecPort(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecConnection(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecChannel(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecSensitive(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecModuleInst(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecPortMap(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecReset(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecPlatform(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecClockDomain(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecPowerDomain(...) __attribute__ ((nothrow));
  #pragma empty_line
      int _ssdm_op_SpecRegionBegin(...) __attribute__ ((nothrow));
      int _ssdm_op_SpecRegionEnd(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecLoopName(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecLoopTripCount(...) __attribute__ ((nothrow));
  #pragma empty_line
      int _ssdm_op_SpecStateBegin(...) __attribute__ ((nothrow));
      int _ssdm_op_SpecStateEnd(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecInterface(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecPipeline(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecDataflowPipeline(...) __attribute__ ((nothrow));
  #pragma empty_line
  #pragma empty_line
      void _ssdm_op_SpecLatency(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecParallel(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecProtocol(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecOccurrence(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecResource(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecResourceLimit(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecCHCore(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecFUCore(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecIFCore(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecIPCore(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecKeepValue(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecMemCore(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecExt(...) __attribute__ ((nothrow));
      /*void* _ssdm_op_SpecProcess(...) SSDM_SPEC_ATTR;
      void* _ssdm_op_SpecEdge(...) SSDM_SPEC_ATTR; */
  #pragma empty_line
      /* Presynthesis directive functions */
      void _ssdm_SpecArrayDimSize(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_RegionBegin(...) __attribute__ ((nothrow));
      void _ssdm_RegionEnd(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_Unroll(...) __attribute__ ((nothrow));
      void _ssdm_UnrollRegion(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_InlineAll(...) __attribute__ ((nothrow));
      void _ssdm_InlineLoop(...) __attribute__ ((nothrow));
      void _ssdm_Inline(...) __attribute__ ((nothrow));
      void _ssdm_InlineSelf(...) __attribute__ ((nothrow));
      void _ssdm_InlineRegion(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecArrayMap(...) __attribute__ ((nothrow));
      void _ssdm_SpecArrayPartition(...) __attribute__ ((nothrow));
      void _ssdm_SpecArrayReshape(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecStream(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecExpr(...) __attribute__ ((nothrow));
      void _ssdm_SpecExprBalance(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecDependence(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecLoopMerge(...) __attribute__ ((nothrow));
      void _ssdm_SpecLoopFlatten(...) __attribute__ ((nothrow));
      void _ssdm_SpecLoopRewind(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_SpecFuncInstantiation(...) __attribute__ ((nothrow));
      void _ssdm_SpecFuncBuffer(...) __attribute__ ((nothrow));
      void _ssdm_SpecFuncExtract(...) __attribute__ ((nothrow));
      void _ssdm_SpecConstant(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_DataPack(...) __attribute__ ((nothrow));
      void _ssdm_SpecDataPack(...) __attribute__ ((nothrow));
  #pragma empty_line
      void _ssdm_op_SpecBitsMap(...) __attribute__ ((nothrow));
      void _ssdm_op_SpecLicense(...) __attribute__ ((nothrow));
  #pragma empty_line
  }
  #pragma line 404 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/common/technology/autopilot\\etc/autopilot_ssdm_op.h"
  /*#define _ssdm_op_WaitUntil(X) while (!(X)) _ssdm_op_Wait(1);
  #define _ssdm_op_Delayed(X) X */
  #pragma line 7 "<command line>" 2
  #pragma line 1 "<built-in>" 2
  #pragma line 1 "matrixmul.cpp" 2
  /*******************************************************************************
  Vendor: Xilinx 
  Associated Filename: matrixmul.cpp
  Purpose: Vivado HLS tutorial example 
  Device: All 
  Revision History: March 1, 2013 - initial release
  #pragma empty_line
  *******************************************************************************
  Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
  #pragma empty_line
  This file contains confidential and proprietary information of Xilinx, Inc. and 
  is protected under U.S. and international copyright and other intellectual 
  property laws.
  #pragma empty_line
  DISCLAIMER
  This disclaimer is not a license and does not grant any rights to the materials 
  distributed herewith. Except as otherwise provided in a valid license issued to 
  you by Xilinx, and to the maximum extent permitted by applicable law: 
  (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL FAULTS, AND XILINX 
  HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, 
  INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR 
  FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether 
  in contract or tort, including negligence, or under any other theory of 
  liability) for any loss or damage of any kind or nature related to, arising under 
  or in connection with these materials, including for any direct, or any indirect, 
  special, incidental, or consequential loss or damage (including loss of data, 
  profits, goodwill, or any type of loss or damage suffered as a result of any 
  action brought by a third party) even if such damage or loss was reasonably 
  foreseeable or Xilinx had been advised of the possibility of the same.
  #pragma empty_line
  CRITICAL APPLICATIONS
  Xilinx products are not designed or intended to be fail-safe, or for use in any 
  application requiring fail-safe performance, such as life-support or safety 
  devices or systems, Class III medical devices, nuclear facilities, applications 
  related to the deployment of airbags, or any other applications that could lead 
  to death, personal injury, or severe property or environmental damage 
  (individually and collectively, "Critical Applications"). Customer asresultes the 
  sole risk and liability of any use of Xilinx products in Critical Applications, 
  subject only to applicable laws and regulations governing limitations on product 
  liability. 
  #pragma empty_line
  THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE AT 
  ALL TIMES.
  #pragma empty_line
  *******************************************************************************/
  #pragma empty_line
  #pragma line 1 "./matrixmul.h" 1
  /*******************************************************************************
  Vendor: Xilinx 
  Associated Filename: matrixmul.h
  Purpose: Vivado HLS tutorial example 
  Device: All 
  Revision History: March 1, 2013 - initial release
  #pragma empty_line
  *******************************************************************************
  Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
  #pragma empty_line
  This file contains confidential and proprietary information of Xilinx, Inc. and 
  is protected under U.S. and international copyright and other intellectual 
  property laws.
  #pragma empty_line
  DISCLAIMER
  This disclaimer is not a license and does not grant any rights to the materials 
  distributed herewith. Except as otherwise provided in a valid license issued to 
  you by Xilinx, and to the maximum extent permitted by applicable law: 
  (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL FAULTS, AND XILINX 
  HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, 
  INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR 
  FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether 
  in contract or tort, including negligence, or under any other theory of 
  liability) for any loss or damage of any kind or nature related to, arising under 
  or in connection with these materials, including for any direct, or any indirect, 
  special, incidental, or consequential loss or damage (including loss of data, 
  profits, goodwill, or any type of loss or damage suffered as a result of any 
  action brought by a third party) even if such damage or loss was reasonably 
  foreseeable or Xilinx had been advised of the possibility of the same.
  #pragma empty_line
  CRITICAL APPLICATIONS
  Xilinx products are not designed or intended to be fail-safe, or for use in any 
  application requiring fail-safe performance, such as life-support or safety 
  devices or systems, Class III medical devices, nuclear facilities, applications 
  related to the deployment of airbags, or any other applications that could lead 
  to death, personal injury, or severe property or environmental damage 
  (individually and collectively, "Critical Applications"). Customer asresultes the 
  sole risk and liability of any use of Xilinx products in Critical Applications, 
  subject only to applicable laws and regulations governing limitations on product 
  liability. 
  #pragma empty_line
  THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE AT 
  ALL TIMES.
  #pragma empty_line
  *******************************************************************************/
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 1 3
  // -*- C++ -*- C forwarding header.
  #pragma empty_line
  // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
  // 2006, 2007, 2008, 2009, 2010
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file include/cmath
   *  This is a Standard C++ Library file.  You should @c \#include this file
   *  in your programs, rather than any of the @a *.h implementation files.
   *
   *  This is the C++ version of the Standard C Library header @c math.h,
   *  and its contents are (mostly) the same as that header, but are all
   *  contained in the namespace @c std (except for names which are defined
   *  as macros in C).
   */
  #pragma empty_line
  //
  // ISO C++ 14882: 26.5  C library
  //
  #pragma empty_line
  #pragma empty_line
  #pragma line 41 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 3
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 1 3
  // Predefined symbols and macros -*- C++ -*-
  #pragma empty_line
  // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
  // 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file c++config.h
   *  This is an internal header file, included by other library headers.
   *  You should not attempt to use it directly.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // The current version of the C++ library in compressed ISO date format.
  #pragma empty_line
  #pragma empty_line
  // Macros for visibility.
  // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
  // _GLIBCXX_VISIBILITY_ATTR
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // If this is not supplied by the OS-specific or CPU-specific
  // headers included below, it will be defined to an empty default.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Macros for deprecated.
  // _GLIBCXX_DEPRECATED
  // _GLIBCXX_DEPRECATED_ATTR
  #pragma line 63 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Macros for activating various namespace association modes.
  // _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
  // _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
  // _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
  #pragma empty_line
  // Guide to libstdc++ namespaces.
  /*
    namespace std
    {
      namespace __debug { }
      namespace __parallel { }
      namespace __norm { } // __normative, __shadow, __replaced
      namespace __cxx1998 { }
  #pragma empty_line
      namespace tr1 { }
    }
  */
  #pragma line 90 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Namespace association for profile
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Defined if any namespace association modes are active.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Macros for namespace scope. Either namespace std:: or the name
  // of some nested namespace within it.
  // _GLIBCXX_STD
  // _GLIBCXX_STD_D
  // _GLIBCXX_STD_P
  //
  // Macros for enclosing namespaces and possibly nested namespaces.
  // _GLIBCXX_BEGIN_NAMESPACE
  // _GLIBCXX_END_NAMESPACE
  // _GLIBCXX_BEGIN_NESTED_NAMESPACE
  // _GLIBCXX_END_NESTED_NAMESPACE
  #pragma line 187 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Namespace associations for debug mode.
  #pragma line 197 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Namespace associations for parallel mode.
  #pragma line 207 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Namespace associations for profile mode
  #pragma line 217 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Namespace associations for versioning mode.
  #pragma line 238 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // XXX GLIBCXX_ABI Deprecated
  // Define if compatibility should be provided for -mlong-double-64
  #pragma empty_line
  #pragma empty_line
  // Namespace associations for long double 128 mode.
  #pragma line 258 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // Defines for C compatibility. In particular, define extern "C"
  // linkage only when using C++.
  #pragma line 272 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // First includes.
  #pragma empty_line
  // Pick up any OS-specific definitions.
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/os_defines.h" 1 3
  // Specific definitions for generic platforms  -*- C++ -*-
  #pragma empty_line
  // Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
  // 2009  Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file os_defines.h
   *  This is an internal header file, included by other library headers.
   *  You should not attempt to use it directly.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // System-specific #define, typedefs, corrections, etc, go here.  This
  // file will come before all others.
  #pragma empty_line
  //  Define as 0, if you want, to enable inlining of gthread functions.
  //  By default, don't pollute libstdc++ with win32api names.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Don't let win32api windef.h define min and max as macros
  // if included after c++config.h.
  #pragma line 57 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/os_defines.h" 3
  // See libstdc++/20806.
  #pragma empty_line
  #pragma empty_line
  // See  libstdc++/37522.
  #pragma line 276 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 2 3
  #pragma empty_line
  // Pick up any CPU-specific definitions.
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/cpu_defines.h" 1 3
  // Specific definitions for generic platforms  -*- C++ -*-
  #pragma empty_line
  // Copyright (C) 2005, 2009 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file cpu_defines.h
   *  This is an internal header file, included by other library headers.
   *  You should not attempt to use it directly.
   */
  #pragma line 279 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 2 3
  #pragma empty_line
  // If platform uses neither visibility nor psuedo-visibility,
  // specify empty default for namespace annotation macros.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Allow use of "export template." This is currently not a feature
  // that g++ supports.
  // #define _GLIBCXX_EXPORT_TEMPLATE 1
  #pragma empty_line
  // Allow use of the GNU syntax extension, "extern template." This
  // extension is fully documented in the g++ manual, but in a nutshell,
  // it inhibits all implicit instantiations and is used throughout the
  // library to avoid multiple weak definitions for required types that
  // are already explicitly instantiated in the library binary. This
  // substantially reduces the binary size of resulting executables.
  #pragma empty_line
  // Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
  // templates only in basic_string, thus activating its debug-mode
  // checks even at -O0.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Certain function definitions that are meant to be overridable from
  // user code are decorated with this macro.  For some targets, this
  // macro causes these definitions to be weak.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Assert.
  // Avoid the use of assert, because we're trying to keep the <cassert>
  // include out of the mix.
  #pragma line 339 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // The remainder of the prewritten config is automatic; all the
  // user hooks are listed above.
  #pragma empty_line
  // Create a boolean flag to be used to determine if --fast-math is set.
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // This marks string literals in header files to be extracted for eventual
  // translation.  It is primarily used for messages in thrown exceptions; see
  // src/functexcept.cc.  We use __N because the more traditional _N is used
  // for something else under certain OSes (see BADNAMES).
  #pragma empty_line
  #pragma empty_line
  // For example, <windows.h> is known to #define min and max as macros...
  #pragma line 379 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2/x86_64-w64-mingw32\\bits/c++config.h" 3
  // End of prewritten config; the discovered settings follow.
  /* config.h.  Generated from config.h.in by configure.  */
  /* config.h.in.  Generated from configure.ac by autoheader.  */
  #pragma empty_line
  /* Define to 1 if you have the `acosf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `acosl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `asinf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `asinl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if the target assembler supports .symver directive. */
  /* #undef _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE */
  #pragma empty_line
  /* Define to 1 if you have the `atan2f' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `atan2l' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `atanf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `atanl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if the target assembler supports thread-local storage. */
  /* #undef _GLIBCXX_HAVE_CC_TLS */
  #pragma empty_line
  /* Define to 1 if you have the `ceilf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `ceill' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <complex.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `cosf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `coshf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `coshl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `cosl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <dlfcn.h> header file. */
  /* #undef _GLIBCXX_HAVE_DLFCN_H */
  #pragma empty_line
  /* Define if EBADMSG exists. */
  /* #undef _GLIBCXX_HAVE_EBADMSG */
  #pragma empty_line
  /* Define if ECANCELED exists. */
  /* #undef _GLIBCXX_HAVE_ECANCELED */
  #pragma empty_line
  /* Define if EIDRM exists. */
  /* #undef _GLIBCXX_HAVE_EIDRM */
  #pragma empty_line
  /* Define to 1 if you have the <endian.h> header file. */
  /* #undef _GLIBCXX_HAVE_ENDIAN_H */
  #pragma empty_line
  /* Define if ENODATA exists. */
  /* #undef _GLIBCXX_HAVE_ENODATA */
  #pragma empty_line
  /* Define if ENOLINK exists. */
  /* #undef _GLIBCXX_HAVE_ENOLINK */
  #pragma empty_line
  /* Define if ENOSR exists. */
  /* #undef _GLIBCXX_HAVE_ENOSR */
  #pragma empty_line
  /* Define if ENOSTR exists. */
  /* #undef _GLIBCXX_HAVE_ENOSTR */
  #pragma empty_line
  /* Define if ENOTRECOVERABLE exists. */
  /* #undef _GLIBCXX_HAVE_ENOTRECOVERABLE */
  #pragma empty_line
  /* Define if ENOTSUP exists. */
  /* #undef _GLIBCXX_HAVE_ENOTSUP */
  #pragma empty_line
  /* Define if EOVERFLOW exists. */
  /* #undef _GLIBCXX_HAVE_EOVERFLOW */
  #pragma empty_line
  /* Define if EOWNERDEAD exists. */
  /* #undef _GLIBCXX_HAVE_EOWNERDEAD */
  #pragma empty_line
  /* Define if EPROTO exists. */
  /* #undef _GLIBCXX_HAVE_EPROTO */
  #pragma empty_line
  /* Define if ETIME exists. */
  /* #undef _GLIBCXX_HAVE_ETIME */
  #pragma empty_line
  /* Define if ETXTBSY exists. */
  /* #undef _GLIBCXX_HAVE_ETXTBSY */
  #pragma empty_line
  /* Define to 1 if you have the <execinfo.h> header file. */
  /* #undef _GLIBCXX_HAVE_EXECINFO_H */
  #pragma empty_line
  /* Define to 1 if you have the `expf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `expl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `fabsf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `fabsl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <fenv.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `finite' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `finitef' function. */
  /* #undef _GLIBCXX_HAVE_FINITEF */
  #pragma empty_line
  /* Define to 1 if you have the `finitel' function. */
  /* #undef _GLIBCXX_HAVE_FINITEL */
  #pragma empty_line
  /* Define to 1 if you have the <float.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `floorf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `floorl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `fmodf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `fmodl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `fpclass' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <fp.h> header file. */
  /* #undef _GLIBCXX_HAVE_FP_H */
  #pragma empty_line
  /* Define to 1 if you have the `frexpf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `frexpl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define if _Unwind_GetIPInfo is available. */
  #pragma empty_line
  #pragma empty_line
  /* Define if gthr-default.h exists (meaning that threading support is
     enabled). */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `hypot' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `hypotf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `hypotl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define if you have the iconv() function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <ieeefp.h> header file. */
  /* #undef _GLIBCXX_HAVE_IEEEFP_H */
  #pragma empty_line
  /* Define if int64_t is available in <stdint.h>. */
  #pragma empty_line
  #pragma empty_line
  /* Define if int64_t is a long. */
  /* #undef _GLIBCXX_HAVE_INT64_T_LONG */
  #pragma empty_line
  /* Define if int64_t is a long long. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <inttypes.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `isinf' function. */
  /* #undef _GLIBCXX_HAVE_ISINF */
  #pragma empty_line
  /* Define to 1 if you have the `isinff' function. */
  /* #undef _GLIBCXX_HAVE_ISINFF */
  #pragma empty_line
  /* Define to 1 if you have the `isinfl' function. */
  /* #undef _GLIBCXX_HAVE_ISINFL */
  #pragma empty_line
  /* Define to 1 if you have the `isnan' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `isnanf' function. */
  /* #undef _GLIBCXX_HAVE_ISNANF */
  #pragma empty_line
  /* Define to 1 if you have the `isnanl' function. */
  /* #undef _GLIBCXX_HAVE_ISNANL */
  #pragma empty_line
  /* Defined if iswblank exists. */
  #pragma empty_line
  #pragma empty_line
  /* Define if LC_MESSAGES is available in <locale.h>. */
  /* #undef _GLIBCXX_HAVE_LC_MESSAGES */
  #pragma empty_line
  /* Define to 1 if you have the `ldexpf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `ldexpl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <libintl.h> header file. */
  /* #undef _GLIBCXX_HAVE_LIBINTL_H */
  #pragma empty_line
  /* Only used in build directory testsuite_hooks.h. */
  /* #undef _GLIBCXX_HAVE_LIMIT_AS */
  #pragma empty_line
  /* Only used in build directory testsuite_hooks.h. */
  /* #undef _GLIBCXX_HAVE_LIMIT_DATA */
  #pragma empty_line
  /* Only used in build directory testsuite_hooks.h. */
  /* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */
  #pragma empty_line
  /* Only used in build directory testsuite_hooks.h. */
  /* #undef _GLIBCXX_HAVE_LIMIT_RSS */
  #pragma empty_line
  /* Only used in build directory testsuite_hooks.h. */
  /* #undef _GLIBCXX_HAVE_LIMIT_VMEM */
  #pragma empty_line
  /* Define if futex syscall is available. */
  /* #undef _GLIBCXX_HAVE_LINUX_FUTEX */
  #pragma empty_line
  /* Define to 1 if you have the <locale.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `log10f' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `log10l' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `logf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `logl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <machine/endian.h> header file. */
  /* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */
  #pragma empty_line
  /* Define to 1 if you have the <machine/param.h> header file. */
  /* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */
  #pragma empty_line
  /* Define if mbstate_t exists in wchar.h. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <memory.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `modf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `modff' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `modfl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <nan.h> header file. */
  /* #undef _GLIBCXX_HAVE_NAN_H */
  #pragma empty_line
  /* Define if poll is available in <poll.h>. */
  /* #undef _GLIBCXX_HAVE_POLL */
  #pragma empty_line
  /* Define to 1 if you have the `powf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `powl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `qfpclass' function. */
  /* #undef _GLIBCXX_HAVE_QFPCLASS */
  #pragma empty_line
  /* Define to 1 if you have the `setenv' function. */
  /* #undef _GLIBCXX_HAVE_SETENV */
  #pragma empty_line
  /* Define to 1 if you have the `sincos' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sincosf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sincosl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sinf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sinhf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sinhl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sinl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sqrtf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `sqrtl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <stdbool.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <stdint.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <stdlib.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define if strerror_l is available in <string.h>. */
  /* #undef _GLIBCXX_HAVE_STRERROR_L */
  #pragma empty_line
  /* Define if strerror_r is available in <string.h>. */
  /* #undef _GLIBCXX_HAVE_STRERROR_R */
  #pragma empty_line
  /* Define to 1 if you have the <strings.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <string.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `strtof' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `strtold' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define if strxfrm_l is available in <string.h>. */
  /* #undef _GLIBCXX_HAVE_STRXFRM_L */
  #pragma empty_line
  /* Define to 1 if you have the <sys/filio.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/ioctl.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/ipc.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_IPC_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/isa_defs.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/machine.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/param.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <sys/resource.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_RESOURCE_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/sem.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_SEM_H */
  #pragma empty_line
  /* Define to 1 if you have the <sys/stat.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <sys/time.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <sys/types.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <sys/uio.h> header file. */
  /* #undef _GLIBCXX_HAVE_SYS_UIO_H */
  #pragma empty_line
  /* Define if S_IFREG is available in <sys/stat.h>. */
  /* #undef _GLIBCXX_HAVE_S_IFREG */
  #pragma empty_line
  /* Define if S_IFREG is available in <sys/stat.h>. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `tanf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `tanhf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `tanhl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `tanl' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <tgmath.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if the target supports thread-local storage. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <unistd.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if vfwscanf exists. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if vswscanf exists. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if vwscanf exists. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <wchar.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if wcstof exists. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the <wctype.h> header file. */
  #pragma empty_line
  #pragma empty_line
  /* Define if writev is available in <sys/uio.h>. */
  /* #undef _GLIBCXX_HAVE_WRITEV */
  #pragma empty_line
  /* Define to 1 if you have the `_acosf' function. */
  /* #undef _GLIBCXX_HAVE__ACOSF */
  #pragma empty_line
  /* Define to 1 if you have the `_acosl' function. */
  /* #undef _GLIBCXX_HAVE__ACOSL */
  #pragma empty_line
  /* Define to 1 if you have the `_asinf' function. */
  /* #undef _GLIBCXX_HAVE__ASINF */
  #pragma empty_line
  /* Define to 1 if you have the `_asinl' function. */
  /* #undef _GLIBCXX_HAVE__ASINL */
  #pragma empty_line
  /* Define to 1 if you have the `_atan2f' function. */
  /* #undef _GLIBCXX_HAVE__ATAN2F */
  #pragma empty_line
  /* Define to 1 if you have the `_atan2l' function. */
  /* #undef _GLIBCXX_HAVE__ATAN2L */
  #pragma empty_line
  /* Define to 1 if you have the `_atanf' function. */
  /* #undef _GLIBCXX_HAVE__ATANF */
  #pragma empty_line
  /* Define to 1 if you have the `_atanl' function. */
  /* #undef _GLIBCXX_HAVE__ATANL */
  #pragma empty_line
  /* Define to 1 if you have the `_ceilf' function. */
  /* #undef _GLIBCXX_HAVE__CEILF */
  #pragma empty_line
  /* Define to 1 if you have the `_ceill' function. */
  /* #undef _GLIBCXX_HAVE__CEILL */
  #pragma empty_line
  /* Define to 1 if you have the `_cosf' function. */
  /* #undef _GLIBCXX_HAVE__COSF */
  #pragma empty_line
  /* Define to 1 if you have the `_coshf' function. */
  /* #undef _GLIBCXX_HAVE__COSHF */
  #pragma empty_line
  /* Define to 1 if you have the `_coshl' function. */
  /* #undef _GLIBCXX_HAVE__COSHL */
  #pragma empty_line
  /* Define to 1 if you have the `_cosl' function. */
  /* #undef _GLIBCXX_HAVE__COSL */
  #pragma empty_line
  /* Define to 1 if you have the `_expf' function. */
  /* #undef _GLIBCXX_HAVE__EXPF */
  #pragma empty_line
  /* Define to 1 if you have the `_expl' function. */
  /* #undef _GLIBCXX_HAVE__EXPL */
  #pragma empty_line
  /* Define to 1 if you have the `_fabsf' function. */
  /* #undef _GLIBCXX_HAVE__FABSF */
  #pragma empty_line
  /* Define to 1 if you have the `_fabsl' function. */
  /* #undef _GLIBCXX_HAVE__FABSL */
  #pragma empty_line
  /* Define to 1 if you have the `_finite' function. */
  /* #undef _GLIBCXX_HAVE__FINITE */
  #pragma empty_line
  /* Define to 1 if you have the `_finitef' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `_finitel' function. */
  /* #undef _GLIBCXX_HAVE__FINITEL */
  #pragma empty_line
  /* Define to 1 if you have the `_floorf' function. */
  /* #undef _GLIBCXX_HAVE__FLOORF */
  #pragma empty_line
  /* Define to 1 if you have the `_floorl' function. */
  /* #undef _GLIBCXX_HAVE__FLOORL */
  #pragma empty_line
  /* Define to 1 if you have the `_fmodf' function. */
  /* #undef _GLIBCXX_HAVE__FMODF */
  #pragma empty_line
  /* Define to 1 if you have the `_fmodl' function. */
  /* #undef _GLIBCXX_HAVE__FMODL */
  #pragma empty_line
  /* Define to 1 if you have the `_fpclass' function. */
  /* #undef _GLIBCXX_HAVE__FPCLASS */
  #pragma empty_line
  /* Define to 1 if you have the `_frexpf' function. */
  /* #undef _GLIBCXX_HAVE__FREXPF */
  #pragma empty_line
  /* Define to 1 if you have the `_frexpl' function. */
  /* #undef _GLIBCXX_HAVE__FREXPL */
  #pragma empty_line
  /* Define to 1 if you have the `_hypot' function. */
  /* #undef _GLIBCXX_HAVE__HYPOT */
  #pragma empty_line
  /* Define to 1 if you have the `_hypotf' function. */
  /* #undef _GLIBCXX_HAVE__HYPOTF */
  #pragma empty_line
  /* Define to 1 if you have the `_hypotl' function. */
  /* #undef _GLIBCXX_HAVE__HYPOTL */
  #pragma empty_line
  /* Define to 1 if you have the `_isinf' function. */
  /* #undef _GLIBCXX_HAVE__ISINF */
  #pragma empty_line
  /* Define to 1 if you have the `_isinff' function. */
  /* #undef _GLIBCXX_HAVE__ISINFF */
  #pragma empty_line
  /* Define to 1 if you have the `_isinfl' function. */
  /* #undef _GLIBCXX_HAVE__ISINFL */
  #pragma empty_line
  /* Define to 1 if you have the `_isnan' function. */
  /* #undef _GLIBCXX_HAVE__ISNAN */
  #pragma empty_line
  /* Define to 1 if you have the `_isnanf' function. */
  #pragma empty_line
  #pragma empty_line
  /* Define to 1 if you have the `_isnanl' function. */
  /* #undef _GLIBCXX_HAVE__ISNANL */
  #pragma empty_line
  /* Define to 1 if you have the `_ldexpf' function. */
  /* #undef _GLIBCXX_HAVE__LDEXPF */
  #pragma empty_line
  /* Define to 1 if you have the `_ldexpl' function. */
  /* #undef _GLIBCXX_HAVE__LDEXPL */
  #pragma empty_line
  /* Define to 1 if you have the `_log10f' function. */
  /* #undef _GLIBCXX_HAVE__LOG10F */
  #pragma empty_line
  /* Define to 1 if you have the `_log10l' function. */
  /* #undef _GLIBCXX_HAVE__LOG10L */
  #pragma empty_line
  /* Define to 1 if you have the `_logf' function. */
  /* #undef _GLIBCXX_HAVE__LOGF */
  #pragma empty_line
  /* Define to 1 if you have the `_logl' function. */
  /* #undef _GLIBCXX_HAVE__LOGL */
  #pragma empty_line
  /* Define to 1 if you have the `_modf' function. */
  /* #undef _GLIBCXX_HAVE__MODF */
  #pragma empty_line
  /* Define to 1 if you have the `_modff' function. */
  /* #undef _GLIBCXX_HAVE__MODFF */
  #pragma empty_line
  /* Define to 1 if you have the `_modfl' function. */
  /* #undef _GLIBCXX_HAVE__MODFL */
  #pragma empty_line
  /* Define to 1 if you have the `_powf' function. */
  /* #undef _GLIBCXX_HAVE__POWF */
  #pragma empty_line
  /* Define to 1 if you have the `_powl' function. */
  /* #undef _GLIBCXX_HAVE__POWL */
  #pragma empty_line
  /* Define to 1 if you have the `_qfpclass' function. */
  /* #undef _GLIBCXX_HAVE__QFPCLASS */
  #pragma empty_line
  /* Define to 1 if you have the `_sincos' function. */
  /* #undef _GLIBCXX_HAVE__SINCOS */
  #pragma empty_line
  /* Define to 1 if you have the `_sincosf' function. */
  /* #undef _GLIBCXX_HAVE__SINCOSF */
  #pragma empty_line
  /* Define to 1 if you have the `_sincosl' function. */
  /* #undef _GLIBCXX_HAVE__SINCOSL */
  #pragma empty_line
  /* Define to 1 if you have the `_sinf' function. */
  /* #undef _GLIBCXX_HAVE__SINF */
  #pragma empty_line
  /* Define to 1 if you have the `_sinhf' function. */
  /* #undef _GLIBCXX_HAVE__SINHF */
  #pragma empty_line
  /* Define to 1 if you have the `_sinhl' function. */
  /* #undef _GLIBCXX_HAVE__SINHL */
  #pragma empty_line
  /* Define to 1 if you have the `_sinl' function. */
  /* #undef _GLIBCXX_HAVE__SINL */
  #pragma empty_line
  /* Define to 1 if you have the `_sqrtf' function. */
  /* #undef _GLIBCXX_HAVE__SQRTF */
  #pragma empty_line
  /* Define to 1 if you have the `_sqrtl' function. */
  /* #undef _GLIBCXX_HAVE__SQRTL */
  #pragma empty_line
  /* Define to 1 if you have the `_tanf' function. */
  /* #undef _GLIBCXX_HAVE__TANF */
  #pragma empty_line
  /* Define to 1 if you have the `_tanhf' function. */
  /* #undef _GLIBCXX_HAVE__TANHF */
  #pragma empty_line
  /* Define to 1 if you have the `_tanhl' function. */
  /* #undef _GLIBCXX_HAVE__TANHL */
  #pragma empty_line
  /* Define to 1 if you have the `_tanl' function. */
  /* #undef _GLIBCXX_HAVE__TANL */
  #pragma empty_line
  /* Define as const if the declaration of iconv() needs const. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the sub-directory in which libtool stores uninstalled libraries.
     */
  #pragma empty_line
  #pragma empty_line
  /* Name of package */
  /* #undef _GLIBCXX_PACKAGE */
  #pragma empty_line
  /* Define to the address where bug reports for this package should be sent. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the full name of this package. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the full name and version of this package. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the one symbol short name of this package. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the home page for this package. */
  #pragma empty_line
  #pragma empty_line
  /* Define to the version of this package. */
  #pragma empty_line
  #pragma empty_line
  /* The size of `char', as computed by sizeof. */
  /* #undef SIZEOF_CHAR */
  #pragma empty_line
  /* The size of `int', as computed by sizeof. */
  /* #undef SIZEOF_INT */
  #pragma empty_line
  /* The size of `long', as computed by sizeof. */
  /* #undef SIZEOF_LONG */
  #pragma empty_line
  /* The size of `short', as computed by sizeof. */
  /* #undef SIZEOF_SHORT */
  #pragma empty_line
  /* The size of `void *', as computed by sizeof. */
  /* #undef SIZEOF_VOID_P */
  #pragma empty_line
  /* Define to 1 if you have the ANSI C header files. */
  #pragma empty_line
  #pragma empty_line
  /* Version number of package */
  /* #undef _GLIBCXX_VERSION */
  #pragma empty_line
  /* Define if builtin atomic operations for bool are supported on this host. */
  #pragma empty_line
  #pragma empty_line
  /* Define if builtin atomic operations for short are supported on this host.
     */
  #pragma empty_line
  #pragma empty_line
  /* Define if builtin atomic operations for int are supported on this host. */
  #pragma empty_line
  #pragma empty_line
  /* Define if builtin atomic operations for long long are supported on this
     host. */
  #pragma empty_line
  #pragma empty_line
  /* Define to use concept checking code from the boost libraries. */
  /* #undef _GLIBCXX_CONCEPT_CHECKS */
  #pragma empty_line
  /* Define if a fully dynamic basic_string is wanted. */
  #pragma empty_line
  #pragma empty_line
  /* Define if gthreads library is available. */
  /* #undef _GLIBCXX_HAS_GTHREADS */
  #pragma empty_line
  /* Define to 1 if a full hosted library is built, or 0 if freestanding. */
  #pragma empty_line
  #pragma empty_line
  /* Define if compatibility should be provided for -mlong-double-64. */
  #pragma empty_line
  /* Define if ptrdiff_t is int. */
  /* #undef _GLIBCXX_PTRDIFF_T_IS_INT */
  #pragma empty_line
  /* Define if using setrlimit to set resource limits during "make check" */
  /* #undef _GLIBCXX_RES_LIMITS */
  #pragma empty_line
  /* Define if size_t is unsigned int. */
  /* #undef _GLIBCXX_SIZE_T_IS_UINT */
  #pragma empty_line
  /* Define if the compiler is configured for setjmp/longjmp exceptions. */
  #pragma empty_line
  #pragma empty_line
  /* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
  #pragma empty_line
  #pragma empty_line
  /* Define to use symbol versioning in the shared library. */
  #pragma empty_line
  #pragma empty_line
  /* Define to use darwin versioning in the shared library. */
  /* #undef _GLIBCXX_SYMVER_DARWIN */
  #pragma empty_line
  /* Define to use GNU versioning in the shared library. */
  #pragma empty_line
  #pragma empty_line
  /* Define to use GNU namespace versioning in the shared library. */
  /* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
  #pragma empty_line
  /* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
     <stdio.h>, and <stdlib.h> can be used or exposed. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions in <complex.h> should be used in <complex>. Using
     compiler builtins for these functions requires corresponding C99 library
     functions to be present. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
     Using compiler builtins for these functions requires corresponding C99
     library functions to be present. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
     namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
     namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions in <inttypes.h> should be imported in
     <tr1/cinttypes> in namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Define if wchar_t C99 functions in <inttypes.h> should be imported in
     <tr1/cinttypes> in namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions or macros in <math.h> should be imported in <cmath>
     in namespace std. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 functions or macros in <math.h> should be imported in
     <tr1/cmath> in namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
     namespace std::tr1. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if clock_gettime has monotonic clock support. */
  /* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
  #pragma empty_line
  /* Defined if clock_gettime has realtime clock support. */
  /* #undef _GLIBCXX_USE_CLOCK_REALTIME */
  #pragma empty_line
  /* Define if ISO/IEC TR 24733 decimal floating point types are supported on
     this host. */
  /* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
  #pragma empty_line
  /* Defined if gettimeofday is available. */
  #pragma empty_line
  #pragma empty_line
  /* Define if LFS support is available. */
  #pragma empty_line
  #pragma empty_line
  /* Define if code specialized for long long should be used. */
  #pragma empty_line
  #pragma empty_line
  /* Defined if nanosleep is available. */
  /* #undef _GLIBCXX_USE_NANOSLEEP */
  #pragma empty_line
  /* Define if NLS translations are to be used. */
  /* #undef _GLIBCXX_USE_NLS */
  #pragma empty_line
  /* Define if /dev/random and /dev/urandom are available for the random_device
     of TR1 (Chapter 5.1). */
  #pragma empty_line
  #pragma empty_line
  /* Defined if sched_yield is available. */
  /* #undef _GLIBCXX_USE_SCHED_YIELD */
  #pragma empty_line
  /* Define if code specialized for wchar_t should be used. */
  #pragma line 43 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 2 3
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\bits/cpp_type_traits.h" 1 3
  // The  -*- C++ -*- type traits classes for internal use in libstdc++
  #pragma empty_line
  // Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file cpp_type_traits.h
   *  This is an internal header file, included by other library headers.
   *  You should not attempt to use it directly.
   */
  #pragma empty_line
  // Written by Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 36 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\bits/cpp_type_traits.h" 3
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  //
  // This file provides some compile-time information about various types.
  // These representations were designed, on purpose, to be constant-expressions
  // and not types as found in <bits/type_traits.h>.  In particular, they
  // can be used in control structures and the optimizer hopefully will do
  // the obvious thing.
  //
  // Why integral expressions, and not functions nor types?
  // Firstly, these compile-time entities are used as template-arguments
  // so function return values won't work:  We need compile-time entities.
  // We're left with types and constant  integral expressions.
  // Secondly, from the point of view of ease of use, type-based compile-time
  // information is -not- *that* convenient.  On has to write lots of
  // overloaded functions and to hope that the compiler will select the right
  // one. As a net effect, the overall structure isn't very clear at first
  // glance.
  // Thirdly, partial ordering and overload resolution (of function templates)
  // is highly costly in terms of compiler-resource.  It is a Good Thing to
  // keep these resource consumption as least as possible.
  //
  // See valarray_array.h for a case use.
  //
  // -- Gaby (dosreis@cmla.ens-cachan.fr) 2000-03-06.
  //
  // Update 2005: types are also provided and <bits/type_traits.h> has been
  // removed.
  //
  #pragma empty_line
  // Forward declaration hack, should really include this from somewhere.
  namespace __gnu_cxx {
  #pragma empty_line
    template<typename _Iterator, typename _Container>
      class __normal_iterator;
  #pragma empty_line
  }
  #pragma empty_line
  namespace std {
  #pragma empty_line
    struct __true_type { };
    struct __false_type { };
  #pragma empty_line
    template<bool>
      struct __truth_type
      { typedef __false_type __type; };
  #pragma empty_line
    template<>
      struct __truth_type<true>
      { typedef __true_type __type; };
  #pragma empty_line
    // N.B. The conversions to bool are needed due to the issue
    // explained in c++/19404.
    template<class _Sp, class _Tp>
      struct __traitor
      {
        enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
        typedef typename __truth_type<__value>::__type __type;
      };
  #pragma empty_line
    // Compare for equality of types.
    template<typename, typename>
      struct __are_same
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<typename _Tp>
      struct __are_same<_Tp, _Tp>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    // Holds if the template-argument is a void type.
    template<typename _Tp>
      struct __is_void
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_void<void>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // Integer types
    //
    template<typename _Tp>
      struct __is_integer
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    // Thirteen specializations (yes there are eleven standard integer
    // types; <em>long long</em> and <em>unsigned long long</em> are
    // supported as extensions)
    template<>
      struct __is_integer<bool>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<signed char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<unsigned char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
  #pragma empty_line
    template<>
      struct __is_integer<wchar_t>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma line 193 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\bits/cpp_type_traits.h" 3
    template<>
      struct __is_integer<short>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<unsigned short>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<int>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<unsigned int>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<long>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<unsigned long>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<long long>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_integer<unsigned long long>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // Floating point types
    //
    template<typename _Tp>
      struct __is_floating
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    // three specializations (float, double and 'long double')
    template<>
      struct __is_floating<float>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_floating<double>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_floating<long double>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // Pointer types
    //
    template<typename _Tp>
      struct __is_pointer
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<typename _Tp>
      struct __is_pointer<_Tp*>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // Normal iterator type
    //
    template<typename _Tp>
      struct __is_normal_iterator
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<typename _Iterator, typename _Container>
      struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
               _Container> >
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // An arithmetic type is an integer type or a floating point type
    //
    template<typename _Tp>
      struct __is_arithmetic
      : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
      { };
  #pragma empty_line
    //
    // A fundamental type is `void' or and arithmetic type
    //
    template<typename _Tp>
      struct __is_fundamental
      : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
      { };
  #pragma empty_line
    //
    // A scalar type is an arithmetic type or a pointer type
    // 
    template<typename _Tp>
      struct __is_scalar
      : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
      { };
  #pragma empty_line
    //
    // For use in std::copy and std::find overloads for streambuf iterators.
    //
    template<typename _Tp>
      struct __is_char
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_char<char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
  #pragma empty_line
    template<>
      struct __is_char<wchar_t>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
  #pragma empty_line
    template<typename _Tp>
      struct __is_byte
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_byte<char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_byte<signed char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    template<>
      struct __is_byte<unsigned char>
      {
        enum { __value = 1 };
        typedef __true_type __type;
      };
  #pragma empty_line
    //
    // Move iterator type
    //
    template<typename _Tp>
      struct __is_move_iterator
      {
        enum { __value = 0 };
        typedef __false_type __type;
      };
  #pragma line 416 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\bits/cpp_type_traits.h" 3
    template<typename _Tp>
      class __is_iterator_helper
      {
        typedef char __one;
        typedef struct { char __arr[2]; } __two;
  #pragma empty_line
        template<typename _Up>
          struct _Wrap_type
   { };
  #pragma empty_line
        template<typename _Up>
          static __one __test(_Wrap_type<typename _Up::iterator_category>*);
  #pragma empty_line
        template<typename _Up>
          static __two __test(...);
  #pragma empty_line
      public:
        static const bool __value = (sizeof(__test<_Tp>(0)) == 1
         || __is_pointer<_Tp>::__value);
      };
  #pragma empty_line
    template<typename _Tp>
      struct __is_iterator
      {
        enum { __value = __is_iterator_helper<_Tp>::__value };
        typedef typename __truth_type<__value>::__type __type;
      };
  #pragma empty_line
  }
  #pragma line 44 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 2 3
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\ext/type_traits.h" 1 3
  // -*- C++ -*-
  #pragma empty_line
  // Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the terms
  // of the GNU General Public License as published by the Free Software
  // Foundation; either version 3, or (at your option) any later
  // version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful, but
  // WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  // General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  /** @file ext/type_traits.h
   *  This file is a GNU extension to the Standard C++ Library.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 32 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\ext/type_traits.h" 3
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  namespace __gnu_cxx {
  #pragma empty_line
    // Define a nested type if some predicate holds.
    template<bool, typename>
      struct __enable_if
      { };
  #pragma empty_line
    template<typename _Tp>
      struct __enable_if<true, _Tp>
      { typedef _Tp __type; };
  #pragma empty_line
  #pragma empty_line
    // Conditional expression for types. If true, first, if false, second.
    template<bool _Cond, typename _Iftrue, typename _Iffalse>
      struct __conditional_type
      { typedef _Iftrue __type; };
  #pragma empty_line
    template<typename _Iftrue, typename _Iffalse>
      struct __conditional_type<false, _Iftrue, _Iffalse>
      { typedef _Iffalse __type; };
  #pragma empty_line
  #pragma empty_line
    // Given an integral builtin type, return the corresponding unsigned type.
    template<typename _Tp>
      struct __add_unsigned
      {
      private:
        typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  #pragma empty_line
      public:
        typedef typename __if_type::__type __type;
      };
  #pragma empty_line
    template<>
      struct __add_unsigned<char>
      { typedef unsigned char __type; };
  #pragma empty_line
    template<>
      struct __add_unsigned<signed char>
      { typedef unsigned char __type; };
  #pragma empty_line
    template<>
      struct __add_unsigned<short>
      { typedef unsigned short __type; };
  #pragma empty_line
    template<>
      struct __add_unsigned<int>
      { typedef unsigned int __type; };
  #pragma empty_line
    template<>
      struct __add_unsigned<long>
      { typedef unsigned long __type; };
  #pragma empty_line
    template<>
      struct __add_unsigned<long long>
      { typedef unsigned long long __type; };
  #pragma empty_line
    // Declare but don't define.
    template<>
      struct __add_unsigned<bool>;
  #pragma empty_line
    template<>
      struct __add_unsigned<wchar_t>;
  #pragma empty_line
  #pragma empty_line
    // Given an integral builtin type, return the corresponding signed type.
    template<typename _Tp>
      struct __remove_unsigned
      {
      private:
        typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  #pragma empty_line
      public:
        typedef typename __if_type::__type __type;
      };
  #pragma empty_line
    template<>
      struct __remove_unsigned<char>
      { typedef signed char __type; };
  #pragma empty_line
    template<>
      struct __remove_unsigned<unsigned char>
      { typedef signed char __type; };
  #pragma empty_line
    template<>
      struct __remove_unsigned<unsigned short>
      { typedef short __type; };
  #pragma empty_line
    template<>
      struct __remove_unsigned<unsigned int>
      { typedef int __type; };
  #pragma empty_line
    template<>
      struct __remove_unsigned<unsigned long>
      { typedef long __type; };
  #pragma empty_line
    template<>
      struct __remove_unsigned<unsigned long long>
      { typedef long long __type; };
  #pragma empty_line
    // Declare but don't define.
    template<>
      struct __remove_unsigned<bool>;
  #pragma empty_line
    template<>
      struct __remove_unsigned<wchar_t>;
  #pragma empty_line
  #pragma empty_line
    // For use in string and vstring.
    template<typename _Type>
      inline bool
      __is_null_pointer(_Type* __ptr)
      { return __ptr == 0; }
  #pragma empty_line
    template<typename _Type>
      inline bool
      __is_null_pointer(_Type)
      { return false; }
  #pragma empty_line
  #pragma empty_line
    // For complex and cmath
    template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
      struct __promote
      { typedef double __type; };
  #pragma empty_line
    template<typename _Tp>
      struct __promote<_Tp, false>
      { typedef _Tp __type; };
  #pragma empty_line
    template<typename _Tp, typename _Up>
      struct __promote_2
      {
      private:
        typedef typename __promote<_Tp>::__type __type1;
        typedef typename __promote<_Up>::__type __type2;
  #pragma empty_line
      public:
        typedef __typeof__(__type1() + __type2()) __type;
      };
  #pragma empty_line
    template<typename _Tp, typename _Up, typename _Vp>
      struct __promote_3
      {
      private:
        typedef typename __promote<_Tp>::__type __type1;
        typedef typename __promote<_Up>::__type __type2;
        typedef typename __promote<_Vp>::__type __type3;
  #pragma empty_line
      public:
        typedef __typeof__(__type1() + __type2() + __type3()) __type;
      };
  #pragma empty_line
    template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
      struct __promote_4
      {
      private:
        typedef typename __promote<_Tp>::__type __type1;
        typedef typename __promote<_Up>::__type __type2;
        typedef typename __promote<_Vp>::__type __type3;
        typedef typename __promote<_Wp>::__type __type4;
  #pragma empty_line
      public:
        typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
      };
  #pragma empty_line
  }
  #pragma line 45 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 2 3
  extern "C" {
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 1 3
  /**
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is part of the w64 mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER.PD within this package.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 10 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 1 3
  /**
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is part of the w64 mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER.PD within this package.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include/_mingw_mac.h" 1 3
  /**
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is part of the w64 mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER.PD within this package.
   */
  #pragma line 18 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include/_mingw_mac.h" 3
  /* mingw.org's version macros: these make gcc to define
     MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
     and the __mingwthr_key_dtor() function from the MinGW
     CRT in its private gthr-win32.h header. */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  /* MS does not prefix symbols by underscores for 64-bit.  */
  #pragma empty_line
  /* As we have to support older gcc version, which are using underscores
     as symbol prefix for x64, we have to check here for the user label
     prefix defined by gcc.  */
  #pragma line 62 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include/_mingw_mac.h" 3
  /* Use alias for msvcr80 export of get/set_output_format.  */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  /* Set VC specific compiler target macros.  */
  #pragma line 10 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 2 3
  #pragma empty_line
  #pragma empty_line
  /* C/C++ specific language defines.  */
  #pragma line 32 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /* Note the extern. This is needed to work around GCC's
  limitations in handling dllimport attribute.  */
  #pragma line 147 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /* Attribute `nonnull' was valid as of gcc 3.3.  We don't use GCC's
     variadiac macro facility, because variadic macros cause syntax
     errors with  --traditional-cpp.  */
  #pragma line 225 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /*  High byte is the major version, low byte is the minor. */
  #pragma line 247 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /*typedef int __int128 __attribute__ ((__mode__ (TI)));*/
  #pragma line 277 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\vadefs.h" 1 3
  /**
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is part of the w64 mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER.PD within this package.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 1 3
  /**
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is part of the w64 mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER.PD within this package.
   */
  #pragma line 674 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include/sdks/_mingw_directx.h" 1 3
  #pragma line 674 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 2 3
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include/sdks/_mingw_ddk.h" 1 3
  #pragma line 675 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 2 3
  #pragma line 13 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\vadefs.h" 2 3
  #pragma empty_line
  #pragma empty_line
  #pragma pack(push,_CRT_PACKING)
  #pragma empty_line
  #pragma empty_line
  extern "C" {
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    typedef __builtin_va_list __gnuc_va_list;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    typedef __gnuc_va_list va_list;
  #pragma line 46 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\vadefs.h" 3
  /* Use GCC builtins */
  #pragma line 99 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\vadefs.h" 3
  }
  #pragma empty_line
  #pragma empty_line
  #pragma pack(pop)
  #pragma line 277 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 2 3
  #pragma empty_line
  #pragma empty_line
  #pragma pack(push,_CRT_PACKING)
  #pragma line 316 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /* We have to define _DLL for gcc based mingw version. This define is set
     by VC, when DLL-based runtime is used. So, gcc based runtime just have
     DLL-base runtime, therefore this define has to be set.
     As our headers are possibly used by windows compiler having a static
     C-runtime, we make this definition gnu compiler specific here.  */
  #pragma line 370 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  __extension__ typedef unsigned long long size_t;
  #pragma line 380 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  __extension__ typedef long long ssize_t;
  #pragma line 392 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  __extension__ typedef long long intptr_t;
  #pragma line 405 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  __extension__ typedef unsigned long long uintptr_t;
  #pragma line 418 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  __extension__ typedef long long ptrdiff_t;
  #pragma line 436 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  typedef unsigned short wint_t;
  typedef unsigned short wctype_t;
  #pragma line 456 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  typedef int errno_t;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  typedef long __time32_t;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  __extension__ typedef long long __time64_t;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  typedef __time64_t time_t;
  #pragma line 518 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /* _dowildcard is an int that controls the globbing of the command line.
   * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
   * a compatibility definition here:  you can use either of _CRT_glob or
   * _dowildcard .
   * If _dowildcard is non-zero, the command line will be globbed:  *.*
   * will be expanded to be all files in the startup directory.
   * In the mingw-w64 library a _dowildcard variable is defined as being
   * 0, therefore command line globbing is DISABLED by default. To turn it
   * on and to leave wildcard command line processing MS's globbing code,
   * include a line in one of your source modules defining _dowildcard and
   * setting it to -1, like so:
   * int _dowildcard = -1;
   */
  #pragma line 605 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\_mingw.h" 3
  /* MSVC-isms: */
  #pragma empty_line
  struct threadlocaleinfostruct;
  struct threadmbcinfostruct;
  typedef struct threadlocaleinfostruct *pthreadlocinfo;
  typedef struct threadmbcinfostruct *pthreadmbcinfo;
  struct __lc_time_data;
  #pragma empty_line
  typedef struct localeinfo_struct {
    pthreadlocinfo locinfo;
    pthreadmbcinfo mbcinfo;
  } _locale_tstruct,*_locale_t;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  typedef struct tagLC_ID {
    unsigned short wLanguage;
    unsigned short wCountry;
    unsigned short wCodePage;
  } LC_ID,*LPLC_ID;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  typedef struct threadlocaleinfostruct {
    int refcount;
    unsigned int lc_codepage;
    unsigned int lc_collate_cp;
    unsigned long lc_handle[6];
    LC_ID lc_id[6];
    struct {
      char *locale;
      wchar_t *wlocale;
      int *refcount;
      int *wrefcount;
    } lc_category[6];
    int lc_clike;
    int mb_cur_max;
    int *lconv_intl_refcount;
    int *lconv_num_refcount;
    int *lconv_mon_refcount;
    struct lconv *lconv;
    int *ctype1_refcount;
    unsigned short *ctype1;
    const unsigned short *pctype;
    const unsigned char *pclmap;
    const unsigned char *pcumap;
    struct __lc_time_data *lc_time_curr;
  } threadlocinfo;
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  extern "C" {
  #pragma empty_line
  #pragma empty_line
  /* mingw-w64 specific functions: */
  const char *__mingw_get_crt_info (void);
  #pragma empty_line
  #pragma empty_line
  }
  #pragma empty_line
  #pragma empty_line
  #pragma pack(pop)
  #pragma line 12 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 2 3
  #pragma empty_line
  #pragma empty_line
  struct _exception;
  #pragma empty_line
  #pragma pack(push,_CRT_PACKING)
  #pragma line 55 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* See also float.h  */
  #pragma empty_line
  #pragma empty_line
  /* IEEE 754 classication */
  #pragma line 75 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  extern "C" {
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern double * __imp__HUGE;
  #pragma line 91 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
    struct _exception {
      int type;
      const char *name;
      double arg1;
      double arg2;
      double retval;
    };
  #pragma empty_line
    void __mingw_raise_matherr (int typ, const char *name, double a1, double a2,
           double rslt);
    void __mingw_setusermatherr (int ( *)(struct _exception *));
    __attribute__ ((__dllimport__)) void __setusermatherr(int ( *)(struct _exception *));
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    double sin(double _X);
    double cos(double _X);
    double tan(double _X);
    double sinh(double _X);
    double cosh(double _X);
    double tanh(double _X);
    double asin(double _X);
    double acos(double _X);
    double atan(double _X);
    double atan2(double _Y,double _X);
    double exp(double _X);
    double log(double _X);
    double log10(double _X);
    double pow(double _X,double _Y);
    double sqrt(double _X);
    double ceil(double _X);
    double floor(double _X);
    double fabs(double _X);
  #pragma line 135 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
    double ldexp(double _X,int _Y);
    double frexp(double _X,int *_Y);
    double modf(double _X,double *_Y);
    double fmod(double _X,double _Y);
  #pragma empty_line
    void sincos (double __x, double *p_sin, double *p_cos);
    void sincosl (long double __x, long double *p_sin, long double *p_cos);
    void sincosf (float __x, float *p_sin, float *p_cos);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    int abs(int _X);
    long labs(long _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    double atof(const char *_String);
    double _atof_l(const char *_String,_locale_t _Locale);
  #pragma line 162 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
    struct _complex {
      double x;
      double y;
    };
  #pragma empty_line
  #pragma empty_line
    __attribute__ ((__dllimport__)) double _cabs(struct _complex _ComplexA);
    double _hypot(double _X,double _Y);
    __attribute__ ((__dllimport__)) double _j0(double _X);
    __attribute__ ((__dllimport__)) double _j1(double _X);
    __attribute__ ((__dllimport__)) double _jn(int _X,double _Y);
    __attribute__ ((__dllimport__)) double _y0(double _X);
    __attribute__ ((__dllimport__)) double _y1(double _X);
    __attribute__ ((__dllimport__)) double _yn(int _X,double _Y);
  #pragma empty_line
  #pragma empty_line
    __attribute__ ((__dllimport__)) int _matherr (struct _exception *);
  #pragma empty_line
  #pragma empty_line
  /* These are also declared in Mingw float.h; needed here as well to work 
     around GCC build issues.  */
  /* BEGIN FLOAT.H COPY */
  /*
   * IEEE recommended functions
   */
  #pragma empty_line
  #pragma empty_line
    __attribute__ ((__dllimport__)) double _chgsign (double _X);
    __attribute__ ((__dllimport__)) double _copysign (double _Number,double _Sign);
    __attribute__ ((__dllimport__)) double _logb (double);
    __attribute__ ((__dllimport__)) double _nextafter (double, double);
    __attribute__ ((__dllimport__)) double _scalb (double, long);
    __attribute__ ((__dllimport__)) int _finite (double);
    __attribute__ ((__dllimport__)) int _fpclass (double);
    __attribute__ ((__dllimport__)) int _isnan (double);
  #pragma empty_line
  #pragma empty_line
  /* END FLOAT.H COPY */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  __attribute__ ((__dllimport__)) double j0 (double) ;
  __attribute__ ((__dllimport__)) double j1 (double) ;
  __attribute__ ((__dllimport__)) double jn (int, double) ;
  __attribute__ ((__dllimport__)) double y0 (double) ;
  __attribute__ ((__dllimport__)) double y1 (double) ;
  __attribute__ ((__dllimport__)) double yn (int, double) ;
  #pragma empty_line
  __attribute__ ((__dllimport__)) double chgsign (double);
  /*
   * scalb() is a GCC built-in.
   * Exclude this _scalb() stub; the semantics are incompatible
   * with the built-in implementation.
   *
  _CRTIMP double __cdecl scalb (double, long);
   *
   */
    __attribute__ ((__dllimport__)) int finite (double);
    __attribute__ ((__dllimport__)) int fpclass (double);
  #pragma line 260 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* Use the compiler's builtin define for FLT_EVAL_METHOD to
     set float_t and double_t.  */
  #pragma empty_line
  #pragma empty_line
  typedef float float_t;
  typedef double double_t;
  #pragma line 278 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.3.1 */
  /*
     Return values for fpclassify.
     These are based on Intel x87 fpu condition codes
     in the high byte of status word and differ from
     the return values for MS IEEE 754 extension _fpclass()
  */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  /* 0x0200 is signbit mask */
  #pragma empty_line
  /*
    We can't inline float or double, because we want to ensure truncation
    to semantic type before classification. 
    (A normal long double value might become subnormal when 
    converted to double, and zero when converted to float.)
  */
  #pragma empty_line
    extern int __fpclassifyl (long double);
    extern int __fpclassifyf (float);
    extern int __fpclassify (double);
  #pragma line 325 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.3.2 */
  #pragma empty_line
  #pragma empty_line
  /* 7.12.3.3 */
  #pragma empty_line
  #pragma empty_line
  /* 7.12.3.4 */
  /* We don't need to worry about truncation here:
     A NaN stays a NaN. */
  #pragma empty_line
    extern int __isnan (double);
    extern int __isnanf (float);
    extern int __isnanl (long double);
  #pragma line 372 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.3.5 */
  #pragma empty_line
  #pragma empty_line
  /* 7.12.3.6 The signbit macro */
    extern int __signbit (double);
    extern int __signbitf (float);
    extern int __signbitl (long double);
  #pragma line 403 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.4 Trigonometric functions: Double in C89 */
    extern float sinf(float _X);
    extern long double sinl(long double);
  #pragma empty_line
    extern float cosf(float _X);
    extern long double cosl(long double);
  #pragma empty_line
    extern float tanf(float _X);
    extern long double tanl(long double);
    extern float asinf(float _X);
    extern long double asinl(long double);
  #pragma empty_line
    extern float acosf (float);
    extern long double acosl (long double);
  #pragma empty_line
    extern float atanf (float);
    extern long double atanl (long double);
  #pragma empty_line
    extern float atan2f (float, float);
    extern long double atan2l (long double, long double);
  #pragma empty_line
  /* 7.12.5 Hyperbolic functions: Double in C89  */
    extern float sinhf(float _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double sinhl(long double);
  #pragma empty_line
    extern float coshf(float _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double coshl(long double);
  #pragma empty_line
    extern float tanhf(float _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double tanhl(long double);
  #pragma empty_line
  /* Inverse hyperbolic trig functions  */
  /* 7.12.5.1 */
    extern double acosh (double);
    extern float acoshf (float);
    extern long double acoshl (long double);
  #pragma empty_line
  /* 7.12.5.2 */
    extern double asinh (double);
    extern float asinhf (float);
    extern long double asinhl (long double);
  #pragma empty_line
  /* 7.12.5.3 */
    extern double atanh (double);
    extern float atanhf (float);
    extern long double atanhl (long double);
  #pragma empty_line
  /* Exponentials and logarithms  */
  /* 7.12.6.1 Double in C89 */
    extern float expf(float _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double expl(long double);
  #pragma empty_line
  /* 7.12.6.2 */
    extern double exp2(double);
    extern float exp2f(float);
    extern long double exp2l(long double);
  #pragma empty_line
  /* 7.12.6.3 The expm1 functions */
  /* TODO: These could be inlined */
    extern double expm1(double);
    extern float expm1f(float);
    extern long double expm1l(long double);
  #pragma empty_line
  /* 7.12.6.4 Double in C89 */
    extern float frexpf(float _X,int *_Y);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double frexpl(long double,int *);
  #pragma empty_line
  /* 7.12.6.5 */
  #pragma empty_line
  #pragma empty_line
    extern int ilogb (double);
    extern int ilogbf (float);
    extern int ilogbl (long double);
  #pragma empty_line
  /* 7.12.6.6  Double in C89 */
    extern float ldexpf(float _X,int _Y);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double ldexpl (long double, int);
  #pragma empty_line
  /* 7.12.6.7 Double in C89 */
    extern float logf (float);
    extern long double logl(long double);
  #pragma empty_line
  /* 7.12.6.8 Double in C89 */
    extern float log10f (float);
    extern long double log10l(long double);
  #pragma empty_line
  /* 7.12.6.9 */
    extern double log1p(double);
    extern float log1pf(float);
    extern long double log1pl(long double);
  #pragma empty_line
  /* 7.12.6.10 */
    extern double log2 (double);
    extern float log2f (float);
    extern long double log2l (long double);
  #pragma empty_line
  /* 7.12.6.11 */
    extern double logb (double);
    extern float logbf (float);
    extern long double logbl (long double);
  #pragma empty_line
  /* Inline versions.  GCC-4.0+ can do a better fast-math optimization
     with __builtins. */
  #pragma line 552 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.6.12  Double in C89 */
    extern float modff (float, float*);
    extern long double modfl (long double, long double*);
  #pragma empty_line
  /* 7.12.6.13 */
    extern double scalbn (double, int);
    extern float scalbnf (float, int);
    extern long double scalbnl (long double, int);
  #pragma empty_line
    extern double scalbln (double, long);
    extern float scalblnf (float, long);
    extern long double scalblnl (long double, long);
  #pragma empty_line
  /* 7.12.7.1 */
  /* Implementations adapted from Cephes versions */
    extern double cbrt (double);
    extern float cbrtf (float);
    extern long double cbrtl (long double);
  #pragma empty_line
  /* 7.12.7.2 The fabs functions: Double in C89 */
    extern float fabsf (float x);
  #pragma line 583 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
    extern long double fabsl (long double);
  #pragma line 594 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.7.3  */
    extern double hypot (double, double) ; /* in libmoldname.a */
    extern float hypotf (float x, float y);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double hypotl (long double, long double);
  #pragma empty_line
  /* 7.12.7.4 The pow functions. Double in C89 */
    extern float powf(float _X,float _Y);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
    extern long double powl (long double, long double);
  #pragma empty_line
  /* 7.12.7.5 The sqrt functions. Double in C89. */
    extern float sqrtf (float);
    extern long double sqrtl(long double);
  #pragma empty_line
  /* 7.12.8.1 The erf functions  */
    extern double erf (double);
    extern float erff (float);
    extern long double erfl (long double);
  #pragma empty_line
  /* 7.12.8.2 The erfc functions  */
    extern double erfc (double);
    extern float erfcf (float);
    extern long double erfcl (long double);
  #pragma empty_line
  /* 7.12.8.3 The lgamma functions */
    extern double lgamma (double);
    extern float lgammaf (float);
    extern long double lgammal (long double);
  #pragma empty_line
  /* 7.12.8.4 The tgamma functions */
    extern double tgamma (double);
    extern float tgammaf (float);
    extern long double tgammal (long double);
  #pragma empty_line
  /* 7.12.9.1 Double in C89 */
    extern float ceilf (float);
    extern long double ceill (long double);
  #pragma empty_line
  /* 7.12.9.2 Double in C89 */
    extern float floorf (float);
    extern long double floorl (long double);
  #pragma empty_line
  /* 7.12.9.3 */
    extern double nearbyint ( double);
    extern float nearbyintf (float);
    extern long double nearbyintl (long double);
  #pragma empty_line
  /* 7.12.9.4 */
  /* round, using fpu control word settings */
  extern double rint (double);
  extern float rintf (float);
  extern long double rintl (long double);
  #pragma empty_line
  /* 7.12.9.5 */
  extern long lrint (double);
  extern long lrintf (float);
  extern long lrintl (long double);
  #pragma empty_line
  __extension__ long long llrint (double);
  __extension__ long long llrintf (float);
  __extension__ long long llrintl (long double);
  #pragma empty_line
  /* Inline versions of above. 
     GCC 4.0+ can do a better fast-math job with __builtins. */
  #pragma line 737 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  /* 7.12.9.6 */
  /* round away from zero, regardless of fpu control word settings */
    extern double round (double);
    extern float roundf (float);
    extern long double roundl (long double);
  #pragma empty_line
  /* 7.12.9.7  */
    extern long lround (double);
    extern long lroundf (float);
    extern long lroundl (long double);
    __extension__ long long llround (double);
    __extension__ long long llroundf (float);
    __extension__ long long llroundl (long double);
  #pragma empty_line
  /* 7.12.9.8 */
  /* round towards zero, regardless of fpu control word settings */
    extern double trunc (double);
    extern float truncf (float);
    extern long double truncl (long double);
  #pragma empty_line
  /* 7.12.10.1 Double in C89 */
    extern float fmodf (float, float);
    extern long double fmodl (long double, long double);
  #pragma empty_line
  /* 7.12.10.2 */
    extern double remainder (double, double);
    extern float remainderf (float, float);
    extern long double remainderl (long double, long double);
  #pragma empty_line
  /* 7.12.10.3 */
    extern double remquo(double, double, int *);
    extern float remquof(float, float, int *);
    extern long double remquol(long double, long double, int *);
  #pragma empty_line
  /* 7.12.11.1 */
    extern double copysign (double, double); /* in libmoldname.a */
    extern float copysignf (float, float);
    extern long double copysignl (long double, long double);
  #pragma empty_line
  /* 7.12.11.2 Return a NaN */
    extern double nan(const char *tagp);
    extern float nanf(const char *tagp);
    extern long double nanl(const char *tagp);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  /* 7.12.11.3 */
    extern double nextafter (double, double); /* in libmoldname.a */
    extern float nextafterf (float, float);
    extern long double nextafterl (long double, long double);
  #pragma empty_line
  /* 7.12.11.4 The nexttoward functions */
    extern double nexttoward (double, long double);
    extern float nexttowardf (float, long double);
    extern long double nexttowardl (long double, long double);
  #pragma empty_line
  /* 7.12.12.1 */
  /*  x > y ? (x - y) : 0.0  */
    extern double fdim (double x, double y);
    extern float fdimf (float x, float y);
    extern long double fdiml (long double x, long double y);
  #pragma empty_line
  /* fmax and fmin.
     NaN arguments are treated as missing data: if one argument is a NaN
     and the other numeric, then these functions choose the numeric
     value. */
  #pragma empty_line
  /* 7.12.12.2 */
    extern double fmax (double, double);
    extern float fmaxf (float, float);
    extern long double fmaxl (long double, long double);
  #pragma empty_line
  /* 7.12.12.3 */
    extern double fmin (double, double);
    extern float fminf (float, float);
    extern long double fminl (long double, long double);
  #pragma empty_line
  /* 7.12.13.1 */
  /* return x * y + z as a ternary op */
    extern double fma (double, double, double);
    extern float fmaf (float, float, float);
    extern long double fmal (long double, long double, long double);
  #pragma empty_line
  /* 7.12.14 */
  /* 
   *  With these functions, comparisons involving quiet NaNs set the FP
   *  condition code to "unordered".  The IEEE floating-point spec
   *  dictates that the result of floating-point comparisons should be
   *  false whenever a NaN is involved, with the exception of the != op, 
   *  which always returns true: yes, (NaN != NaN) is true).
   */
  #pragma line 871 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
     __attribute__ ((__dllimport__)) float _copysignf (float _Number,float _Sign);
     __attribute__ ((__dllimport__)) float _chgsignf (float _X);
     __attribute__ ((__dllimport__)) float _logbf(float _X);
     __attribute__ ((__dllimport__)) float _nextafterf(float _X,float _Y);
     __attribute__ ((__dllimport__)) int _finitef(float _X);
     __attribute__ ((__dllimport__)) int _isnanf(float _X);
     __attribute__ ((__dllimport__)) int _fpclassf(float _X);
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
     extern long double _chgsignl (long double);
  #pragma line 893 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin/../lib/clang/3.1/../../../x86_64-w64-mingw32/include\\math.h" 3
  }
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma pack(pop)
  #pragma line 46 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 2 3
  }
  #pragma line 46 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath"
  
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // Get rid of those macros defined in <math.h> in lieu of real functions.
  #pragma line 76 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 3
  namespace std {
  #pragma empty_line
    // Forward declaration of a helper function.  This really should be
    // an `exported' forward declaration.
    template<typename _Tp>
      _Tp __cmath_power(_Tp, unsigned int);
  #pragma empty_line
    template<typename _Tp>
      inline _Tp
      __pow_helper(_Tp __x, int __n)
      {
        return __n < 0
          ? _Tp(1)/__cmath_power(__x, -__n)
          : __cmath_power(__x, __n);
      }
  #pragma empty_line
    inline double
    abs(double __x)
    { return __builtin_fabs(__x); }
  #pragma empty_line
    inline float
    abs(float __x)
    { return __builtin_fabsf(__x); }
  #pragma empty_line
    inline long double
    abs(long double __x)
    { return __builtin_fabsl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      abs(_Tp __x)
      { return __builtin_fabs(__x); }
  #pragma empty_line
    using ::acos;
  #pragma empty_line
    inline float
    acos(float __x)
    { return __builtin_acosf(__x); }
  #pragma empty_line
    inline long double
    acos(long double __x)
    { return __builtin_acosl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      acos(_Tp __x)
      { return __builtin_acos(__x); }
  #pragma empty_line
    using ::asin;
  #pragma empty_line
    inline float
    asin(float __x)
    { return __builtin_asinf(__x); }
  #pragma empty_line
    inline long double
    asin(long double __x)
    { return __builtin_asinl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      asin(_Tp __x)
      { return __builtin_asin(__x); }
  #pragma empty_line
    using ::atan;
  #pragma empty_line
    inline float
    atan(float __x)
    { return __builtin_atanf(__x); }
  #pragma empty_line
    inline long double
    atan(long double __x)
    { return __builtin_atanl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      atan(_Tp __x)
      { return __builtin_atan(__x); }
  #pragma empty_line
    using ::atan2;
  #pragma empty_line
    inline float
    atan2(float __y, float __x)
    { return __builtin_atan2f(__y, __x); }
  #pragma empty_line
    inline long double
    atan2(long double __y, long double __x)
    { return __builtin_atan2l(__y, __x); }
  #pragma empty_line
    template<typename _Tp, typename _Up>
      inline
      typename __gnu_cxx::__promote_2<
      typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
          && __is_arithmetic<_Up>::__value,
          _Tp>::__type, _Up>::__type
      atan2(_Tp __y, _Up __x)
      {
        typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
        return atan2(__type(__y), __type(__x));
      }
  #pragma empty_line
    using ::ceil;
  #pragma empty_line
    inline float
    ceil(float __x)
    { return __builtin_ceilf(__x); }
  #pragma empty_line
    inline long double
    ceil(long double __x)
    { return __builtin_ceill(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      ceil(_Tp __x)
      { return __builtin_ceil(__x); }
  #pragma empty_line
    using ::cos;
  #pragma empty_line
    inline float
    cos(float __x)
    { return __builtin_cosf(__x); }
  #pragma empty_line
    inline long double
    cos(long double __x)
    { return __builtin_cosl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      cos(_Tp __x)
      { return __builtin_cos(__x); }
  #pragma empty_line
    using ::cosh;
  #pragma empty_line
    inline float
    cosh(float __x)
    { return __builtin_coshf(__x); }
  #pragma empty_line
    inline long double
    cosh(long double __x)
    { return __builtin_coshl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      cosh(_Tp __x)
      { return __builtin_cosh(__x); }
  #pragma empty_line
    using ::exp;
  #pragma empty_line
    inline float
    exp(float __x)
    { return __builtin_expf(__x); }
  #pragma empty_line
    inline long double
    exp(long double __x)
    { return __builtin_expl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      exp(_Tp __x)
      { return __builtin_exp(__x); }
  #pragma empty_line
    using ::fabs;
  #pragma empty_line
    inline float
    fabs(float __x)
    { return __builtin_fabsf(__x); }
  #pragma empty_line
    inline long double
    fabs(long double __x)
    { return __builtin_fabsl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      fabs(_Tp __x)
      { return __builtin_fabs(__x); }
  #pragma empty_line
    using ::floor;
  #pragma empty_line
    inline float
    floor(float __x)
    { return __builtin_floorf(__x); }
  #pragma empty_line
    inline long double
    floor(long double __x)
    { return __builtin_floorl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      floor(_Tp __x)
      { return __builtin_floor(__x); }
  #pragma empty_line
    using ::fmod;
  #pragma empty_line
    inline float
    fmod(float __x, float __y)
    { return __builtin_fmodf(__x, __y); }
  #pragma empty_line
    inline long double
    fmod(long double __x, long double __y)
    { return __builtin_fmodl(__x, __y); }
  #pragma empty_line
    using ::frexp;
  #pragma empty_line
    inline float
    frexp(float __x, int* __exp)
    { return __builtin_frexpf(__x, __exp); }
  #pragma empty_line
    inline long double
    frexp(long double __x, int* __exp)
    { return __builtin_frexpl(__x, __exp); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      frexp(_Tp __x, int* __exp)
      { return __builtin_frexp(__x, __exp); }
  #pragma empty_line
    using ::ldexp;
  #pragma empty_line
    inline float
    ldexp(float __x, int __exp)
    { return __builtin_ldexpf(__x, __exp); }
  #pragma empty_line
    inline long double
    ldexp(long double __x, int __exp)
    { return __builtin_ldexpl(__x, __exp); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
    ldexp(_Tp __x, int __exp)
    { return __builtin_ldexp(__x, __exp); }
  #pragma empty_line
    using ::log;
  #pragma empty_line
    inline float
    log(float __x)
    { return __builtin_logf(__x); }
  #pragma empty_line
    inline long double
    log(long double __x)
    { return __builtin_logl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      log(_Tp __x)
      { return __builtin_log(__x); }
  #pragma empty_line
    using ::log10;
  #pragma empty_line
    inline float
    log10(float __x)
    { return __builtin_log10f(__x); }
  #pragma empty_line
    inline long double
    log10(long double __x)
    { return __builtin_log10l(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      log10(_Tp __x)
      { return __builtin_log10(__x); }
  #pragma empty_line
    using ::modf;
  #pragma empty_line
    inline float
    modf(float __x, float* __iptr)
    { return __builtin_modff(__x, __iptr); }
  #pragma empty_line
    inline long double
    modf(long double __x, long double* __iptr)
    { return __builtin_modfl(__x, __iptr); }
  #pragma empty_line
    using ::pow;
  #pragma empty_line
    inline float
    pow(float __x, float __y)
    { return __builtin_powf(__x, __y); }
  #pragma empty_line
    inline long double
    pow(long double __x, long double __y)
    { return __builtin_powl(__x, __y); }
  #pragma empty_line
  #pragma empty_line
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // DR 550. What should the return type of pow(float,int) be?
    inline double
    pow(double __x, int __i)
    { return __builtin_powi(__x, __i); }
  #pragma empty_line
    inline float
    pow(float __x, int __n)
    { return __builtin_powif(__x, __n); }
  #pragma empty_line
    inline long double
    pow(long double __x, int __n)
    { return __builtin_powil(__x, __n); }
  #pragma empty_line
  #pragma empty_line
    template<typename _Tp, typename _Up>
      inline
      typename __gnu_cxx::__promote_2<
      typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
          && __is_arithmetic<_Up>::__value,
          _Tp>::__type, _Up>::__type
      pow(_Tp __x, _Up __y)
      {
        typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
        return pow(__type(__x), __type(__y));
      }
  #pragma empty_line
    using ::sin;
  #pragma empty_line
    inline float
    sin(float __x)
    { return __builtin_sinf(__x); }
  #pragma empty_line
    inline long double
    sin(long double __x)
    { return __builtin_sinl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      sin(_Tp __x)
      { return __builtin_sin(__x); }
  #pragma empty_line
    using ::sinh;
  #pragma empty_line
    inline float
    sinh(float __x)
    { return __builtin_sinhf(__x); }
  #pragma empty_line
    inline long double
    sinh(long double __x)
    { return __builtin_sinhl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      sinh(_Tp __x)
      { return __builtin_sinh(__x); }
  #pragma empty_line
    using ::sqrt;
  #pragma empty_line
    inline float
    sqrt(float __x)
    { return __builtin_sqrtf(__x); }
  #pragma empty_line
    inline long double
    sqrt(long double __x)
    { return __builtin_sqrtl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      sqrt(_Tp __x)
      { return __builtin_sqrt(__x); }
  #pragma empty_line
    using ::tan;
  #pragma empty_line
    inline float
    tan(float __x)
    { return __builtin_tanf(__x); }
  #pragma empty_line
    inline long double
    tan(long double __x)
    { return __builtin_tanl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      tan(_Tp __x)
      { return __builtin_tan(__x); }
  #pragma empty_line
    using ::tanh;
  #pragma empty_line
    inline float
    tanh(float __x)
    { return __builtin_tanhf(__x); }
  #pragma empty_line
    inline long double
    tanh(long double __x)
    { return __builtin_tanhl(__x); }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
          double>::__type
      tanh(_Tp __x)
      { return __builtin_tanh(__x); }
  #pragma empty_line
  }
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  // These are possible macros imported from C99-land.
  #pragma line 497 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 3
  namespace std {
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      fpclassify(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_fpclassify(0x0100, (0x0100 | 0x0400), 0x0400,
        (0x0400 | 0x4000), 0x4000, __type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isfinite(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isfinite(__type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isinf(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isinf(__type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isnan(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isnan(__type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isnormal(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isnormal(__type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      signbit(_Tp __f)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_signbit(__type(__f));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isgreater(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isgreater(__type(__f1), __type(__f2));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isgreaterequal(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isgreaterequal(__type(__f1), __type(__f2));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isless(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isless(__type(__f1), __type(__f2));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      islessequal(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_islessequal(__type(__f1), __type(__f2));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      islessgreater(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_islessgreater(__type(__f1), __type(__f2));
      }
  #pragma empty_line
    template<typename _Tp>
      inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
          int>::__type
      isunordered(_Tp __f1, _Tp __f2)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
        return __builtin_isunordered(__type(__f1), __type(__f2));
      }
  #pragma empty_line
  }
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma line 1 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\bits/cmath.tcc" 1 3
  // -*- C++ -*- C math library.
  #pragma empty_line
  // Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 3, or (at your option)
  // any later version.
  #pragma empty_line
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU General Public License for more details.
  #pragma empty_line
  // Under Section 7 of GPL version 3, you are granted additional
  // permissions described in the GCC Runtime Library Exception, version
  // 3.1, as published by the Free Software Foundation.
  #pragma empty_line
  // You should have received a copy of the GNU General Public License and
  // a copy of the GCC Runtime Library Exception along with this program;
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  #pragma empty_line
  // This file was written by Gabriel Dos Reis <gdr@codesourcery.com>
  #pragma empty_line
  /** @file cmath.tcc
   *  This is a Standard C++ Library file.
   */
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  namespace std {
  #pragma empty_line
    template<typename _Tp>
      inline _Tp
      __cmath_power(_Tp __x, unsigned int __n)
      {
        _Tp __y = __n % 2 ? __x : _Tp(1);
  #pragma empty_line
        while (__n >>= 1)
          {
            __x = __x * __x;
            if (__n % 2)
              __y = __y * __x;
          }
  #pragma empty_line
        return __y;
      }
  #pragma empty_line
  }
  #pragma line 615 "C:/opt/winprog/Xilinx/Vivado_HLS/2015.2/win64/tools/clang/bin\\..\\lib\\clang\\3.1/../../../include/c++/4.5.2\\cmath" 2 3
  #pragma line 50 "./matrixmul.h" 2
  using namespace std;
  #pragma empty_line
  // Compare TB vs HW C-model and/or RTL
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  #pragma empty_line
  typedef char mat_a_t;
  typedef char mat_b_t;
  typedef short result_t;
  #pragma empty_line
  // Prototype of top level function for C-synthesis
  void matrixmul(
        mat_a_t a[3][3],
        mat_b_t b[3][3],
        result_t res[3][3]);
  #pragma line 47 "matrixmul.cpp" 2
  #pragma empty_line
  void matrixmul(
        mat_a_t a[3][3],
        mat_b_t b[3][3],
        result_t res[3][3])
  {_ssdm_SpecArrayDimSize(a,3);_ssdm_SpecArrayDimSize(res,3);_ssdm_SpecArrayDimSize(b,3);
  #pragma HLS PIPELINE
  #pragma line 52 "matrixmul.cpp"
  
  #pragma HLS ARRAY_RESHAPE variable=b complete dim=1
  #pragma line 52 "matrixmul.cpp"
  
  #pragma HLS ARRAY_RESHAPE variable=a complete dim=2
  #pragma line 52 "matrixmul.cpp"
  
    // Iterate over the rows of the A matrix
     Row: for(int i = 0; i < 3; i++) {
        // Iterate over the columns of the B matrix
        Col: for(int j = 0; j < 3; j++) {
           res[i][j] = 0;
           // Do the inner product of a row of A and col of B
           Product: for(int k = 0; k < 3; k++) {
              res[i][j] += a[i][k] * b[k][j];
           }
        }
     }
  #pragma empty_line
  }
  