diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index db45cf670f1bfb690dd4b4a2facd2bf7200f8460..f64b7c9ff66d7b17e1137c17632e4575a8a8fb8b 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -623,9 +623,6 @@ DynamicModel::writeDynamicPerBlockCFiles(const string &basename) const
              << "#include <stdlib.h>" << endl
              << "#include <stdbool.h>" << endl
              << R"(#include "mex.h")" << endl
-             << endl
-             << "#define max(a, b) (((a) > (b)) ? (a) : (b))" << endl
-             << "#define min(a, b) (((a) > (b)) ? (b) : (a))" << endl
              << endl;
 
       // Write function definition if BinaryOpcode::powerDeriv is used
@@ -1436,9 +1433,6 @@ DynamicModel::writeDynamicCFile(const string &basename) const
          << "#include <math.h>" << endl
          << "#include <stdlib.h>" << endl
          << R"(#include "mex.h")" << endl
-         << endl
-         << "#define max(a, b) (((a) > (b)) ? (a) : (b))" << endl
-         << "#define min(a, b) (((a) > (b)) ? (b) : (a))" << endl
          << endl;
 
   // Write function definition if BinaryOpcode::powerDeriv is used
diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index c9310a3701c20ca7195affff994f9333bf70bf40..4d0ef7519a8fd192e6a2ae80b6b19870fc94e975 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -4472,10 +4472,16 @@ BinaryOpNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
           output << "pow(";
           break;
         case BinaryOpcode::max:
-          output << "max(";
+          if (isCOutput(output_type))
+            output << "fmax(";
+          else
+            output << "max(";
           break;
         case BinaryOpcode::min:
-          output << "min(";
+          if (isCOutput(output_type))
+            output << "fmin(";
+          else
+            output << "min(";
           break;
         default:
           ;
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index 1fad42f936a9762e6716d01c34d7845b7dfe540c..2afc481d111a1e0d82c1bef9b510ad66f648fd08 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -307,9 +307,6 @@ StaticModel::writeStaticPerBlockCFiles(const string &basename) const
              << "#include <math.h>" << endl
              << "#include <stdlib.h>" << endl
              << R"(#include "mex.h")" << endl
-             << endl
-             << "#define max(a, b) (((a) > (b)) ? (a) : (b))" << endl
-             << "#define min(a, b) (((a) > (b)) ? (b) : (a))" << endl
              << endl;
 
       // Write function definition if BinaryOpcode::powerDeriv is used
@@ -1695,9 +1692,6 @@ StaticModel::writeStaticCFile(const string &basename) const
          << "#include <math.h>" << endl
          << "#include <stdlib.h>" << endl
          << R"(#include "mex.h")" << endl
-         << endl
-         << "#define max(a, b) (((a) > (b)) ? (a) : (b))" << endl
-         << "#define min(a, b) (((a) > (b)) ? (b) : (a))" << endl
          << endl;
 
   // Write function definition if BinaryOpcode::powerDeriv is used