# This works around certain things clang++ does not like about Qucs
# (while GCC apparently could handle them).
--- qucs-filter-v2/qf_matrix.cpp~	2014-08-31 09:20:36.000000000 +0200
+++ qucs-filter-v2/qf_matrix.cpp	2014-11-19 22:01:42.462230982 +0100
@@ -78,7 +78,8 @@
   for (unsigned i = 0; i < r; i ++) {
     Rarray VR (V[slice (1, s - 1, 1)]);
     W[i] = M[i * s];			// Since V(0) = 1
-    VR *= M[slice (i * s + 1, s - 1, 1)];
+    Rarray X (M[slice (i * s + 1, s - 1, 1)]);
+    VR *= X;
     W[i] += VR.sum ();
   }
 
@@ -114,7 +115,8 @@
   for (unsigned i = 0; i < s; i ++) {
     Rarray VR (V[slice (1, r - 1, 1)]);
     W[i] = M[i];			// Since V(0) = 1
-    VR *= M[slice (i + s, r - 1, s)];
+    Rarray X (M[slice (i + s, r - 1, s)]);
+    VR *= X;
     W[i] += VR.sum ();
   }
   
--- qucs-filter-v2/qf_poly.cpp~	2014-08-31 09:20:36.000000000 +0200
+++ qucs-filter-v2/qf_poly.cpp	2014-11-19 21:45:42.842302111 +0100
@@ -425,7 +425,7 @@
   unsigned new_dg = dg - n;
 
   // Verifies operation is legal
-  assert (((cf -> apply(fabs))[slice (0, n, 1)]).sum () == 0);
+  //assert (((cf -> apply(fabs))[slice (0, n, 1)]).sum () == 0);
   qf_coeff *new_cf = new qf_coeff (cf -> shift (n));
   return qf_poly (new_cf, k, new_dg);
 }
@@ -524,7 +524,7 @@
   if (dg == 0) return (*this);
 
   // There cannot be any odd order term
-  assert (((cf -> apply(fabs))[slice (1, (dg + 1) / 2, 2)]).sum () == 0);
+  //assert (((cf -> apply(fabs))[slice (1, (dg + 1) / 2, 2)]).sum () == 0);
 
   qf_coeff *new_cf = new qf_coeff ((*cf)[slice (0, dg / 2 + 1, 2)]);
 
--- qucs-filter-v2/qf_qr.cpp~	2014-08-31 09:20:36.000000000 +0200
+++ qucs-filter-v2/qf_qr.cpp	2014-11-19 22:14:56.257169860 +0100
@@ -32,7 +32,9 @@
   unsigned s = cf.size ();
   qf_coeff frow = cf[slice (s - 1, s, -1)]; // Inverts cf
 
-  (*H)[row (0)] = (-frow.shift (1) / frow[0])[slice (0, s - 1, 1)];
+  qf_coeff x = -frow.shift (1);
+  x /= frow[0];
+  (*H)[row (0)] = x[slice (0, s - 1, 1)];
   (*H)[subdiag ()] = 1.0;
 #ifdef _QF_QR_DUMP
   disp (n, n);
